(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PATH)
                  op: assign_op.Equal
                  rhs: 
                    {<'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'> <Id.Lit_Colon ':'> <'/usr/local/bin'> 
                      <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$PATH')
                    }
                  spids: [19]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<export>} {<PATH>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:host)
          op: assign_op.Equal
          rhs: {<http> <Id.Lit_Colon ':'> <'//www.freebsd.org'>}
          spids: [34]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$host') <'/cgi/ports.cgi'>}
          spids: [39]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:time)
          op: assign_op.Equal
          rhs: {(SQ <'?type=new&time=2+week+ago&sektion=all'>)}
          spids: [43]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:time2)
          op: assign_op.Equal
          rhs: {(SQ <'?type=changed&time=2+week+ago&sektion=all'>)}
          spids: [48]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:info)
          op: assign_op.Equal
          rhs: {<yes>}
          spids: [53]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<x> (DQ ($ Id.VSub_DollarName '$info'))} 
                      {<Id.Lit_Equals '='>} {<xyes>} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <EOF>)}
                      here_end_span_id: 102
                      stdin_parts: [
                        <'Introduction\n'>
                        <'------------\n'>
                        <'\n'>
                        <'The FreeBSD Ports Collection offers a simple way for users and\n'>
                        <'administrators to install applications. Each "port" listed here\n'>
                        <'contains any patches necessary to make the original application source\n'>
                        <'code compile and run on FreeBSD. Installing an application is as\n'>
                        <'simple as downloading the port, unpacking it and typing make in the\n'>
                        <'port directory. The Makefile automatically fetches the application\n'>
                        <'source code, either from a local disk or via ftp, unpacks it on your\n'>
                        <'system, applies the patches, and compiles. If all goes well, simply\n'>
                        <'type make install to install the application.\n'>
                        <'\n'>
                        <'For more information about using ports, see the ports collection\n'>
                        <'\n'>
                        <'\thttp://www.freebsd.org/handbook/ports.html\n'>
                        <'and\n'>
                        <'\thttp://www.freebsd.org/ports/\n'>
                        <'\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Pipeline
              children: [
                (C {<lynx>} {<-dump>} {($ Id.VSub_DollarName '$host') <'/ports/'>})
                (C {<perl>} {<-ne>} {(SQ <'/^[ ]*There are currently/ && s/^\\s+// && print && exit'>)})
              ]
              negated: F
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 135
                      stdin_parts: [
                        <'\n'>
                        <'\n'>
                        <'New ports added last two weeks\n'>
                        <'------------------------------\n'>
                        <'\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          spids: [57 73]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<lynx>} {<-nolist>} {<-dump>} {<-reload>} {<-nostatus>} 
          {(DQ ($ Id.VSub_DollarName '$url') ($ Id.VSub_DollarName '$time'))}
        )
        (C {<grep>} {<-v>} {(DQ <'Description :'>)})
        (C {<perl>} {<-ne>} {(SQ <'print if (/^\\s*Category/ .. /__________________/)'>)})
        (C {<grep>} {<-v>} {<________>})
        (C {<perl>} {<-ne>} 
          {
            (SQ <'if (/^\\s*Category/) { \n'> <'\t\tprint; for(1..50) {print "="}; print "\\n";\n'> 
              <'          } else { print}'>
            )
          }
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 213
              stdin_parts: [
                <'\n'>
                <'\n'>
                <'Updated ports last two weeks\n'>
                <'-----------------------------------\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Pipeline
      children: [
        (C {<lynx>} {<-nolist>} {<-dump>} {<-reload>} {<-nostatus>} 
          {(DQ ($ Id.VSub_DollarName '$url') ($ Id.VSub_DollarName '$time2'))}
        )
        (C {<grep>} {<-v>} {(DQ <'Description :'>)})
        (C {<perl>} {<-ne>} {(SQ <'s/\\[INLINE\\]\\s*//g; print if (/Category/ .. /XXXXYYYYZZZZ/)'>)})
        (C {<perl>} {<-ne>} 
          {
            (SQ <'if (/^\\s*Category/) {\n'> 
              <'                print; for(1..50) {print "="}; print "\\n";\n'> <'          } else { print}'>
            )
          }
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 277
              stdin_parts: [
                <'\n'>
                <'This information was produced by\n'>
                <'\t'>
                ($ Id.VSub_DollarName '$url')
                <'\n'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
  ]
)