webrender: implement fieldsets with non-empty legends

RESOLVED FIXED in Firefox 68

Status

()

enhancement
P3
normal
RESOLVED FIXED
2 years ago
2 months ago

People

(Reporter: Gankro, Assigned: Gankro, Mentored)

Tracking

(Blocks 2 bugs)

Trunk
mozilla68
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox57 unaffected, firefox58 unaffected, firefox68 fixed)

Details

(Whiteboard: [wr-reserve] [gfx-noted])

Attachments

(2 attachments, 5 obsolete attachments)

Assignee

Description

2 years ago
This was left out in initial conversion as it required upstream support. We now have ClipMode::ClipOut which provides that support.

Someone just needs to add the appropriate push/pop clip commands in nsDisplayFieldSetBorder::CreateWebRenderCommands (it's mostly already set up with a comment).

Good bug starter bug, happy to mentor. (do we have a tag for that?)
Mentor: a.beingessner
Whiteboard: [gfx-noted]

Comment 1

2 years ago
If I could get some help on this then I would love to try and fix this!

I assume the comment Alexis refers to is https://dxr.mozilla.org/mozilla-central/source/layout/forms/nsFieldSetFrame.cpp?q=nsDisplayFieldSetBorder%3A%3ACreateWebRenderCommands&redirect_type=direct#174 ?
Assignee

Comment 2

2 years ago
Yes, exactly. So looking a bit closer, there's two things to do here:

1. Add API support for generating a ClipOut
2. Use that API to Push/PopClip in the code you linked.

I expect (1) will involve making a version of ToComplexClipRegion ( http://searchfox.org/mozilla-central/source/gfx/webrender_bindings/WebRenderTypes.h#330 ) that takes a (non-rounded) Rect and a ClipMode. (It might end up trivial enough that you should just skip making a function and do the work directly in CreateWebRenderCommands)


I think (2) should look like (very-pseudocode):

region = ToComplexClipRegion(legendRect, ClipOut)
aBuiler->PushClip(aBuilder->DefineClip(region))

...

result = CreateWebRenderCommandsForBorder(..)
if (pushedClip) { aBuilder->PopClip() }
return result

Somewhere in there you should also use the aSc.ToRelativeLayoutRect to get the units right. This should be a decent example:

http://searchfox.org/mozilla-central/source/layout/generic/TextDrawTarget.h#61-75

Comment 3

2 years ago
Thanks for the details!

Unfortunately I will not be able to do anything tonight, but I'll sit down and work with this tomorrow. If I encounter any problems I'll let you know!
Whiteboard: [gfx-noted] → [gfx-noted][wr-reserve-candidate]
Whiteboard: [gfx-noted][wr-reserve-candidate] → [wr-mvp] [triage] [gfx-noted] [wr-reserve-candidate]
Whiteboard: [wr-mvp] [triage] [gfx-noted] [wr-reserve-candidate] → [wr-reserve] [gfx-noted]

Comment 4

2 years ago
I started working on an implementation today and decided to divide it up like you did with (1) and (2) (if the function becomes very small I'll just manually inline it). 

I wanted to ask about the non-rounded Rect. I wasn't sure which one to use that work with the nsRect class from "nsDisplayFieldSetBorder::CreateWebRenderCommands". Am I right in assuming that RectTyped will work (http://searchfox.org/mozilla-central/source/gfx/2d/Rect.h#229) and is it then appropriate to use gfxRect from http://searchfox.org/mozilla-central/source/gfx/thebes/gfxRect.h#12 ?
Flags: needinfo?(a.beingessner)
Assignee

Comment 5

2 years ago
Looking again, it looks like ToComplexClipRegion is now dead code, having been replaced by ToComplexClipRegions. This suggests to me you should just skip to doing it inline, based on the body of ToComplexClipRegions.
Flags: needinfo?(a.beingessner)

Comment 6

2 years ago
I mimicked the ToComplexClipRegions without the radii (I assume that it shouldn't be there). DefineClip didn't need the ComplexClipRegion, can I just pass it in directly to aBuilder.DefineClip like in the code snippet? Do I need to manually define the ClipMode::ClipOut somewhere because now I only throw the layoutRect into the DefineClip

```
  bool pushedClip{false};

  if (nsIFrame* legend = frame->GetLegend()) {
    rect = frame->VisualBorderRectRelativeToSelf() + offset;
    nsRect legendRect = legend->GetNormalRect() + offset;

    if (!legendRect.IsEmpty()) {
      auto appUnitsPerDevPixel = frame->PresContext()->AppUnitsPerDevPixel();
      wr::ComplexClipRegion region;
      auto layoutRect = LayoutDeviceRect::FromAppUnits(legendRect, appUnitsPerDevPixel);

      aBuilder.PushClip(aBuilder.DefineClip(Nothing(), Nothing(), aSc.ToRelativeLayoutRect(layoutRect)));
      pushedClip = true;
    }

  } else {
    rect = nsRect(offset, frame->GetRect().Size());
  }
```

The full change is in the patch

Comment 7

2 years ago
Posted patch my.patch (obsolete) — Splinter Review
Assignee

Comment 8

2 years ago
Ah, so the issue is that when we added the ClipOut API to webrender, we only put it on ComplexClipRegions, because we didn't want to bloat the much more common clip-rect. So you need to set the mode on the region, properly initialize it, and pass that in too.

Comment 9

2 years ago
Posted patch my.patch (obsolete) — Splinter Review
Attachment #8925116 - Attachment is obsolete: true

Comment 10

2 years ago
I updated the patch and am now creating an Array with a single ComplexClipRegion that I pass into the DefineClip function. With the previous patch I thought I had to pass the ComplexClipRegion as the rect (third parameter). Perhaps I should have taken a second to read exactly what the fourth parameter was '-.-
Assignee: nobody → anting004
Status: NEW → ASSIGNED
Priority: P3 → P1

Comment 11

2 years ago
It seems I did not add any flags to my updated patch, woops.

Could you look at the patch Alexis?
Flags: needinfo?(a.beingessner)
Assignee

Comment 12

2 years ago
Whoops, yeah sorry didn't see you updated this!

Patch looks like what I was imagining. The style is a bit different from what I'm used to in our codebase. 

mstange, can you advise on style?
Flags: needinfo?(a.beingessner) → needinfo?(mstange)
Comment on attachment 8925848 [details] [diff] [review]
my.patch

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

Yes, I have some style comments. The code itself looks good!

::: layout/forms/nsFieldSetFrame.cpp
@@ +167,4 @@
>    auto frame = static_cast<nsFieldSetFrame*>(mFrame);
>    auto offset = ToReferenceFrame();
>    nsRect rect;
> +  bool pushedClip{false};

This syntax is rarely used in our code, usually only when initializing struct fields. So I'd recommend making this "bool pushedClip = false;" instead, so that it looks less out of place.

@@ +178,5 @@
> +      auto layoutRect = LayoutDeviceRect::FromAppUnits(legendRect, appUnitsPerDevPixel);
> +      wr::ComplexClipRegion region;
> +      region.rect = aSc.ToRelativeLayoutRect(layoutRect);
> +      region.mode = wr::ClipMode::ClipOut;
> +      nsTArray<mozilla::wr::ComplexClipRegion> array{region};

whoa, I didn't know we had a way to add a value into an nsTArray during construction!

@@ +179,5 @@
> +      wr::ComplexClipRegion region;
> +      region.rect = aSc.ToRelativeLayoutRect(layoutRect);
> +      region.mode = wr::ClipMode::ClipOut;
> +      nsTArray<mozilla::wr::ComplexClipRegion> array{region};
> +      auto clip = aBuilder.DefineClip(Nothing(), Nothing(), region.rect, &array);

Let's make this "wr::ClipId" instead of "auto" to be consistent with the other users of DefineClip.

@@ +188,5 @@
>    } else {
>      rect = nsRect(offset, frame->GetRect().Size());
>    }
>  
> +  auto result = nsCSSRendering::CreateWebRenderCommandsForBorder(this,

And please make this auto a bool instead. Same number of characters and clearer.

@@ +196,5 @@
> +                                                                 aResources,
> +                                                                 aSc,
> +                                                                 aManager,
> +                                                                 aDisplayListBuilder);
> +  if (pushedClip) { aBuilder.PopClip(); }

Final style comment: Please add line breaks.

if (pushedClip) {
  aBuilder.PopClip();
}

Comment 14

2 years ago
Posted patch my.patch (obsolete) — Splinter Review
Style fixes
Attachment #8925848 - Attachment is obsolete: true
Flags: needinfo?(a.beingessner)
Assignee

Comment 15

2 years ago
Comment on attachment 8930831 [details] [diff] [review]
my.patch

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

perfect!
Attachment #8930831 - Flags: review+
Assignee

Updated

2 years ago
Flags: needinfo?(a.beingessner)
Keywords: checkin-needed
It's probably worth adding a reftest to exercise this case (in a follow-up bug maybe) since our existing reftest suite doesn't seem to cover this.

Comment 17

2 years ago
I will be without a laptop for the next week or so. My suggestion is to, as @kats says, put the reftest in a follow-up bug. Or someone else will have to work on this bug to complete it in a timely manner.
Assignee

Comment 18

2 years ago
From irc discussion, this was a misunderstanding. Because this is replacing a fallback with a proper WR implementation, it should be fine.
Yeah, my mistake. I can land this patch for you - in the future please make sure to also include the bug number in the commit message ("Bug XXXXX - commit message. r=reviewer" is the usual format).

Comment 20

2 years ago
Pushed by kgupta@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/0df37c7600d1
Implement fieldsets with non-empty legends. r=Gankro
Keywords: checkin-needed
Henrik (or Alexis) please update the patch to correct the build bustage. Thanks!

I'd do it but since this is a mentored bug you guys might as well get the full Gecko-hacking experience :)
Flags: needinfo?(bugmail) → needinfo?(anting004)
Assignee

Comment 24

2 years ago
I'll happily fix it if Henrik's fine with it (since they can't work on it for a week)

Comment 25

2 years ago
I'll have a hard time fixing it for same reason as i mentioned before so please do fix it Alexis
Flags: needinfo?(anting004)
Deprioritized to P3 during triage - moving to Reserve Backlog.
Assignee: anting004 → nobody
Status: ASSIGNED → NEW
Priority: P1 → P3
Flags: needinfo?(mstange)
We'll fallback so this issue isn't related to correctness.
Priority: P1 → P3
Assignee: nobody → a.beingessner
Assignee

Comment 30

10 months ago
MozReview-Commit-ID: 1QqgRcSN1K3
Assignee

Comment 31

10 months ago
note to sheriffs: there's multiple commits on phabricator but I only see the first in bugzilla?
Keywords: checkin-needed

Comment 32

10 months ago
Pushed by ebalazs@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/69faa23050d9
Implement non-empty legends for wr. r=jrmuizel
Keywords: checkin-needed
Comment on attachment 9003784 [details]
Bug 1412179 - Implement non-empty legends for wr. r=jrmuizel

Jeff Muizelaar [:jrmuizel] has approved the revision.
Attachment #9003784 - Flags: review+

Comment 35

10 months ago
Backout by ebalazs@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/902644464343
Backed out changeset 69faa23050d9 for landing without first patch
https://phabricator.services.mozilla.com/p/Gankro/ mentions only one patch for this bug. Are the other patches on phabricator? Is https://phabricator.services.mozilla.com/D4010 the other patch? It changed bug numbers.
Flags: needinfo?(a.beingessner)
This should be ready to go, but I don't think we need to block the release on it.
Blocks: stage-wr-next
No longer blocks: stage-wr-trains
Alexis, please upload the patch again with arc diff so proper author information (your name and email) are included.
Assignee

Comment 40

10 months ago
Depends on D4963
Assignee

Updated

10 months ago
Attachment #8930831 - Attachment is obsolete: true
Flags: needinfo?(a.beingessner)
Assignee

Updated

10 months ago
Attachment #9003784 - Attachment is obsolete: true
Comment on attachment 9006321 [details]
Bug 1412179 - Implement non-empty legends for wr

Jeff Muizelaar [:jrmuizel] has approved the revision.
Attachment #9006321 - Flags: review+
Comment on attachment 9006322 [details]
Bug 1412179 - defuzz tests that no longer fallback

Jeff Muizelaar [:jrmuizel] has approved the revision.
Attachment #9006322 - Flags: review+
Assignee

Updated

9 months ago
Keywords: checkin-needed
Hi. I've tried to land this 2 times, lando returns: 

This diff does not have the proper author information uploaded to Phabricator. This can happen if the diff was created using the web UI, or a non standard client. The author should re-upload the diff to Phabricator using the "arc diff" command. 

Importing the patches returns this: 

https://irccloud.mozilla.com/file/2Kl01K6B/image.png

Removing checkin-needed, please take a look at this.
Flags: needinfo?(aryx.bugmail)
Keywords: checkin-needed
Flags: needinfo?(a.beingessner)
Assignee

Comment 44

9 months ago
fyi, nika ^
Flags: needinfo?(a.beingessner) → needinfo?(nika)
Gankro: update phlay to the latest version and try repushing the patch. This is a bug with the old version.
Flags: needinfo?(nika)
Attachment #9006321 - Attachment description: Bug 1412179 - Implement non-empty legends for wr. r=jrmuizel → Bug 1412179 - Implement non-empty legends for wr
Attachment #9006322 - Attachment description: Bug 1412179 - defuzz tests that no longer fallback. r=jrmuizel → Bug 1412179 - defuzz tests that no longer fallback
Assignee

Comment 46

9 months ago
*sobbing* please work phabricator
Keywords: checkin-needed

Comment 47

9 months ago
Pushed by dluca@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f22f3ce35811
Implement non-empty legends for wr r=jrmuizel
Keywords: checkin-needed

Comment 48

9 months ago
Pushed by archaeopteryx@coole-files.de:
https://hg.mozilla.org/integration/autoland/rev/29b47a085757
defuzz tests that no longer fallback. r=jrmuizel CLOSED TREE
Assignee

Comment 50

9 months ago
Wait I'm confused, you pushed only one patch, and then archaeopteryx pushed the expectation changes, but I got backed out for not having the expectation change?
Flags: needinfo?(a.beingessner) → needinfo?(dluca)
After both patches landed, there was failure for layout/reftests/box-shadow/fieldset.html:

https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed,busted,exception&tochange=7102989560f2a6155025e4f083cc41427516c2b8&fromchange=56a508217ab7e7c28e1e5622f8dd31caa98a8706&searchStr=reftest&selectedJob=198931299

REFTEST TEST-UNEXPECTED-FAIL | file:///builds/worker/workspace/build/tests/reftest/tests/layout/reftests/box-shadow/fieldset.html == file:///builds/worker/workspace/build/tests/reftest/tests/layout/reftests/box-shadow/fieldset-ref.html | image comparison, max difference: 246, number of differing pixels: 42

Your patch in phabricator https://phabricator.services.mozilla.com/D4964 looks like the change which landed for that file: https://hg.mozilla.org/integration/autoland/rev/29b47a0857574c7164d03ec56c27d5c3e51f412a

The expectation for the sticky-legend one had already been changed before to the new value: https://hg.mozilla.org/integration/autoland/rev/e4f3b85bc61b / bug 1488403

Part 1 has a merge conflict now, please update it. Set potential needinfos on me, my work interval is more frequent (but shorter) compared to the sheriffs. Let's get this landed.
Flags: needinfo?(dluca)
Flags: needinfo?(aryx.bugmail)
Attachment #9006322 - Attachment is obsolete: true
Assignee

Updated

2 months ago
Keywords: checkin-needed

Comment 54

2 months ago

Pushed by ncsoregi@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/fd5cb917b6eb
implement fieldsets with nonempty legends. r=kats

Keywords: checkin-needed

Backed out changeset fd5cb917b6eb (bug 1412179) for Wr failures at /html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html

Backout: https://hg.mozilla.org/integration/autoland/rev/bcf9b5a72198cb74f6fc063234652583201e4c3e

Failure push: https://treeherder.mozilla.org/#/jobs?repo=autoland&selectedJob=240112129&revision=fd5cb917b6eb7623ee6de94d5105ac4e23c38371

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=240114849&repo=autoland&lineNumber=44081

task 2019-04-13T07:52:27.639Z] 07:52:27 INFO - TEST-START | /html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html
[task 2019-04-13T07:52:27.646Z] 07:52:27 INFO - PID 17262 | 1555141947639 Marionette INFO Testing http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html == http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical-ref.html
[task 2019-04-13T07:52:27.662Z] 07:52:27 INFO - PID 17262 | JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 2383: TypeError: tabbrowser.getTabForBrowser is not a function
[task 2019-04-13T07:52:27.662Z] 07:52:27 INFO - PID 17262 | ++DOMWINDOW == 49 (0x7f95d8af7400) [pid = 17403] [serial = 49] [outer = 0x7f95dbfcbd40]
[task 2019-04-13T07:52:28.032Z] 07:52:28 INFO - PID 17262 | JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 2383: TypeError: tabbrowser.getTabForBrowser is not a function
[task 2019-04-13T07:52:28.039Z] 07:52:28 INFO - PID 17262 | ++DOMWINDOW == 50 (0x7f95d8af4000) [pid = 17403] [serial = 50] [outer = 0x7f95dbfcbd40]
[task 2019-04-13T07:52:28.282Z] 07:52:28 INFO - PID 17262 | 1555141948276 Marionette INFO No differences allowed
[task 2019-04-13T07:52:28.388Z] 07:52:28 INFO - TEST-UNEXPECTED-PASS | /html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html | Testing http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html == http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical-ref.html
[task 2019-04-13T07:52:28.388Z] 07:52:28 INFO - REFTEST IMAGE 1 (TEST): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQVR4nO3dW3IbuZYFUA+wfu8oahIeU02Q/dFXXWyaZAJIPM4B1opglG1KMrYAZ2KTmapfDwAAgEl+rR4AAABwDgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGCadAXk1690QwYAAP4r5G7+W8kYWUB+/fpV9PVLPw4AAPj/Qu6iV27uS/9uBQQAAOqF3EUrIAAAsKfLXfTP5UavG+6SP3+3SX/+83cf+/pn7567GufdjynxKXfp3wMAACcq2h2XbtY/FY53f/btc2vvAflWBmo+5urvLhlHyfcEAABO1a2A1JSGq015j69VejN5y+fd/VwAADhV8Y655B2F1s+9+vg7X6v271FAAABgnK4F5Nvj2+de/V014/j2eVfj+vT13328AgIAAPWqdszPN1l/eq7m67Q831JAai7T8g4IAACMM6WArL4HRAEBAIAYuhWQT3/eslGv/QlZLT/xatRPwQIAAD6r3jGXlIereyxK/h8Zn+67aP26756v+fo1Y1NEAADgPTtlAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkuC8hff/117OP379/LxyC//PLLL7/8K/IDjKKAfDn4/vPPP8vHIb/88ssvv/wr8gOMooB8OfieegKSX3755ZdffoBRFJAvB98TT0Dyyy+//PLLr4AAIykgXw6+p52A5Jdffvnll18BAUZTQL4cfE86Ackvv/zyyy+/AgLMoIB8OfiecgKSX3755ZdffgUEmOX4AvLt4HvCCUh++eWXX375FRBgptsF5NvBK/rj6uBbcgJanUF++eWXX375R+QHGOXYAvLzP5k69QQkv/zyyy+//N8eAKMcWUCe/w+3J56A5Jdffvnll//qYwFGOa6APB98TzwByS+//PLLL78CAqx0VAF5PfiedgKSX3755ZdffgUEWO2YAvLu4HvSCUh++eWXX375FRAggiMKyKeD7yknIPnll19++eVXQIAoti8g3w6+J5yA5Jdffvnll18BASK5LCDZ3T2B3P381bKP/y7zL3/m8d9l/uXPPH5gX1UF5Nev7x8++vkWTkD9xr9i/u4y//JHWv+/fv36v8cM0eZf/lz5AUapLiClj9bP7y3aCWi23huwO/O/gvmPl3/meom0/l+f+/TrSPlHfP/kz5MfYJRh74C8+9hvnx/1AJz9AN77BPrNjBNqLfMfK/+3zXnE/DVjrD3+Xf2+h0jzL3++/ACjTC0gd79+i0gnoBUibcBWMP9x8me8BLN1/ArIHhvw0/MDjNL1iKeAxDuAzxy/ArLf/Csg5RSQ/Tbgp+cHGGXILrH1uu6IB+DsB/AV4490H4j5j5N/9wLy4+o+kE+/jpi/9/dP/lz5AUZpOuK13kR6dQ9IxANw9gP4iPFHvun8lfmPk3+XAnLn+Fd74/pd0eZf/lz5AUapPurduYk04wE4+wG89/hn30R8l/mPlb90/fRaT5HW/4p/I5HmX/58+QFGGXYTesvzI0Q6Aa0w8wQasYSY/zj5r16AGPGChPUfZ/7lz5cfYJSpBWQFJyAbMPMfI3/GFyBqxm/9W/+75QcYRQFxArIBM//yT1j/Nf8+orwDtKqAyh8jP8AoSwrIzJuYI52AVoi0AVvB/MsfZf1nvASt9/dP/lz5AUaZehN6j8+vFekEtELv8bsJ/az5j7SBX5G/dIxuQr8///LHyw8wSpgfw1vyfItIJ6AVRox/5jtYd5n/OPlrXvXtta6s/zjzL3++/ACjTD1zKiDzZR//XeY/Tn6vAM8Xaf7lz5cfYBQFxAlo+vjdAzSP/HHGf/rxT/58+QFGcQmWDVj1+O8UCPcAzSV/nPWf8RK03htw+XPlBxjFTeg2YFXjH3kTrgLaX6T8Gee/dIxuQr8///LHyw8wih/DawM6bQOZcQN6+vz3Xj+lrwBHyf86/m8i3oweaf7lz5cfYBT/I0InIAXE/E8rIJ9EfQe0ZoyOf9b/bvkBRlFAnIAUEPO/vICUPL8i/4jxn/4OsPx58gOMMrWAZNyAZD+AR9uAlV5D32stmP88+SP++68ZX8naPvEeOPnz5gcYZepN6BmvAc9+AO89/tHz33stmP88+SP++y8d453yUfp8i9XzL3/u/ACjhPkxvFFfAcp+AB8x/hHzP4r5z5E/6gsQ38Zasv6zb0BP34Cfnh9glKk7wowH4OwH8Ozjv8v8y79y/Nk3oKdvwE/PDzBKqLvGIx6Asx/As4//LvMvvwJiAy5/zn+/wL4UEBuwaePPeAKO9P3bKX/Nxmxl/h4y34Tc4/snf978AKOEKSBRrwHPfgCPNP6aG897rQfzHzP/SQXk8Sj/AQy9RZl/+XPmBxglTAEZJcoJKGv+ntyEPl/U/KcVkBIRN6Azv3/yx8sPMIqb0AOdgEbIPv67zH/M/ArIHFHnX/4c+QFGmV5Asr0Fnf0Ann38d5n/mPkVkDmizr/8OfIDjNL1/4R+9bH+PyDz9Rz/yPmv/fqlzH/M/BkLiPU/9vsnf7z8AKNUF5CaR/VgAh6Asx/Ae59A78y/d8Dmi5o/awGx/sd+/+SPlR9glOoj3qeDZI+DZ8QDcPYDeO/x35l/74DNFzV/xgLybazWf9kGXP5c+QFG6XoJ1ujnW0Q6Aa0w6wQ64/kW5j9m/owFZPT6PX39yx8vP8Ao0wvIzLefH49cJ6CI+Z/ZgJ03/wrI+zG/Y/3vtwE/PT/AKGHeAVFAxrABM//yW/8Z5l/+ePkBRplaQO5+/RaZTkAjZNmARb0J8/T5Pz3/s9EvwOy+/uXPlx9gFDeh24BVjX/k/I9g/uPkz3gPUOkYS29CP/kSVPnz5QcYpemo13rwzLgByX4AHzH+WSfPHsx/nPxXG7CI//7fGXX8GyHa/MufKz/AKFOPiBlfAcp+AI86/iw3IUf9/mXMn/EesOwizb/8+fIDjDK9gMzmBBRz/ArIHJHyZ3wHNLtI8y9/vvwAozTdAxL9sptnTkB9x99r/hWQOTLlz1BAHP+s/5PyA4xS/VOwPm0co56QnYD6jb/n/Csgc2TKH72AWP/95l/+HPkBRrn1Y3ivfv/pa8x8BTHqCWiW3huwmt9/k+UEfPr8z8qf4SZ06/+8Dfjp+QFGmVpAVryDEvUENIsNmPmX3/qPNv/y58gPMMr0AnLn81tEPQHNYgNm/rPkj/jv/9v4rP/9N+Cn5wcY5db/iPD11wpIvAN47/Hfmf+Sr9Ob+Y+V/+pHcfe+RNP6jzX/8ufKDzBK003orRsGBWS+nuPvuWHMcgI+ff57r59vIv77fx2f9X/WBvz0/ACj3LoEq+kv7PQKYqmoJ6BZZm4gazgBzxFp/e9QQHo5ff1nya+AAIwx50dR/fxlEy65eBX1BDRL9vHflX0D/e7vqPn3Emn9Zy8gPWXcgPacvyz5FRCAMaYXkNminoCy5M+u9wZs5v0Lr16/dskmJtr6//a9UUD6i7r+s+RXQADG6HoJ1oqCcSXqCShL/md35z/7K+A14x+RpeUeKus/zvr/9LFZNqA913+W/AoIwBhdb0JXQOIdwHtvQO7M/4r1E3UD1iJ7AWndoN8Raf2vsNP6bxFp/WfMDzBKt3dAat927/mx3zgBzdmA3J3/qPcA1VBA7m/ge2/mI63/FXZa/y0irf+M+QFGmXoJVsYNSPYD+KwN2IznW6yYv5Gvhn/a5H36OyOt/xWb0kzrv/Vjv4m4/me+c5Rp/e9y/AMo0fWIt+IAeyXSCWiFmeO/O79ZTsCrLr1pKezWf5z1n/EFmNIcpT59bNR3QHsXkNmX8GX/9wvsa2oBWSHSCShj/honFJDZG6i7f4f1H2f9Z3wBpjRDj0twI/77711AZmbvkR9glG5HvZmvBNeIdALKmL/U3fnP8ApgxA3mFes/x/ofJdL6V0Dy5QcY5fKIl/0AFukEJH++/M8UkPPm//T8zxSQsfMfMT/AKApIoBPQ6fmjn4BXF5CWa+0zzf8IEfNnugn7ddzflN4DU/vcHRHn/5OI+QFGUUACnYBOyJ/5JtwIBaT2+xdt/meLlv95jXz6daT8n8b+TmmG148bWcKizf8nUQsYwCgKSJAT0An5M16CUTpGN6Fb/7Xr/+r3EfK/Wrn+W0Sa/4z5AUZRQJyAFJDK+Zt5Cc1dkeb/8XhM/55Fyr9DAfkZp/V/7vEPoAcFRAFxAg48f3dFm/9slyApIP1lugdmxPovuey01/cl4vwDPB4KiAIyOf+3k+opG7BWLQUu0vxn3ICfnr83BXSuaPMP8EMBUUDkrxz/qktQWl5BjTT/GTfgvddPtg34O63r3/zPl338wL4UECegZRvQbyL+FKxv43ITugJSs4H/+W/0S5A+jb30z799zKnzP1P28QP7UkCcgKZuQGseEfK/jv+biDfjRpr/x+P7OwA2oP1FWv8KyL85s9wDAzCKAmIDMrWAZMtfM34F5F4B3T3/CpHW/6kFpORSu6jrH2AUBcQGRP5kBaRm8x5p/jMW0OzrJ9r4s90Dc/fzazJGn3+AnhQQG3D5A28gX79u7Suo5j9O/tmXH/bI/zr+b2pvRs9wCZICAjCGAmIDJn/F+GdfQnF3A2P+4+Svmb+I90B9G1fEyw8fj/Xzr4AAvKeA2IDJXzn+mTeR7lRAMv4UNAXk/Thnrf+7Vs+/AgLwngJiAy5/4PHvVkCy/RS0mesnSwFplXED3uP75yZ0gD8pIIE2IPLHy7/abgVktkj5S0UqYD3NvPflR5T5n33vT6/8AKMoIAE3IPLHyR+Bm9DbZcq/+wb0W76o7wCYf4AxFJBAJ6AT8s++bjz7/P1ofQU12vzPFi1/tkvQZoq4Ac/0/RuRH2AUBcQJaFr+143ViGvee+fPJHoBOfUegMz5Z4qYP9P3b0R+gFEUECegZRuwq99HyJ9dtPkvfdW/17sA0fJ/c/r6j5h/5vy3fuzI/ACjKCAKiAISeP7uijz/8j+qnl+Rv6ere0Ai5u89/y7BA/hfCogCooAM2ECPyJL9p2CtEC3/7BuxI63/2T8B6vGINf8Zb8IHGEUBsQFbtgEbcclN7/yvY5/9Cmbt3987v/V/dv5nd9f/6e+AXYl+/APoSQEJdALaPX/GV0BffRrnjM1Vyyuokeb/eawz5j5q/pl2Wv8tMs2/AgKcRAEJdALaPX/GV0Brxr96Exb1HZBP73pdjb2HCPlXOmn9v5Np/hUQ4CQKSKATkPzx8j+LvgGLWEBKykfp8y1W518t0/rfff4z3oQPMIoCYgMif5AN2F0KyJ9W518t2vrP9lOgen//sl+CCtCLAmIDMvUEXCrKBqRmTKMLSMsrqKvnXwFZK9L6P33+s1+CCtCTAmIDMvUEnO0V0Ferb0Kv/X6tnn8FZK1I69/8z5d9/MC+FBAnoKkFJFv+d2b+FKfXv7dWhPl3E/o6kda/AjJf9vED+1JAnIDkDzz+u6LM/8x3vSLmXyXa+K8uI+wt0/xHzA8wigIS6AQkf7z82WWa/4gbsOzrJ/v474o2/9kvQQXoRQGxAZmWP+MlGO/GOPOyq7sizb/8+fK/6rH+Z17CGGn+dzj+AfSigNiATD0Bl77q12tjMmL8z79/9+sZSv/uSPO/gvyx1v/sfz+R5l8BAfiXAmIDEuYEHDH/t/Ff/X6kjAUk4wbs9H//z+6u/xX/fiLNf8b1DzCKAmIDIr8CMm0D5ib0uSKt/9MLyFXGiPkBRlFAbEDkV0CmFZCSPD1Fyr9CpPWvgMyXffzAvhQQJ6Dp+TPdhPpu7J9+rYDcW/82oP1FWv8KyHzZxw/sSwFxAhqev2SzHPUV8Ncxzrx86BsFpEym/CNEW/8n34S+QvbxA/tSQIKP/67VJ+CaTUbEDejo8bWaVUBmijj/mb5/I/I/6zU/P18n4zug2ZyeH4hLAel4Ao60Qf2xegO2UwGJZEUBuTt/V/eARJz/7Osn+/jvirT+Vzh9/oG4FJDKE1DpI4rVGzAFZIxVBeTO+l/xb2b1+l8t+/jvirT+Vzh9/oG4FJBBr4BFOQmt3oDtVEAivQIa/R2Qdx+74t/E6vW/WqT1f9K//12O/wCjKCALTkAzXzGLsAE75Sb0mhtxs8z/67ivcpV+7CwR1n/m/M/urv8V7xxY/7nXL7AvBaTj+O9stKNuwHt9/1ZdujBrA1JTPu58fq1o63+2KOs/a/5nd9d/j38/taz/3OsX2JcCMmD8nzbTGS9BWHUCj5K/ZnyzLkGpKW6R1v8KmdZ/xPzPoqz/GtZ/7vUL7EsBaRj/nUtv7jzfwgYsToHqMf+176BEWv+fxhv5EjTrv9zdeYx4/Ps0zlmXUN6Vff0C+1JAKsd/5xIaBWS+SBuwFc9HWv+fPl4BGSfS+h/9+e9EXf+zZF+/wL4UkIrxr95gtoi0AcuYv1TpTbizn486fwrIHJHW/8jP/yTq+p8l+/oF9qWATD4Blb6C1utkFmkDlvEm9N7r/878KyD1os3/bPLHXP+zZJ8/YF8KyMQTUMkGvPdmPNIG5FumUSfvaPnvzP+3dfHpuUjr/9PHKiDjyB9z/c+Sff6AfSkgkwvIbJk2ILu/A9Ir37t3S2bchK6AnHf8Oz3/s4jH9yvZ5w/YlwJSOf7TbkJUQKz/Z25CP2v+T8//6rTjP8AoCkjD+Gfcu9BLpg2IAtJf1PWvgMwhf8z1P0v2+QP2pYBMHH/GnwLV8/t3dQ/IyflLnn/+uNINUKT1/5rh3a97izT/K8ife/x3nZ4fiEsBmVxASm887rUhj7QBmf0TsLLlL5n/Txv3GfeA9KSAzCF/7vHfdXp+IC4FpGH8rZvn029Cl7/v/6jt6vc98n8axymXoJx+/Ds9/zsnrX+AURSQyvGfdhPi6fMfKX+EAmL9W/8n5X912voHGEUBqRj/iT+G8fT5j5R/dQEZ/WOod78HaAX546z/FbLPH7AvBcQGzAZkUv7e6yNjAZl9H1Ck+V9B/jjrf4Xs8wfsSwGxAVuyATnxJuQe87/yJvSRBfuEH0Kwgvxx1v8K2ecP2JcCYgOmgEwsICXfjys/H1tSXLKs/5LnW0Sa/xXkj7P+V8g+f8C+FJDK8d+5CdEG7H1WBWTc9yHS+r8SMf/px7/T879yEzpAHwpIw/hHXTp10gbsxAJyJeL8fxqn9X/G8e/0/O/4MbwA9ykggcZ/0gZMAfnTiEuYsqz/0+6BmkX+3OO/6/T8QFwKSJDxn7YBU0D+v5L5b7mJPcv6HyXL/MsfM392p+cH4lJAgo//rqgbEAWkXstN7FnGX/J8i53mX/75+bM7PT8QlwISfPx3Rd2AKCD9RX8HpOYdnF7vCJ40//L3z5/d6fmBuBSQReM/fQMuf//8GQrIbFHnX/4c+bM7PT8QlwKigGyzAT89f/QCskLU+Zc/R/7sTs8PxKWAKCA2IEkKyNU9IArIn6LOv/w58md3en4gLgWkYvwt/7fqkucVkHGi5m8tIDU/AatH/k9jLhlrTY5Ros7/LPLHW/8zZZ8/YF8KSOUJqObxzYkFZMUJPFL+T/l6vAMyKv/r39+y/kuyjvo3EHX+Z5F//fpfKfv8AftSQCrH32sDdWoBmX0Cj5T/9Xvx7te9rV7/NTn9GN7+5I95/J8l+/wB+1JAKjfQ37S+wh95Azrz+7d7/mdZ5v/TmN9597wCspb8MY//s2SfP2BfCogCYgOySQEZfRO6AmL9n5b/mQIC0I8CooDYgCQqILWXsK1e/wrIWvLHPP7Pkn3+gH0pIArI9A3IzBs2I+b/+R68+/U3Lesvwvp3E/o68q9f/ytlnz9gXwpI5fhPuwlx5PdvRgmLlv+O1QXk2xhKxrbiJwftNP/yz8//6rTjP8AoCkjD+KP+yMV3Im1AXr9PV7/fLf9dEQrIz98zYv2b//7kz7P+R8g+f8C+FJDgG8i7Im1ATi8gPeb/28fMKiCZRJp/+fPlz+70/EBcCsjkAnLyJSgKSL75zy7S/MufL392p+cH4lJAKsd/Z7NY++p1D5E2IApIn/mvKS5Z1v+dj/0m0vyvIH+c9b9C9vkD9qWAVG4g79xEffolWK8ZT7sJvfclWCXfv2jrv+bRQ6T5X0H+OOt/hezzB+xLAbmxgez9Cv4JBeQ554xXEyPm/6S2oJSsv0jr//R3AFeQP876XyH7/AH7UkACnYBOKSAzZcq/ewG5Yv33J3+e9T9C9vkD9qWABDkBRb0J+fT5n5W/ZP4VkHpZ5n8U+fOs/xGyzx+wLwWkcvzfrgHe8QQ08gT+ygb0u9UF5PXv6L3+zX9/8udZ/yNknz9gXwpI5QZ65E2zu2/AZt+AHC3/lSw3obfO2dU9ILuv/xXkj7P+V8g+f8C+FJDKE9BdszfhkTYgNe+A7Jj/J9fd+f95ruRjI63/FRu4aPM/m/xx1v8K2ecP2JcCMnH8p1+CdHoByTj/Pa3YwEWa/xXkzz3+u07PD8SlgATagEXcgM78/ikg8eY/u0jzL3++/Nmdnh+ISwGZuIHMuAFdMf8uQev3fKTxrxBp/uXPl//ZiesfYBQFpPIENPpG3N4ybUBOyH9n/lvWX7T1f5Wvt2jzP5v8edb/CNnnD9iXAtLpFbCIJ5/HI94G5OSb8O9qWX/R1r/5n0v+WOt/tuzzB+xLAel0AurxfOvHfhNpA3L6JWh35z/7JVinz/8K8sdZ/ytknz9gXwpIx/H3uIRm51eAT9+Ajp7/0QWk5e/v+XyLSPO/gvxx1v8K2ecP2JcCEmgDNkKkDcjpG9DR86+A/CnS/K8gf5z1v0L2+QP2pYB0Gv+uNyH2/v65CX+MGTeht/z97z6u5blWp8y//GPyl9r1+A8wytAC8vv378vPX/0YeQKWX/7V+eSXX375W/MDjDKsgGQ4+I48Ackv/+ps8ssvv/x38gOMMqSAZDn4jjoByS//6lzyyy+//HfzA4zSvYBkOviOOAHJL//qTPLLL7/8PfIDjNK1gGQ7+PY+Ackv/+o88ssvv/y98gOM0q2AZDz49jwByS//6izyyy+//D3zA4zSpYBkPfj2OgHJL//qHPLLL7/8vfMDjHK7gGQ++PY4Ackv/+oM8ssvv/wj8gOMcquA/P79+/IAlv0hv/zyyy+//CfmBxiluYCccPD9dgKSX/7VY5NffvnlH/kAGKWpgJxy8P10ApJf/tXjkl9++eUf/QAYpbqAnHTwfXcCkl/+1WOSX3755Z/xABilqoCcdvB9PQHJL//q8cgvv/zyz3oAjFJcQE48+D6fgOSXf/VY5JdffvlnPgBGKSogpx58f05A8su/ehzyyy+//LMfAKNcFpCTD77//POP/PIvH4P88ssv/4oHwCiXBQQAAKAXBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpLgvIf/7zHw8PDw8PDw8PDw8Pj8vH33//fb+A/P3334/fv397eHh4eHh4eHh4eHhcPm4XEAAAgF4UEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgmnQF5NevdEMGAAD+K+Ru/lvJGFlAfv361eXr9/o6AACwm5C75JWb915/twICAAB/CrlLVkAAAGBPl7vkn8uJXjfUJX/+bhP+/OfvPvb1z949dzXOux9z5SpD6dcBAIDTFO2SSzfrnwrHuz/79rm194B8KkG1H3P1d9f8HQoIAAD8qVsBqSkNV5vzHl+r9J2Mls8r+TgFBAAA/lS8Sy55R6H1c68+/s7Xqv17FBAAABinawH59vj2uVd/V804vn3e1bg+ff2WezwUEAAA+FPVLvn5xutPz9V8nZbnWwpIzWVa3gEBAIBxphSQ1feAKCAAABBDtwLy6c9bNvm1P12q5Sde9fgpWHeeBwCAE1Xvkks23lf3WHx7/t3HffuzO39vzddv/bsAAIB/2SEDAADTKCAAAMA0CggAADCNAgIAAEyjgAAAANMoIAAAwDQKCAAAMI0CAgAATKOAAAAA0yggAADANAoIAAAwjQICAABMo4AAAADTKCAAAMA0CggAADCNAgIAAEyjgAAAANMoIAAAwDQKCAAAMI0CAgAATHNZQP76669jH79//14+Bvnll19++eVfkR9gFAXky8H3n3/+WT4O+eWXX3755V+RH2AUBeTLwffUE5D88ssvv/zyA4yigHw5+J54ApJffvnll19+BQQYSQH5cvA97QQkv/zyyy+//AoIMJoC8uXge9IJSH755ZdffvkVEGAGBeTLwfeUE5D88ssvv/zyKyDALMcXkG8H3xNOQPLLL7/88suvgAAz3S4g3w5e0R9XB9+SE9DqDPLLL7/88ss/Ij/AKMcWkJ//ydSpJyD55Zdffvnl//YAGOXIAvL8f7g98QQkv/zyyy+//FcfCzDKcQXk+eB74glIfvnll19++RUQYKWjCsjrwfe0E5D88ssvv/zyKyDAascUkHcH35NOQPLLL7/88suvgAARHFFAPh18TzkByS+//PLLL78CAkSxfQH5dvA94QQkv/zyyy+//AoIEMnwArLa3fHLnzv/Xdnznz7/p+e/K3t+8w8QU7oC8uvXr/97lNjtBCR/Xf7Xz619Plr+WrvNv/ztrP/c898yfz2fB+gpVQF53Xh++nXP8cufO/+7zy959Pr+jfBtvK92mv8Wp+d/tsv6r7HT/NfMW+vnt764A1ArXXjAghoAABuPSURBVAGp+X2P8cufO3/r8z+/jpT/W4YTCmiL0/M/22H919pp/r/NX+kLMKXPKyHAaApI4hOQ/GcVkBWX0ETK3+L0/M+yr/8WJ83/iOMfwCgKSKITkPz3CkjN14+4AVNA6p2ev0b09d/ipPkfcfwDGCVVAXk8Ph8kP127utsJSP66/K1/R8QNmAJS7/T8LaKu/xYnzf+I4x/AKKkKSMuNczudgOTvc+NkzedGy1/7/E7z3+L0/O9kXf8tdpr/q3tASo+BbjoHIkhXQGqdcgKS/97XGFXgeisdf69XsKPlr3V6/lfZ13+tnea/xwswtfMPMEqqAtJipxOQ/PeseAeh9/hrHj3GHyl/i9PzP8u+/lvsNP897/EY8fUBaiggiU5A8t+TfQN2+jtgLU7P/yz7+m9h/v+lgACRpCogtdf59xi//Lnz13y+DVjs+Zf/Huvf/N95HqCndAXk5EtQ5K/P//r5V1//VaT8LXaaf/nvsf73mP/e93+UPg/QU7oCUmunE5D8Z9+E7qdg1Ts9/6vM67/FbvN/9yZyN6EDUaQqIC12OwHJf1/NK4iR8te86/Pz+9Pn//T872Rd/y12mv9e72C0voMC0JMCkugEJP98kfKf/g5Yi9Pz35U9/07z7xIqYCepCsjpl6DIP/8EHCn/ivHLHy//zFewI+afOf5I+RUQYCfpCsjJl6DIX5+/9Ot8Eil/i53mX/4+1/Bb/znn3yVYwE7SFZBaJ52A5G//Ghluwj39HbAWO+XvsQHNvP5b7DT/j4eb0IF9pCogLXY7AcnfbsUGvvf4S98B6jX+SPlb7JT/bgHJvv5b7DT/P1rfwXAJFxCJApLwBCR/m+wbsG/jH/UKdqT8LXbKr4DU22n+71JAgEhSFpCZ1zDLnzv/6+fVPh8pv0uw6u2UXwGpt9P836WAAJGkKCCvNxdffUzP8cufO3/Nx2TfgCkgf9otf+n6f/dxu6//d3aa/xUFFGCU8AWkZPP57fnsJyD57+Uv/ZgdbsLdcf7v2il/yT1AV+8K7rz+R4w/Uv7WOX/9GjV/DjCKAhL8BCR/3wLy83GzLmGbxU3o7+2Uv9cmccf1P2r8kfK33AP26WNbLmEF6EkBCX4Ckr9/AamxOv/q8cufO/9d2fPvNP8uoQJ2ooAEPwHJr4CsHL/8ufPflT3/SfOvgACZhC8gj4ebsOXvcxN6iwj53yktZjvM/x075VfA548/U34FBMgkRQF5PMpvwOw9fvlz578rSv5XCkiZnfLXrP9e/x4i5V8x/iz53csBZJOmgJTYeQMuf1v+u6LmV0DK7JR/xQYzUv4V48+eHyCqrQrIiPHLnzv/XVHzKyBlTs9/V/b8O82/m9CBnSggiU5A8s8XNb8CUub0/Hdlz7/T/K+4BBVglFQF5MSfAiX/vfw1z7/72Ej5343v9devdpr/Fjvlt/7rnTL/JXPbMv8Ao6QrIKfehC3//VcAS29kf/5akfK/Znn361c7zX+LnfJb//V2mv8rI+YfYJR0BaT2uZ1OQPLf/z8Bf/q4Ud+/URSQMjvlt/7r7TT/V+68C6JwALOlKiBXdn8HQP76/Hefj5pfASmzU/7Rl2BlWv+lzH+/5wF6UkASnYDkr89/9/mo+RWQMiflP2n9l9pp/u9eMqWAAJEoIIlOQPLX57/7fKb875w0/6fnt/7/tNP8370ETwEBIklVQK4OwLtvwOWvz1/6+Z+ej5S/xU7zL/9n1v97p8z/4+ESLCCXdAWk9i3onU5A8t//qS2Zb8JdsYGMlL/F6flfZV7/LU6afzehA5mkKyC1djoByd/nJFlTXqLlry1hO81/i9Pzv5N1/bfYaf57vYPR+uINQE+pCkiLnU5A8s8XKX/LNeCnz/+u+Ut/CMFdUfPPGn+k/D3eAQaIQgFJdAKSf75I+V2CVW/X/ArInPFHyq9kADtRQBKdgOS/r/YVw0z5FZA/7Zq/tYDsvP5HjD97/lfeMQGiSFtASk/Au56A5K/fgL2eeEu+RtT87yggf9o1v/VfZtf5b9Ey/wCjKCBJT0Dyt23Aan7/eMRd/6/chP7ervmt/zK7zf+ddzBa5h9gFAUk2QlI/rr8nz6n5PePR9z1X2rX+T89v/VfZqf5v/sOhgICRKKAJDoByV+f/9PnlPz+8Yi7/t/xDsifds1v/ZfZaf7vFggFBIhEAUl0ApK/Pn/p5426hKm3qx/F+XqJxq7zX2rX/Keu/1o7zX+PAlE7/wCjKCCJTkDy1+d//ZyrDfurSPlrX+HsMf5I+Vvsmv/E9d9ip/nv8Q5I7fwDjKKAJDoBteS/a6f8Ld+nSPkVkPmi5j9x/bfYbf3feQdDyQAiUUCSnYBq83/6nNLnd8rfIlL+HQrIyldcd1r/s2TPH2393+EdDGAnCkiiE1BL/tfPqbl/4PHIP/93Rcv/LWv0AvK6tmbN4evfv8P6nyV7/kjr/y4lA9iJApLoBNSS/9PnlH7NU/P/iJq/VKT1f/ca9ruyr/+7l9hY//sc/1u4RAuIJG0BKeUE9K/sG7C7al75/hEpf80Godf8KSCx5v/OZTjZ13+LSOt/tbvrB6AnBeSgE9CV6Buwu2ovX3o8YuWvuYRIAakXff23rN+7nx8pf4tI6/+ulhcgSj9/9b894DypCsiKSwgi5X/OOfKVq54b2N7juvOx2S9BaZnnaOv/2z0gUTZBWde/S7D+FG3939HyAsTr5199fYBZ0hWQ2ZcQRMr/8z2o+fNPH1taYCLlv3sCLvn6ryLlbxFp/Ue5/CPr+r9y93to/cc+/o/+N6KAADOlKyC1z510ArpzGUaGSzBWnIAj5W8Raf1H2OBkXv9XFJA/RVr/0UX49wmcY5sC8un5nU5ALsEYZ9Q7aKvttP7v2nn9330Xyfrff/1/E+kSSOAMqQrIFQVEAek9fvlz539m/Z83//LnHj+wLwUk0Qno26tUJa9g7bIBm3kNf8T8NSLlv/tDBO7aZf3PHH+m/O/In3v8wL62KSCn3IT+k7Uk+9XnlTwfLf/zGD/9uuf4o+WvFSn/6B8icGWX9V/z/Ys0/yvIn3v8wL62KSCjxp89/6vMN+G+K15XGU6f/0j5I1xjvtP6L3k+0vyvIH/u8QP7SlVAnID7yPpjSBWQR9Gc7Zy/h13Wf8nzp8+//LnHD+wrXQEpvWzj5/c7noBmXK7yI1L+0wvIuzX+Lftu+VeIlF8BqSd/7vED+0pXQGrtdgKq3YDeFSm/ApI7/90fkrBCpPl/POr/X0iR5n8F+XOPH9hXqgLSYqcTUMsG9NPXyXgJys/Yr37dc/yR8u9QQGrfwRwh8/qvFWn+5c+XH2AUBSTRCahHAcl8E+7rWGdsICPl36GArJZ5/dd8//wUrIf8HfIDjJKygMx8BTNS/rsFZMU15KvtNP+Px/d3gKIXkNWyr/+Sd5Bej4mnz7/8uccP7CtFASm51MYlOArIO7vNf8nlS7vmvyv7+ncPXD35c48f2Ff4AlJzo/UJrwDfuQl99w3Y7vO/ywa05h3MnrKv/xYR51/+PPkBRlFAEp6Aau6BePd5Nc9Hyl97+UmP8UfK3yJC/jvvYPaUff23iDD/8ufNDzCKArL5CejVzjfhvlsrp8//6vx3//32lnn9t1g9/6vJn3v8wL4UkM1PQO9k/TGkpxeQjD8FKVoB+fl7Mq7/FqvnfzX5c48f2Ff4AvJ4uAn9KmPp8y0i5b9yQgHJ9lOQIhaQGpHmf8X45T87P8AoKQrI41G++eo9/ij5S78HvUXKXyrSBrx3rlqr8ysguccv/9n5AUZJU0BKnFBAWp67I1L+K7vPf4sI+aPchN7C/Mt/cn6AUbYqICPGnyn/Ce+AZLsEabUo+VvfwVwt2vzXfq+izP8q8uceP7AvBWSjE9DuBeT0H0Kwe34F5LvX4lHyzlKm+R9B/tzjB/aVqoBk/ClAMykguTfgJflL30H4+f1O+VeIlP91fV/9vsf4I+VvIX/u8QP7SldATr4E5+oeEAVk7w1YxpvQs4uUXwGpJ3/u8QP7SldAap/b6QR09/r5Fe8g9Va7Bnaa/xaR8q/+KVjZ178CUk/+3OMH9pWqgFzZ/QR8d4O24h2k1Xaa/+z5V9+EvsP6/3YPyO7Hvxby5x4/sC8FZPMT0KtPm7xR7yCttuP812zcI+VveQezt8zrv6W8RZr/FeTPPX5gXwrI5iegZyvuoVhth/kv+WlHO2xAV1+CFX39uweonvy5xw/sK1UBabkJ+6QT0N1r7KNvwFpkn/+S8vHt+Uz5FZD+Ms2//PHyA4ySroCcfglC7TXsr5979bVfRctfK/v8KyD9WP+x51/+ePkBRklXQGrtdAIa8Q7H1fOR8rfIPv87FZCWdzB7yr7+V/wUr0j5W8ife/zAvlIVkBY7nYDuFoxvH5PhJtwW2ed/twKy6idgffseffvz1fP/OsbZP8UrUv4W8uceP7AvBSTRCahHAfn5uFk/RWm1HeZ/l5vQZ5WMK1nX/+nvALeQP/f4gX1tVUCivwI8KmPJc62i5Z89/ij5W+/72SX/Ktnznz7/8uceP7CvdAXEJQhzZc9/0vwrIP1lz3/6/Mufe/zAvlIVkOzXwPf8PrReP1/7ORHz19hx/uVvl3n9O/7Vkz/3+IF9KSDJTkCf7gcovQG99vOj5a+12/zvkr927faQff3XXIL38/uo8z+L/LnHD+xLAUl0AnrNd/X7Hp8fKX+Lnee/5Pmo+VcVkJrfPx6x1r+b0OvJn3v8wL5SFZDHo/4m7J1OQApIvd3mf5eb0BWQOaLOv/w58gOMkq6A1NrpBKSA1Nt5/kuei5pfAZkj6vzLnyM/wCgKSKIT0N0C8vox764ZfxUpf4ud5v+Kd0Cu7bD+a34IRdT5n0X+3OMH9qWAJDsB9bgJvfTyncfD/GfKr4B8l3X9l3yvsr0DNov8uccP7Gv7AnJXxPw/m43aHym64ibW1U7agIzYyO9WQGqtnv+a71OmAppF9vzZxw/s66gCsuIEnl32/DttwK7uAWlZ31fP71RAWqyefwWkn0jrf5bs4wf2dVwBKX382Cl/i+z5d9qAtVxCVPP5M9e/AlJGAekn0vqfJfv4gX0dV0BKn//5daT8I17hvno+Uv4WO23A7m7UI63/iJdgRVz/Ckg/kdb/LNnHD+xLAfnwfMQTUM0rd70+P1L+FjZg/8q+/p/HVvvuz6fPy7D+S0rIpz/fcf3fmf/S5yOv/xrZxw/s66gCciX6CejbCbT0Epza5yLlb7HjBmyU6Ov/dYwlf176MdHXf+2lQ73GHyX/8/eh5s9bv3bU9V8r+/iBfSkgbzyfzCPldwlWvd02YDOMXv8zXsHu9Xym+d+9gNyd35q/J+Lxv0X28QP7OrKA1GyAMuUfcY9Apvzv7LQBe3bnHoqV63/UOxilX6P286POf6md1n+v+d/1+L/j+IF9HVdAZl9DPZMN2J922oA9ay0gK9f/incwalj/sdd/j/nf+fi/4/iBfR1VQHa+BKPmUpaaz8+S/5OdNmDPWgrI6vUfuYBkWP8r5i97/rvPR8rfIvv4gX0pIBfPZ8+/0wZE/n+dWEC+fczrn/e6hj/S/LsJvX7+Sz732/PR8tfKPn5gXwrIxfPZ8++2AZH/f2UtIN82kCXjq3n0GH+k+f/2/Rl1CVG0/LXzX/I9+vZ8pPwtso8f2JcCcvF89vw7bUDk/1fGAvLp7ym9fLDlEqtd5/+d3d8BGXGPz9XzkfK3yD5+YF9HFZDHw02ImTcg8v8r403oK+w6/+/sXkB6sP5zjR/Y13EF5PHwYxhP2oDsmr+1gPx8vPWfe/7fUUDKWP95xg/s68gCUiN7/tM3ILvmv1NAaozIX7MBfP282ud3mv+re0BOzl/yfItI+U8cP7AvBeRC9vw7bUDk/1fWAvJp3KX3gJTeePzz+53mv/am68djr/XfMv93Rcp/4viBfR1ZQLwFn3MDIn8fq9b/u5vPv/3+3bhr7TT/8vcp2o7/ecYP7Ou4AuImxLwbEPnvW7n+7xaQFqfP/+n5Xzn+5xo/sK+jCogfw3jeBmSn/HffIVi9/hWQ+U7P/2z1+l8h+/iBfSkgF89nz3/6BmSn/DXXwH/6/NrnIxWQ029Cb7FT/uwFfIXs4wf2pYBcPJ89/04bkNPzX/0UpDuf/+n53vln3YTea/yR5v/1e/Hu1zvnz17AV8g+fmBfCsjF89nz77QBOT3/Lq8A//w9pRvHkvGf8FOgPuU9qYC0PFf6MY7/8cYP7OuoAvJ4uAkx8wZE/u/ubMIyrH+XYL3PqoCUPf/tYzKs/xbZxw/s67gC8nj4MYxZNyDyf1fzTsKO618B+dOu+d85ff3vOH5gX0cWkBrZ85+0ATk5f82lTDV65u/xCnbt5+86/wrIn6Kv/xWyjx/YlwJyIXv+kzYg8vfXu4DcuYn4Gzehv7dr/lcZCvgK2ccP7EsBuZA9/ykbkBPyj34H4Z3eBWTm2HuMP9L8P1NA5sieP/v4gX0pIBey5z99A7JT/pp3EHq9Ijwzf8QCFWn+nykgc2TPn338wL4UkAvZ85++Adkp/6h3Cb6JWkBO34DLX/f/kGkVNf8p4wf2pYBcyJ5/1w2I/HMoIDHnX34F5ITxA/tSQC5kz7/rBkT+OXrmv7oHRAHpb9f8CsgZ4wf2dVQBadngZM+/6wbk5PytPz1q9frv+ROwFJAyu+ZvKSCr1/8K2ccP7Ou4AlLzeDzy5991A3JS/pLNVun/BXrl+u/5SvWJBWTFBjpS/nf5Xn999TmO/7nGD+zrqALyeNRv4LLn33UDckr+mo1WaQmp+fPV+UtynFRAZm+gI+V//V68+3XN55X8edT8pbKPH9jXUQWkZQOXPf+uG5BT8vcsIDut/1MLSK2d8j8bcQlWpvVfKvv4gX0pIBfPZ8+/6wbklPwnFRA3ofe3a34FpEz28QP7UkAuns+ef9cNyCn5dysgtZcQlYxVAfls1/wKSJns4wf2pYBcPJ89/64bkJPy97wJvfb5nvl73MPy7mNPKyA1ZW3H/D/fg3e/Lv2c0uej5i+VffzAvo4qII+HmxB32YCclr/HuwY/X6fmz6MWkFK7zP+PTxvvUfMXLf9djv+5xg/s67gC8njMfQVxtdM3ICflr3kleMX6V0Duef3+XP1+t/y9OP7nGT+wryMLSI3s+U/fgJye/67e+b9t9iLewxJp/k8vIBkL7GrZxw/sSwG5kD3/ThsQ+eeLlL/lErSd5l8BuX8JYq1I+U8cP7Cv4wpI7ckqe/6dNiCn52+9Sfv1z1ev/9aNY8u7JzvP/4kFpOW5149bvf5nyj5+YF9HFZDXE8+MmzhX22kDcnr+0hvRP22wIqz/2r//0+eWPr/T/L9mPO0m9B6X6K1e/7NlHz+wr+MKSM3vH4/8+XfagJye/+4rwKvXf8vfX+OEAvKcc8ZN1BHzf1JbUBz/448f2JcC8uX3j0f+/CdtQE7PH30DpoDMd1L+6Ot/hezjB/algHz5/eORP/9JG5DT80ffgI0sICfchN7ilPwl93WsXv8rZB8/sK+jCsjj8f0aaiegvBsQ+esvw5q9/ke/A/LOTvPvHpj7HP9zjR/Y11EFpPam3ccjf/7TNyA75b+6B6T0JtyV6//OTehXdt+At/wAgp3yl3x/rp5fvf5nyz5+YF/HFZBa2fOftAHZPX/LBur182uNyF9zE/W7z63ZhO82/6XP75j/J1dtCXv3/SkVLf9p4wf2dVQBaZE9/24bkJPzj7hE6Uqm/Ce8A1L6/I4FpGX+74qU/8TxA/tSQC5kz7/TBkT++SLlP72AXFFAFJDdxg/s66gCsmIDs9pOGxD571m9/u9uIBWQMi5B6/d8pPwtso8f2NdxBaT2uuHs+XfagMj/3d2bcGcUkJH3sZxeQE7IXzv/r887/ucaP7Cv4wpI7XPZ8++2ATk9/6ibcGes/zubx1anz/9u+e9Yvf5XyD5+YF8KyMXz2fOfvgHZKX/2S1BGj//dx54+/yflv/rY1et/hezjB/Z1VAG54gQUewNyev7RN+GuXv89LqHZ+R0ABaR+/mu//qtI+VtkHz+wLwXkiRNQ7A3I6fkVkPn/H4fs839S/hFfP1L+FtnHD+xLAfkvNyHG34DIP+4+itXrv/VV6yunz/9u+UdZvf5HyT5+YF9DC8jv378vP3/1Y+QJWH75V+eTX3755W/NDzDKsAKS4eA78gQkv/yrs8kvv/zy38kPMMqQApLl4DvqBCS//KtzyS+//PLfzQ8wSvcCkungO+IEJL/8qzPJL7/88vfIDzBK1wKS7eDb+wQkv/yr88gvv/zy98oPMEq3ApLx4NvzBCS//KuzyC+//PL3zA8wSpcCkvXg2+sEJL/8q3PIL7/88vfODzDK7QKS+eDb4wQkv/yrM8gvv/zyj8gPMMqtAvL79+/LA1j2h/zyyy+//PKfmB9glOYCcsLB99sJSH75V49Nfvnll3/kA2CUpgJyysH30wlIfvlXj0t++eWXf/QDYJTqAnLSwffdCUh++VePSX755Zd/xgNglKoCctrB9/UEJL/8q8cjv/zyyz/rATBKcQE58eD7fAKSX/7VY5Fffvnln/kAGKWogJx68P05Ackv/+pxyC+//PLPfgCMcllATj74/vPPP/LLv3wM8ssvv/wrHgCjXBYQAACAXhQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACm+R/sDXvxynskNwAAAABJRU5ErkJggg==
[task 2019-04-13T07:52:28.389Z] 07:52:28 INFO - REFTEST IMAGE 2 (REFERENCE): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQVR4nO3dW3IbuZYFUA+wfu8oahIeU02Q/dFXXWyaZAJIPM4B1opglG1KMrYAZ2KTmapfDwAAgEl+rR4AAABwDgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGCadAXk1690QwYAAP4r5G7+W8kYWUB+/fpV9PVLPw4AAPj/Qu6iV27uS/9uBQQAAOqF3EUrIAAAsKfLXfTP5UavG+6SP3+3SX/+83cf+/pn7567GufdjynxKXfp3wMAACcq2h2XbtY/FY53f/btc2vvAflWBmo+5urvLhlHyfcEAABO1a2A1JSGq015j69VejN5y+fd/VwAADhV8Y655B2F1s+9+vg7X6v271FAAABgnK4F5Nvj2+de/V014/j2eVfj+vT13328AgIAAPWqdszPN1l/eq7m67Q831JAai7T8g4IAACMM6WArL4HRAEBAIAYuhWQT3/eslGv/QlZLT/xatRPwQIAAD6r3jGXlIereyxK/h8Zn+67aP26756v+fo1Y1NEAADgPTtlAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkUEAAAYBoFBAAAmEYBAQAAplFAAACAaRQQAABgGgUEAACYRgEBAACmUUAAAIBpFBAAAGAaBQQAAJhGAQEAAKZRQAAAgGkuC8hff/117OP379/LxyC//PLLL7/8K/IDjKKAfDn4/vPPP8vHIb/88ssvv/wr8gOMooB8OfieegKSX3755ZdffoBRFJAvB98TT0Dyyy+//PLLr4AAIykgXw6+p52A5Jdffvnll18BAUZTQL4cfE86Ackvv/zyyy+/AgLMoIB8OfiecgKSX3755ZdffgUEmOX4AvLt4HvCCUh++eWXX375FRBgptsF5NvBK/rj6uBbcgJanUF++eWXX375R+QHGOXYAvLzP5k69QQkv/zyyy+//N8eAKMcWUCe/w+3J56A5Jdffvnll//qYwFGOa6APB98TzwByS+//PLLL78CAqx0VAF5PfiedgKSX3755ZdffgUEWO2YAvLu4HvSCUh++eWXX375FRAg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
[task 2019-04-13T07:52:28.392Z] 07:52:28 INFO - TEST-INFO expected FAIL | took 712ms
[task 2019-04-13T07:52:28.392Z] 07:52:28 INFO - PID 17262 | [Parent 17262, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/workspace/build/src/gfx/layers/apz/src/APZUpdater.cpp, line 424
[task 2019-04-13T07:52:28.711Z] 07:52:28 INFO - PID 17262 | 1555141948706 Marionette INFO Stopped listening on port 2828
[task 2019-04-13T07:52:29.097Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 49 (0x7f95dbfcbd40) [pid = 17403] [serial = 1] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html]
[task 2019-04-13T07:52:29.099Z] 07:52:29 INFO - PID 17262 | --DOCSHELL 0x7f95daba6800 == 0 [pid = 17403] [id = {b37e6bd2-67e9-4ddf-9398-4248101da57b}] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html]
[task 2019-04-13T07:52:29.175Z] 07:52:29 INFO - PID 17262 | [Parent 17262, Compositor] WARNING: Possibly dropping task posted to updater thread: file /builds/worker/workspace/build/src/gfx/layers/apz/src/APZUpdater.cpp, line 424
[task 2019-04-13T07:52:29.232Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 48 (0x7f95d8aef800) [pid = 17403] [serial = 29] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-lower-alpha.html]
[task 2019-04-13T07:52:29.236Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 47 (0x7f95d8af1400) [pid = 17403] [serial = 30] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-lower-roman.html]
[task 2019-04-13T07:52:29.237Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 46 (0x7f95d8c3c800) [pid = 17403] [serial = 20] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-square.html]
[task 2019-04-13T07:52:29.237Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 45 (0x7f95dab2b800) [pid = 17403] [serial = 7] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/li-type-unsupported-upper-alpha.html]
[task 2019-04-13T07:52:29.246Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 44 (0x7f95d8af9c00) [pid = 17403] [serial = 35] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-border-gap-position-relative-ref.html]
[task 2019-04-13T07:52:29.246Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 43 (0x7f95d8afcc00) [pid = 17403] [serial = 37] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-containing-block-ref.html]
[task 2019-04-13T07:52:29.247Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 42 (0x7f95d8c3b000) [pid = 17403] [serial = 19] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-round.html]
[task 2019-04-13T07:52:29.247Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 41 (0x7f95d8c38000) [pid = 17403] [serial = 17] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-lower-roman.html]
[task 2019-04-13T07:52:29.247Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 40 (0x7f95dab33800) [pid = 17403] [serial = 10] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-supported-xhtml.xhtml]
[task 2019-04-13T07:52:29.248Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 39 (0x7f95dab33400) [pid = 17403] [serial = 9] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-supported-ref.html]
[task 2019-04-13T07:52:29.248Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 38 (0x7f95d8c43c00) [pid = 17403] [serial = 26] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-ref.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 37 (0x7f95d8c36800) [pid = 17403] [serial = 16] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-lower-alpha.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 36 (0x7f95d8c44c00) [pid = 17403] [serial = 27] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-decimal.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 35 (0x7f95dad92c00) [pid = 17403] [serial = 13] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-unsupported-circle.html]
[task 2019-04-13T07:52:29.249Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 34 (0x7f95d8c42400) [pid = 17403] [serial = 25] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-supported.html]
[task 2019-04-13T07:52:29.250Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 33 (0x7f95dab34800) [pid = 17403] [serial = 28] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-invalid.html]
[task 2019-04-13T07:52:29.253Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 32 (0x7f95d8af2c00) [pid = 17403] [serial = 31] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ul-type-unsupported-upper-alpha.html]
[task 2019-04-13T07:52:29.253Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 31 (0x7f95d8af6000) [pid = 17403] [serial = 33] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/no-red-ref.html]
[task 2019-04-13T07:52:29.253Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 30 (0x7f95dab2d000) [pid = 17403] [serial = 8] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/li-type-unsupported-upper-roman.html]
[task 2019-04-13T07:52:29.254Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 29 (0x7f95dab36400) [pid = 17403] [serial = 11] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/lists/ol-type-supported.html]
[task 2019-04-13T07:52:29.254Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 28 (0x7f95d8afb400) [pid = 17403] [serial = 36] [outer = (nil)] [url = http://web-platform.test:8000/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-border-gap-position-relative.html]
[task 2019-04-13T07:52:29.255Z] 07:52:29 INFO - PID 17262 | --DOMWINDOW == 27 (0x7f95da784000) [pid = 17403] [serial = 3] [outer = (nil)] [url = about:blank]

Flags: needinfo?(a.beingessner)
Assignee

Comment 56

2 months ago

one unexpected pass, and one fuzzy-if(webrender, 8, 9), which seems totally fine to land. Nice!

Flags: needinfo?(a.beingessner)
Assignee

Updated

2 months ago
Keywords: checkin-needed

Comment 57

2 months ago

Pushed by ccoroiu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/693535165c9f
implement fieldsets with nonempty legends. r=kats

Keywords: checkin-needed

Comment 58

2 months ago
bugherder
Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68

Updated

2 months ago
Regressions: 1546018
You need to log in before you can comment on or make changes to this bug.