layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x538
  RenderBlock {html} at (0,0) size 800x538
    RenderBody {body} at (8,16) size 784x472 [bgcolor=#FFFFFF]
      RenderBlock {p} at (0,0) size 784x20
        RenderText {#text} at (0,0) size 521x19
          text run at (0,0) width 300: "CSS Transformed HTML div with SVG inside it. "
          text run at (300,0) width 221: "objectBoundingBox patterns on text."
layer at (58,86) size 402x402
  RenderBlock {div} at (50,70) size 402x402 [border: (1px solid #000000)]
    RenderSVGRoot {svg} at (66,60) size 480x420
      RenderSVGResourcePattern {pattern} [id="pat1"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (168,65) size 13x13 [fill={[type=SOLID] [color=#FF0000]}] [x=5.00] [y=5.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (171,70) size 12x13 [fill={[type=SOLID] [color=#008000]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGRect {rect} at (168,74) size 357x173 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=PATTERN] [id="pat1"]}] [x=25.00] [y=10.00] [width=430.00] [height=60.00]
      RenderSVGText {text} at (25,73) size 415x16 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 415x16
          chunk 1 text run 1 at (25.00,85.00) startOffset 0 endOffset 75 width 414.00: "Pattern created using red and green rectangles applied to fill of rectangle"
      RenderSVGResourcePattern {pattern} [id="pat2"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,60) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (173,63) size 13x12 [fill={[type=SOLID] [color=#008000]}] [x=10.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (163,68) size 13x12 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=10.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (171,70) size 12x13 [fill={[type=SOLID] [color=#FFFF00]}] [x=10.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGRect {rect} at (142,145) size 357x172 [stroke={[type=PATTERN] [id="pat2"] [stroke width=20.00]}] [x=35.00] [y=110.00] [width=410.00] [height=40.00]
      RenderSVGText {text} at (25,163) size 320x16 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 320x16
          chunk 1 text run 1 at (25.00,175.00) startOffset 0 endOffset 59 width 319.20: "Pattern of 4 rectangles applied to a stroke of a rectangle."
      RenderSVGResourcePattern {pattern} [id="pat3"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,60) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (163,68) size 13x12 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=10.00] [width=10.00] [height=10.00]
      RenderSVGText {text} at (25,174) size 298x57 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 298x57
          chunk 1 text run 1 at (25.00,220.00) startOffset 0 endOffset 15 width 297.60: "Pattern on fill"
      RenderSVGText {text} at (25,223) size 212x16 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 212x16
          chunk 1 text run 1 at (25.00,235.00) startOffset 0 endOffset 38 width 211.20: "Pattern consists of red and green rows"
      RenderSVGResourcePattern {pattern} [id="pat4"] [patternUnits=objectBoundingBox] [patternContentUnits=userSpaceOnUse]
        RenderSVGRect {rect} at (166,60) size 12x13 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
        RenderSVGRect {rect} at (173,63) size 13x12 [fill={[type=SOLID] [color=#0000FF]}] [x=10.00] [y=0.00] [width=10.00] [height=10.00]
      RenderSVGText {text} at (25,237) size 292x47 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 292x46
          chunk 1 text run 1 at (25.00,275.00) startOffset 0 endOffset 17 width 291.60: "Pattern on stroke"
      RenderSVGText {text} at (25,278) size 227x16 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 227x16
          chunk 1 text run 1 at (25.00,290.00) startOffset 0 endOffset 40 width 226.80: "Pattern consists of red and blue columns"
      RenderSVGText {text} at (10,305) size 259x45 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 259x45
          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 258.00: "$Revision: 1.6 $"
      RenderSVGRect {rect} at (66,60) size 480x420 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
    RenderText {#text} at (0,0) size 0x0
