Blocked access to external URL http://example.org/image.jpg
layer at (0,0) size 480x360
  RenderView at (0,0) size 480x360
layer at (0,0) size 480x360
  RenderSVGRoot {svg} at (0,0) size 480x360
    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    RenderSVGContainer {g} at (10,49) size 417x230
      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
        RenderSVGRect {rect} at (0,0) size 1x1 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=1.00] [height=1.00]
        RenderSVGGradientStop {stop} [offset=0.00] [color=#000000]
        RenderSVGImage {image} at (0,0) size 1x1
        RenderSVGResourceRadialGradient {radialGradient} [id="g"] [gradientUnits=objectBoundingBox] [center=(0.50,0.50)] [focal=(0.50,0.50)] [radius=0.50] [focalRadius=0.00]
        RenderSVGText {text}
        RenderSVGText {text} at (0,-15) size 73x19 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 73x18
            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 8 width 73.00: "sometext"
        RenderSVGResourceMarker {marker} [id="m"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=0.00]
        RenderSVGViewportContainer {svg} at (0,0) size 0x0
        RenderSVGResourceFilter {filter} [id="f"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
        RenderSVGPath {polygon} at (0,0) size 0x0 [fill={[type=SOLID] [color=#000000]}] [points=""]
      RenderSVGContainer {g} at (10,49) size 145x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,50.00)}]
        RenderSVGRect {rect} at (10,51) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 135x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 135x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 30 width 135.00: "r.x.baseVal.value == 0: PASSED"
      RenderSVGContainer {g} at (10,59) size 291x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
        RenderSVGRect {rect} at (10,61) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 281x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 281x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 57 width 281.00: "r.x.baseVal.unitType == 1 (SVG_LENGTHTYPE_NUMBER): PASSED"
      RenderSVGContainer {g} at (10,69) size 240x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,70.00)}]
        RenderSVGRect {rect} at (10,71) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 230x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 230x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 52 width 230.00: "v.width.baseVal.valueInSpecifiedUnits == 100: PASSED"
      RenderSVGContainer {g} at (10,79) size 332x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,80.00)}]
        RenderSVGRect {rect} at (10,81) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 322x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 322x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 65 width 322.00: "v.width.baseVal.unitType == 2 (SVG_LENGTHTYPE_PERCENTAGE): PASSED"
      RenderSVGContainer {g} at (10,89) size 297x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}]
        RenderSVGRect {rect} at (10,91) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 287x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 287x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 65 width 287.00: "tt.textLength.baseVal.value == tt.getComputedTextLength(): PASSED"
      RenderSVGContainer {g} at (10,99) size 141x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,100.00)}]
        RenderSVGRect {rect} at (10,101) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 131x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 131x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 29 width 131.00: "s.offset.baseVal == 0: PASSED"
      RenderSVGContainer {g} at (10,109) size 191x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,110.00)}]
        RenderSVGRect {rect} at (10,111) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 181x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 181x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 40 width 181.00: "c.preserveAlpha.baseVal == false: PASSED"
      RenderSVGContainer {g} at (10,119) size 163x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,120.00)}]
        RenderSVGRect {rect} at (10,121) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 153x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 153x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 33 width 153.00: "c.className.baseVal == \"\": PASSED"
      RenderSVGContainer {g} at (10,129) size 131x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,130.00)}]
        RenderSVGRect {rect} at (10,131) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 121x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 121x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 28 width 121.00: "i.href.baseVal == \"\": PASSED"
      RenderSVGContainer {g} at (10,139) size 213x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,140.00)}]
        RenderSVGRect {rect} at (10,141) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 203x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 203x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 45 width 203.00: "i.requiredFeatures.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (10,149) size 233x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,150.00)}]
        RenderSVGRect {rect} at (10,151) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 223x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 223x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 49 width 223.00: "c.kernelMatrix.baseVal.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (10,159) size 186x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,160.00)}]
        RenderSVGRect {rect} at (10,161) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 176x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 176x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 38 width 176.00: "t.x.baseVal.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (10,169) size 172x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,170.00)}]
        RenderSVGRect {rect} at (10,171) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 162x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 162x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 35 width 162.00: "p.points.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (10,179) size 358x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,180.00)}]
        RenderSVGRect {rect} at (10,181) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 348x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 348x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 70 width 348.00: "g.gradientUnits.baseVal == 2 (SVG_UNIT_TYPE_OBJECTBOUNDINGBOX): PASSED"
      RenderSVGContainer {g} at (10,189) size 155x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,190.00)}]
        RenderSVGRect {rect} at (10,191) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 145x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 145x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 33 width 145.00: "f.filterResX.baseVal == 0: PASSED"
      RenderSVGContainer {g} at (10,199) size 190x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,200.00)}]
        RenderSVGRect {rect} at (10,201) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 180x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 180x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 40 width 180.00: "m.orientAngle.baseVal.value == 0: PASSED"
      RenderSVGContainer {g} at (10,209) size 353x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,210.00)}]
        RenderSVGRect {rect} at (10,211) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 343x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 343x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 71 width 343.00: "m.orientAngle.baseVal.unitType == 1 (SVG_ANGLETYPE_UNSPECIFIED): PASSED"
      RenderSVGContainer {g} at (10,219) size 225x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,220.00)}]
        RenderSVGRect {rect} at (10,221) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 215x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 215x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 49 width 215.00: "v.viewBox.baseVal.[x,y,width,height] == 0: PASSED"
      RenderSVGContainer {g} at (10,229) size 220x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,230.00)}]
        RenderSVGRect {rect} at (10,231) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 210x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 210x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 46 width 210.00: "t.transform.baseVal.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (10,239) size 417x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,240.00)}]
        RenderSVGRect {rect} at (10,241) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 407x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 407x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 83 width 407.00: "v.preserveAspectRatio.baseVal.align == 6 (SVG_PRESERVEASPECTRATIO_XMIDYMID): PASSED"
      RenderSVGContainer {g} at (10,249) size 381x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,250.00)}]
        RenderSVGRect {rect} at (10,251) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 371x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 371x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 77 width 371.00: "v.preserveAspectRatio.baseVal.meetOrSlice == 1 (SVG_MEETORSLICE_MEET): PASSED"
      RenderSVGContainer {g} at (10,259) size 275x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,260.00)}]
        RenderSVGRect {rect} at (10,261) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 265x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 265x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 50 width 265.00: "v.zoomAndPan == 2 (SVG_ZOOMANDPAN_MAGNIFY): PASSED"
      RenderSVGContainer {g} at (10,269) size 99x10 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,270.00)}]
        RenderSVGRect {rect} at (10,271) size 5x5 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 89x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 89x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 19 width 89.00: "Test status: PASSED"
    RenderSVGContainer {g} at (10,314) size 231x33
      RenderSVGText {text} at (10,314) size 231x33 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 231x32
          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 231.00: "$Revision: 1.9 $"
    RenderSVGRect {rect} at (0,0) size 480x360 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
    RenderSVGContainer {g} at (0,0) size 480x23
      RenderSVGRect {rect} at (0,0) size 480x22 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FF0000]}] [x=1.00] [y=1.00] [width=478.00] [height=20.00]
      RenderSVGText {text} at (205,2) size 70x20 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 70x20
          chunk 1 (middle anchor) text run 1 at (205.00,18.00) startOffset 0 endOffset 5 width 70.00: "DRAFT"
