
(Frame scrolling node
  (scrollable area size 785 585)
  (contents size 1805 5108)
  (scrollable area parameters
    (horizontal scroll elasticity 2)
    (vertical scroll elasticity 2)
    (horizontal scrollbar mode 0)
    (vertical scrollbar mode 0)
    (allows horizontal scrolling 1)
    (allows vertical scrolling 1))
  (frame scale factor 2.30)
  (layout viewport at (0,0) size 785x585)
  (min layout viewport origin (0,0))
  (max layout viewport origin (0,1636))
  (behavior for fixed 0)
  (visual viewport smaller than layout viewport 1)
  (children 4
    (Fixed node
      (anchor edges: AnchorEdgeLeft AnchorEdgeTop)
      (viewport rect at last layout at (0,0) size 785x585)
      (layer position at last layout (-4,-4))
    )
    (Fixed node
      (anchor edges: AnchorEdgeLeft AnchorEdgeTop)
      (viewport rect at last layout at (0,0) size 785x585)
      (layer position at last layout (6,196))
    )
    (Fixed node
      (anchor edges: AnchorEdgeRight AnchorEdgeTop)
      (viewport rect at last layout at (0,0) size 785x585)
      (layer position at last layout (597,196))
    )
    (Fixed node
      (anchor edges: AnchorEdgeLeft AnchorEdgeBottom)
      (viewport rect at last layout at (0,0) size 785x585)
      (layer position at last layout (-4,497))
    )
  )
)

(GraphicsLayer
  (anchor 0.00 0.00)
  (bounds 1805.00 5108.00)
  (visible rect 0.00, 0.00 785.00 x 585.00)
  (coverage rect 0.00, 0.00 785.00 x 585.00)
  (intersects coverage rect 1)
  (contentsScale 1.00)
  (children 1
    (GraphicsLayer
      (anchor 0.00 0.00)
      (bounds 785.00 2221.00)
      (contentsOpaque 1)
      (transform [2.30 0.00 0.00 0.00] [0.00 2.30 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00])
      (visible rect 0.00, 0.00 341.30 x 254.35)
      (coverage rect 0.00, 0.00 341.30 x 254.35)
      (intersects coverage rect 1)
      (contentsScale 2.30)
      (tile cache coverage 0, 0 341 x 445)
      (tile size 785 x 512)
      (top left tile 0, 0 tiles grid 1 x 2)
      (in window 1)
      (children 4
        (GraphicsLayer
          (offsetFromRenderer width=-14 height=-14)
          (position -4.00 -4.00)
          (bounds 786.00 82.00)
          (drawsContent 1)
          (visible rect 4.00, 4.00 341.30 x 78.00)
          (coverage rect 4.00, 4.00 341.30 x 254.35)
          (intersects coverage rect 1)
          (contentsScale 2.30)
        )
        (GraphicsLayer
          (offsetFromRenderer width=-14 height=-14)
          (position 6.00 196.00)
          (bounds 182.00 332.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 182.00 x 58.35)
          (coverage rect -6.00, -196.00 341.30 x 254.35)
          (intersects coverage rect 1)
          (contentsScale 2.30)
        )
        (GraphicsLayer
          (offsetFromRenderer width=-14 height=-14)
          (position 597.00 196.00)
          (bounds 182.00 332.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 0.00 x 0.00)
          (coverage rect -597.00, -196.00 341.30 x 254.35)
          (intersects coverage rect 0)
          (contentsScale 2.30)
        )
        (GraphicsLayer
          (offsetFromRenderer width=-14 height=-14)
          (position -4.00 497.00)
          (bounds 786.00 82.00)
          (drawsContent 1)
          (visible rect 0.00, 0.00 0.00 x 0.00)
          (coverage rect 4.00, -497.00 341.30 x 254.35)
          (intersects coverage rect 0)
          (contentsScale 2.30)
        )
      )
    )
  )
)
This is the top bar. This is the left bar. This is the right bar. This is the bottom bar.
