<?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>94727</bug_id>
          
          <creation_ts>2012-08-22 10:48:27 -0700</creation_ts>
          <short_desc>Content detection should not disrupt the page behaviour</short_desc>
          <delta_ts>2012-08-29 09:42:08 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Leandro Graciá Gil">leandrogracia</assigned_to>
          <cc>abarth</cc>
    
    <cc>efidler</cc>
    
    <cc>eric</cc>
    
    <cc>gmak</cc>
    
    <cc>peter</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>702053</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-22 10:48:27 -0700</bug_when>
    <thetext>The content detection feature, which requests the embedder to look for content around a given position tapped by the user, should not interfere with the expected behaviour of the page in terms of management of click, touch and mouse events. Since detecting content might fire Android intents that launch other apps and therefore disrupt browsing, we need to make sure we don&apos;t perform content detection if the page is expecting to manage the taps starting it.

At the same time we found during testing that many pages introduce a click listener on the &lt;body&gt; element, which we never found to be related to the content in any way. We want to keep allowing content detection in that special case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702057</commentid>
    <comment_count>1</comment_count>
      <attachid>159964</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-22 10:50:43 -0700</bug_when>
    <thetext>Created attachment 159964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702060</commentid>
    <comment_count>2</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-22 10:52:58 -0700</bug_when>
    <thetext>This is what we last had when previously discussing this. Adam, you were suggesting before to move this to another place, possibly the default event handler. How would that affect to detecting event listeners while still allowing content detection to happen for the &lt;body&gt; case?

I&apos;m not sure I fully understood your approach or if the page would need to add any kind of preventDefault. Could you elaborate a bit, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702219</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 12:38:01 -0700</bug_when>
    <thetext>&gt; This is what we last had when previously discussing this. Adam, you were suggesting before to move this to another place, possibly the default event handler. How would that affect to detecting event listeners while still allowing content detection to happen for the &lt;body&gt; case?
&gt;
&gt; I&apos;m not sure I fully understood your approach or if the page would need to add any kind of preventDefault. Could you elaborate a bit, please?

Consider how a normal hyperlinks works.  We first dispatch the click event through the DOM.  If the page handles the event and calls its preventDefault() function, then we don&apos;t do anything.  If the page doesn&apos;t call preventDefault() on the event, then the HTMLAnchorElement has a default event handler that navigates to the hyperlink&apos;s URL.

The approach I was suggesting here is analogous.  We dispatch the event through the DOM and give the page a chance to handle the event.  If the page handles the event and calls preventDefault(), then we don&apos;t do anything.  Otherwise, if the event makes it through the DOM without preventDefault() being called, then we&apos;ll trigger the Android intent behavior.

For the &lt;body&gt; case, the question is whether the event handlers attached to &lt;body&gt; call preventDefault().  For example, if they&apos;re just watching for clicks and logging them, they probably aren&apos;t going to call preventDefault() because that would stop all the hyperlinks on the page from working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702256</commentid>
    <comment_count>4</comment_count>
      <attachid>159964</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-22 13:21:23 -0700</bug_when>
    <thetext>Comment on attachment 159964
Patch

How do we test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702294</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 13:47:38 -0700</bug_when>
    <thetext>&gt; How do we test this?

We can test this via a WebKit unit test.  However, this function is currently not called by anyone because we haven&apos;t resolve the issue of whether to call the function before or after dispatching the event through the DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702329</commentid>
    <comment_count>6</comment_count>
      <attachid>159964</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-22 14:13:30 -0700</bug_when>
    <thetext>Comment on attachment 159964
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3925
&gt; +        if (node-&gt;isLink() || (touchType != WebInputEvent::GestureLongPress &amp;&amp; (node-&gt;hasEventListeners(eventNames().clickEvent)
&gt; +            || node-&gt;hasEventListeners(eventNames().touchstartEvent) || node-&gt;hasEventListeners(eventNames().touchendEvent)
&gt; +            || node-&gt;hasEventListeners(eventNames().mousedownEvent) || node-&gt;hasEventListeners(eventNames().mouseupEvent)))) {

You should just use node-&gt;willRespondToMouseClickEvents().
Also, Source/WebKit/blackberry/TouchEventHandler.cpp has hasTouchListener, which may more or less check a similar condition.
Given that we may want to add a new method to Node to share code here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702912</commentid>
    <comment_count>7</comment_count>
      <attachid>159964</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-23 05:52:38 -0700</bug_when>
    <thetext>Comment on attachment 159964
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3925
&gt;&gt; +            || node-&gt;hasEventListeners(eventNames().mousedownEvent) || node-&gt;hasEventListeners(eventNames().mouseupEvent)))) {
&gt; 
&gt; You should just use node-&gt;willRespondToMouseClickEvents().
&gt; Also, Source/WebKit/blackberry/TouchEventHandler.cpp has hasTouchListener, which may more or less check a similar condition.
&gt; Given that we may want to add a new method to Node to share code here.

Sounds like a very good suggestion to me. I&apos;ll add a willRespondToTouchEvents method in Node and use it together with willRespondToMouseClickEvents.

Should I also update the blackberry port code to use the new method? If the answer is yes, who should review that bit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702914</commentid>
    <comment_count>8</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-23 05:54:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; This is what we last had when previously discussing this. Adam, you were suggesting before to move this to another place, possibly the default event handler. How would that affect to detecting event listeners while still allowing content detection to happen for the &lt;body&gt; case?
&gt; &gt;
&gt; &gt; I&apos;m not sure I fully understood your approach or if the page would need to add any kind of preventDefault. Could you elaborate a bit, please?
&gt; 
&gt; Consider how a normal hyperlinks works.  We first dispatch the click event through the DOM.  If the page handles the event and calls its preventDefault() function, then we don&apos;t do anything.  If the page doesn&apos;t call preventDefault() on the event, then the HTMLAnchorElement has a default event handler that navigates to the hyperlink&apos;s URL.
&gt; 
&gt; The approach I was suggesting here is analogous.  We dispatch the event through the DOM and give the page a chance to handle the event.  If the page handles the event and calls preventDefault(), then we don&apos;t do anything.  Otherwise, if the event makes it through the DOM without preventDefault() being called, then we&apos;ll trigger the Android intent behavior.
&gt; 
&gt; For the &lt;body&gt; case, the question is whether the event handlers attached to &lt;body&gt; call preventDefault().  For example, if they&apos;re just watching for clicks and logging them, they probably aren&apos;t going to call preventDefault() because that would stop all the hyperlinks on the page from working.

Ok, sounds reasonable. Let&apos;s try using the default event handler. Where is that code exactly located?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703108</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-23 10:15:42 -0700</bug_when>
    <thetext>&gt; Ok, sounds reasonable. Let&apos;s try using the default event handler. Where is that code exactly located?

If you look in WebViewImpl::handleGestureEvent, you&apos;ll see a bunch of lines of code like:

        bool gestureHandled = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent(platformEvent);

What you want to do is call detectContentOnTouch if gestureHandled is false.

You know, now that I write this, I realize that we don&apos;t expose gesture events to web sites anyway, so they won&apos;t be able to intercept the event...  That means we&apos;ll probably still need to use willRespondToTouchEvents and willRespondToMouseClickEvents.  Sorry I didn&apos;t realize that earlier.

We should still only call this function if gestureHandled is false though so that this will work correctly when we do start exposing gesture events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704264</commentid>
    <comment_count>10</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-24 11:17:49 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Ok, sounds reasonable. Let&apos;s try using the default event handler. Where is that code exactly located?
&gt; 
&gt; If you look in WebViewImpl::handleGestureEvent, you&apos;ll see a bunch of lines of code like:
&gt; 
&gt;         bool gestureHandled = mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent(platformEvent);
&gt; 
&gt; What you want to do is call detectContentOnTouch if gestureHandled is false.
&gt; 
&gt; You know, now that I write this, I realize that we don&apos;t expose gesture events to web sites anyway, so they won&apos;t be able to intercept the event...  That means we&apos;ll probably still need to use willRespondToTouchEvents and willRespondToMouseClickEvents.  Sorry I didn&apos;t realize that earlier.
&gt; 
&gt; We should still only call this function if gestureHandled is false though so that this will work correctly when we do start exposing gesture events.

If there is a click listener on the body that doesn&apos;t call preventDefault, will gestureHandled be false?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704289</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-24 11:44:15 -0700</bug_when>
    <thetext>The return value is per event, so click event handlers won&apos;t affect gesture handled, so we&apos;ll need logic like what you&apos;ve got in your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704311</commentid>
    <comment_count>12</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-24 12:00:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; The return value is per event, so click event handlers won&apos;t affect gesture handled, so we&apos;ll need logic like what you&apos;ve got in your patch.

I&apos;m trying to write a WebKit unit test, but I&apos;ll need a way to simulate taps and long press events over specific elements by their ids. Any suggestions? What I&apos;m trying so far doesn&apos;t seem to work very well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704484</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-24 16:07:14 -0700</bug_when>
    <thetext>I would just make the element huge with CSS and the send the input event in with Widget.handleInputEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704485</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-24 16:07:30 -0700</bug_when>
    <thetext>WebWidget::handleInputEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706308</commentid>
    <comment_count>15</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-28 07:10:18 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; WebWidget::handleInputEvent

Looks like tap events are being always consumed, even if there are no listeners on the page. Single tap events are becoming mouse event single click events, which eventually are consumed to create selectstart events  (see the return of EventHandler::handleMousePressEventSingleClick and the EventHandler::updateSelectionForMouseDownDispatchingSelectStart method).

For long taps the situation is similar but with EventHandler::dispatchMouseEvent, which calls to the specific node dispatchMouseEvent and consumes the event. Also, I see we&apos;re handling context menu events for long taps. Should we prioritise content detection over the context menu event? We need to make sure content detection has a chance to run.

So, detecting content only if gestureHandled is false doesn&apos;t work in either tap case. Any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706338</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 07:50:48 -0700</bug_when>
    <thetext>&gt; So, detecting content only if gestureHandled is false doesn&apos;t work in either tap case. Any suggestions?

Thanks for investigating that direction.  It sounds like we should do this similarly to how we&apos;re doing it in the chromium-android branch (just using willRespondToMouseClickEvents and/or hasTouchListener has rniwa suggests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706577</commentid>
    <comment_count>17</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-28 11:40:50 -0700</bug_when>
    <thetext>Removing [Chromium] from the bug name as it will introduce a new method in WebCore::Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706589</commentid>
    <comment_count>18</comment_count>
      <attachid>161026</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-28 11:54:31 -0700</bug_when>
    <thetext>Created attachment 161026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706798</commentid>
    <comment_count>19</comment_count>
      <attachid>161026</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 15:37:08 -0700</bug_when>
    <thetext>Comment on attachment 161026
Patch

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

Thanks for iterating on the patch!

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4009
&gt; +        if (node-&gt;isLink() || (touchType != WebInputEvent::GestureLongPress
&gt; +                &amp;&amp; (node-&gt;willRespondToTouchEvents() || node-&gt;willRespondToMouseClickEvents()))) {
&gt; +            return false;

I would have broken this up in to a couple of if-statements to make it easier to understand the logic here, but this is fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706877</commentid>
    <comment_count>20</comment_count>
      <attachid>161026</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 16:48:58 -0700</bug_when>
    <thetext>Comment on attachment 161026
Patch

Rejecting attachment 161026 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:
webkit-commit-queue/Source/WebKit/chromium/webkit --revision 153466 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
50&gt;At revision 153466.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13656528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706882</commentid>
    <comment_count>21</comment_count>
      <attachid>161026</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 16:50:32 -0700</bug_when>
    <thetext>Comment on attachment 161026
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

This line is tripping you up.  I&apos;ll remove it for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706884</commentid>
    <comment_count>22</comment_count>
      <attachid>161091</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 16:54:21 -0700</bug_when>
    <thetext>Created attachment 161091
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706949</commentid>
    <comment_count>23</comment_count>
      <attachid>161091</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 18:05:18 -0700</bug_when>
    <thetext>Comment on attachment 161091
Patch for landing

Clearing flags on attachment: 161091

Committed r126945: &lt;http://trac.webkit.org/changeset/126945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706950</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 18:05:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707024</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 19:36:27 -0700</bug_when>
    <thetext>Follow up patch in http://trac.webkit.org/changeset/126951</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159964</attachid>
            <date>2012-08-22 10:50:43 -0700</date>
            <delta_ts>2012-08-28 11:54:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94727-20120822185040.patch</filename>
            <type>text/plain</type>
            <size>2273</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDc4MDRlY2Q5N2YxNDliZjA4MzQ5MDMyMzBlNzdiMDAxNzI5NDEyMmYuLmIxYzVjMTlkZDc5YzQz
YjA2MDgwZjA4N2RhZmFmZTU5YzkxNzZiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMjIgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQ29udGVudCBkZXRlY3Rp
b24gc2hvdWxkIG5vdCBkaXNydXB0IHRoZSBwYWdlIGJlaGF2aW91cgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3MjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2hlY2tzIGZvciB0aGUgYXBwcm9w
cmlhdGUgZXZlbnQgbGlzdGVuZXJzIGluIG9yZGVyIHRvIHByZXZlbnQKKyAgICAgICAgdHJpZ2dl
cmluZyBjb250ZW50IGRldGVjdGlvbiB3aGVuIGl0IHdvdWxkIGRpc3J1cHQgdGhlIHBhZ2UncyBi
ZWhhdmlvdXIuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29udGVudE9uVG91Y2gpOgorCiAyMDEyLTA4LTIyICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKaW5kZXggYjE4ZTIwOTQ0MzNlNjE5NzJmZWY5MjdlYmIzNDJhZjAzNjZhZjQxZC4u
MzE4NTE5NjcxNTkxNGU3OTc4YTUzMTdiZjE1ZDMyODM3YjAxM2Y2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzkxNyw3ICszOTE3LDE1IEBAIGJv
b2wgV2ViVmlld0ltcGw6OmRldGVjdENvbnRlbnRPblRvdWNoKGNvbnN0IFdlYlBvaW50JiBwb3Np
dGlvbiwgV2ViSW5wdXRFdmVudDo6CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc1RleHROb2Rl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugbm90
IGRldGVjdCBjb250ZW50IGludGVudHMgaW4gbm9kZXMgdGhhdCBoYXZlIGV2ZW50IGxpc3RlbmVy
cz8KKyAgICAvLyBJZ25vcmUgd2hlbiB0YXBwaW5nIG9uIGxpbmtzIG9yIG5vZGVzIGxpc3Rlbmlu
ZyB0byBjbGljayBldmVudHMsIHVubGVzcyB0aGUgY2xpY2sgZXZlbnQgaXMgb24gdGhlCisgICAg
Ly8gYm9keSBlbGVtZW50LCBpbiB3aGljaCBjYXNlIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUgb3Jp
Z2luYWwgbm9kZSBpdHNlbGYgd2FzIGludGVuZGVkIHRvIGJlIGNsaWNrYWJsZS4KKyAgICBmb3Ig
KDsgbm9kZSAmJiAhbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpOyBub2RlID0g
bm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2RlLT5pc0xpbmsoKSB8fCAodG91
Y2hUeXBlICE9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MgJiYgKG5vZGUtPmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KQorICAgICAgICAgICAgfHwgbm9k
ZS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudCkgfHwgbm9k
ZS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAg
ICAgICB8fCBub2RlLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZl
bnQpIHx8IG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQp
KSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KIAogICAg
IFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQgY29udGVudCA9IG1fY2xpZW50LT5kZXRlY3RDb250
ZW50QXJvdW5kKHRvdWNoSGl0KTsKICAgICBpZiAoIWNvbnRlbnQuaXNWYWxpZCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161026</attachid>
            <date>2012-08-28 11:54:31 -0700</date>
            <delta_ts>2012-08-28 16:54:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94727-20120828195421.patch</filename>
            <type>text/plain</type>
            <size>14495</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0MWY1YWI4MDhhMDQy
MDU1OWYwODE1YjU4ZmYwYWVlMWY5ZDhiOC4uYTk1MGJhZjM3NzQ0YmY3ODQ0YzNlYzJhNTdlYTcx
OWU1MzIwZTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA4LTI4ICBMZWFu
ZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVtLm9yZz4KKworICAgICAgICBD
b250ZW50IGRldGVjdGlvbiBzaG91bGQgbm90IGRpc3J1cHQgdGhlIHBhZ2UgYmVoYXZpb3VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDcyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwg
aW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBs
ZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RlZCBieSBXZWJWaWV3VGVzdDo6RGV0ZWN0Q29udGVudEFyb3VuZFBvc2l0aW9uLgor
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6d2lsbFJl
c3BvbmRUb1RvdWNoRXZlbnRzKTogY2hlY2tzIGlmIGEgbm9kZSBsaXN0ZW5zIHRvIHRvdWNoIGV2
ZW50cy4gVmVyeSBzaW1pbGFyIHRvIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgor
CiAyMDEyLTA4LTI4ICBLZXZpbiBGdW5rICA8a2V2aW4uZnVua0BrZGFiLmNvbT4KIAogICAgICAg
ICBDb21waWxlIGZpeDogdXNlIGZhYnMoKSBpbnN0ZWFkIG9mIGFicygpIGZvciBkb3VibGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYyM2ZhYWE3YzA2ZWY3M2NhNzVmMTQ5MWMwNWFm
MGUyN2I2MWM5ZTcuLmQyYzBlZDI0NmQzZTNlYTA1MTJlOGY0MDExODI5NTc2MWIyZTMzZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDgtMjggIExl
YW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IENvbnRlbnQgZGV0ZWN0aW9uIHNob3VsZCBub3QgZGlzcnVwdCB0aGUgcGFnZSBiZWhhdmlvdXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJpZ2dlcnMg
Y29udGVudCBkZXRlY3Rpb24gaW4gdGhlIGVtYmVkZGVyIG9uIHRhcCBnZXN0dXJlcyBhbmQKKyAg
ICAgICAgYWRkIGNoZWNrcyBmb3IgdGhlIGFwcHJvcHJpYXRlIGV2ZW50IGxpc3RlbmVycyBpbiBv
cmRlciB0byBwcmV2ZW50CisgICAgICAgIHRyaWdnZXJpbmcgY29udGVudCBkZXRlY3Rpb24gd2hl
biBpdCB3b3VsZCBkaXNydXB0IHRoZSBwYWdlJ3MgYmVoYXZpb3VyLgorCisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUdl
c3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkZXRlY3RDb250ZW50
T25Ub3VjaCk6CisgICAgICAgICogdGVzdHMvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAqIHRl
c3RzL2RhdGEvY29udGVudF9saXN0ZW5lcnMuaHRtbDogQWRkZWQuCisKIDIwMTItMDgtMjcgIFRp
ZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
UmVtb3ZlIHN0dWIgZm9yIFdlYlZpZXc6OmdldFRvdWNoSGlnaGxpZ2h0UXVhZHMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IGEzYTFjMjJmMjU1NDlmN2ZjYWJmNDA3MDE2MWFiNjk4ZWQyMWM3OWIuLmEy
YzlhMWRjMmJmYTY3YzdlYTkzMGQ5N2I2YWM5ZDcxNGNiMDA4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTI3NjUsNiArMjc2NSwxNyBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKCkKICAgICByZXR1cm4gaXNDb250ZW50RWRpdGFibGUoKSB8fCBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuRE9NQWN0aXZh
dGVFdmVudCk7CiB9CiAKK2Jvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKCkKK3sK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChkaXNhYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50
b3VjaHN0YXJ0RXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50b3VjaG1v
dmVFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZl
bnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50KTsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKICNpZiBFTkFCTEUoTUlDUk9EQVRB
KQogRE9NU2V0dGFibGVUb2tlbkxpc3QqIE5vZGU6Oml0ZW1Qcm9wKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDk3ZTU5M2FkYmVmZjA5MzhkMzdlNTY3NGJjYWJlZWNkYTJhM2E2MzEuLjNiN2NjZDdmYjMy
MzMzMzJmNmNkNWJhZGYyMWU1NzI1MDgyMDJlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTg0LDYgKzU4
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3Zl
RXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCk7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpOwogCiAgICAg
UGFzc1JlZlB0cjxFbGVtZW50PiBxdWVyeVNlbGVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgc2Vs
ZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcXVlcnlT
ZWxlY3RvckFsbChjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGNlNTgz
YmQwNTA3ZGJkYTkxNzJhNDMyYzY4ZjI1ZDA3ZmVmNmNjNDEuLjA0ZjU4NjNiNjg3MTJjODNkM2Ey
NWQyYTk5NjRjYmYzNWRhYzZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTY4Nyw2ICs2ODcsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVH
ZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKIHsKICAgICBzd2l0Y2gg
KGV2ZW50LnR5cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
OiB7CisgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOwog
ICAgICAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7
CiAgICAgICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9i
YWxYLCBldmVudC5nbG9iYWxZKTsKICAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQubW9k
aWZpZXJzOwpAQCAtNzAyLDYgKzcwMywxMCBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOiB7Cisg
ICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOworICAgICAg
ICBpZiAoZGV0ZWN0Q29udGVudE9uVG91Y2goV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSksIGV2
ZW50LnR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAgICAgUGxhdGZvcm1H
ZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZp
ZXcoKSwgZXZlbnQpOwogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6UG9wdXBDb250YWluZXI+IHNl
bGVjdFBvcHVwOwogICAgICAgICBzZWxlY3RQb3B1cCA9IG1fc2VsZWN0UG9wdXA7CkBAIC03MjIs
NiArNzI3LDEwIEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAh
bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorICAgICAgICBtX2NsaWVudC0+Y2FuY2VsU2NoZWR1bGVkQ29udGVudEludGVudHMoKTsKKyAg
ICAgICAgaWYgKGRldGVjdENvbnRlbnRPblRvdWNoKFdlYlBvaW50KGV2ZW50LngsIGV2ZW50Lnkp
LCBldmVudC50eXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgICAgIG1fcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKICAgICAgICAg
bV9jb250ZXh0TWVudUFsbG93ZWQgPSB0cnVlOwogICAgICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVu
dCk7CkBAIC03MzAsNiArNzM5LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybiBoYW5kbGVk
OwogICAgIH0KICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOiB7CisgICAg
ICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOwogICAgICAgICAv
LyBRdWV1ZSBhIGhpZ2hsaWdodCBhbmltYXRpb24sIHRoZW4gaGFuZCBvZmYgdG8gcmVndWxhciBo
YW5kbGVyLgogI2lmIE9TKExJTlVYKQogICAgICAgICBlbmFibGVUb3VjaEhpZ2hsaWdodChJbnRQ
b2ludChldmVudC54LCBldmVudC55KSk7CkBAIC03MzcsMTEgKzc0NywxMiBAQCBib29sIFdlYlZp
ZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkK
ICAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwogICAgICAgICByZXR1cm4gbWFpbkZyYW1l
SW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KHBsYXRm
b3JtRXZlbnQpOwogICAgIH0KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVU
YXA6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKKyAgICAgICAgbV9jbGllbnQtPmNh
bmNlbFNjaGVkdWxlZENvbnRlbnRJbnRlbnRzKCk7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kOgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVw
ZGF0ZToKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6Ci0gICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5j
aFVwZGF0ZTogewogICAgICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1F
dmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7CkBAIC0zOTkwLDcgKzQw
MDEsMTQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29udGVudE9uVG91Y2goY29uc3QgV2Vi
UG9pbnQmIHBvc2l0aW9uLCBXZWJJbnB1dEV2ZW50OjoKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUt
PmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSBub3QgZGV0ZWN0IGNvbnRlbnQgaW50ZW50cyBpbiBub2RlcyB0aGF0IGhhdmUgZXZl
bnQgbGlzdGVuZXJzPworICAgIC8vIElnbm9yZSB3aGVuIHRhcHBpbmcgb24gbGlua3Mgb3Igbm9k
ZXMgbGlzdGVuaW5nIHRvIGNsaWNrIGV2ZW50cywgdW5sZXNzIHRoZSBjbGljayBldmVudCBpcyBv
biB0aGUKKyAgICAvLyBib2R5IGVsZW1lbnQsIGluIHdoaWNoIGNhc2UgaXQncyB1bmxpa2VseSB0
aGF0IHRoZSBvcmlnaW5hbCBub2RlIGl0c2VsZiB3YXMgaW50ZW5kZWQgdG8gYmUgY2xpY2thYmxl
LgorICAgIGZvciAoOyBub2RlICYmICFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRh
Zyk7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzTGlu
aygpIHx8ICh0b3VjaFR5cGUgIT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcworICAg
ICAgICAgICAgICAgICYmIChub2RlLT53aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSB8fCBub2Rl
LT53aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpKSkpIHsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1
bHQgY29udGVudCA9IG1fY2xpZW50LT5kZXRlY3RDb250ZW50QXJvdW5kKHRvdWNoSGl0KTsKICAg
ICBpZiAoIWNvbnRlbnQuaXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYlZpZXdUZXN0LmNwcAppbmRleCA0NmM5NjMxMGQ2NGM4OGRhOTBiZjE3MWQzODIzMjdiZjAz
MzBkN2Q4Li5mYThjZDIzODI2MGE3OGU2YmEwMzMxNGZlNWIwYzE0N2YyODdkNGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcApAQCAtMzIsMTQgKzMy
LDE4IEBACiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIlVS
TFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViQ29udGVudERldGVjdGlvblJlc3VsdC5oIgog
I2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJWaWV3SW1wbC5oIgpAQCAtNDE4LDQgKzQyMiwxMzIgQEAgVEVTVF9GKFdlYlZpZXdUZXN0LCBT
ZXRDb21wb3NpdGlvbkZyb21FeGlzdGluZ1RleHQpCiAgICAgd2ViVmlldy0+Y2xvc2UoKTsKIH0K
IAorY2xhc3MgQ29udGVudERldGVjdG9yQ2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQgewor
cHVibGljOgorICAgIENvbnRlbnREZXRlY3RvckNsaWVudCgpIHsgcmVzZXQoKTsgfQorCisgICAg
dmlydHVhbCBXZWJDb250ZW50RGV0ZWN0aW9uUmVzdWx0IGRldGVjdENvbnRlbnRBcm91bmQoY29u
c3QgV2ViSGl0VGVzdFJlc3VsdCYgaGl0VGVzdCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1f
Y29udGVudERldGVjdGlvblJlcXVlc3RlZCA9IHRydWU7CisgICAgICAgIHJldHVybiBtX2NvbnRl
bnREZXRlY3Rpb25SZXN1bHQ7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29u
dGVudEludGVudChjb25zdCBXZWJVUkwmIHVybCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1f
c2NoZWR1bGVkSW50ZW50VVJMID0gdXJsOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX3Bl
bmRpbmdJbnRlbnRzQ2FuY2VsbGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0KCkK
KyAgICB7CisgICAgICAgIG1fY29udGVudERldGVjdGlvblJlcXVlc3RlZCA9IGZhbHNlOworICAg
ICAgICBtX3BlbmRpbmdJbnRlbnRzQ2FuY2VsbGVkID0gZmFsc2U7CisgICAgICAgIG1fc2NoZWR1
bGVkSW50ZW50VVJMID0gV2ViVVJMKCk7CisgICAgICAgIG1fY29udGVudERldGVjdGlvblJlc3Vs
dCA9IFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQoKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRl
bnREZXRlY3Rpb25SZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnREZXRlY3Rpb25S
ZXF1ZXN0ZWQ7IH0KKyAgICBib29sIHBlbmRpbmdJbnRlbnRzQ2FuY2VsbGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wZW5kaW5nSW50ZW50c0NhbmNlbGxlZDsgfQorICAgIGNvbnN0IFdlYlVSTCYgc2No
ZWR1bGVkSW50ZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zY2hlZHVsZWRJbnRlbnRVUkw7IH0K
KyAgICB2b2lkIHNldENvbnRlbnREZXRlY3Rpb25SZXN1bHQoY29uc3QgV2ViQ29udGVudERldGVj
dGlvblJlc3VsdCYgcmVzdWx0KSB7IG1fY29udGVudERldGVjdGlvblJlc3VsdCA9IHJlc3VsdDsg
fQorCitwcml2YXRlOgorICAgIGJvb2wgbV9jb250ZW50RGV0ZWN0aW9uUmVxdWVzdGVkOworICAg
IGJvb2wgbV9wZW5kaW5nSW50ZW50c0NhbmNlbGxlZDsKKyAgICBXZWJVUkwgbV9zY2hlZHVsZWRJ
bnRlbnRVUkw7CisgICAgV2ViQ29udGVudERldGVjdGlvblJlc3VsdCBtX2NvbnRlbnREZXRlY3Rp
b25SZXN1bHQ7Cit9OworCitzdGF0aWMgYm9vbCB0YXBFbGVtZW50QnlJZChXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IFdlYlN0cmluZyYgaWQpCit7Cisg
ICAgQVNTRVJUKHdlYlZpZXcpOworICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiA+KHdlYlZpZXctPm1h
aW5GcmFtZSgpLT5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUlkKGlkKSk7CisgICAgaWYgKCFlbGVt
ZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBlbGVtZW50LT5zY3JvbGxJbnRvVmll
d0lmTmVlZGVkKCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgY2VudGVyID0gZWxlbWVudC0+c2Ny
ZWVuUmVjdCgpLmNlbnRlcigpOworCisgICAgV2ViR2VzdHVyZUV2ZW50IGV2ZW50OworICAgIGV2
ZW50LnR5cGUgPSB0eXBlOworICAgIGV2ZW50LnggPSBjZW50ZXIueCgpOworICAgIGV2ZW50Lnkg
PSBjZW50ZXIueSgpOworCisgICAgd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7Cisg
ICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIHJldHVybiB0
cnVlOworfQorCitURVNUX0YoV2ViVmlld1Rlc3QsIERldGVjdENvbnRlbnRBcm91bmRQb3NpdGlv
bikKK3sKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChX
ZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpmcm9tVVRG
OCgiY29udGVudF9saXN0ZW5lcnMuaHRtbCIpKTsKKworICAgIENvbnRlbnREZXRlY3RvckNsaWVu
dCBjbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJjb250ZW50X2xpc3RlbmVycy5odG1sIiwgdHJ1
ZSwgMCwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNTAwLCAzMDApKTsK
KyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGlu
Z01lc3NhZ2VzKCk7CisKKyAgICBXZWJTdHJpbmcgY2xpY2tMaXN0ZW5lciA9IFdlYlN0cmluZzo6
ZnJvbVVURjgoImNsaWNrTGlzdGVuZXIiKTsKKyAgICBXZWJTdHJpbmcgdG91Y2hzdGFydExpc3Rl
bmVyID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidG91Y2hzdGFydExpc3RlbmVyIik7CisgICAgV2Vi
U3RyaW5nIG1vdXNlZG93bkxpc3RlbmVyID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgibW91c2Vkb3du
TGlzdGVuZXIiKTsKKyAgICBXZWJTdHJpbmcgbm9MaXN0ZW5lciA9IFdlYlN0cmluZzo6ZnJvbVVU
RjgoIm5vTGlzdGVuZXIiKTsKKyAgICBXZWJTdHJpbmcgbGluayA9IFdlYlN0cmluZzo6ZnJvbVVU
RjgoImxpbmsiKTsKKworICAgIC8vIEVuc3VyZSBjb250ZW50IGRldGVjdGlvbiBpcyBub3QgcmVx
dWVzdGVkIGZvciBub2RlcyBsaXN0ZW5pbmcgdG8gY2xpY2ssCisgICAgLy8gbW91c2Ugb3IgdG91
Y2ggZXZlbnRzIHdoZW4gd2UgZG8gc2ltcGxlIHRhcHMuCisgICAgRVhQRUNUX1RSVUUodGFwRWxl
bWVudEJ5SWQod2ViVmlldywgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcCwgY2xpY2tMaXN0ZW5l
cikpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuY29udGVudERldGVjdGlvblJlcXVlc3RlZCgp
KTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIEVYUEVDVF9UUlVFKHRhcEVsZW1lbnRCeUlk
KHdlYlZpZXcsIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAsIHRvdWNoc3RhcnRMaXN0ZW5lcikp
OworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuY29udGVudERldGVjdGlvblJlcXVlc3RlZCgpKTsK
KyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIEVYUEVDVF9UUlVFKHRhcEVsZW1lbnRCeUlkKHdl
YlZpZXcsIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAsIG1vdXNlZG93bkxpc3RlbmVyKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5jb250ZW50RGV0ZWN0aW9uUmVxdWVzdGVkKCkpOworICAg
IGNsaWVudC5yZXNldCgpOworCisgICAgLy8gQ29udGVudCBkZXRlY3Rpb24gc2hvdWxkIHN0aWxs
IHdvcmsgb24gY2xpY2ssIG1vdXNlIGFuZCB0b3VjaCBldmVudCBsaXN0ZW5lcnMgZm9yIGxvbmcg
dGFwcworICAgIC8vIGFzIGxvbmcgYXMgd2UncmUgbm90IHRhcHBpbmcgb24gbGlua3MuCisgICAg
RVhQRUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZUxvbmdQcmVzcywgY2xpY2tMaXN0ZW5lcikpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5jb250
ZW50RGV0ZWN0aW9uUmVxdWVzdGVkKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgRVhQ
RUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxv
bmdQcmVzcywgdG91Y2hzdGFydExpc3RlbmVyKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmNv
bnRlbnREZXRlY3Rpb25SZXF1ZXN0ZWQoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBF
WFBFQ1RfVFJVRSh0YXBFbGVtZW50QnlJZCh3ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
TG9uZ1ByZXNzLCBtb3VzZWRvd25MaXN0ZW5lcikpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5j
b250ZW50RGV0ZWN0aW9uUmVxdWVzdGVkKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAg
RVhQRUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZUxvbmdQcmVzcywgbGluaykpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuY29udGVudERldGVj
dGlvblJlcXVlc3RlZCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIENvbnRlbnQg
ZGV0ZWN0aW9uIHNob3VsZCB3b3JrIG5vcm1hbGx5IHdpdGhvdXQgdGhlc2UgZXZlbnQgbGlzdGVu
ZXJzLgorICAgIC8vIFRoZSBjbGljayBsaXN0ZW5lciBpbiB0aGUgYm9keSBzaG91bGQgYmUgaWdu
b3JlZCBhcyBhIHNwZWNpYWwgY2FzZS4KKyAgICBFWFBFQ1RfVFJVRSh0YXBFbGVtZW50QnlJZCh3
ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwLCBub0xpc3RlbmVyKSk7CisgICAgRVhQ
RUNUX1RSVUUoY2xpZW50LmNvbnRlbnREZXRlY3Rpb25SZXF1ZXN0ZWQoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGNsaWVudC5zY2hlZHVsZWRJbnRlbnRVUkwoKS5pc1ZhbGlkKCkpOworCisgICAgV2Vi
VVJMIGludGVudFVSTCA9IHRvS1VSTChtX2Jhc2VVUkwpOworICAgIGNsaWVudC5zZXRDb250ZW50
RGV0ZWN0aW9uUmVzdWx0KFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQoV2ViUmFuZ2UoKSwgV2Vi
U3RyaW5nKCksIGludGVudFVSTCkpOworICAgIEVYUEVDVF9UUlVFKHRhcEVsZW1lbnRCeUlkKHdl
YlZpZXcsIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAsIG5vTGlzdGVuZXIpKTsKKyAgICBFWFBF
Q1RfVFJVRShjbGllbnQuc2NoZWR1bGVkSW50ZW50VVJMKCkgPT0gaW50ZW50VVJMKTsKKworICAg
IC8vIFRhcHBpbmcgZWxzZXdoZXJlIHNob3VsZCBjYW5jZWwgdGhlIHNjaGVkdWxlZCBpbnRlbnQu
CisgICAgV2ViR2VzdHVyZUV2ZW50IGV2ZW50OworICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlVGFwOworICAgIHdlYlZpZXctPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwor
ICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBFWFBFQ1Rf
VFJVRShjbGllbnQucGVuZGluZ0ludGVudHNDYW5jZWxsZWQoKSk7CisgICAgd2ViVmlldy0+Y2xv
c2UoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL2NvbnRlbnRfbGlzdGVuZXJzLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvY29udGVudF9saXN0ZW5lcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjkyNGM4ODM0NmQyYWRj
ZmIxZjIxM2EzNTEyNDc5N2YxZWI0NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL2NvbnRlbnRfbGlzdGVuZXJzLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorc3BhbiB7Cisg
ICAgZm9udC1zaXplOiAzMDAlOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsaXN0
ZW5lcigpIHsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25jbGljaz0ibGlzdGVuZXIo
KSI+Cis8c3BhbiBpZD0iY2xpY2tMaXN0ZW5lciIgb25jbGljaz0ibGlzdGVuZXIoKSI+CitUaGlz
IGhhcyBhIGNsaWNrIGxpc3RlbmVyLgorPC9zcGFuPjwvYnI+Cis8c3BhbiBpZD0idG91Y2hzdGFy
dExpc3RlbmVyIiBvbnRvdWNoc3RhcnQ9Imxpc3RlbmVyKCkiPgorVGhpcyBoYXMgYSB0b3VjaHN0
YXJ0IGxpc3RlbmVyLgorPC9zcGFuPjwvYnI+Cis8c3BhbiBpZD0ibW91c2Vkb3duTGlzdGVuZXIi
IG9ubW91c2Vkb3duPSJsaXN0ZW5lcigpIj4KK1RoaXMgaGFzIGEgbW91c2Vkb3duIGxpc3RlbmVy
LgorPC9zcGFuPjwvYnI+Cis8c3BhbiBpZD0ibm9MaXN0ZW5lciI+CitUaGlzIGhhcyBubyBzcGVj
aWZpYyBsaXN0ZW5lciAodGhlIGJvZHkgbGlzdGVuZXIgc2hvdWxkIGJlIGlnbm9yZWQpLgorPC9z
cGFuPjwvYnI+Cis8YSBocmVmPSJodHRwOi8vd3d3LnRlc3QuY29tLyIgaWQ9ImxpbmsiPgorVGhp
cyBoYXMgbm8gc3BlY2lmaWMgbGlzdGVuZXIsIGJ1dCBpdCdzIGEgbGluay4KKzwvYT48L2JyPgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161091</attachid>
            <date>2012-08-28 16:54:21 -0700</date>
            <delta_ts>2012-08-28 18:05:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-94727-20120828165413.patch</filename>
            <type>text/plain</type>
            <size>14345</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjFlNzlmOTI2MjA2
OWExY2QwZjFhYzUzMTNlNGZlY2NhZjM5Zi4uMzUzZWZiMDNiNmQ0N2ZlOWE1ZDM3MDY5MzU2NjFi
MTcxMTg1ZjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA4LTI4ICBMZWFu
ZHJvIEdyYWNpYSBHaWwgIDxsZWFuZHJvZ3JhY2lhQGNocm9taXVtLm9yZz4KKworICAgICAgICBD
b250ZW50IGRldGVjdGlvbiBzaG91bGQgbm90IGRpc3J1cHQgdGhlIHBhZ2UgYmVoYXZpb3VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDcyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGVzdGVkIGJ5IFdlYlZp
ZXdUZXN0OjpEZXRlY3RDb250ZW50QXJvdW5kUG9zaXRpb24uCisKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMp
OiBjaGVja3MgaWYgYSBub2RlIGxpc3RlbnMgdG8gdG91Y2ggZXZlbnRzLiBWZXJ5IHNpbWlsYXIg
dG8gd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisKIDIwMTItMDgtMjggIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVt
b3ZlIGRlY29kZUF1ZGlvRmlsZURhdGEgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggYTBkODhiZTc3YTg2YWFhMTJlOWIxMzA0OTE4OWIzNzIzZDRiNDcx
YS4uNWIzYzJhMjE1NzY4MjBhNWU0NzRmZWU3NDE2NTkzMDk4NmVkNWM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wOC0yOCAgTGVhbmRybyBHcmFj
aWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29udGVudCBk
ZXRlY3Rpb24gc2hvdWxkIG5vdCBkaXNydXB0IHRoZSBwYWdlIGJlaGF2aW91cgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3MjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRyaWdnZXJzIGNvbnRlbnQgZGV0ZWN0
aW9uIGluIHRoZSBlbWJlZGRlciBvbiB0YXAgZ2VzdHVyZXMgYW5kCisgICAgICAgIGFkZCBjaGVj
a3MgZm9yIHRoZSBhcHByb3ByaWF0ZSBldmVudCBsaXN0ZW5lcnMgaW4gb3JkZXIgdG8gcHJldmVu
dAorICAgICAgICB0cmlnZ2VyaW5nIGNvbnRlbnQgZGV0ZWN0aW9uIHdoZW4gaXQgd291bGQgZGlz
cnVwdCB0aGUgcGFnZSdzIGJlaGF2aW91ci4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29udGVudE9uVG91Y2gpOgorICAg
ICAgICAqIHRlc3RzL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9kYXRhL2NvbnRl
bnRfbGlzdGVuZXJzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTI4ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI2OTMzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGEzYTFjMjJmMjU1NDlmN2ZjYWJmNDA3
MDE2MWFiNjk4ZWQyMWM3OWIuLmEyYzlhMWRjMmJmYTY3YzdlYTkzMGQ5N2I2YWM5ZDcxNGNiMDA4
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3NjUsNiArMjc2NSwxNyBAQCBib29sIE5vZGU6Ondp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKICAgICByZXR1cm4gaXNDb250ZW50RWRpdGFi
bGUoKSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KSB8fCBo
YXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHx8IGhhc0V2ZW50
TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCk7CiB9CiAKK2Jvb2wgTm9kZTo6d2lsbFJlc3Bv
bmRUb1RvdWNoRXZlbnRzKCkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChk
aXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0RXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLnRvdWNoY2FuY2VsRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS50b3VjaGVuZEV2ZW50KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
ICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogRE9NU2V0dGFibGVUb2tlbkxpc3QqIE5vZGU6Oml0ZW1Q
cm9wKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDk3ZTU5M2FkYmVmZjA5MzhkMzdlNTY3NGJjYWJlZWNk
YTJhM2E2MzEuLjNiN2NjZDdmYjMyMzMzMzJmNmNkNWJhZGYyMWU1NzI1MDgyMDJlMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtNTg0LDYgKzU4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9U
b3VjaEV2ZW50cygpOwogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVyeVNlbGVjdG9yKGNv
bnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gcXVlcnlTZWxlY3RvckFsbChjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVj
dG9ycywgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IGNlNTgzYmQwNTA3ZGJkYTkxNzJhNDMyYzY4ZjI1ZDA3ZmVmNmNjNDEu
LjA0ZjU4NjNiNjg3MTJjODNkM2EyNWQyYTk5NjRjYmYzNWRhYzZmMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTY4Nyw2ICs2ODcsNyBAQCBib29s
IFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBl
dmVudCkKIHsKICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CisgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVs
ZWRDb250ZW50SW50ZW50cygpOwogICAgICAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9p
bnQoZXZlbnQueCwgZXZlbnQueSk7CiAgICAgICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24g
PSBXZWJQb2ludChldmVudC5nbG9iYWxYLCBldmVudC5nbG9iYWxZKTsKICAgICAgICAgbV9mbGlu
Z01vZGlmaWVyID0gZXZlbnQubW9kaWZpZXJzOwpAQCAtNzAyLDYgKzcwMywxMCBAQCBib29sIFdl
YlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCkKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlVGFwOiB7CisgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250
ZW50SW50ZW50cygpOworICAgICAgICBpZiAoZGV0ZWN0Q29udGVudE9uVG91Y2goV2ViUG9pbnQo
ZXZlbnQueCwgZXZlbnQueSksIGV2ZW50LnR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKICAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFp
bkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwogICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6UG9wdXBDb250YWluZXI+IHNlbGVjdFBvcHVwOwogICAgICAgICBzZWxlY3RQb3B1cCA9IG1f
c2VsZWN0UG9wdXA7CkBAIC03MjIsNiArNzI3LDEwIEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRs
ZUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICBpZiAo
IW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBtX2NsaWVudC0+Y2FuY2VsU2NoZWR1bGVk
Q29udGVudEludGVudHMoKTsKKyAgICAgICAgaWYgKGRldGVjdENvbnRlbnRPblRvdWNoKFdlYlBv
aW50KGV2ZW50LngsIGV2ZW50LnkpLCBldmVudC50eXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCiAgICAgICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29u
dGV4dE1lbnUoKTsKICAgICAgICAgbV9jb250ZXh0TWVudUFsbG93ZWQgPSB0cnVlOwogICAgICAg
ICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBs
KCktPmZyYW1lVmlldygpLCBldmVudCk7CkBAIC03MzAsNiArNzM5LDcgQEAgYm9vbCBXZWJWaWV3
SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAg
ICAgICAgIHJldHVybiBoYW5kbGVkOwogICAgIH0KICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVUYXBEb3duOiB7CisgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50
SW50ZW50cygpOwogICAgICAgICAvLyBRdWV1ZSBhIGhpZ2hsaWdodCBhbmltYXRpb24sIHRoZW4g
aGFuZCBvZmYgdG8gcmVndWxhciBoYW5kbGVyLgogI2lmIE9TKExJTlVYKQogICAgICAgICBlbmFi
bGVUb3VjaEhpZ2hsaWdodChJbnRQb2ludChldmVudC54LCBldmVudC55KSk7CkBAIC03MzcsMTEg
Kzc0NywxMiBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2Vi
R2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
IHBsYXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwogICAg
ICAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlR2VzdHVyZUV2ZW50KHBsYXRmb3JtRXZlbnQpOwogICAgIH0KKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
U2Nyb2xsQmVnaW46CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoK
KyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFNjaGVkdWxlZENvbnRlbnRJbnRlbnRzKCk7CiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOgogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZToKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVEb3VibGVUYXA6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoK
ICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDoKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTogewogICAgICAgICBQbGF0Zm9ybUdlc3R1cmVF
dmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBl
dmVudCk7CkBAIC0zOTkwLDcgKzQwMDEsMTQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29u
dGVudE9uVG91Y2goY29uc3QgV2ViUG9pbnQmIHBvc2l0aW9uLCBXZWJJbnB1dEV2ZW50OjoKICAg
ICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSBub3QgZGV0ZWN0IGNvbnRlbnQgaW50ZW50cyBp
biBub2RlcyB0aGF0IGhhdmUgZXZlbnQgbGlzdGVuZXJzPworICAgIC8vIElnbm9yZSB3aGVuIHRh
cHBpbmcgb24gbGlua3Mgb3Igbm9kZXMgbGlzdGVuaW5nIHRvIGNsaWNrIGV2ZW50cywgdW5sZXNz
IHRoZSBjbGljayBldmVudCBpcyBvbiB0aGUKKyAgICAvLyBib2R5IGVsZW1lbnQsIGluIHdoaWNo
IGNhc2UgaXQncyB1bmxpa2VseSB0aGF0IHRoZSBvcmlnaW5hbCBub2RlIGl0c2VsZiB3YXMgaW50
ZW5kZWQgdG8gYmUgY2xpY2thYmxlLgorICAgIGZvciAoOyBub2RlICYmICFub2RlLT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6Ym9keVRhZyk7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAg
ICAgICAgaWYgKG5vZGUtPmlzTGluaygpIHx8ICh0b3VjaFR5cGUgIT0gV2ViSW5wdXRFdmVudDo6
R2VzdHVyZUxvbmdQcmVzcworICAgICAgICAgICAgICAgICYmIChub2RlLT53aWxsUmVzcG9uZFRv
VG91Y2hFdmVudHMoKSB8fCBub2RlLT53aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpKSkp
IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIFdl
YkNvbnRlbnREZXRlY3Rpb25SZXN1bHQgY29udGVudCA9IG1fY2xpZW50LT5kZXRlY3RDb250ZW50
QXJvdW5kKHRvdWNoSGl0KTsKICAgICBpZiAoIWNvbnRlbnQuaXNWYWxpZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRleCA0NmM5NjMxMGQ2NGM4
OGRhOTBiZjE3MWQzODIzMjdiZjAzMzBkN2Q4Li5mYThjZDIzODI2MGE3OGU2YmEwMzMxNGZlNWIw
YzE0N2YyODdkNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdU
ZXN0LmNwcApAQCAtMzIsMTQgKzMyLDE4IEBACiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVU
ZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViQ29udGVu
dERldGVjdGlvblJlc3VsdC5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
V2ViRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2
ZW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlZpZXdD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgpAQCAtNDE4LDQgKzQyMiwxMzIgQEAg
VEVTVF9GKFdlYlZpZXdUZXN0LCBTZXRDb21wb3NpdGlvbkZyb21FeGlzdGluZ1RleHQpCiAgICAg
d2ViVmlldy0+Y2xvc2UoKTsKIH0KIAorY2xhc3MgQ29udGVudERldGVjdG9yQ2xpZW50IDogcHVi
bGljIFdlYlZpZXdDbGllbnQgeworcHVibGljOgorICAgIENvbnRlbnREZXRlY3RvckNsaWVudCgp
IHsgcmVzZXQoKTsgfQorCisgICAgdmlydHVhbCBXZWJDb250ZW50RGV0ZWN0aW9uUmVzdWx0IGRl
dGVjdENvbnRlbnRBcm91bmQoY29uc3QgV2ViSGl0VGVzdFJlc3VsdCYgaGl0VGVzdCkgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIG1fY29udGVudERldGVjdGlvblJlcXVlc3RlZCA9IHRydWU7Cisg
ICAgICAgIHJldHVybiBtX2NvbnRlbnREZXRlY3Rpb25SZXN1bHQ7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlQ29udGVudEludGVudChjb25zdCBXZWJVUkwmIHVybCkgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIG1fc2NoZWR1bGVkSW50ZW50VVJMID0gdXJsOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpIE9WRVJSSURF
CisgICAgeworICAgICAgICBtX3BlbmRpbmdJbnRlbnRzQ2FuY2VsbGVkID0gdHJ1ZTsKKyAgICB9
CisKKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fY29udGVudERldGVjdGlvblJl
cXVlc3RlZCA9IGZhbHNlOworICAgICAgICBtX3BlbmRpbmdJbnRlbnRzQ2FuY2VsbGVkID0gZmFs
c2U7CisgICAgICAgIG1fc2NoZWR1bGVkSW50ZW50VVJMID0gV2ViVVJMKCk7CisgICAgICAgIG1f
Y29udGVudERldGVjdGlvblJlc3VsdCA9IFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQoKTsKKyAg
ICB9CisKKyAgICBib29sIGNvbnRlbnREZXRlY3Rpb25SZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnREZXRlY3Rpb25SZXF1ZXN0ZWQ7IH0KKyAgICBib29sIHBlbmRpbmdJbnRlbnRz
Q2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nSW50ZW50c0NhbmNlbGxlZDsgfQor
ICAgIGNvbnN0IFdlYlVSTCYgc2NoZWR1bGVkSW50ZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9z
Y2hlZHVsZWRJbnRlbnRVUkw7IH0KKyAgICB2b2lkIHNldENvbnRlbnREZXRlY3Rpb25SZXN1bHQo
Y29uc3QgV2ViQ29udGVudERldGVjdGlvblJlc3VsdCYgcmVzdWx0KSB7IG1fY29udGVudERldGVj
dGlvblJlc3VsdCA9IHJlc3VsdDsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9jb250ZW50RGV0
ZWN0aW9uUmVxdWVzdGVkOworICAgIGJvb2wgbV9wZW5kaW5nSW50ZW50c0NhbmNlbGxlZDsKKyAg
ICBXZWJVUkwgbV9zY2hlZHVsZWRJbnRlbnRVUkw7CisgICAgV2ViQ29udGVudERldGVjdGlvblJl
c3VsdCBtX2NvbnRlbnREZXRlY3Rpb25SZXN1bHQ7Cit9OworCitzdGF0aWMgYm9vbCB0YXBFbGVt
ZW50QnlJZChXZWJWaWV3KiB3ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0
IFdlYlN0cmluZyYgaWQpCit7CisgICAgQVNTRVJUKHdlYlZpZXcpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpFbGVtZW50PiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8UGFzc1JlZlB0cjxXZWJDb3JlOjpF
bGVtZW50PiA+KHdlYlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUlk
KGlkKSk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBl
bGVtZW50LT5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
Y2VudGVyID0gZWxlbWVudC0+c2NyZWVuUmVjdCgpLmNlbnRlcigpOworCisgICAgV2ViR2VzdHVy
ZUV2ZW50IGV2ZW50OworICAgIGV2ZW50LnR5cGUgPSB0eXBlOworICAgIGV2ZW50LnggPSBjZW50
ZXIueCgpOworICAgIGV2ZW50LnkgPSBjZW50ZXIueSgpOworCisgICAgd2ViVmlldy0+aGFuZGxl
SW5wdXRFdmVudChldmVudCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworICAgIHJldHVybiB0cnVlOworfQorCitURVNUX0YoV2ViVmlld1Rlc3QsIERldGVj
dENvbnRlbnRBcm91bmRQb3NpdGlvbikKK3sKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJN
b2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigp
KSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiY29udGVudF9saXN0ZW5lcnMuaHRtbCIpKTsKKworICAg
IENvbnRlbnREZXRlY3RvckNsaWVudCBjbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZy
YW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJjb250ZW50
X2xpc3RlbmVycy5odG1sIiwgdHJ1ZSwgMCwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+cmVzaXpl
KFdlYlNpemUoNTAwLCAzMDApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRf
c3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisKKyAgICBXZWJTdHJpbmcgY2xpY2tM
aXN0ZW5lciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImNsaWNrTGlzdGVuZXIiKTsKKyAgICBXZWJT
dHJpbmcgdG91Y2hzdGFydExpc3RlbmVyID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidG91Y2hzdGFy
dExpc3RlbmVyIik7CisgICAgV2ViU3RyaW5nIG1vdXNlZG93bkxpc3RlbmVyID0gV2ViU3RyaW5n
Ojpmcm9tVVRGOCgibW91c2Vkb3duTGlzdGVuZXIiKTsKKyAgICBXZWJTdHJpbmcgbm9MaXN0ZW5l
ciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIm5vTGlzdGVuZXIiKTsKKyAgICBXZWJTdHJpbmcgbGlu
ayA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImxpbmsiKTsKKworICAgIC8vIEVuc3VyZSBjb250ZW50
IGRldGVjdGlvbiBpcyBub3QgcmVxdWVzdGVkIGZvciBub2RlcyBsaXN0ZW5pbmcgdG8gY2xpY2ss
CisgICAgLy8gbW91c2Ugb3IgdG91Y2ggZXZlbnRzIHdoZW4gd2UgZG8gc2ltcGxlIHRhcHMuCisg
ICAgRVhQRUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVRhcCwgY2xpY2tMaXN0ZW5lcikpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuY29udGVu
dERldGVjdGlvblJlcXVlc3RlZCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIEVYUEVD
VF9UUlVFKHRhcEVsZW1lbnRCeUlkKHdlYlZpZXcsIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAs
IHRvdWNoc3RhcnRMaXN0ZW5lcikpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuY29udGVudERl
dGVjdGlvblJlcXVlc3RlZCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIEVYUEVDVF9U
UlVFKHRhcEVsZW1lbnRCeUlkKHdlYlZpZXcsIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAsIG1v
dXNlZG93bkxpc3RlbmVyKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5jb250ZW50RGV0ZWN0
aW9uUmVxdWVzdGVkKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gQ29udGVudCBk
ZXRlY3Rpb24gc2hvdWxkIHN0aWxsIHdvcmsgb24gY2xpY2ssIG1vdXNlIGFuZCB0b3VjaCBldmVu
dCBsaXN0ZW5lcnMgZm9yIGxvbmcgdGFwcworICAgIC8vIGFzIGxvbmcgYXMgd2UncmUgbm90IHRh
cHBpbmcgb24gbGlua3MuCisgICAgRVhQRUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywg
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcywgY2xpY2tMaXN0ZW5lcikpOworICAgIEVY
UEVDVF9UUlVFKGNsaWVudC5jb250ZW50RGV0ZWN0aW9uUmVxdWVzdGVkKCkpOworICAgIGNsaWVu
dC5yZXNldCgpOworCisgICAgRVhQRUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcywgdG91Y2hzdGFydExpc3RlbmVyKSk7CisgICAg
RVhQRUNUX1RSVUUoY2xpZW50LmNvbnRlbnREZXRlY3Rpb25SZXF1ZXN0ZWQoKSk7CisgICAgY2xp
ZW50LnJlc2V0KCk7CisKKyAgICBFWFBFQ1RfVFJVRSh0YXBFbGVtZW50QnlJZCh3ZWJWaWV3LCBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzLCBtb3VzZWRvd25MaXN0ZW5lcikpOworICAg
IEVYUEVDVF9UUlVFKGNsaWVudC5jb250ZW50RGV0ZWN0aW9uUmVxdWVzdGVkKCkpOworICAgIGNs
aWVudC5yZXNldCgpOworCisgICAgRVhQRUNUX1RSVUUodGFwRWxlbWVudEJ5SWQod2ViVmlldywg
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcywgbGluaykpOworICAgIEVYUEVDVF9GQUxT
RShjbGllbnQuY29udGVudERldGVjdGlvblJlcXVlc3RlZCgpKTsKKyAgICBjbGllbnQucmVzZXQo
KTsKKworICAgIC8vIENvbnRlbnQgZGV0ZWN0aW9uIHNob3VsZCB3b3JrIG5vcm1hbGx5IHdpdGhv
dXQgdGhlc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIC8vIFRoZSBjbGljayBsaXN0ZW5lciBpbiB0
aGUgYm9keSBzaG91bGQgYmUgaWdub3JlZCBhcyBhIHNwZWNpYWwgY2FzZS4KKyAgICBFWFBFQ1Rf
VFJVRSh0YXBFbGVtZW50QnlJZCh3ZWJWaWV3LCBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwLCBu
b0xpc3RlbmVyKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmNvbnRlbnREZXRlY3Rpb25SZXF1
ZXN0ZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5zY2hlZHVsZWRJbnRlbnRVUkwoKS5p
c1ZhbGlkKCkpOworCisgICAgV2ViVVJMIGludGVudFVSTCA9IHRvS1VSTChtX2Jhc2VVUkwpOwor
ICAgIGNsaWVudC5zZXRDb250ZW50RGV0ZWN0aW9uUmVzdWx0KFdlYkNvbnRlbnREZXRlY3Rpb25S
ZXN1bHQoV2ViUmFuZ2UoKSwgV2ViU3RyaW5nKCksIGludGVudFVSTCkpOworICAgIEVYUEVDVF9U
UlVFKHRhcEVsZW1lbnRCeUlkKHdlYlZpZXcsIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAsIG5v
TGlzdGVuZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQuc2NoZWR1bGVkSW50ZW50VVJMKCkg
PT0gaW50ZW50VVJMKTsKKworICAgIC8vIFRhcHBpbmcgZWxzZXdoZXJlIHNob3VsZCBjYW5jZWwg
dGhlIHNjaGVkdWxlZCBpbnRlbnQuCisgICAgV2ViR2VzdHVyZUV2ZW50IGV2ZW50OworICAgIGV2
ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOworICAgIHdlYlZpZXctPmhhbmRs
ZUlucHV0RXZlbnQoZXZlbnQpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVz
c2FnZXMoKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQucGVuZGluZ0ludGVudHNDYW5jZWxsZWQo
KSk7CisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2NvbnRlbnRfbGlzdGVuZXJzLmh0bWwgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvY29udGVudF9saXN0ZW5lcnMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZjkyNGM4ODM0NmQyYWRjZmIxZjIxM2EzNTEyNDc5N2YxZWI0NjBkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2NvbnRlbnRfbGlzdGVu
ZXJzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHN0eWxlPgorc3BhbiB7CisgICAgZm9udC1zaXplOiAzMDAlOworfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBsaXN0ZW5lcigpIHsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25jbGljaz0ibGlzdGVuZXIoKSI+Cis8c3BhbiBpZD0iY2xpY2tMaXN0ZW5lciIgb25jbGlj
az0ibGlzdGVuZXIoKSI+CitUaGlzIGhhcyBhIGNsaWNrIGxpc3RlbmVyLgorPC9zcGFuPjwvYnI+
Cis8c3BhbiBpZD0idG91Y2hzdGFydExpc3RlbmVyIiBvbnRvdWNoc3RhcnQ9Imxpc3RlbmVyKCki
PgorVGhpcyBoYXMgYSB0b3VjaHN0YXJ0IGxpc3RlbmVyLgorPC9zcGFuPjwvYnI+Cis8c3BhbiBp
ZD0ibW91c2Vkb3duTGlzdGVuZXIiIG9ubW91c2Vkb3duPSJsaXN0ZW5lcigpIj4KK1RoaXMgaGFz
IGEgbW91c2Vkb3duIGxpc3RlbmVyLgorPC9zcGFuPjwvYnI+Cis8c3BhbiBpZD0ibm9MaXN0ZW5l
ciI+CitUaGlzIGhhcyBubyBzcGVjaWZpYyBsaXN0ZW5lciAodGhlIGJvZHkgbGlzdGVuZXIgc2hv
dWxkIGJlIGlnbm9yZWQpLgorPC9zcGFuPjwvYnI+Cis8YSBocmVmPSJodHRwOi8vd3d3LnRlc3Qu
Y29tLyIgaWQ9ImxpbmsiPgorVGhpcyBoYXMgbm8gc3BlY2lmaWMgbGlzdGVuZXIsIGJ1dCBpdCdz
IGEgbGluay4KKzwvYT48L2JyPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>