<?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>98173</bug_id>
          
          <creation_ts>2012-10-02 10:11:58 -0700</creation_ts>
          <short_desc>Allow EventHandler to handle longpress gestures, including longpress selection on Android.</short_desc>
          <delta_ts>2012-10-05 13:45:21 -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>
          
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oli Lan">olilan</reporter>
          <assigned_to name="Oli Lan">olilan</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>husky</cc>
    
    <cc>rjkroege</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>varunjain</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>732777</commentid>
    <comment_count>0</comment_count>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-02 10:11:58 -0700</bug_when>
    <thetext>[chromium] Allow long press to select word on Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732783</commentid>
    <comment_count>1</comment_count>
      <attachid>166706</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-02 10:16:40 -0700</bug_when>
    <thetext>Created attachment 166706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732786</commentid>
    <comment_count>2</comment_count>
      <attachid>166706</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-02 10:21:44 -0700</bug_when>
    <thetext>Comment on attachment 166706
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4077
&gt; +    FrameSelection* fs = focusedFrame-&gt;selection();

Please don&apos;t use abbreviations like fs.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4081
&gt; +    if (node-&gt;renderer() &amp;&amp; !fs-&gt;contains(point) &amp;&amp; (node-&gt;isContentEditable() || node-&gt;isTextNode()) &amp;&amp; !result.isLiveLink()
&gt; +        &amp;&amp; node-&gt;dispatchEvent(Event::create(eventNames().selectstartEvent, true, true))) {
&gt; +        VisiblePosition pos(node-&gt;renderer()-&gt;positionForPoint(result.localPoint()));
&gt; +        WebFrameImpl::selectWordAroundPosition(focusedFrame, pos);

This code looks fishy to me. Why isn&apos;t this in EventHandler.cpp?
In particular, we should be using canMouseDownStartSelect and share most of code with selectClosestWordFromMouseEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733692</commentid>
    <comment_count>3</comment_count>
      <attachid>166892</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-03 07:47:46 -0700</bug_when>
    <thetext>Created attachment 166892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733698</commentid>
    <comment_count>4</comment_count>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-03 07:50:59 -0700</bug_when>
    <thetext>Thanks for the review. The second patch changes this to be implemented fully within EventHandler. The code to perform the selection is now shared as much as possible with selectClosestWordFromMouseEvent.

I did not call canMouseDownStartSelect for this as that seems to be concerned with preventing mouse drags from starting selection when there is a draggable element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733804</commentid>
    <comment_count>5</comment_count>
      <attachid>166892</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 10:00:59 -0700</bug_when>
    <thetext>Comment on attachment 166892
Patch

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

New failing tests:
fast/events/touch/gesture/context-menu-on-two-finger-tap.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733810</commentid>
    <comment_count>6</comment_count>
      <attachid>166915</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-03 10:12:06 -0700</bug_when>
    <thetext>Created attachment 166915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733907</commentid>
    <comment_count>7</comment_count>
      <attachid>166915</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-03 12:11:58 -0700</bug_when>
    <thetext>Comment on attachment 166915
Patch

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

Excellent! This patch looks much, much better.

&gt; Source/WebCore/page/EventHandler.cpp:455
&gt; +        selectClosestWordFromHitTestResult(result.hitTestResult(), (result.event().clickCount() == 2 &amp;&amp; m_frame-&gt;editor()-&gt;isSelectTrailingWhitespaceEnabled()) ? ShouldAppendTrailingWhitespace : DontAppendTrailingWhitespace);

This is a really long time. I would split into two lines (make sure to add curly brackets around the if statement in that case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733939</commentid>
    <comment_count>8</comment_count>
      <attachid>166915</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 12:35:32 -0700</bug_when>
    <thetext>Comment on attachment 166915
Patch

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

New failing tests:
fast/events/touch/gesture/context-menu-on-two-finger-tap.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734084</commentid>
    <comment_count>9</comment_count>
      <attachid>166915</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-03 15:25:58 -0700</bug_when>
    <thetext>Comment on attachment 166915
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:2523
&gt; +        return handleGestureLongPress(gestureEvent);

why do this here instead of in WebViewImpl? Am curious.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:-732
&gt; -        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;sendContextMenuEventForGesture(platformEvent);

As per the failing layout test, this changes breaks touch summoning of context menus on CrOS/Windows Chrome. Please consider putting this back and introducing a new different gesture event for text editing initiation. I suggest GestureStartTextSelection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734093</commentid>
    <comment_count>10</comment_count>
      <attachid>166915</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-03 15:32:02 -0700</bug_when>
    <thetext>Comment on attachment 166915
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:732
&gt; +        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent(platformEvent);

Oh oops, this is going to fire a gesture event :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734135</commentid>
    <comment_count>11</comment_count>
      <attachid>166915</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-03 16:05:22 -0700</bug_when>
    <thetext>Comment on attachment 166915
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:-732
&gt;&gt; -        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;sendContextMenuEventForGesture(platformEvent);
&gt; 
&gt; As per the failing layout test, this changes breaks touch summoning of context menus on CrOS/Windows Chrome. Please consider putting this back and introducing a new different gesture event for text editing initiation. I suggest GestureStartTextSelection.

&quot;Start Text Selection&quot; isn&apos;t a gesture though, is it? It&apos;s the result of a gesture for us, but a gesture should be something the user does, like tap or longpress, or two-finger tap.

The failing test is to do with two-finger-tap. I&apos;ll check to see if this change has had any unintended effects on that.

This change should still allow context menus to work, as sendContextMenuEventForGesture is now called by handleGestureLongPress, which is called by handleGestureEvent. The code to perform selection is OS(ANDROID) only.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:732
&gt;&gt; +        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent(platformEvent);
&gt; 
&gt; Oh oops, this is going to fire a gesture event :(

This will have the effect that the longpress gesture goes to the node in the same way that a tap gesture already does. If it&apos;s not swallowed, then the result will be the same as before, in that sendContextMenuEventForGesture will be called. Is that not ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734158</commentid>
    <comment_count>12</comment_count>
      <attachid>166915</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-10-03 16:26:32 -0700</bug_when>
    <thetext>Comment on attachment 166915
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:-732
&gt;&gt;&gt; -        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;sendContextMenuEventForGesture(platformEvent);
&gt;&gt; 
&gt;&gt; As per the failing layout test, this changes breaks touch summoning of context menus on CrOS/Windows Chrome. Please consider putting this back and introducing a new different gesture event for text editing initiation. I suggest GestureStartTextSelection.
&gt; 
&gt; &quot;Start Text Selection&quot; isn&apos;t a gesture though, is it? It&apos;s the result of a gesture for us, but a gesture should be something the user does, like tap or longpress, or two-finger tap.
&gt; 
&gt; The failing test is to do with two-finger-tap. I&apos;ll check to see if this change has had any unintended effects on that.
&gt; 
&gt; This change should still allow context menus to work, as sendContextMenuEventForGesture is now called by handleGestureLongPress, which is called by handleGestureEvent. The code to perform selection is OS(ANDROID) only.

I think the #if should be in WebViewImpl and not EventHandler. For instance, why (for android) is m_contextMenuAllowed set to true on long press when no context menu is shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734531</commentid>
    <comment_count>13</comment_count>
      <attachid>166915</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-04 02:28:24 -0700</bug_when>
    <thetext>Comment on attachment 166915
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:-732
&gt;&gt;&gt;&gt; -        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;sendContextMenuEventForGesture(platformEvent);
&gt;&gt;&gt; 
&gt;&gt;&gt; As per the failing layout test, this changes breaks touch summoning of context menus on CrOS/Windows Chrome. Please consider putting this back and introducing a new different gesture event for text editing initiation. I suggest GestureStartTextSelection.
&gt;&gt; 
&gt;&gt; &quot;Start Text Selection&quot; isn&apos;t a gesture though, is it? It&apos;s the result of a gesture for us, but a gesture should be something the user does, like tap or longpress, or two-finger tap.
&gt;&gt; 
&gt;&gt; The failing test is to do with two-finger-tap. I&apos;ll check to see if this change has had any unintended effects on that.
&gt;&gt; 
&gt;&gt; This change should still allow context menus to work, as sendContextMenuEventForGesture is now called by handleGestureLongPress, which is called by handleGestureEvent. The code to perform selection is OS(ANDROID) only.
&gt; 
&gt; I think the #if should be in WebViewImpl and not EventHandler. For instance, why (for android) is m_contextMenuAllowed set to true on long press when no context menu is shown.

Longpress on android can show a context menu, for example on a link or an image. Selection of text only occurs if the longpress was on non-link text.

The reason for the failing test is that I didn&apos;t notice that WebInputEvent::GestureTwoFingerTap uses the same code path as GestureLongPress in WebViewImpl::handleGestureEvent, whereas EventHandler::handleGestureEvent doesn&apos;t handle two finger tap so this change disables that gesture. I will restore two finger tap in a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734658</commentid>
    <comment_count>14</comment_count>
      <attachid>167097</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-04 07:02:33 -0700</bug_when>
    <thetext>Created attachment 167097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734659</commentid>
    <comment_count>15</comment_count>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-04 07:04:35 -0700</bug_when>
    <thetext>The last patch restores GestureTwoFingerTap handling to how it was (except without the detectContentOnTouch call which is Android-only and shouldn&apos;t be called for a two-finger tap).

The layout test context-menu-on-two-finger-tap.html should now pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734760</commentid>
    <comment_count>16</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-10-04 09:26:13 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 166915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166915&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:-732
&gt; &gt;&gt;&gt;&gt; -        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;sendContextMenuEventForGesture(platformEvent);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; As per the failing layout test, this changes breaks touch summoning of context menus on CrOS/Windows Chrome. Please consider putting this back and introducing a new different gesture event for text editing initiation. I suggest GestureStartTextSelection.
&gt; &gt;&gt; 
&gt; &gt;&gt; &quot;Start Text Selection&quot; isn&apos;t a gesture though, is it? It&apos;s the result of a gesture for us, but a gesture should be something the user does, like tap or longpress, or two-finger tap.
&gt; &gt;&gt; 
&gt; &gt;&gt; The failing test is to do with two-finger-tap. I&apos;ll check to see if this change has had any unintended effects on that.
&gt; &gt;&gt; 
&gt; &gt;&gt; This change should still allow context menus to work, as sendContextMenuEventForGesture is now called by handleGestureLongPress, which is called by handleGestureEvent. The code to perform selection is OS(ANDROID) only.
&gt; &gt; 
&gt; &gt; I think the #if should be in WebViewImpl and not EventHandler. For instance, why (for android) is m_contextMenuAllowed set to true on long press when no context menu is shown.
&gt; 
&gt; Longpress on android can show a context menu, for example on a link or an image. Selection of text only occurs if the longpress was on non-link text.
&gt; 
&gt; The reason for the failing test is that I didn&apos;t notice that WebInputEvent::GestureTwoFingerTap uses the same code path as GestureLongPress in WebViewImpl::handleGestureEvent, whereas EventHandler::handleGestureEvent doesn&apos;t handle two finger tap so this change disables that gesture. I will restore two finger tap in a new patch.

I was not talking about the failing test at all. My concern is that for android, we are setting the state of context menu allowed to true but not showing the context menu in some cases. This seems wrong. It appears to me that a script listening to selection change will be able to invoke context menu since WebViewImpl will allow it.
FWIW, I am not a reviewer :) so you can totally ignore my comments if the reviewers agree to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734800</commentid>
    <comment_count>17</comment_count>
      <attachid>167097</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-04 10:28:07 -0700</bug_when>
    <thetext>Comment on attachment 167097
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:726
&gt; +        m_contextMenuAllowed = true;
&gt; +        PlatformGestureEventBuilder platformEvent(mainFrameImpl()-&gt;frameView(), event);
&gt; +        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;sendContextMenuEventForGesture(platformEvent);
&gt; +        m_contextMenuAllowed = false;

I agree with Varun that it&apos;s strange to set m_contextMenuAllowed true and then not show the context menu.
On the other hand, I don&apos;t understand the value of having this boolean variable in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734813</commentid>
    <comment_count>18</comment_count>
      <attachid>167097</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-04 10:39:41 -0700</bug_when>
    <thetext>Comment on attachment 167097
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:726
&gt;&gt; +        m_contextMenuAllowed = false;
&gt; 
&gt; I agree with Varun that it&apos;s strange to set m_contextMenuAllowed true and then not show the context menu.
&gt; On the other hand, I don&apos;t understand the value of having this boolean variable in the first place.

m_contextMenuAllowed is only read in ContextMenuClientImpl::getCustomMenuFromDefaultItems, where the aim is to ensure that the context menu is only shown in response to user input.

I&apos;d argue that, as longpress is a gesture that can show a context menu, it&apos;s correct for m_contextMenuAllowed to be true when a longpress is handled by the EventHandler, regardless of whether or not the default handling will show the menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734893</commentid>
    <comment_count>19</comment_count>
      <attachid>167097</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-10-04 11:44:08 -0700</bug_when>
    <thetext>Comment on attachment 167097
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:433
&gt; +void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult&amp; result, AppendTrailingWhitespace appendTrailingWhitespace)

this code looks a lot like WebFrameImpl::selectWordAroundPosition Is there an opportunity to remove some duplicate code especially since selectClosestWord* doesn&apos;t seem to be used anywhere else yet?

&gt; Source/WebCore/page/EventHandler.cpp:2575
&gt; +#if OS(ANDROID)

I&apos;d prefer it if you added a flag or a different kind of event instead of the #ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734902</commentid>
    <comment_count>20</comment_count>
      <attachid>167097</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-04 11:50:23 -0700</bug_when>
    <thetext>Comment on attachment 167097
Patch

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2575
&gt;&gt; +#if OS(ANDROID)
&gt; 
&gt; I&apos;d prefer it if you added a flag or a different kind of event instead of the #ifdef.

In this case, ifdef is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735590</commentid>
    <comment_count>21</comment_count>
      <attachid>167097</attachid>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-05 05:35:41 -0700</bug_when>
    <thetext>Comment on attachment 167097
Patch

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:433
&gt;&gt; +void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult&amp; result, AppendTrailingWhitespace appendTrailingWhitespace)
&gt; 
&gt; this code looks a lot like WebFrameImpl::selectWordAroundPosition Is there an opportunity to remove some duplicate code especially since selectClosestWord* doesn&apos;t seem to be used anywhere else yet?

selectClosestWordFromMouseEvent and selectClosestWordOrLinkFromMouseEvent are preexisting methods, and are used when double-clicks are handled and for selecting a word on Mac when a context menu is generated. This method selectClosestWordFromHitTestResult was added just to make the code no longer dependent on a mouse event so we could use it from a touch gesture - as you can see it mostly uses the previous code from selectClosestWordFromMouseEvent.

My first attempt at this change (patch 1) was in WebViewImpl and used selectWordAroundPosition, but on rniwa&apos;s suggestion I moved it into EventHandler. I think this it makes sense for it to be in EventHandler, seeing as it&apos;s to do with handling gesture events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735737</commentid>
    <comment_count>22</comment_count>
    <who name="Oli Lan">olilan</who>
    <bug_when>2012-10-05 10:15:19 -0700</bug_when>
    <thetext>Ryosuke (and other reviewers), what do you think of the latest version of this patch? Does it need further changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735864</commentid>
    <comment_count>23</comment_count>
      <attachid>167097</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-05 12:11:09 -0700</bug_when>
    <thetext>Comment on attachment 167097
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:743
&gt; -        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;sendContextMenuEventForGesture(platformEvent);
&gt; +        eventSwallowed = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent(platformEvent);

handleGestureEvent is going to fire a gesture event. Why is that okay?
If that&apos;s intended, we should have a test for that, right? Or am I misunderstanding something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735873</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 12:13:43 -0700</bug_when>
    <thetext>&gt; handleGestureEvent is going to fire a gesture event. Why is that okay?
&gt; If that&apos;s intended, we should have a test for that, right? Or am I misunderstanding something?

I don&apos;t think we expose gesture events to the web.  We might do that in the future, depending on how the touch events / pointer events / gesture events discussion plays out in the standards world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735878</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-05 12:28:18 -0700</bug_when>
    <thetext>Adam clarified his comment. If we look at GestureEvent::create, we see that we only instantiate the event for a subset of gestures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735929</commentid>
    <comment_count>26</comment_count>
      <attachid>167097</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 13:45:16 -0700</bug_when>
    <thetext>Comment on attachment 167097
Patch

Clearing flags on attachment: 167097

Committed r130547: &lt;http://trac.webkit.org/changeset/130547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735930</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 13:45:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166706</attachid>
            <date>2012-10-02 10:16:40 -0700</date>
            <delta_ts>2012-10-03 07:47:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98173-20121002181552.patch</filename>
            <type>text/plain</type>
            <size>6174</size>
            <attacher name="Oli Lan">olilan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGJlYzg1OThkMzZkNjY1YTk4M2Q2YjkxNTdmZWY0NDU1MjVhMzg5ZjQuLmM2MzU3ZTM0NWI5OGU2
MDA1MmViZWExODkxN2NhODE2MDc2MzM0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMTAtMDIgIE9saSBMYW4gIDxvbGlsYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgbG9uZyBwcmVzcyB0byBzZWxlY3Qgd29yZCBv
biBBbmRyb2lkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgxNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIGJlaGF2aW91
ciByZXF1aXJlZCBmb3IgQW5kcm9pZC4gVGhpcyBtZWFucworICAgICAgICB0aGF0IGEgbG9uZyBw
cmVzcyBnZXN0dXJlIHBlcmZvcm1lZCBvbiBhbiB1bnNlbGVjdGVkIHdvcmQgKHRoYXQgaXMgbm90
IHBhcnQgb2YgYSBsaW5rKQorICAgICAgICBzZWxlY3RzIHRoZSB3b3JkLCB3aXRob3V0IGdlbmVy
YXRpbmcgYSBjb250ZXh0IG1lbnUgZXZlbnQpLgorCisgICAgICAgIEEgbmV3IHRlc3QsIFdlYlZp
ZXdUZXN0LkxvbmdQcmVzc1NlbGVjdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0ZXN0IHRoaXMuICAg
ICAgICAKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2VsZWN0Tm9uTGlua1dvcmRBcm91bmRXaW5kb3dQb2ludCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0lt
cGwpOgorICAgICAgICAqIHRlc3RzL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9k
YXRhL2xvbmdwcmVzc19zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDktMjkgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE5NSSBtYWtlIFN0cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBkZjUxMDdhODBlMjBk
NGE0MTgzZjFmNzM1OWMwNDNjNjYxYThkZmJlLi5lOTczNGQ2MTZiMzEyYzJkMzljNTUyM2VmYjQ3
ZDcwYzY0MTdhM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCkBAIC03MjUsNiArNzI1LDEyIEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVF
dmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgZXZlbnRTd2Fs
bG93ZWQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyNpZiBPUyhBTkRS
T0lEKQorICAgICAgICBpZiAoc2VsZWN0Tm9uTGlua1dvcmRBcm91bmRXaW5kb3dQb2ludChXZWJQ
b2ludChldmVudC54LCBldmVudC55KSkpIHsKKyAgICAgICAgICAgIGV2ZW50U3dhbGxvd2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICBt
X3BhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAg
ICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gdHJ1ZTsKQEAgLTQwNTYsNiArNDA2MiwzMCBAQCBi
b29sIFdlYlZpZXdJbXBsOjpkZXRlY3RDb250ZW50T25Ub3VjaChjb25zdCBXZWJQb2ludCYgcG9z
aXRpb24sIFdlYklucHV0RXZlbnQ6OgogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFdlYlZp
ZXdJbXBsOjpzZWxlY3ROb25MaW5rV29yZEFyb3VuZFdpbmRvd1BvaW50KGNvbnN0IFdlYlBvaW50
JiB3aW5kb3dQb2ludCkKK3sKKyAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gcGFnZSgpLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgSW50UG9pbnQgcG9pbnQg
PSBmb2N1c2VkRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3aW5kb3dQb2ludCk7Cisg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CisgICAgZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgp
LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKworICAg
IE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYgKCFub2Rl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGcmFtZVNlbGVjdGlvbiogZnMgPSBmb2N1
c2VkRnJhbWUtPnNlbGVjdGlvbigpOworICAgIGlmIChub2RlLT5yZW5kZXJlcigpICYmICFmcy0+
Y29udGFpbnMocG9pbnQpICYmIChub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IG5vZGUtPmlz
VGV4dE5vZGUoKSkgJiYgIXJlc3VsdC5pc0xpdmVMaW5rKCkKKyAgICAgICAgJiYgbm9kZS0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50LCB0
cnVlLCB0cnVlKSkpIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhub2RlLT5yZW5kZXJl
cigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkpKTsKKyAgICAgICAgV2Vi
RnJhbWVJbXBsOjpzZWxlY3RXb3JkQXJvdW5kUG9zaXRpb24oZm9jdXNlZEZyYW1lLCBwb3MpOwor
ICAgICAgICBpZiAoZnMtPmlzUmFuZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VmlzaWJp
bGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNJbml0aWFsU3RhdGUpIHsKICAg
ICBpZiAoIXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmlu
ZGV4IGZmMzRjYzI3MGUxNjliZjVmMWM3MGE5ZDU5NmMxOTE5MWRiM2MwYzEuLmQzYTQxOWVmNjFl
NmI5OTcxZTY4NzIxNDk3ODlkYTg4YWFiZDdkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaApAQCAtMzkzLDYgKzM5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1v
dXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogCiAgICAgYm9vbCBkZXRlY3RD
b250ZW50T25Ub3VjaChjb25zdCBXZWJQb2ludCYsIFdlYklucHV0RXZlbnQ6OlR5cGUpOworICAg
IGJvb2wgc2VsZWN0Tm9uTGlua1dvcmRBcm91bmRXaW5kb3dQb2ludChjb25zdCBXZWJQb2ludCYp
OwogICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJs
ZSBkdXJhdGlvbkluU2Vjb25kcyk7CiAKICAgICB2b2lkIG51bWJlck9mV2hlZWxFdmVudEhhbmRs
ZXJzQ2hhbmdlZCh1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
Vmlld1Rlc3QuY3BwCmluZGV4IGQ0NzhhYWQ5MmRkMTYxODA3NDBmM2FlYTYyYzE5ODdmZGIxYmJi
YmYuLmM4NTUxZGYxNzZlOTg3NjA1Mzg3MTBkMmVkYmYxMzYwNDRmOTMwYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCkBAIC02NDcsNCArNjQ3LDI2
IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgQ2xpZW50VGFwSGFuZGxpbmcpCiAgICAgd2ViVmlldy0+
Y2xvc2UoKTsKIH0KIAorI2lmIE9TKEFORFJPSUQpCitURVNUX0YoV2ViVmlld1Rlc3QsIExvbmdQ
cmVzc1NlbGVjdGlvbikKK3sKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxG
cm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2ViU3Ry
aW5nOjpmcm9tVVRGOCgibG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sIikpOworCisgICAgV2ViVmll
dyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFz
ZVVSTCArICJsb25ncHJlc3Nfc2VsZWN0aW9uLmh0bWwiLCB0cnVlKTsKKyAgICB3ZWJWaWV3LT5y
ZXNpemUoV2ViU2l6ZSg1MDAsIDMwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIHdl
YmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKworICAgIFdlYlN0cmluZyB0
YXJnZXQgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJ0YXJnZXQiKTsKKyAgICBXZWJTdHJpbmcgb25z
ZWxlY3RzdGFydGZhbHNlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgib25zZWxlY3RzdGFydGZhbHNl
Iik7CisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+
KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKHRhcEVsZW1lbnRCeUlk
KHdlYlZpZXcsIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MsIG9uc2VsZWN0c3RhcnRm
YWxzZSkpOworICAgIEVYUEVDVF9FUSgiIiwgc3RkOjpzdHJpbmcoZnJhbWUtPnNlbGVjdGlvbkFz
VGV4dCgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXBFbGVtZW50QnlJZCh3
ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzLCB0YXJnZXQpKTsKKyAgICBF
WFBFQ1RfRVEoInRlc3R3b3JkIiwgc3RkOjpzdHJpbmcoZnJhbWUtPnNlbGVjdGlvbkFzVGV4dCgp
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorI2VuZGlmCisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9sb25ncHJlc3Nf
c2VsZWN0aW9uLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbG9uZ3By
ZXNzX3NlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2Njk5NGY5YjBmN2M2YjEwZDQ0YjhjMzJi
ZGFjOWI1MDQxNzYyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvbG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK3NwYW4geworICAgIGZvbnQt
c2l6ZTogMzAwJTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0hlbGxvIHRoaXMgaXMg
c29tZSB0ZXh0IGZvciB0ZXN0aW5nLiBIZXJlIGlzIGEKKzxzcGFuIGlkPSJ0YXJnZXQiPgordGVz
dHdvcmQKKzwvc3Bhbj4KK3RoYXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gc2VsZWN0IGJ5IGxvbmdw
cmVzc2luZy4KKworVG8gdGVzdCBvbnNlbGVjdHN0YXJ0LCBoZXJlIGlzCis8c3BhbiBpZD0ib25z
ZWxlY3RzdGFydGZhbHNlIiBvbnNlbGVjdHN0YXJ0PSJyZXR1cm4gZmFsc2U7Ij4KK2Fub3RoZXJi
aXRvZnRleHQKKzwvc3Bhbj4KK3RoYXQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHNlbGVjdC4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166892</attachid>
            <date>2012-10-03 07:47:46 -0700</date>
            <delta_ts>2012-10-03 10:12:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98173-20121003154657.patch</filename>
            <type>text/plain</type>
            <size>10465</size>
            <attacher name="Oli Lan">olilan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI2MGNkNTAzODM5YTRi
OTdiYTdjYmUwOWFhNGNkYjlmMGY0NWE3ZC4uOTYyYmZjM2I2ZjQwYWM0ZDE0OGRhMDhhZDFhMmQw
ODc0NDgwODI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTAzICBPbGkg
TGFuICA8b2xpbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBFdmVudEhhbmRsZXIg
dG8gaGFuZGxlIGxvbmdwcmVzcyBnZXN0dXJlcywgaW5jbHVkaW5nIGxvbmdwcmVzcyBzZWxlY3Rp
b24gb24gQW5kcm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MTczCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIGhhbmRsaW5nIGZvciBHZXN0dXJlTG9uZ1ByZXNzIHRvIEV2ZW50
SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50LCB3aXRoIGEgbmV3CisgICAgICAgIGhhbmRsZUdl
c3R1cmVMb25nUHJlc3MgbWV0aG9kLiBPbiBBbmRyb2lkLCB0aGlzIG1ldGhvZCBzZWxlY3RzIHRo
ZSBjbG9zZXN0IHdvcmQKKyAgICAgICAgaWYgdGhlIGdlc3R1cmUgZXZlbnQgd2FzIG92ZXIgbm9u
LWxpbmsgdGV4dC4KKworICAgICAgICBUaGlzIGlzIHRlc3RlZCB2aWEgYSBuZXcgY2hyb21pdW0g
dGVzdCBXZWJWaWV3VGVzdC5Mb25nUHJlc3NTZWxlY3Rpb24uICAKKworICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0
Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVMb25nUHJlc3Mp
OgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIp
OgorCiAyMDEyLTEwLTAyICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtSZWdyZXNzaW9uXSBCcmVha3BvaW50cyByZXN0b3Jl
ZCBmcm9tIHN0b3JhZ2UgYXJlIG5vdCBzZXQgaW4gZGVidWdnZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGJlYzg1OThkMzZkNjY1YTk4M2Q2YjkxNTdmZWY0NDU1MjVhMzg5ZjQuLjMy
ZTQ1ZmMzOTE4ODcxMDllOWU1OGMwYWNkY2UwOTg1YmNmNmJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTAtMDMgIE9saSBMYW4gIDxvbGlsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IEV2ZW50SGFuZGxlciB0byBoYW5kbGUgbG9u
Z3ByZXNzIGdlc3R1cmVzLCBpbmNsdWRpbmcgbG9uZ3ByZXNzIHNlbGVjdGlvbiBvbiBBbmRyb2lk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxNzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIGxvbmdwcmVzcyBnZXN0dXJlIGhhbmRsaW5nIGNvZGUgaW4gV2ViVmll
d0ltcGwgdG8gY2FsbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KKyAgICAgICAg
VGhlIFdlYkNvcmUgcGFydCBvZiB0aGlzIHBhdGNoIGFkZHMgbG9uZ3ByZXNzIGhhbmRsaW5nIHRv
IHRoYXQgbWV0aG9kLCBpbmNsdWRpbmcgdGhlIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIGJlaGF2aW91
cgorICAgICAgICByZXF1aXJlZCBmb3IgQW5kcm9pZC4gVGhpcyBtZWFucyB0aGF0IGEgbG9uZyBw
cmVzcyBnZXN0dXJlIHBlcmZvcm1lZCBvbiB3b3JkICh0aGF0IGlzIG5vdCBwYXJ0IG9mIGEgbGlu
aykKKyAgICAgICAgc2VsZWN0cyB0aGUgd29yZCwgd2l0aG91dCBnZW5lcmF0aW5nIGEgY29udGV4
dCBtZW51IGV2ZW50LgorCisgICAgICAgIEEgbmV3IHRlc3QsIFdlYlZpZXdUZXN0LkxvbmdQcmVz
c1NlbGVjdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0ZXN0IHRoaXMuCisKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9XZWJW
aWV3VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0YS9sb25ncHJlc3Nfc2VsZWN0aW9uLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTA5LTI5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgbWFrZSBTdHJpbmcqIGluc3Ry
dW1lbnRhdGlvbiBub24gaW50cnVzaXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggZmUyMzMwZWEyZGZlNDYyNmU3YWM4MGQ4MzUxZjY5MWZiNjg2MTNlOS4uODQ3ZmUyMTgw
OThkYzA1OWQ0NzAzNWQ5OTRjZDljMzk2ZjZmNzc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtNDMwLDI1ICs0MzAsMzEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0
ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQoTm9kZSogdGFyZ2UK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RX
b3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgcmVz
dWx0KQordm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1
bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Ug
YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKQogewogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3Vs
dC50YXJnZXROb2RlKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247CiAKLSAg
ICBpZiAoaW5uZXJOb2RlICYmIGlubmVyTm9kZS0+cmVuZGVyZXIoKSAmJiBtX21vdXNlRG93bk1h
eVN0YXJ0U2VsZWN0KSB7CisgICAgaWYgKGlubmVyTm9kZSAmJiBpbm5lck5vZGUtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5vZGUtPnJlbmRlcmVyKCkt
PnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOwogICAgICAgICBpZiAocG9z
LmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0
aW9uKHBvcyk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5ld1NlbGVjdGlv
bi5pc1JhbmdlKCkgJiYgcmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFt
ZS0+ZWRpdG9yKCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSAKKyAgICAg
ICAgaWYgKGFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UgJiYgbmV3U2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVj
dGlvbi5hcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKTsKIAogICAgICAgICB1cGRhdGVTZWxlY3Rp
b25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KGlubmVyTm9kZSwgbmV3U2VsZWN0
aW9uLCBXb3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIAordm9pZCBFdmVudEhhbmRsZXI6OnNl
bGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgcmVzdWx0KQoreworICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KQor
ICAgICAgICBzZWxlY3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0KHJlc3VsdC5oaXRUZXN0
UmVzdWx0KCksIChyZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5l
ZGl0b3IoKS0+aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBw
ZW5kVHJhaWxpbmdXaGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7Cit9
CisKIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2
ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdC5oaXRUZXN0UmVzdWx0KCkuaXNMaXZlTGluaygpKQpAQCAtMjUxNSw2ICsyNTIx
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVy
ZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAg
ICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgorICAgICAgICByZXR1cm4g
aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJl
UGluY2hFbmQ6CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlUGluY2hVcGRhdGU6CkBA
IC0yNTYxLDYgKzI1NjgsMjEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVUYXAo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICByZXR1cm4gZGVm
YXVsdFByZXZlbnRlZDsKIH0KIAorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVMb25n
UHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3sKKyNpZiBP
UyhBTkRST0lEKQorICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhnZXN0dXJlRXZlbnQucG9zaXRpb24oKSk7CisgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIHRydWUpOwor
ICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3VsdC50YXJnZXROb2RlKCk7CisgICAgaWYgKCFyZXN1
bHQuaXNMaXZlTGluaygpICYmIGlubmVyTm9kZSAmJiAoaW5uZXJOb2RlLT5pc0NvbnRlbnRFZGl0
YWJsZSgpIHx8IGlubmVyTm9kZS0+aXNUZXh0Tm9kZSgpKSkgeworICAgICAgICBzZWxlY3RDbG9z
ZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0KHJlc3VsdCwgRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVz
cGFjZSk7CisgICAgICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNlbmRDb250
ZXh0TWVudUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOworfQorCiBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCYgZ2VzdHVyZUV2ZW50KQogewogICAgIHJldHVybiBoYW5kbGVHZXN0dXJlU2Nyb2xsQ29yZShn
ZXN0dXJlRXZlbnQsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCB0cnVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCmluZGV4IDZlMWQ3ZWQyMDgzNmRkNDg4ZGU0YTgwZTA5NzQ5NThmZGQ0
YjI3MzEuLjAxNmQ5N2Y4OWZiN2FlODg4ZjBlYmE2MTljYmM5MmQ2Njk3ZWI2YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtODksNiArODksNyBAQCBleHRlcm4gY29uc3QgaW50
IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQog
CiBlbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMsIERvbnRI
aXRUZXN0U2Nyb2xsYmFycyB9OworZW51bSBBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgeyBTaG91
bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UsIERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Ug
fTsKIAogY2xhc3MgRXZlbnRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVu
dEhhbmRsZXIpOwpAQCAtMTY1LDYgKzE2Niw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmKTsKKyAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCkBAIC0yNDAsNiArMjQyLDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpIGNvbnN0OwogICAgIGJvb2wgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlz
cGF0Y2hpbmdTZWxlY3RTdGFydChOb2RlKiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFRleHRH
cmFudWxhcml0eSk7CisgICAgdm9pZCBzZWxlY3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0
KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOwogICAgIHZv
aWQgc2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJik7CiAgICAgdm9pZCBzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3Vz
ZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGRmNTEwN2E4MGUyMGQ0YTQx
ODNmMWY3MzU5YzA0M2M2NjFhOGRmYmUuLjgxZTQzYWRmYWM4YWMzNzQwMjYzNzZiYWI0NjIyNDM1
MTdjMTBiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTcyOSw3ICs3MjksNyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAgbV9wYWdlLT5jb250ZXh0TWVu
dUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwogICAgICAgICBtX2NvbnRleHRNZW51
QWxsb3dlZCA9IHRydWU7CiAgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0
Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICAgICAg
ZXZlbnRTd2FsbG93ZWQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5zZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1cmUocGxhdGZvcm1FdmVudCk7CisgICAgICAg
IGV2ZW50U3dhbGxvd2VkID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBsYXRmb3JtRXZlbnQpOwogICAgICAgICBtX2NvbnRleHRN
ZW51QWxsb3dlZCA9IGZhbHNlOwogCiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRleCBkNDc4YWFkOTJkZDE2MTgwNzQwZjNh
ZWE2MmMxOTg3ZmRiMWJiYmJmLi5jODU1MWRmMTc2ZTk4NzYwNTM4NzEwZDJlZGJmMTM2MDQ0Zjkz
MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcApA
QCAtNjQ3LDQgKzY0NywyNiBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIENsaWVudFRhcEhhbmRsaW5n
KQogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKKyNpZiBPUyhBTkRST0lEKQorVEVTVF9GKFdl
YlZpZXdUZXN0LCBMb25nUHJlc3NTZWxlY3Rpb24pCit7CisgICAgVVJMVGVzdEhlbHBlcnM6OnJl
Z2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwu
Y19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoImxvbmdwcmVzc19zZWxlY3Rpb24uaHRtbCIp
KTsKKworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJW
aWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sIiwgdHJ1ZSk7
CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNTAwLCAzMDApKTsKKyAgICB3ZWJWaWV3LT5s
YXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisK
KyAgICBXZWJTdHJpbmcgdGFyZ2V0ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidGFyZ2V0Iik7Cisg
ICAgV2ViU3RyaW5nIG9uc2VsZWN0c3RhcnRmYWxzZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIm9u
c2VsZWN0c3RhcnRmYWxzZSIpOworICAgIFdlYkZyYW1lSW1wbCogZnJhbWUgPSBzdGF0aWNfY2Fz
dDxXZWJGcmFtZUltcGwqPih3ZWJWaWV3LT5tYWluRnJhbWUoKSk7CisKKyAgICBFWFBFQ1RfVFJV
RSh0YXBFbGVtZW50QnlJZCh3ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNz
LCBvbnNlbGVjdHN0YXJ0ZmFsc2UpKTsKKyAgICBFWFBFQ1RfRVEoIiIsIHN0ZDo6c3RyaW5nKGZy
YW1lLT5zZWxlY3Rpb25Bc1RleHQoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgRVhQRUNUX1RSVUUo
dGFwRWxlbWVudEJ5SWQod2ViVmlldywgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcywg
dGFyZ2V0KSk7CisgICAgRVhQRUNUX0VRKCJ0ZXN0d29yZCIsIHN0ZDo6c3RyaW5nKGZyYW1lLT5z
ZWxlY3Rpb25Bc1RleHQoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgd2ViVmlldy0+Y2xvc2UoKTsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvbG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhL2xvbmdwcmVzc19zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjY5OTRmOWIw
ZjdjNmIxMGQ0NGI4YzMyYmRhYzliNTA0MTc2MmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2xvbmdwcmVzc19zZWxlY3Rpb24uaHRtbApAQCAt
MCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Citz
cGFuIHsKKyAgICBmb250LXNpemU6IDMwMCU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CitIZWxsbyB0aGlzIGlzIHNvbWUgdGV4dCBmb3IgdGVzdGluZy4gSGVyZSBpcyBhCis8c3BhbiBp
ZD0idGFyZ2V0Ij4KK3Rlc3R3b3JkCis8L3NwYW4+Cit0aGF0IHdlIHNob3VsZCBiZSBhYmxlIHRv
IHNlbGVjdCBieSBsb25ncHJlc3NpbmcuCisKK1RvIHRlc3Qgb25zZWxlY3RzdGFydCwgaGVyZSBp
cworPHNwYW4gaWQ9Im9uc2VsZWN0c3RhcnRmYWxzZSIgb25zZWxlY3RzdGFydD0icmV0dXJuIGZh
bHNlOyI+Cithbm90aGVyYml0b2Z0ZXh0Cis8L3NwYW4+Cit0aGF0IHdlIHNob3VsZCBub3QgYmUg
YWJsZSB0byBzZWxlY3QuCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166915</attachid>
            <date>2012-10-03 10:12:06 -0700</date>
            <delta_ts>2012-10-04 07:02:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98173-20121003181117.patch</filename>
            <type>text/plain</type>
            <size>10597</size>
            <attacher name="Oli Lan">olilan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI2MGNkNTAzODM5YTRi
OTdiYTdjYmUwOWFhNGNkYjlmMGY0NWE3ZC4uOTYyYmZjM2I2ZjQwYWM0ZDE0OGRhMDhhZDFhMmQw
ODc0NDgwODI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTAzICBPbGkg
TGFuICA8b2xpbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBFdmVudEhhbmRsZXIg
dG8gaGFuZGxlIGxvbmdwcmVzcyBnZXN0dXJlcywgaW5jbHVkaW5nIGxvbmdwcmVzcyBzZWxlY3Rp
b24gb24gQW5kcm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MTczCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIGhhbmRsaW5nIGZvciBHZXN0dXJlTG9uZ1ByZXNzIHRvIEV2ZW50
SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50LCB3aXRoIGEgbmV3CisgICAgICAgIGhhbmRsZUdl
c3R1cmVMb25nUHJlc3MgbWV0aG9kLiBPbiBBbmRyb2lkLCB0aGlzIG1ldGhvZCBzZWxlY3RzIHRo
ZSBjbG9zZXN0IHdvcmQKKyAgICAgICAgaWYgdGhlIGdlc3R1cmUgZXZlbnQgd2FzIG92ZXIgbm9u
LWxpbmsgdGV4dC4KKworICAgICAgICBUaGlzIGlzIHRlc3RlZCB2aWEgYSBuZXcgY2hyb21pdW0g
dGVzdCBXZWJWaWV3VGVzdC5Mb25nUHJlc3NTZWxlY3Rpb24uICAKKworICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0
Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVMb25nUHJlc3Mp
OgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIp
OgorCiAyMDEyLTEwLTAyICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtSZWdyZXNzaW9uXSBCcmVha3BvaW50cyByZXN0b3Jl
ZCBmcm9tIHN0b3JhZ2UgYXJlIG5vdCBzZXQgaW4gZGVidWdnZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGJlYzg1OThkMzZkNjY1YTk4M2Q2YjkxNTdmZWY0NDU1MjVhMzg5ZjQuLjMy
ZTQ1ZmMzOTE4ODcxMDllOWU1OGMwYWNkY2UwOTg1YmNmNmJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTAtMDMgIE9saSBMYW4gIDxvbGlsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IEV2ZW50SGFuZGxlciB0byBoYW5kbGUgbG9u
Z3ByZXNzIGdlc3R1cmVzLCBpbmNsdWRpbmcgbG9uZ3ByZXNzIHNlbGVjdGlvbiBvbiBBbmRyb2lk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxNzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIGxvbmdwcmVzcyBnZXN0dXJlIGhhbmRsaW5nIGNvZGUgaW4gV2ViVmll
d0ltcGwgdG8gY2FsbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KKyAgICAgICAg
VGhlIFdlYkNvcmUgcGFydCBvZiB0aGlzIHBhdGNoIGFkZHMgbG9uZ3ByZXNzIGhhbmRsaW5nIHRv
IHRoYXQgbWV0aG9kLCBpbmNsdWRpbmcgdGhlIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIGJlaGF2aW91
cgorICAgICAgICByZXF1aXJlZCBmb3IgQW5kcm9pZC4gVGhpcyBtZWFucyB0aGF0IGEgbG9uZyBw
cmVzcyBnZXN0dXJlIHBlcmZvcm1lZCBvbiB3b3JkICh0aGF0IGlzIG5vdCBwYXJ0IG9mIGEgbGlu
aykKKyAgICAgICAgc2VsZWN0cyB0aGUgd29yZCwgd2l0aG91dCBnZW5lcmF0aW5nIGEgY29udGV4
dCBtZW51IGV2ZW50LgorCisgICAgICAgIEEgbmV3IHRlc3QsIFdlYlZpZXdUZXN0LkxvbmdQcmVz
c1NlbGVjdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0ZXN0IHRoaXMuCisKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9XZWJW
aWV3VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0YS9sb25ncHJlc3Nfc2VsZWN0aW9uLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTA5LTI5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgbWFrZSBTdHJpbmcqIGluc3Ry
dW1lbnRhdGlvbiBub24gaW50cnVzaXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggZmUyMzMwZWEyZGZlNDYyNmU3YWM4MGQ4MzUxZjY5MWZiNjg2MTNlOS4uODcxN2I5ODU0
Yzc3YWMzMTcwMjM2NjIwMzlkMTkyZjNkYmU0ZWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtNDMwLDI1ICs0MzAsMzEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0
ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQoTm9kZSogdGFyZ2UK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RX
b3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgcmVz
dWx0KQordm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1
bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Ug
YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKQogewogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3Vs
dC50YXJnZXROb2RlKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247CiAKLSAg
ICBpZiAoaW5uZXJOb2RlICYmIGlubmVyTm9kZS0+cmVuZGVyZXIoKSAmJiBtX21vdXNlRG93bk1h
eVN0YXJ0U2VsZWN0KSB7CisgICAgaWYgKGlubmVyTm9kZSAmJiBpbm5lck5vZGUtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5vZGUtPnJlbmRlcmVyKCkt
PnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOwogICAgICAgICBpZiAocG9z
LmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0
aW9uKHBvcyk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5ld1NlbGVjdGlv
bi5pc1JhbmdlKCkgJiYgcmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFt
ZS0+ZWRpdG9yKCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSAKKyAgICAg
ICAgaWYgKGFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UgJiYgbmV3U2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVj
dGlvbi5hcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKTsKIAogICAgICAgICB1cGRhdGVTZWxlY3Rp
b25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KGlubmVyTm9kZSwgbmV3U2VsZWN0
aW9uLCBXb3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIAordm9pZCBFdmVudEhhbmRsZXI6OnNl
bGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgcmVzdWx0KQoreworICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KQor
ICAgICAgICBzZWxlY3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0KHJlc3VsdC5oaXRUZXN0
UmVzdWx0KCksIChyZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5l
ZGl0b3IoKS0+aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBw
ZW5kVHJhaWxpbmdXaGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7Cit9
CisKIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2
ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIHJlc3VsdCkKIHsKICAgICBp
ZiAoIXJlc3VsdC5oaXRUZXN0UmVzdWx0KCkuaXNMaXZlTGluaygpKQpAQCAtMjUxMyw4ICsyNTE5
LDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVy
ZVRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERv
d246CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlVGFwRG93bigpOwotICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVMb25nUHJlc3M6CisgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGdl
c3R1cmVFdmVudCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgog
ICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CiAgICAgY2FzZSBQbGF0
Zm9ybUV2ZW50OjpHZXN0dXJlUGluY2hFbmQ6CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlUGluY2hVcGRhdGU6CkBAIC0yNTYxLDYgKzI1NjgsMjEgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVu
dCkKICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0KIAorYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1
cmVFdmVudCkKK3sKKyNpZiBPUyhBTkRST0lEKQorICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9
IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRU
ZXN0UG9pbnQsIHRydWUpOworICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3VsdC50YXJnZXROb2Rl
KCk7CisgICAgaWYgKCFyZXN1bHQuaXNMaXZlTGluaygpICYmIGlubmVyTm9kZSAmJiAoaW5uZXJO
b2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGlubmVyTm9kZS0+aXNUZXh0Tm9kZSgpKSkgewor
ICAgICAgICBzZWxlY3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0KHJlc3VsdCwgRG9udEFw
cGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CisgICAgICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+aXNSYW5nZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisg
ICAgcmV0dXJuIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOwor
fQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZShjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIHJldHVybiBoYW5kbGVH
ZXN0dXJlU2Nyb2xsQ29yZShnZXN0dXJlRXZlbnQsIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCB0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZlMWQ3ZWQyMDgzNmRkNDg4
ZGU0YTgwZTA5NzQ5NThmZGQ0YjI3MzEuLjAxNmQ5N2Y4OWZiN2FlODg4ZjBlYmE2MTljYmM5MmQ2
Njk3ZWI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtODksNiArODksNyBA
QCBleHRlcm4gY29uc3QgaW50IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFC
TEUoRFJBR19TVVBQT1JUKQogCiBlbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVz
dFNjcm9sbGJhcnMsIERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OworZW51bSBBcHBlbmRUcmFpbGlu
Z1doaXRlc3BhY2UgeyBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UsIERvbnRBcHBlbmRU
cmFpbGluZ1doaXRlc3BhY2UgfTsKIAogY2xhc3MgRXZlbnRIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShFdmVudEhhbmRsZXIpOwpAQCAtMTY1LDYgKzE2Niw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVUYXAo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyAgICBib29sIGhhbmRsZUdlc3R1cmVMb25n
UHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1
cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCkBA
IC0yNDAsNiArMjQyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgZXZlbnRBY3RpdmF0ZWRWaWV3
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNvbnN0OwogICAgIGJvb2wgdXBkYXRlU2VsZWN0
aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydChOb2RlKiwgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIFRleHRHcmFudWxhcml0eSk7CisgICAgdm9pZCBzZWxlY3RDbG9zZXN0V29y
ZEZyb21IaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBBcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UpOwogICAgIHZvaWQgc2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAgICAgdm9pZCBzZWxlY3RDbG9zZXN0
V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IGRmNTEwN2E4MGUyMGQ0YTQxODNmMWY3MzU5YzA0M2M2NjFhOGRmYmUuLjgxZTQzYWRmYWM4YWMz
NzQwMjYzNzZiYWI0NjIyNDM1MTdjMTBiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTcyOSw3ICs3MjksNyBAQCBib29sIFdlYlZpZXdJbXBsOjpo
YW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAg
bV9wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwogICAg
ICAgICBtX2NvbnRleHRNZW51QWxsb3dlZCA9IHRydWU7CiAgICAgICAgIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCks
IGV2ZW50KTsKLSAgICAgICAgZXZlbnRTd2FsbG93ZWQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1cmUocGxhdGZv
cm1FdmVudCk7CisgICAgICAgIGV2ZW50U3dhbGxvd2VkID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBsYXRmb3JtRXZlbnQpOwog
ICAgICAgICBtX2NvbnRleHRNZW51QWxsb3dlZCA9IGZhbHNlOwogCiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRleCBkNDc4
YWFkOTJkZDE2MTgwNzQwZjNhZWE2MmMxOTg3ZmRiMWJiYmJmLi5jODU1MWRmMTc2ZTk4NzYwNTM4
NzEwZDJlZGJmMTM2MDQ0ZjkzMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYlZpZXdUZXN0LmNwcApAQCAtNjQ3LDQgKzY0NywyNiBAQCBURVNUX0YoV2ViVmlld1Rlc3Qs
IENsaWVudFRhcEhhbmRsaW5nKQogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKKyNpZiBPUyhB
TkRST0lEKQorVEVTVF9GKFdlYlZpZXdUZXN0LCBMb25nUHJlc3NTZWxlY3Rpb24pCit7CisgICAg
VVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpm
cm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoImxvbmdwcmVz
c19zZWxlY3Rpb24uaHRtbCIpKTsKKworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RI
ZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAibG9uZ3ByZXNzX3NlbGVj
dGlvbi5odG1sIiwgdHJ1ZSk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNTAwLCAzMDAp
KTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVu
ZGluZ01lc3NhZ2VzKCk7CisKKyAgICBXZWJTdHJpbmcgdGFyZ2V0ID0gV2ViU3RyaW5nOjpmcm9t
VVRGOCgidGFyZ2V0Iik7CisgICAgV2ViU3RyaW5nIG9uc2VsZWN0c3RhcnRmYWxzZSA9IFdlYlN0
cmluZzo6ZnJvbVVURjgoIm9uc2VsZWN0c3RhcnRmYWxzZSIpOworICAgIFdlYkZyYW1lSW1wbCog
ZnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPih3ZWJWaWV3LT5tYWluRnJhbWUoKSk7
CisKKyAgICBFWFBFQ1RfVFJVRSh0YXBFbGVtZW50QnlJZCh3ZWJWaWV3LCBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlTG9uZ1ByZXNzLCBvbnNlbGVjdHN0YXJ0ZmFsc2UpKTsKKyAgICBFWFBFQ1RfRVEo
IiIsIHN0ZDo6c3RyaW5nKGZyYW1lLT5zZWxlY3Rpb25Bc1RleHQoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgRVhQRUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZUxvbmdQcmVzcywgdGFyZ2V0KSk7CisgICAgRVhQRUNUX0VRKCJ0ZXN0d29yZCIsIHN0
ZDo6c3RyaW5nKGZyYW1lLT5zZWxlY3Rpb25Bc1RleHQoKS51dGY4KCkuZGF0YSgpKSk7CisgICAg
d2ViVmlldy0+Y2xvc2UoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2xvbmdwcmVzc19zZWxlY3Rpb24uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NjY5OTRmOWIwZjdjNmIxMGQ0NGI4YzMyYmRhYzliNTA0MTc2MmQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2xvbmdwcmVzc19z
ZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+CitzcGFuIHsKKyAgICBmb250LXNpemU6IDMwMCU7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CitIZWxsbyB0aGlzIGlzIHNvbWUgdGV4dCBmb3IgdGVzdGluZy4g
SGVyZSBpcyBhCis8c3BhbiBpZD0idGFyZ2V0Ij4KK3Rlc3R3b3JkCis8L3NwYW4+Cit0aGF0IHdl
IHNob3VsZCBiZSBhYmxlIHRvIHNlbGVjdCBieSBsb25ncHJlc3NpbmcuCisKK1RvIHRlc3Qgb25z
ZWxlY3RzdGFydCwgaGVyZSBpcworPHNwYW4gaWQ9Im9uc2VsZWN0c3RhcnRmYWxzZSIgb25zZWxl
Y3RzdGFydD0icmV0dXJuIGZhbHNlOyI+Cithbm90aGVyYml0b2Z0ZXh0Cis8L3NwYW4+Cit0aGF0
IHdlIHNob3VsZCBub3QgYmUgYWJsZSB0byBzZWxlY3QuCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167097</attachid>
            <date>2012-10-04 07:02:33 -0700</date>
            <delta_ts>2012-10-05 13:45:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98173-20121004150143.patch</filename>
            <type>text/plain</type>
            <size>11409</size>
            <attacher name="Oli Lan">olilan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI2MGNkNTAzODM5YTRi
OTdiYTdjYmUwOWFhNGNkYjlmMGY0NWE3ZC4uOTYyYmZjM2I2ZjQwYWM0ZDE0OGRhMDhhZDFhMmQw
ODc0NDgwODI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTAzICBPbGkg
TGFuICA8b2xpbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyBFdmVudEhhbmRsZXIg
dG8gaGFuZGxlIGxvbmdwcmVzcyBnZXN0dXJlcywgaW5jbHVkaW5nIGxvbmdwcmVzcyBzZWxlY3Rp
b24gb24gQW5kcm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MTczCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIGhhbmRsaW5nIGZvciBHZXN0dXJlTG9uZ1ByZXNzIHRvIEV2ZW50
SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50LCB3aXRoIGEgbmV3CisgICAgICAgIGhhbmRsZUdl
c3R1cmVMb25nUHJlc3MgbWV0aG9kLiBPbiBBbmRyb2lkLCB0aGlzIG1ldGhvZCBzZWxlY3RzIHRo
ZSBjbG9zZXN0IHdvcmQKKyAgICAgICAgaWYgdGhlIGdlc3R1cmUgZXZlbnQgd2FzIG92ZXIgbm9u
LWxpbmsgdGV4dC4KKworICAgICAgICBUaGlzIGlzIHRlc3RlZCB2aWEgYSBuZXcgY2hyb21pdW0g
dGVzdCBXZWJWaWV3VGVzdC5Mb25nUHJlc3NTZWxlY3Rpb24uICAKKworICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0
Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVMb25nUHJlc3Mp
OgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIp
OgorCiAyMDEyLTEwLTAyICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtSZWdyZXNzaW9uXSBCcmVha3BvaW50cyByZXN0b3Jl
ZCBmcm9tIHN0b3JhZ2UgYXJlIG5vdCBzZXQgaW4gZGVidWdnZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGJlYzg1OThkMzZkNjY1YTk4M2Q2YjkxNTdmZWY0NDU1MjVhMzg5ZjQuLjMy
ZTQ1ZmMzOTE4ODcxMDllOWU1OGMwYWNkY2UwOTg1YmNmNmJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTAtMDMgIE9saSBMYW4gIDxvbGlsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IEV2ZW50SGFuZGxlciB0byBoYW5kbGUgbG9u
Z3ByZXNzIGdlc3R1cmVzLCBpbmNsdWRpbmcgbG9uZ3ByZXNzIHNlbGVjdGlvbiBvbiBBbmRyb2lk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxNzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGNoYW5nZXMgdGhlIGxvbmdwcmVzcyBnZXN0dXJlIGhhbmRsaW5nIGNvZGUgaW4gV2ViVmll
d0ltcGwgdG8gY2FsbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KKyAgICAgICAg
VGhlIFdlYkNvcmUgcGFydCBvZiB0aGlzIHBhdGNoIGFkZHMgbG9uZ3ByZXNzIGhhbmRsaW5nIHRv
IHRoYXQgbWV0aG9kLCBpbmNsdWRpbmcgdGhlIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIGJlaGF2aW91
cgorICAgICAgICByZXF1aXJlZCBmb3IgQW5kcm9pZC4gVGhpcyBtZWFucyB0aGF0IGEgbG9uZyBw
cmVzcyBnZXN0dXJlIHBlcmZvcm1lZCBvbiB3b3JkICh0aGF0IGlzIG5vdCBwYXJ0IG9mIGEgbGlu
aykKKyAgICAgICAgc2VsZWN0cyB0aGUgd29yZCwgd2l0aG91dCBnZW5lcmF0aW5nIGEgY29udGV4
dCBtZW51IGV2ZW50LgorCisgICAgICAgIEEgbmV3IHRlc3QsIFdlYlZpZXdUZXN0LkxvbmdQcmVz
c1NlbGVjdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0ZXN0IHRoaXMuCisKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9XZWJW
aWV3VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvZGF0YS9sb25ncHJlc3Nfc2VsZWN0aW9uLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTA5LTI5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgbWFrZSBTdHJpbmcqIGluc3Ry
dW1lbnRhdGlvbiBub24gaW50cnVzaXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggZmUyMzMwZWEyZGZlNDYyNmU3YWM4MGQ4MzUxZjY5MWZiNjg2MTNlOS4uNWZiMTYyNTg1
N2QwOTcwMDg2MzNiODYxOWQ5YTdhZjgxMjU2NTg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtNDMwLDI1ICs0MzAsMzMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0
ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQoTm9kZSogdGFyZ2UK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RX
b3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgcmVz
dWx0KQordm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1
bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Ug
YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKQogewogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3Vs
dC50YXJnZXROb2RlKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247CiAKLSAg
ICBpZiAoaW5uZXJOb2RlICYmIGlubmVyTm9kZS0+cmVuZGVyZXIoKSAmJiBtX21vdXNlRG93bk1h
eVN0YXJ0U2VsZWN0KSB7CisgICAgaWYgKGlubmVyTm9kZSAmJiBpbm5lck5vZGUtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5vZGUtPnJlbmRlcmVyKCkt
PnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOwogICAgICAgICBpZiAocG9z
LmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0
aW9uKHBvcyk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5ld1NlbGVjdGlv
bi5pc1JhbmdlKCkgJiYgcmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFt
ZS0+ZWRpdG9yKCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSAKKyAgICAg
ICAgaWYgKGFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UgJiYgbmV3U2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVj
dGlvbi5hcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKTsKIAogICAgICAgICB1cGRhdGVTZWxlY3Rp
b25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KGlubmVyTm9kZSwgbmV3U2VsZWN0
aW9uLCBXb3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIAordm9pZCBFdmVudEhhbmRsZXI6OnNl
bGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgcmVzdWx0KQoreworICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7
CisgICAgICAgIHNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQocmVzdWx0LmhpdFRl
c3RSZXN1bHQoKSwKKyAgICAgICAgICAgIChyZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0g
MiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5n
V2hpdGVzcGFjZSk7CisgICAgfQorfQorCiB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2Vz
dFdvcmRPckxpbmtGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQuaGl0VGVzdFJlc3VsdCgpLmlzTGl2ZUxp
bmsoKSkKQEAgLTI1MTMsOCArMjUyMSw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAg
ICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUYXAoZ2VzdHVyZUV2ZW50KTsKICAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Okdlc3R1cmVUYXBEb3duOgogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVRh
cERvd24oKTsKLSAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgorICAgICAgICByZXR1cm4gaGFu
ZGxlR2VzdHVyZUxvbmdQcmVzcyhnZXN0dXJlRXZlbnQpOworICAgIGNhc2UgUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZURvdWJsZVRhcDoKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVQaW5j
aEJlZ2luOgogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVBpbmNoRW5kOgogICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOgpAQCAtMjU2MSw2ICsyNTcwLDIx
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlVGFwKGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9
CiAKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit7CisjaWYgT1MoQU5EUk9JRCkKKyAgICBJ
bnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
Z2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0
VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCB0cnVlKTsKKyAgICBOb2RlKiBpbm5lck5v
ZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOworICAgIGlmICghcmVzdWx0LmlzTGl2ZUxpbmsoKSAm
JiBpbm5lck5vZGUgJiYgKGlubmVyTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSB8fCBpbm5lck5v
ZGUtPmlzVGV4dE5vZGUoKSkpIHsKKyAgICAgICAgc2VsZWN0Q2xvc2VzdFdvcmRGcm9tSGl0VGVz
dFJlc3VsdChyZXN1bHQsIERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOworICAgICAgICBp
ZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBzZW5kQ29udGV4dE1lbnVFdmVudEZvckdl
c3R1cmUoZ2VzdHVyZUV2ZW50KTsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1
cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
IHsKICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVNjcm9sbENvcmUoZ2VzdHVyZUV2ZW50LCBTY3Jv
bGxCeVBpeGVsV2hlZWxFdmVudCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApp
bmRleCA2ZTFkN2VkMjA4MzZkZDQ4OGRlNGE4MGUwOTc0OTU4ZmRkNGIyNzMxLi4wMTZkOTdmODlm
YjdhZTg4OGYwZWJhNjE5Y2JjOTJkNjY5N2ViNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKQEAgLTg5LDYgKzg5LDcgQEAgZXh0ZXJuIGNvbnN0IGludCBHZW5lcmFsRHJhZ0h5c3Rl
cmVzaXM7CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogZW51bSBIaXRUZXN0U2Ny
b2xsYmFycyB7IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzLCBEb250SGl0VGVzdFNjcm9sbGJhcnMg
fTsKK2VudW0gQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlIHsgU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlLCBEb250QXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlIH07CiAKIGNsYXNzIEV2ZW50
SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRIYW5kbGVyKTsKQEAgLTE2
NSw2ICsxNjYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogICAgIGJv
b2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAg
Ym9vbCBoYW5kbGVHZXN0dXJlVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisgICAg
Ym9vbCBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7
CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50Jik7CiAjZW5kaWYKIApAQCAtMjQwLDYgKzI0Miw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIGV2ZW50QWN0aXZhdGVkVmlldyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBjb25zdDsK
ICAgICBib29sIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3Rh
cnQoTm9kZSosIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBUZXh0R3JhbnVsYXJpdHkpOworICAg
IHZvaWQgc2VsZWN0Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVz
dWx0JiwgQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKTsKICAgICB2b2lkIHNlbGVjdENsb3Nlc3RX
b3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwog
ICAgIHZvaWQgc2VsZWN0Q2xvc2VzdFdvcmRPckxpbmtGcm9tTW91c2VFdmVudChjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCBkZjUxMDdhODBlMjBkNGE0MTgzZjFmNzM1OWMwNDNjNjYx
YThkZmJlLi4xZmZmYTNhODEyY2YyMDAyM2ZlM2U3NTMwNzk0Zjc2MGM3MDdjMzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03MTUsNyArNzE1LDE4
IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJl
RXZlbnQmIGV2ZW50KQogCiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlVHdvRmluZ2VyVGFwOiB7CisgICAgICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
bV9wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOworICAg
ICAgICBtX2NvbnRleHRNZW51QWxsb3dlZCA9IHRydWU7CisgICAgICAgIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCks
IGV2ZW50KTsKKyAgICAgICAgZXZlbnRTd2FsbG93ZWQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1cmUocGxhdGZv
cm1FdmVudCk7CisgICAgICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gZmFsc2U7CisKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVz
czogewogICAgICAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZVZpZXcoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzI5LDcgKzc0MCw3IEBAIGJvb2wg
V2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2
ZW50KQogICAgICAgICBtX3BhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRl
eHRNZW51KCk7CiAgICAgICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gdHJ1ZTsKICAgICAgICAg
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKSwgZXZlbnQpOwotICAgICAgICBldmVudFN3YWxsb3dlZCA9IG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
R2VzdHVyZShwbGF0Zm9ybUV2ZW50KTsKKyAgICAgICAgZXZlbnRTd2FsbG93ZWQgPSBtYWluRnJh
bWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQocGxh
dGZvcm1FdmVudCk7CiAgICAgICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gZmFsc2U7CiAKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YlZpZXdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3Qu
Y3BwCmluZGV4IGQ0NzhhYWQ5MmRkMTYxODA3NDBmM2FlYTYyYzE5ODdmZGIxYmJiYmYuLmM4NTUx
ZGYxNzZlOTg3NjA1Mzg3MTBkMmVkYmYxMzYwNDRmOTMwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCkBAIC02NDcsNCArNjQ3LDI2IEBAIFRFU1Rf
RihXZWJWaWV3VGVzdCwgQ2xpZW50VGFwSGFuZGxpbmcpCiAgICAgd2ViVmlldy0+Y2xvc2UoKTsK
IH0KIAorI2lmIE9TKEFORFJPSUQpCitURVNUX0YoV2ViVmlld1Rlc3QsIExvbmdQcmVzc1NlbGVj
dGlvbikKK3sKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVS
TChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpmcm9t
VVRGOCgibG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sIikpOworCisgICAgV2ViVmlldyogd2ViVmll
dyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJs
b25ncHJlc3Nfc2VsZWN0aW9uLmh0bWwiLCB0cnVlKTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2Vi
U2l6ZSg1MDAsIDMwMCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIHdlYmtpdF9zdXBw
b3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKworICAgIFdlYlN0cmluZyB0YXJnZXQgPSBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJ0YXJnZXQiKTsKKyAgICBXZWJTdHJpbmcgb25zZWxlY3RzdGFy
dGZhbHNlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgib25zZWxlY3RzdGFydGZhbHNlIik7CisgICAg
V2ViRnJhbWVJbXBsKiBmcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXct
Pm1haW5GcmFtZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKHRhcEVsZW1lbnRCeUlkKHdlYlZpZXcs
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MsIG9uc2VsZWN0c3RhcnRmYWxzZSkpOwor
ICAgIEVYUEVDVF9FUSgiIiwgc3RkOjpzdHJpbmcoZnJhbWUtPnNlbGVjdGlvbkFzVGV4dCgpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0YXBFbGVtZW50QnlJZCh3ZWJWaWV3LCBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzLCB0YXJnZXQpKTsKKyAgICBFWFBFQ1RfRVEo
InRlc3R3b3JkIiwgc3RkOjpzdHJpbmcoZnJhbWUtPnNlbGVjdGlvbkFzVGV4dCgpLnV0ZjgoKS5k
YXRhKCkpKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9sb25ncHJlc3Nfc2VsZWN0aW9u
Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbG9uZ3ByZXNzX3NlbGVj
dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2Njk5NGY5YjBmN2M2YjEwZDQ0YjhjMzJiZGFjOWI1MDQx
NzYyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2Rh
dGEvbG9uZ3ByZXNzX3NlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK3NwYW4geworICAgIGZvbnQtc2l6ZTogMzAw
JTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0hlbGxvIHRoaXMgaXMgc29tZSB0ZXh0
IGZvciB0ZXN0aW5nLiBIZXJlIGlzIGEKKzxzcGFuIGlkPSJ0YXJnZXQiPgordGVzdHdvcmQKKzwv
c3Bhbj4KK3RoYXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gc2VsZWN0IGJ5IGxvbmdwcmVzc2luZy4K
KworVG8gdGVzdCBvbnNlbGVjdHN0YXJ0LCBoZXJlIGlzCis8c3BhbiBpZD0ib25zZWxlY3RzdGFy
dGZhbHNlIiBvbnNlbGVjdHN0YXJ0PSJyZXR1cm4gZmFsc2U7Ij4KK2Fub3RoZXJiaXRvZnRleHQK
Kzwvc3Bhbj4KK3RoYXQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHNlbGVjdC4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>