Last Comment Bug 653133 - Fennec crashes when loading a page with huge background-attachment:fixed background
: Fennec crashes when loading a page with huge background-attachment:fixed back...
Status: RESOLVED FIXED
: crash, mobile, regression, reproducible
Product: Core
Classification: Components
Component: Layout (show other bugs)
: Trunk
: All All
: -- critical (vote)
: mozilla5
Assigned To: Tatiana Meshkova (:tatiana)
:
: Jet Villegas (:jet)
Mentors:
http://www.w3.org/TR/CSS2/visuren.htm...
: 654485 (view as bug list)
Depends on:
Blocks: 607417
  Show dependency treegraph
 
Reported: 2011-04-27 08:45 PDT by :Ehsan Akhgari
Modified: 2013-12-27 14:20 PST (History)
17 users (show)
mbrubeck: in‑testsuite+
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---
+
fixed
fixed
5+


Attachments
patch (5.94 KB, patch)
2011-05-04 06:06 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
transform_test (3.01 KB, text/html)
2011-05-05 08:56 PDT, Tatiana Meshkova (:tatiana)
no flags Details
screenshot_expected.png (14.68 KB, image/png)
2011-05-05 08:58 PDT, Tatiana Meshkova (:tatiana)
no flags Details
screenshot_actual.png (16.21 KB, image/png)
2011-05-05 08:58 PDT, Tatiana Meshkova (:tatiana)
no flags Details
patch v2 WIP (7.07 KB, patch)
2011-05-05 11:10 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
patch v3 WIP (10.46 KB, patch)
2011-05-06 09:02 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
patch v4 (14.09 KB, patch)
2011-05-09 01:47 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
scroll_eats_bg.png (28.12 KB, image/png)
2011-05-09 05:46 PDT, Tatiana Meshkova (:tatiana)
no flags Details
bg_transform_test (3.24 KB, text/html)
2011-05-09 05:48 PDT, Tatiana Meshkova (:tatiana)
no flags Details
patch v4.1 renaming (14.07 KB, patch)
2011-05-10 02:12 PDT, Tatiana Meshkova (:tatiana)
roc: review+
Details | Diff | Splinter Review
patch v4.2 fixed nits - checked in (14.16 KB, patch)
2011-05-11 02:17 PDT, Tatiana Meshkova (:tatiana)
tanya.meshkova: review+
mark.finkle: approval‑mozilla‑aurora+
Details | Diff | Splinter Review
Recover PRPackedBools order (2.19 KB, patch)
2011-05-13 05:39 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
crashtest (25.18 KB, patch)
2011-05-13 07:23 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
Recover PRPackedBools order (v2) - checked in (2.00 KB, patch)
2011-05-16 03:23 PDT, Tatiana Meshkova (:tatiana)
roc: review+
gavin.sharp: approval‑mozilla‑aurora+
gavin.sharp: approval‑mozilla‑beta+
Details | Diff | Splinter Review
crashtest (v2) - checked in (1.13 KB, patch)
2011-05-16 04:26 PDT, Tatiana Meshkova (:tatiana)
cjones.bugs: review+
gavin.sharp: approval‑mozilla‑aurora+
gavin.sharp: approval‑mozilla‑beta+
Details | Diff | Splinter Review
reftest (4.67 KB, patch)
2011-05-24 04:33 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
reftest (v2) (4.12 KB, patch)
2011-05-25 04:02 PDT, Tatiana Meshkova (:tatiana)
roc: review+
Details | Diff | Splinter Review
reftest (v3) (4.15 KB, patch)
2011-06-07 05:37 PDT, Tatiana Meshkova (:tatiana)
no flags Details | Diff | Splinter Review
reftest (v4) (4.15 KB, patch)
2011-06-08 03:54 PDT, Tatiana Meshkova (:tatiana)
roc: review+
mark.finkle: approval‑mozilla‑aurora+
asa: approval‑mozilla‑beta-
Details | Diff | Splinter Review

Description :Ehsan Akhgari 2011-04-27 08:45:24 PDT
This might be an OOM situation, but filing anyways.

bp-039f60c7-e76b-4626-a4e1-26b5a2110427
3057d869-30de-daea-43474e88-26ae20fc
bp-c7083ee1-2955-43c9-8918-72a052110427
230d3d99-3b40-7e3f-7290d77d-59cac243
bp-e30652fd-f67e-4d0a-b850-46d412110427
bp-d5dfe8ce-e5a0-4f5f-8b34-9b4382110427
27888589-b481-5fdf-72d4ac8c-2316a9ad
270ce863-f4be-18c8-5f33a08f-4eb79c88
Comment 1 Kevin Brosnan [:kbrosnan] 2011-05-02 09:26:17 PDT
Seems odd that we are going oom in a 27kb html page.
Comment 2 Boris Zbarsky [:bz] (still a bit busy) 2011-05-02 09:38:43 PDT
Those stacks look pretty busted, unless you really believe that the image surface destructor calling moz_free will land us in mozilla::ipc::RPCChannel::Send...
Comment 3 Kevin Brosnan [:kbrosnan] 2011-05-02 10:00:30 PDT
I'm not seeing the crash on 4.0, working on a regression range.
Comment 4 Kevin Brosnan [:kbrosnan] 2011-05-02 12:13:19 PDT
Good 2011-04-08-04-mozilla-central-android-r7
Bad 2011-04-10-05-mozilla-central-android-r7
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=27d6a4a5e20f&tochange=fe3f7889918b
Comment 5 Kevin Brosnan [:kbrosnan] 2011-05-02 16:27:38 PDT
Working on hg bisecting this.
Comment 6 Kevin Brosnan [:kbrosnan] 2011-05-03 20:33:20 PDT
http://hg.mozilla.org/mozilla-central/rev/288be41b2473

The first bad revision is:
changeset:   67670:288be41b2473
user:        Tatiana Meshkova <tanya.meshkova@gmail.com>
date:        Fri Apr 08 09:35:16 2011 -0700
summary:     Bug 607417 - Part 3: Visibility tricks for fixed items r=roc
Comment 7 Tatiana Meshkova (:tatiana) 2011-05-04 06:01:52 PDT
there is huge background-attachment:fixed background
CanvasBackground 0xb33bed48(Canvas(html)(-1)) (0,-383700,48000,2127180)(0,0,0,0) opaque

and it's item bounds are not restricted by visible region.
Comment 8 Tatiana Meshkova (:tatiana) 2011-05-04 06:06:43 PDT
Created attachment 529979 [details] [diff] [review]
patch
Comment 9 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-04 06:50:05 PDT
Comment on attachment 529979 [details] [diff] [review]
patch

Review of attachment 529979 [details] [diff] [review]:

::: layout/base/nsDisplayList.cpp
@@ +477,5 @@
     nsRect bounds = item->GetBounds(aBuilder);
 
     nsRegion itemVisible;
+    if (ForceVisiblityForFixedItem(aBuilder, item)) {
+      itemVisible.And(nsRect(nsPoint(), aBuilder->GetDisplayPort()->Size()), bounds);

This seems like a good idea but this code isn't enough; due to CSS transforms, the display port might not be in the same coordinate system as the item's visible region.
Comment 10 Kevin Brosnan [:kbrosnan] 2011-05-04 08:08:42 PDT
This effects Firefox Mobile 5 Aurora builds.
Comment 11 Matt Brubeck (:mbrubeck) 2011-05-04 10:34:47 PDT
*** Bug 654485 has been marked as a duplicate of this bug. ***
Comment 12 Matt Brubeck (:mbrubeck) 2011-05-04 10:36:33 PDT
This crashes Fennec even on pages with small background-attachment:fixed background images, if you zoom in far enough.  See steps to reproduce in bug 654485.
Comment 13 Chris Jones [:cjones] inactive; ni?/f?/r? if you need me 2011-05-04 10:39:47 PDT
Can the test page in bug 654485 be converted into a crashtest?  (Thanks Matt!)
Comment 14 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-04 16:55:04 PDT
It sounds like we should back out bug 607417 until this is fixed.
Comment 15 Tatiana Meshkova (:tatiana) 2011-05-05 01:18:05 PDT
let's backout just Part3, fixed elements will disappear on long scroll,
but the rest is almost fine
Comment 16 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-05 04:15:53 PDT
That would break Web pages.
Comment 17 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-05 04:17:50 PDT
(In reply to comment #9)
> ::: layout/base/nsDisplayList.cpp
> @@ +477,5 @@
>      nsRect bounds = item->GetBounds(aBuilder);
> 
>      nsRegion itemVisible;
> +    if (ForceVisiblityForFixedItem(aBuilder, item)) {
> +      itemVisible.And(nsRect(nsPoint(), aBuilder->GetDisplayPort()->Size()),
> bounds);
> 
> This seems like a good idea but this code isn't enough; due to CSS transforms,
> the display port might not be in the same coordinate system as the item's
> visible region.

Hmm, however, fixed-pos content in a CSS transform uses the transformed element as the fixed-pos container, in which case ForceVisiblityForFixedItem should return false.

Can you check that's what happens? If so, we can take this patch.
Comment 18 Oleg Romashin (:romaxa) 2011-05-05 05:59:01 PDT
(In reply to comment #16)
> That would break Web pages.

this would not break pages, it will remove fixed pos items from display list when viewport scroll and scrollport positions are not equals or too far from each other.

without all patches, we have definitely broken rendering because fixed pos elements are moving together with viewport and disappear when it is moved too far.  with fixed pos patches (and without visibility display list tricks), we have layers positioned correctly, and disappear when it is moved too far, (scrollport not intersects with remote-viewport-layer)
Comment 19 Tatiana Meshkova (:tatiana) 2011-05-05 08:56:20 PDT
Created attachment 530330 [details]
transform_test
Comment 20 Tatiana Meshkova (:tatiana) 2011-05-05 08:58:08 PDT
Created attachment 530331 [details]
screenshot_expected.png
Comment 21 Tatiana Meshkova (:tatiana) 2011-05-05 08:58:49 PDT
Created attachment 530332 [details]
screenshot_actual.png
Comment 22 Tatiana Meshkova (:tatiana) 2011-05-05 09:01:35 PDT
(In reply to comment #17)

we can't apply it as is. With this patch on transform_test we will get screenshot_actual.png instead of screenshot_expected.png
Comment 23 Tatiana Meshkova (:tatiana) 2011-05-05 11:10:50 PDT
Created attachment 530375 [details] [diff] [review]
patch v2 WIP
Comment 24 Robert Sayre 2011-05-05 14:37:02 PDT
How severe is this bug? should we worry about resolving this before we ship our beta on May 17?
Comment 25 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-05 17:50:58 PDT
(In reply to comment #18)
> without all patches, we have definitely broken rendering because fixed pos
> elements are moving together with viewport and disappear when it is moved too
> far.  with fixed pos patches (and without visibility display list tricks), we
> have layers positioned correctly, and disappear when it is moved too far,
> (scrollport not intersects with remote-viewport-layer)

This is from part 3:
+    if (ForceVisiblityForFixedItem(aBuilder, item)) {
+      item->mVisibleRect = bounds;
+    }

Seems to me that without this, fixed elements could be partially cut off before they disappear. That would be bad.
Comment 26 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-05 17:52:18 PDT
(In reply to comment #24)
> How severe is this bug? should we worry about resolving this before we ship our
> beta on May 17?

It's pretty bad IMHO. I think we should back out all of bug 607417 from Firefox 5 but leave it on central.
Comment 27 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-05 17:53:00 PDT
Possibly we should back it out of central as well and reland once we've sorted out this bug.
Comment 28 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-05 18:16:01 PDT
OK, to fix patch 2, you need to expose GetCTMAt from nsLayoutUtils.cpp and let it take an additional frame parameter specifying an ancestor frame to stop at. We could call that GetTransformToAncestor. Then you can call GetTransformToAncestor, invert the matrix and use that to transform the display bounds down to your fixed frame to take the intersection with.
Comment 29 Tatiana Meshkova (:tatiana) 2011-05-06 09:02:09 PDT
Created attachment 530645 [details] [diff] [review]
patch v3 WIP

comparing to v2 background-attachment:fixed visible bounds are correct now
Comment 30 Tatiana Meshkova (:tatiana) 2011-05-06 09:03:23 PDT
GetCTMAt code is not shared yet
Comment 31 Tatiana Meshkova (:tatiana) 2011-05-09 01:47:11 PDT
Created attachment 530996 [details] [diff] [review]
patch v4

introduced GetTransformToAncestor
Comment 32 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-09 02:14:29 PDT
when would IsFixedItem return true, but *aShouldFixToViewport return false?
Comment 33 Tatiana Meshkova (:tatiana) 2011-05-09 04:56:47 PDT
(In reply to comment #32)
> when would IsFixedItem return true, but *aShouldFixToViewport return false?

when item's underlying frame is toplevel position:fixed
Comment 34 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-09 05:10:52 PDT
I see, aShouldFixToViewport really means "is background-attachment:fixed" at the moment...

Does GetDisplayPortBounds need to check aShouldFixToViewport? It seems to me that if you remove the "if (!aShouldFixToViewport)" code, things should work fine.
Comment 35 Tatiana Meshkova (:tatiana) 2011-05-09 05:46:23 PDT
Created attachment 531027 [details]
scroll_eats_bg.png
Comment 36 Tatiana Meshkova (:tatiana) 2011-05-09 05:48:32 PDT
Created attachment 531028 [details]
bg_transform_test

without aShouldFixToViewport check transform for background-attachment:fixed items includes scroll position translate, i.e. with attached bg_transform_test we'll have scroll_eats_bg.png
Comment 37 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-09 20:03:21 PDT
OK.

Can you use a better name for aShouldFixToViewport?
Comment 38 Tatiana Meshkova (:tatiana) 2011-05-10 02:12:52 PDT
Created attachment 531275 [details] [diff] [review]
patch v4.1 renaming

using aIsBackgroundFixed name in IsFixedItem and aIgnoreTransform in GetDisplayPortBounds
Comment 39 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-10 16:41:25 PDT
Comment on attachment 531275 [details] [diff] [review]
patch v4.1 renaming

Review of attachment 531275 [details] [diff] [review]:
-----------------------------------------------------------------

Good work!

::: layout/base/nsDisplayList.cpp
@@ +498,5 @@
>  
>      nsRect bounds = item->GetBounds(aBuilder);
>  
>      nsRegion itemVisible;
> +    PRBool shouldFixToViewport;

Rename to "isFixedBackground".

::: layout/base/nsLayoutUtils.cpp
@@ +1109,2 @@
>      ctm *= aFrame->GetTransformMatrix(&aFrame);
>    return ctm;

Add an assertion here that aFrame == aStopAtAncestor, in case we somehow miss the ancestor.
Comment 40 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-10 16:45:05 PDT
Need a crashtest here. A reftest for bg_transform_test would also be a good idea.
Comment 41 Tatiana Meshkova (:tatiana) 2011-05-11 02:17:32 PDT
Created attachment 531568 [details] [diff] [review]
patch v4.2 fixed nits - checked in

moving r+ from v4.1
Comment 42 Oleg Romashin (:romaxa) 2011-05-11 16:41:30 PDT
Can we land crash_fix before tests?
Comment 43 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-11 17:24:14 PDT
Yes.
Comment 44 Oleg Romashin (:romaxa) 2011-05-12 08:24:16 PDT
crash fix pushed in
http://hg.mozilla.org/mozilla-central/rev/189a169fd900
Comment 45 Martijn Wargers [:mwargers] (not working for Mozilla) 2011-05-12 09:37:21 PDT
Shouldn't this bug be marked fixed?
Comment 46 :Ms2ger (⌚ UTC+1/+2) 2011-05-12 10:54:55 PDT
Comment on attachment 531568 [details] [diff] [review]
patch v4.2 fixed nits - checked in

>diff --git a/layout/base/nsDisplayList.h b/layout/base/nsDisplayList.h
>--- a/layout/base/nsDisplayList.h
>+++ b/layout/base/nsDisplayList.h
>@@ -505,16 +508,17 @@ private:
>   PRPackedBool                   mAccurateVisibleRegions;
>   // True when we're building a display list that's directly or indirectly
>   // under an nsDisplayTransform
>   PRPackedBool                   mInTransform;
>   PRPackedBool                   mSyncDecodeImages;
>   PRPackedBool                   mIsPaintingToWindow;
>   PRPackedBool                   mSnappingEnabled;
>   PRPackedBool                   mHasDisplayPort;
>+  nsRect                         mDisplayPort;
>   PRPackedBool                   mHasFixedItems;
> };

Doesn't putting an nsRect between these PRPackedBools defeat the point of using PRPackedBools?
Comment 47 Timothy Nikkel (:tnikkel) 2011-05-12 11:13:21 PDT
Yes, I think you are right.
Comment 48 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-12 14:49:54 PDT
Yeah, oops. Someone post a patch to fix that :-)
Comment 49 Tatiana Meshkova (:tatiana) 2011-05-13 05:39:34 PDT
Created attachment 532177 [details] [diff] [review]
Recover PRPackedBools order
Comment 50 Tatiana Meshkova (:tatiana) 2011-05-13 07:23:32 PDT
Created attachment 532218 [details] [diff] [review]
crashtest
Comment 51 Matt Brubeck (:mbrubeck) 2011-05-13 13:52:50 PDT
Comment on attachment 531275 [details] [diff] [review]
patch v4.1 renaming

Requesting mozilla-approval-aurora.  Even with the patch to disable fixed layers (from bug 656167), I still see this crash on Aurora (Firefox 5).
Comment 52 Matt Brubeck (:mbrubeck) 2011-05-13 14:28:48 PDT
Comment on attachment 531568 [details] [diff] [review]
patch v4.2 fixed nits - checked in

Pushed to Aurora (accidentally pushed v4.1 first, then v4.2 as a followup):
http://hg.mozilla.org/mozilla-aurora/rev/1bcce86b9139
http://hg.mozilla.org/mozilla-aurora/rev/f428a36c7d78

Should we request aurora/beta approval for the crashtest and PRPackedBool-order patches once they are reviewend and landed on mozilla-central?
Comment 53 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-14 02:58:06 PDT
Comment on attachment 532177 [details] [diff] [review]
Recover PRPackedBools order

Review of attachment 532177 [details] [diff] [review]:
-----------------------------------------------------------------

::: layout/base/nsDisplayList.h
@@ +516,2 @@
>    PRPackedBool                   mHasDisplayPort;
>    nsRect                         mDisplayPort;

Move mDisplayPort up to be just after mFinalTransparentRegion. We try to order fields in decreasing order of alignment requirements.
Comment 54 Chris Jones [:cjones] inactive; ni?/f?/r? if you need me 2011-05-15 16:10:59 PDT
Comment on attachment 532218 [details] [diff] [review]
crashtest

>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />

Um ... can you use <div style="height: 10000px"> or something instead of this?

>+load 653133-huge-background-attachment-fixed.html

Nit: naming convention is "653133-1.html".

Looks ok other than those two things.
Comment 55 Tatiana Meshkova (:tatiana) 2011-05-16 03:23:11 PDT
Created attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in
Comment 56 Tatiana Meshkova (:tatiana) 2011-05-16 04:26:46 PDT
Created attachment 532604 [details] [diff] [review]
crashtest (v2) - checked in
Comment 57 Tatiana Meshkova (:tatiana) 2011-05-24 04:33:15 PDT
Created attachment 534725 [details] [diff] [review]
reftest

reftest for scroll_eats_bg.png case
Comment 58 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-24 17:24:28 PDT
Comment on attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in

Review of attachment 532592 [details] [diff] [review]:
-----------------------------------------------------------------
Comment 59 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-24 17:26:59 PDT
Comment on attachment 534725 [details] [diff] [review]
reftest

Review of attachment 534725 [details] [diff] [review]:
-----------------------------------------------------------------

Can't the test just call window.scrollTo itself instead of having the reftest harness do it?
Comment 60 Tatiana Meshkova (:tatiana) 2011-05-25 04:02:33 PDT
Created attachment 535021 [details] [diff] [review]
reftest (v2)
Comment 61 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-05-25 14:44:24 PDT
Comment on attachment 535021 [details] [diff] [review]
reftest (v2)

Review of attachment 535021 [details] [diff] [review]:
-----------------------------------------------------------------
Comment 62 :Gavin Sharp [email: gavin@gavinsharp.com] 2011-06-06 15:25:23 PDT
Please request beta approval for the followup patches, we should take them there.
Comment 63 Matt Brubeck (:mbrubeck) 2011-06-06 16:57:42 PDT
Comment on attachment 532604 [details] [diff] [review]
crashtest (v2) - checked in

Requesting approval-mozilla-beta for a patch that only adds a new test.
Comment 64 Matt Brubeck (:mbrubeck) 2011-06-06 16:57:48 PDT
Comment on attachment 535021 [details] [diff] [review]
reftest (v2)

Requesting approval-mozilla-beta for a patch that only adds a new test.
Comment 65 Matt Brubeck (:mbrubeck) 2011-06-06 17:03:01 PDT
Comment on attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in

Requesting approval-mozilla-aurora and approval-mozilla-beta for a trivial followup to a crash-fix patch that landed for Firefox 5.  This is a two-line change that just re-orders struct fields for better packing.

It looks like these followup patches also still need to land on mozilla-central...
Comment 66 Matt Brubeck (:mbrubeck) 2011-06-06 17:09:35 PDT
Pushed all three followup patches to Try:
http://tbpl.mozilla.org/?tree=Try&rev=afeba18f322e
Comment 67 Matt Brubeck (:mbrubeck) 2011-06-06 19:40:54 PDT
Comment on attachment 535021 [details] [diff] [review]
reftest (v2)

This reftest is failing on Try:
http://tinderbox.mozilla.org/showlog.cgi?log=Try/1307407700.1307410099.22397.gz

The test file shows a scrollbar, while the reference file does not.
Comment 68 Tatiana Meshkova (:tatiana) 2011-06-07 05:37:21 PDT
Created attachment 537772 [details] [diff] [review]
reftest (v3)

(In reply to comment #67)
> Comment on attachment 535021 [details] [diff] [review] [review]
> reftest (v2)
> 
> This reftest is failing on Try:
> http://tinderbox.mozilla.org/showlog.cgi?log=Try/1307407700.1307410099.22397.
> gz
> 
> The test file shows a scrollbar, while the reference file does not.

We need this test for remote only. Suggesting to skip-if(!browserIsRemote)
Comment 69 Matt Brubeck (:mbrubeck) 2011-06-07 12:06:16 PDT
Comment on attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in

http://hg.mozilla.org/mozilla-central/rev/e37998002eb5
Comment 70 Matt Brubeck (:mbrubeck) 2011-06-07 12:07:42 PDT
Comment on attachment 532604 [details] [diff] [review]
crashtest (v2) - checked in

http://hg.mozilla.org/mozilla-central/rev/04ba4b847cba
Comment 71 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-06-07 16:52:12 PDT
Don't make it skip-if, just make the root element overflow:hidden so the scrollbar never shows up.
Comment 72 Tatiana Meshkova (:tatiana) 2011-06-08 03:54:15 PDT
Created attachment 537977 [details] [diff] [review]
reftest (v4)
Comment 73 Robert O'Callahan (:roc) (email my personal email if necessary) 2011-06-08 03:57:30 PDT
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

Review of attachment 537977 [details] [diff] [review]:
-----------------------------------------------------------------
Comment 74 Matt Brubeck (:mbrubeck) 2011-06-08 12:55:45 PDT
Pushed PRPackedBool reordering and crashtest patchest to Aurora and Beta for Firefox 5 and 6:

http://hg.mozilla.org/releases/mozilla-aurora/rev/2df9e796bfe3
http://hg.mozilla.org/releases/mozilla-aurora/rev/04e8c88bed76
http://hg.mozilla.org/releases/mozilla-beta/rev/3524ac4292a7
http://hg.mozilla.org/releases/mozilla-beta/rev/0320d470abea

Tatiana, can you push the new reftest patch to Try or mozilla-inbound or set checkin-needed or whatever?
Comment 75 Tatiana Meshkova (:tatiana) 2011-06-09 04:18:06 PDT
yes, it's green now: http://tinderbox.mozilla.org/showlog.cgi?log=Try/1307614611.1307615400.4874.gz

need to checkin reftest
Comment 76 Matt Brubeck (:mbrubeck) 2011-06-09 09:23:09 PDT
Pushed reftest to mozilla-central (Firefox 7):
http://hg.mozilla.org/mozilla-central/rev/a23d0f7e3e13
Comment 77 Tatiana Meshkova (:tatiana) 2011-06-13 01:32:26 PDT
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

Requesting approval‑mozilla‑aurora and approval-mozilla-beta for a patch that only adds a new test.
Comment 78 Asa Dotzler [:asa] 2011-06-13 14:39:46 PDT
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

too late for beta but please land in aurora.
Comment 79 Matt Brubeck (:mbrubeck) 2011-06-13 15:18:23 PDT
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

(In reply to comment #78)
> too late for beta but please land in aurora.

Then did you mean to set aurora+ instead of aurora-?
Comment 80 Mark Finkle (:mfinkle) (use needinfo?) 2011-06-13 17:09:39 PDT
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

yeah
Comment 81 Tatiana Meshkova (:tatiana) 2011-06-14 01:15:44 PDT
checkin-needed for reftest on mozilla-aurora
Comment 82 Justin Wood (:Callek) 2011-08-10 01:19:47 PDT
(In reply to Tatiana Meshkova (:tatiana) from comment #77)
> Comment on attachment 537977 [details] [diff] [review] [diff] [details] [review]
> reftest (v4)
> 
> Requesting approval‑mozilla‑aurora and approval-mozilla-beta for a patch
> that only adds a new test.

(In reply to Asa Dotzler [:asa] from comment #78)
> Comment on attachment 537977 [details] [diff] [review] [diff] [details] [review]
> reftest (v4)
> 
> too late for beta but please land in aurora.

Unfortunately it missed that aurora cycle, and is now too late for beta again (Gecko 6)

Luckily its in Gecko 7, based on that m-c push during the Gecko 7 lifetime.

https://hg.mozilla.org/releases/mozilla-aurora/rev/a23d0f7e3e13 was the rev it landed on.

Note You need to log in before you can comment on or make changes to this bug.