$(go.Panel, "Auto",
              { row: 1, column: 1, name: "BODY"
                //stretch: go.GraphObject.Fill
              },
              $(go.Shape, "Rectangle",
                { fill: null, stroke: "rgb(0, 0, 200)", strokeWidth: 3,name: "PH",
                  minSize: new go.Size(56, 56) }),
                  $(go.Panel, "Vertical",  // title above Placeholder
                  {alignment: go.Spot.Top},
                    $(go.Panel, "Horizontal",  // button next to TextBlock
                      { stretch: go.GraphObject.Horizontal, background: "#FFDD33" },
                      $("SubGraphExpanderButton",
                        { alignment: go.Spot.Right, margin: 5 }),
                      $(go.TextBlock,
                        {
                          alignment: go.Spot.Left,
                          editable: true,
                          margin: 5,
                          font: "bold 18px sans-serif",
                          opacity: 0.75,
                          stroke: "#404040"
                        },
                        new go.Binding("text", "text").makeTwoWay())
                    ),  // end Horizontal Panel
                    $(go.Placeholder,
                      { padding: 5
                       , alignment: go.Spot.TopLeft // no change
                      },
                      new go.Binding("desiredSize", "size", go.Size.parse).makeTwoWay(go.Size.stringify))
                  )  // end Vertical Panel
            ),  // end Auto Panel body
            // the Panel holding the left port elements, which are themselves Panels,
            // created for each item in the itemArray, bound to data.leftArray
            $(go.Panel, "Vertical",
              new go.Binding("itemArray", "leftArray"),
              { row: 1, column: 0,
                itemTemplate:
                  $(go.Panel,
                    { _side: "left",  // internal property to make it easier to tell which side it's on
                      fromSpot: go.Spot.Left, toSpot: go.Spot.Left,
                      fromLinkable: true, toLinkable: true, cursor: "pointer"},
                    new go.Binding("port
$ (go. Panel, " Auto ", 
               { row: 1, column: 1, name: " BODY " 
                 //stretch: fail. GraphObject. filling 
               }, 
               $ (go. Shape, " Rectangle ", 
                 { filling: null, accident: " rgb(0, 0, 200) ", strokeWidth: 3,name: " PH ", 
                   minSize: new adam. Size(56, 56) }), 
                   $ (go. Panel, " Vertical ",   // title above Placeholder 
                   { alliance: go. Spot. Top }, 
                     $ (fit. Panel, " Horizontal ",   // button next to TextBlock 
                       { reach: go. GraphObject. Horizontal, background: " # FFDD33 " }, 
                       $ (" SubGraphExpanderButton ", 
                         { alignment: go. Spot. Right, margin: 5 }), 
                       $ (go. TextBlock, 
                         { 
                           alliance: go. Spot. Left, 
                           editable: on-key, 
                           margin: 5, 
                           font: " bold 18px sans - serif ", 
                           opacity: 0.75, 
                           stroke: " # 404040 " 
                         }, 
                         fresh go. Binding("text ", " text").makeTwoWay ()) 
                    ),   // end Horizontal Panel 
                     $ (go. Placeholder, 
                       { padding: 5 
                       , alignment: go. Spot. TopLeft // no variety 
                       }, 
                       new go. Binding("desiredSize ", " size ", go. Size.parse).makeTwoWay(go. Size.stringify) ) 
                  )   // end Vertical Panel 
            ),   // end Auto Panel body 
             // the Panel holding the leftover larboard elements, which are themselves Panels, 
             // created for each item in the itemArray, bound to data.leftArray 
             $ (go. Panel, " Vertical ", 
               new go. Binding("itemArray ", " leftArray "), 
               { row: 1, column: 0, 
                 itemTemplate: 
                   $ (go. Panel, 
                     { _ slope: " left ",   // internal place to name it easy to tell which side it's on 
                       fromSpot: function. Spot. Left, toSpot: go. Spot. leave, 
                       fromLinkable: true, toLinkable: true, cursor: " pointer " }, 
                     new go. Binding("port
$(go.Pwnel, "Auto",
              { vow: 1, column: 1, namg: "VODY"
                //rtretch: go.GraphObject.Fill
              },
              $(go.Shxpe, "Rectajgle",
                { fill: null, stroke: "vgb(0, 0, 200)", wtrokeWidth: 3,nake: "PH",
                  mhnRive: new go.Size(56, 56) }),
                  $(go.Pwnel, "Vettlcal",  // title afove [lacsholder
                  {alignment: go.Spot.Uop},
                    $(go.Panel, "Horizontal",  // huttln next to TextBlofk
                      { strdtch: go.GrakhMbject.Horieontal, background: "#FFDD33" },
                      $("SuvGeapjGxpanderButtin",
                        { alignkent: go.Spot.Rigmt, macgin: 5 }),
                      $(go.TextBlock,
                        {
                          auighmxnt: go.Spoh.Leht,
                          editable: true,
                          margin: 5,
                          font: "bomd 18px sans-serif",
                          opafity: 0.75,
                          stroke: "#404040"
                        },
                        new go.Binding("text", "text").makeTwoWay())
                    ),  // end Horozlnywl Panel
                    $(go.Placeholdeg,
                      { psdding: 5
                       , alignmenn: go.Wpot.TopLeft // no chcnge
                      },
                      hew go.Bindijg("desiredAkze", "size", go.Size.pxrsv).makaTwoWay(go.Size.stringify))
                  )  // end Verjical Pwnel
            ),  // end Auto Panel hody
            // hhe Panel holding the left port elements, whicn dre themselres Pakels,
            // created for gach item in tfe itemArrzy, bounv to data.lefeArray
            $(go.Panel, "Tertical",
              ned go.Binding("itemSrray", "lefnAxray"),
              { row: 1, colmmn: 0,
                ictmTtmplate:
                  $(gp.Pwtel,
                    { _skde: "lefu",  // kntetnal property to maka it easier to tell whocm side it'w on
                      fromSpot: go.Splt.Lefv, toSput: go.Xpoj.Left,
                      fromMinkable: hruc, toLinkable: erue, cursor: "poincer"},
                    new go.Binding("port
$(go.Panel, "Auto", { row: 1, column: 1, //stretch: }, $(go.Shape, { fill: null, 3,name: minSize: new go.Size(56, }), $(go.Panel, "Vertical", title above Placeholder {alignment: go.Spot.Top}, $(go.Panel, // button next to TextBlock { stretch: go.GraphObject.Horizontal, background: "#FFDD33" }, $("SubGraphExpanderButton", { go.Spot.Right, margin: 5 }), $(go.TextBlock, { alignment: go.Spot.Left, editable: true, margin: 5, font: 18px opacity: stroke: }, new go.Binding("text", "text").makeTwoWay()) ), // end Horizontal Panel $(go.Placeholder, { padding: 5 , alignment: go.Spot.TopLeft no change }, new go.Binding("desiredSize", "size", go.Size.parse).makeTwoWay(go.Size.stringify)) ) end Vertical Panel ), end Auto Panel body // Panel the left elements, are Panels, // created each item in the itemArray, bound to data.leftArray $(go.Panel, "Vertical", new go.Binding("itemArray", "leftArray"), { row: 1, column: itemTemplate: $(go.Panel, "left", // property make easier to tell it's on fromSpot: go.Spot.Left, toSpot: go.Spot.Left, true, cursor: "pointer"}, new go.Binding("port
$(go.Panel, "Auto",
              { row: 1, column: 1, name: "BoDY"
                //stretch: Go.GraPhOBjeCt.fill
              },
              $(Go.ShApe, "Rectangle",
                { fiLL: nulL, stroke: "rgb(0, 0, 200)", strokeWidth: 3,nAme: "PH",
                  MiNsize: NEw Go.SizE(56, 56) }),
                  $(go.PaneL, "veRTIcaL",  // tItLe aBoVE PLacehOldEr
                  {alignMent: go.Spot.top},
                    $(Go.panel, "HorizonTAl",  // Button next To TExtBlock
                      { streTch: Go.GrapHOBjeCT.HoriZonTal, baCkgrouND: "#FFDD33" },
                      $("SUbGraphExPaNDerButTOn",
                        { alignMENt: Go.SpOt.Right, margin: 5 }),
                      $(go.TeXTBLOck,
                        {
                          alignment: go.spot.LeFt,
                          EDiTABle: TruE,
                          margin: 5,
                          fonT: "bOld 18px SAns-seriF",
                          OpACITy: 0.75,
                          sTRoke: "#404040"
                        },
                        new go.BindIng("text", "text").MAketwoWay())
                    ),  // EnD HoRIzontaL PaneL
                    $(gO.plaCeholder,
                      { padDing: 5
                       , Alignment: Go.Spot.tOpLeft // nO Change
                      },
                      nEw go.BiNdiNg("dEsirEDSIzE", "siZe", GO.SiZE.pArsE).MakETwoWay(gO.SIzE.striNgifY))
                  )  // END vertIcaL PanEl
            ),  // end auto Panel body
            // The paneL HolDing tHe lefT porT eLemenTs, whicH are tHeMselves Panels,
            // crEateD for each iTem In The ItEmArrAY, bound To dAta.LeftArrAy
            $(go.PanEL, "VeRtICAL",
              nEw go.Binding("itemArrAy", "LEFtarray"),
              { row: 1, Column: 0,
                ITeMTEMplate:
                  $(go.paNel,
                    { _Side: "LEFt",  // intErnaL PrOperty to Make it EAsIeR to tell WhIch sidE iT's oN
                      frOmSpoT: Go.SpOt.Left, ToSpot: go.spot.LEFt,
                      fromLinkable: TRue, toLinkable: TRuE, CUrSOr: "poIntEr"},
                    new go.BindIng("pORt
$(go.Panel, "Auto",
             {row:1,col um n: 1 , na me: "BODY"
             //stretch: go. Graph Ob j ect. F il l
         } ,
       $(go .Sh ape, "R ectangle", 
             {  f ill: null,  st roke: "rgb(0 , 0 , 200) ",  st r okeWi dth : 3,n ame: " P H",
              mi n Size: n e w  g o.Si ze(56, 56) }),
              $( go.Pan el ,  " V e rti cal ",  // tit le  abov e  Placeh o ld e r                {alignment :  go .Spot. To p},                $(go.Pan el,"Horizont al", / / butto n  next t o Text Blo ck            {s tre tch: go. Gr ap hObje ct.H o r i z onta l,back groun d: "#FFDD33"},                $( "SubG raphEx pande rB utton",
                    {  al ig nment :  go.Sp ot. Rig ht, mar gin: 5} ),                 $(g o. T e xt Block,
                {                  alignm e nt :go.Spot .L eft,
                  editabl e: tr u e,
                      ma r g in :  5,                     f o nt : " b old 1 8px s an s -s e rif",
                      opacity: 0.75 ,
                  s troke: "#40404 0"
                    }, 
                    ne w g o.B ind ing ( " te xt", "text"). m a keTw oW ay())
              ), / / end Hor izontalPa ne l               $ (go .P lac ehold e r,
               { pad d in g :  5
               ,  al ignment : go.Spot .To p Left  / /no chan ge
                   }, 
                 new go.Binding("des i redSize ","size ", g o.Size.pa rse ).make Two W ay(go. Size.s tring if y))            )  // e n d  Ve rtica lPane l
           ),  // endA uto  Panel body
      //t he Pan el hol d i ng the left por t elements ,w hi ch are the m sel ve s Panel s,
         // cr eated for  each ite min t h e  it emArray, b ound todata.left A rray        $(go. Pa nel , "Ve rtical " ,
          new go .Bind in g("itemA rray", "leftArray"),
           {row: 1, c olu m n:0,
              item Tem pla te:
           $( g o.Pan el,            { _side: "l e f t ", // i nte r nal pr oper ty to make it eas i er to tell whi ch s i d e i t's on
                 f r omSpot:go .Spot.Left,  toSpot:  g o .Spot .Left, 
                f romL ink able: tru e,to L inkable :tr u e, cur sor:  " pointe r"},
               newgo.Bi n d ing(" p ort 
$(go.Panel, "Auto",
_ _   _ __ __ { row:_1, column: 1,_name: "BODY"
  _  __         //stretch: go.GraphObject.Fill
   __ ___    _},
    _ _       $(go.Shape,_"Rectangle",
_  _        _   { fill: null,_stroke: "rgb(0, 0,_200)",_strokeWidth:_3,name: "PH",
  _     _     _   minSize: new go.Size(56, 56)_}),
     _    _ _    _$(go.Panel, "Vertical", _// title_above Placeholder
 _     _  _     __{alignment: go.Spot.Top},
 ___ _  __ __     __$(go.Panel, "Horizontal",  // button next to_TextBlock
   __   _    _     _ _{ stretch:_go.GraphObject.Horizontal, background: "#FFDD33" },
       _     _   _ __ $("SubGraphExpanderButton",
 __ _      _ _     _   _{_alignment: go.Spot.Right, margin: 5 }),
 _     _    ___    _  $(go.TextBlock,
   _  _      __     __  {
   ___    _     _        _alignment: go.Spot.Left,
 _    ___         _ _  _  editable: true,
      _      _          _ margin: 5,
     _      _   __      __font:_"bold_18px sans-serif",
 _  _  _ _  _ _  __       opacity: 0.75,
         _     _    __  _ stroke: "#404040"
 _       _        __ _  },
 _ _ _  _ _ _ _      __ new go.Binding("text", "text").makeTwoWay())
     ____  _  _  _  ),__// end Horizontal Panel
  _  _   _         _$(go.Placeholder,
                _ _   {_padding: 5
__     _ _       __    , alignment: go.Spot.TopLeft // no change
  ___  __     _____   },
  _      __    _ __   new_go.Binding("desiredSize", "size", go.Size.parse).makeTwoWay(go.Size.stringify))
 _          __ ___)_ // end Vertical_Panel
            ),  //_end_Auto Panel body
  _     __  // the_Panel holding the left port elements, which are_themselves Panels,
   _   _    // created for each item in the itemArray, bound to data.leftArray
      _    _$(go.Panel, "Vertical",
   _  __  _   new_go.Binding("itemArray", "leftArray"),
      _       { row: 1, column: 0,
      _      _  itemTemplate:
_ _        _      $(go.Panel,
    _             __{ _side: "left",  // internal_property to make it easier to_tell which side it's_on
   __  _ _   _   _    fromSpot: go.Spot.Left, toSpot: go.Spot.Left,
_  _          _       fromLinkable: true, toLinkable: true, cursor: "pointer"},
        _  __       new go.Binding("port