(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <
'usage: makeroot.sh [-B byte-order] [-d] [-e <extras manifest>] [-f <filelist>]\n'
                        >
                        <'                   [-k <keydir> [-K <user>]]\n'>
                        <'                   [-p <master.passwd> [-g <groupfile>]] [-s <size>]\n'>
                        <'\t\t   <image> <bsdroot>\n'>
                      ]
                    )
                )
                (Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <warn>
      name: warn
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <basename>
                        more_env: []
                        words: [{<basename>} {($ Id.VSub_Number 0)}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
                {(DQ ($ Id.VSub_At '@'))}
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <err>
      name: err
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ret='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ret='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <warn>
              more_env: []
              words: [{<warn>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName ret)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <atexit>
      name: atexit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name DEBUG))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-rf>} {(${ Id.VSub_Name tmpdir)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [188 203]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <warn>
                  more_env: []
                  words: [{<warn>} {(DQ <'temp directory left at '> (${ Id.VSub_Name tmpdir))}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DEBUG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DEBUG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DUPFLAG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DUPFLAG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DUPFLAG='> name:DUPFLAG)
          op: assign_op.Equal
          rhs: {<-D>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'EXTRAS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'EXTRAS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXTRAS='> name:EXTRAS)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FILELIST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FILELIST='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILELIST='> name:FILELIST)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'GROUP='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'GROUP='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'KEYDIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'KEYDIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYDIR='> name:KEYDIR)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'KEYUSERS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'KEYUSERS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYUSERS='> name:KEYUSERS)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PASSWD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PASSWD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PASSWD='> name:PASSWD)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <getopts>
                  more_env: []
                  words: [{<getopts>} {(DQ <'B:de:f:g:K:k:l:p:s:'>)} {<opt>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName opt))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <B>
                  pattern: (pat.Words words:[{<B>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'BFLAG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'BFLAG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BFLAG='> name:BFLAG)
                          op: assign_op.Equal
                          rhs: {(DQ <'-B '> (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <d>
                  pattern: (pat.Words words:[{<d>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DEBUG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DEBUG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <e>
                  pattern: (pat.Words words:[{<e>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'EXTRAS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'EXTRAS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXTRAS='> name:EXTRAS)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name EXTRAS) <' '> (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <f>
                  pattern: (pat.Words words:[{<f>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'FILELIST='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'FILELIST='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILELIST='> name:FILELIST)
                              op: assign_op.Equal
                              rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DUPFLAG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DUPFLAG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DUPFLAG='> name:DUPFLAG)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <g>
                  pattern: (pat.Words words:[{<g>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'GROUP='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'GROUP='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GROUP='> name:GROUP)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <K>
                  pattern: (pat.Words words:[{<K>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KEYUSERS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KEYUSERS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYUSERS='> name:KEYUSERS)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name KEYUSERS) <' '> (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <k>
                  pattern: (pat.Words words:[{<k>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KEYDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KEYDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYDIR='> name:KEYDIR)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <l>
                  pattern: (pat.Words words:[{<l>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'LABEL='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'LABEL='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LABEL='> name:LABEL)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <p>
                  pattern: (pat.Words words:[{<p>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PASSWD='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PASSWD='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PASSWD='> name:PASSWD)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <s>
                  pattern: (pat.Words words:[{<s>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SIZE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SIZE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIZE='> name:SIZE)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Simple
      blame_tok: <shift>
      more_env: []
      words: [
        {<shift>}
        {
          (word_part.ArithSub
            left: <Id.Left_DollarDParen '$(('>
            anode: 
              (arith_expr.Binary
                op_id: Id.Arith_Minus
                left: {($ Id.VSub_DollarName OPTIND)}
                right: {<Id.Lit_Digits 1>}
              )
            right: <Id.Right_DollarDParen _>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_Pound '#')}
                        {<-ne>}
                        {<2>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <usage>
                  more_env: []
                  words: [{<usage>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          spids: [442 455]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IMGFILE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IMGFILE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IMGFILE='> name:IMGFILE)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <realpath>
                    more_env: []
                    words: [
                      {<realpath>}
                      {
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <dirname>
                              more_env: []
                              words: [{<dirname>} {($ Id.VSub_Number 1)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      }
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              ) <'/'> 
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <basename>
                    more_env: []
                    words: [{<basename>} {($ Id.VSub_Number 1)}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'BSDROOT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'BSDROOT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BSDROOT='> name:BSDROOT)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number 2)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DBDIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DBDIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DBDIR='> name:DBDIR)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name BSDROOT) <'/etc'>}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<Id.KW_Bang '!'>}
                        {<-r>}
                        {(${ Id.VSub_Name BSDROOT) <'/METALOG'>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err>
              more_env: []
              words: [{<err>} {<1>} {(DQ (${ Id.VSub_Name BSDROOT) <' does not contain a METALOG'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [492 508]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name GROUP))}
                        {<-a>}
                        {<-z>}
                        {(DQ (${ Id.VSub_Name PASSWD))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <warn>
              more_env: []
              words: [{<warn>} {(DQ <'-g requires -p'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <usage>
              more_env: []
              words: [{<usage>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [525 550]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name KEYUSERS))}
                        {<-a>}
                        {<-z>}
                        {(DQ (${ Id.VSub_Name KEYDIR))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <warn>
              more_env: []
              words: [{<warn>} {(DQ <'-K requires -k'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <usage>
              more_env: []
              words: [{<usage>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [565 590]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name KEYDIR))}
                        {<-a>}
                        {<-z>}
                        {(DQ (${ Id.VSub_Name KEYUSERS))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KEYUSERS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KEYUSERS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYUSERS='> name:KEYUSERS)
                  op: assign_op.Equal
                  rhs: {<root>}
                )
              ]
              redirects: []
            )
          ]
          spids: [604 629]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'tmpdir='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'tmpdir='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tmpdir='> name:tmpdir)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <mktemp>
                    more_env: []
                    words: [{<mktemp>} {<-d>} {<'/tmp/makeroot.XXXXX'>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-z>}
                        {(DQ (${ Id.VSub_Name tmpdir))}
                        {<-o>}
                        {<Id.KW_Bang '!'>}
                        {<-d>}
                        {(DQ (${ Id.VSub_Name tmpdir))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err>
              more_env: []
              words: [{<err>} {<1>} {(DQ <'failed to create tmpdir'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [649 676]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {<atexit>} {<EXIT>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'manifest='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'manifest='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'manifest='> name:manifest)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name tmpdir) <'/manifest'>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'#mtree 2.0'>)}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(${ Id.VSub_Name manifest)}
        )
      ]
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name PASSWD))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [{<cp>} {(${ Id.VSub_Name PASSWD)} {(${ Id.VSub_Name tmpdir) <'/master.passwd'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pwd_mkdb>
              more_env: []
              words: [
                {<pwd_mkdb>}
                {<-d>}
                {(${ Id.VSub_Name tmpdir)}
                {<-p>}
                {(${ Id.VSub_Name tmpdir) <'/master.passwd'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name GROUP))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <cp>
                      more_env: []
                      words: [{<cp>} {(${ Id.VSub_Name DBDIR) <'/group'>} {(${ Id.VSub_Name tmpdir)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [762 777]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <cp>
                  more_env: []
                  words: [{<cp>} {(${ Id.VSub_Name GROUP)} {(${ Id.VSub_Name tmpdir)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'./etc/group type=file uname=root gname=wheel mode=0644 contents='>
                        (${ Id.VSub_Name tmpdir)
                        <'/group\n'>
                        <'./etc/master.passwd type=file uname=root gname=wheel mode=0600 contents='>
                        (${ Id.VSub_Name tmpdir)
                        <'/master.passwd\n'>
                        <'./etc/passwd type=file mode=0644 uname=root gname=wheel contents='>
                        (${ Id.VSub_Name tmpdir)
                        <'/passwd\n'>
                        <'./etc/pwd.db type=file mode=0644 uname=root gname=wheel contents='>
                        (${ Id.VSub_Name tmpdir)
                        <'/pwd.db\n'>
                        <'./etc/spwd.db type=file mode=0600 uname=root gname=wheel contents='>
                        (${ Id.VSub_Name tmpdir)
                        <'/spwd.db\n'>
                      ]
                    )
                )
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name tmpdir) <'/passwd.mtree'>}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'EXTRAS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'EXTRAS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXTRAS='> name:EXTRAS)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name EXTRAS) <' '> (${ Id.VSub_Name tmpdir) <'/passwd.mtree'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'DBDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'DBDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DBDIR='> name:DBDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name tmpdir)}
                )
              ]
              redirects: []
            )
          ]
          spids: [716 731]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name FILELIST))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Pipeline
              children: [
                (command.Subshell
                  left: <Id.Op_LParen _>
                  child: 
                    (command.CommandList
                      children: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<.>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                        (command.Pipeline
                          children: [
                            (command.Simple
                              blame_tok: <grep>
                              more_env: []
                              words: [
                                {<grep>}
                                {<-v>}
                                {<Id.Lit_Other '^'> <Id.Lit_Pound '#'>}
                                {(${ Id.VSub_Name FILELIST)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.WhileUntil
                              keyword: <Id.KW_While while>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.Simple
                                          blame_tok: <read>
                                          more_env: []
                                          words: [{<read>} {<path>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              body: 
                                (command.DoGroup
                                  left: <Id.KW_Do do>
                                  children: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'path='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'path='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'path='>
                                              name: path
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ <'/'> (${ Id.VSub_Name path))}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.WhileUntil
                                      keyword: <Id.KW_While while>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-n>}
                                                    {(DQ (${ Id.VSub_Name path))}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      body: 
                                        (command.DoGroup
                                          left: <Id.KW_Do do>
                                          children: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [{<echo>} {(DQ <.> (${ Id.VSub_Name path))}]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'path='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'path='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'path='>
                                                      name: path
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name path>
                                                          var_name: path
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VOp1_Percent '%'>
                                                              arg_word: 
                                                                {<Id.Lit_Slash '/'> 
                                                                  <Id.Lit_Other '*'>
                                                                }
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.KW_Done done>
                                        )
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.KW_Done done>
                                )
                              redirects: []
                            )
                          ]
                          ops: [<Id.Op_Pipe _>]
                        )
                      ]
                    )
                  right: <Id.Right_Subshell _>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>} {(${ Id.VSub_Name BSDROOT) <'/METALOG'>} {<->}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <awk>
                  more_env: []
                  words: [
                    {<awk>}
                    {
                      (SQ <'\n'> <'\t\t!/ type=/ { file = $1 }\n'> 
                        <'\t\t/ type=/ { if ($1 == file) {print} }'>
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(${ Id.VSub_Name manifest)}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
          ]
          spids: [872 887]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name EXTRAS))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-h>} {<Id.Lit_VarLike 'type='> <file>} {(${ Id.VSub_Name EXTRAS)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-d> (SQ <' '>)} {<-f1>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>} {(${ Id.VSub_Name BSDROOT) <'/METALOG'>} {<->}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <awk>
                  more_env: []
                  words: [
                    {<awk>}
                    {
                      (SQ <'\n'> <'\t\t!/ type=/ { file = $1 }\n'> 
                        <'\t\t/ type=/ { if ($1 != file) {print} }'>
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(${ Id.VSub_Name manifest)}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
          ]
          spids: [1028 1043]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>} {<-u>} {(${ Id.VSub_Name BSDROOT) <'/METALOG'>}]
          redirects: [
            (Redir
              op: <Id.Redir_DGreat '>>'>
              loc: (redir_loc.Fd fd:1)
              arg: {(${ Id.VSub_Name manifest)}
            )
          ]
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [eman]
      iterable: (for_iter.Words words:[{(${ Id.VSub_Name EXTRAS)}])
      semi_tok: <Id.Op_Semi _>
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<Id.KW_Bang '!'>}
                                {<-f>}
                                {(${ Id.VSub_Name eman)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <err>
                      more_env: []
                      words: [{<err>} {<1>} {(DQ (${ Id.VSub_Name eman) <' is not a regular file'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [1151 1166]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'extradir='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'extradir='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extradir='> name:extradir)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                blame_tok: <realpath>
                                more_env: []
                                words: [{<realpath>} {(${ Id.VSub_Name eman)}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'extradir='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'extradir='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extradir='> name:extradir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <dirname>
                            more_env: []
                            words: [{<dirname>} {(${ Id.VSub_Name extradir)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <awk>
                  more_env: []
                  words: [
                    {<awk>}
                    {
                      (SQ <'{\n'> <'\t\tif ($0 !~ /type=file/) {\n'> <'\t\t\tprint\n'> 
                        <'\t\t} else {\n'> <'\t\t\tif ($0 !~ /contents=/) {\n'> <'\t\t\t\tprintf ("%s contents=%s\\n", $0, $1)\n'> 
                        <'\t\t\t} else {\n'> <'\t\t\t\tprint\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t}'>
                      )
                    }
                    {(${ Id.VSub_Name eman)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [
                    {<sed>}
                    {<-e>}
                    {
                      (DQ <'s|contents='> <Id.Lit_BadBackslash '\\'> <'./|contents='> 
                        (${ Id.VSub_Name extradir) <'/|'>
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(${ Id.VSub_Name manifest)}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {<'/etc/rc.d/FIRST'>}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(${ Id.VSub_Name tmpdir) <'/rcorder.start'>}
        )
      ]
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <rcorder>
          more_env: []
          words: [
            {<rcorder>}
            {<-s>}
            {<nostart>}
            {(${ Id.VSub_Name BSDROOT) <'/etc/rc.d/'> <Id.Lit_Star '*'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <sed>
          more_env: []
          words: [{<sed>} {<-e>} {(DQ <'s:^'> (${ Id.VSub_Name BSDROOT) <'::'>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <grep>
          more_env: []
          words: [{<grep>} {<-v>} {<LAST>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <grep>
          more_env: []
          words: [{<grep>} {<-v>} {<FIRST>}]
          redirects: [
            (Redir
              op: <Id.Redir_DGreat '>>'>
              loc: (redir_loc.Fd fd:1)
              arg: {(${ Id.VSub_Name tmpdir) <'/rcorder.start'>}
            )
          ]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {<'/etc/rc.d/LAST'>}]
      redirects: [
        (Redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(${ Id.VSub_Name tmpdir) <'/rcorder.start'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {(DQ <'./etc/rcorder.start type=file mode=644 uname=root gname=wheel'>)}
        {(DQ <'contents='> (${ Id.VSub_Name tmpdir) <'/rcorder.start'>)}
      ]
      redirects: [
        (Redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(${ Id.VSub_Name manifest)}
        )
      ]
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name KEYDIR))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>} {(${ Id.VSub_Name KEYDIR) <'/'> <Id.Lit_Star '*'> <.pub>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name tmpdir) <'/authorized_keys'>}
                )
              ]
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<Id.KW_Bang '!'>}
                                {<-s>}
                                {(${ Id.VSub_Name tmpdir) <'/authorized_keys'>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <err>
                      more_env: []
                      words: [{<err>} {<1>} {(DQ <'no keys found in '> (${ Id.VSub_Name KEYDIR))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [1407 1423]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [user]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name KEYUSERS)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'userdir='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'userdir='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'userdir='> name:userdir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <awk>
                                    more_env: []
                                    words: [
                                      {<awk>}
                                      {<-F> <Id.Lit_Colon ':'>}
                                      {
                                        (DQ <'{if ('> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\$'>
                                            ch: '$'
                                          ) <'1 == '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name user) 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                            ch: '"'
                                          ) <') {print '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'9; exit} }'>
                                        )
                                      }
                                      {(${ Id.VSub_Name DBDIR) <'/master.passwd'>}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'gid='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'gid='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gid='> name:gid)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <awk>
                                    more_env: []
                                    words: [
                                      {<awk>}
                                      {<-F> <Id.Lit_Colon ':'>}
                                      {
                                        (DQ <'{if ('> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\$'>
                                            ch: '$'
                                          ) <'1 == '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name user) 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                            ch: '"'
                                          ) <') {print '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'4; exit} }'>
                                        )
                                      }
                                      {(${ Id.VSub_Name DBDIR) <'/master.passwd'>}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'group='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'group='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <awk>
                                    more_env: []
                                    words: [
                                      {<awk>}
                                      {<-F> <Id.Lit_Colon ':'>}
                                      {
                                        (DQ <'{if ('> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\$'>
                                            ch: '$'
                                          ) <'3 == '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name gid) 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                            ch: '"'
                                          ) <') {print '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'1; exit} }'>
                                        )
                                      }
                                      {(${ Id.VSub_Name DBDIR) <'/group'>}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-z>}
                                        {(DQ (${ Id.VSub_Name userdir))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <err>
                              more_env: []
                              words: [
                                {<err>}
                                {<1>}
                                {
                                  (DQ (${ Id.VSub_Name user) <': not found in '> 
                                    (${ Id.VSub_Name DBDIR) <'/master.passwd'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [1575 1590]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <.> (${ Id.VSub_Name userdir) <'/.ssh type=dir mode=700 uname='> 
                            (${ Id.VSub_Name user) <' gname='> (${ Id.VSub_Name group)
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name manifest)}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <.> (${ Id.VSub_Name userdir) 
                            <'/.ssh/authorized_keys type=file mode=600 uname='> (${ Id.VSub_Name user) <' gname='> (${ Id.VSub_Name group) <' contents='> (${ Id.VSub_Name tmpdir) 
                            <'/authorized_keys'>
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name manifest)}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          spids: [1372 1387]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name LABEL))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'LABELFLAG='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'LABELFLAG='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LABELFLAG='> name:LABELFLAG)
                  op: assign_op.Equal
                  rhs: {(DQ <'-o label='> (${ Id.VSub_Name LABEL))}
                )
              ]
              redirects: []
            )
          ]
          spids: [1670 1685]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {(DQ (${ Id.VSub_Name SIZE))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SIZEFLAG='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SIZEFLAG='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIZEFLAG='> name:SIZEFLAG)
                  op: assign_op.Equal
                  rhs: {(DQ <'-s '> (${ Id.VSub_Name SIZE))}
                )
              ]
              redirects: []
            )
          ]
          spids: [1697 1712]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <sed>
      more_env: []
      words: [
        {<sed>}
        {<-i>}
        {(SQ )}
        {<-E>}
        {(SQ <'s/(time=[0-9]*)\\.[0-9]*/\\1.0/'>)}
        {(${ Id.VSub_Name manifest)}
      ]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <cd>
              more_env: []
              words: [{<cd>} {(${ Id.VSub_Name BSDROOT)}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <makefs>
          more_env: []
          words: [
            {<makefs>}
            {(${ Id.VSub_Name DUPFLAG)}
            {<-N>}
            {(${ Id.VSub_Name DBDIR)}
            {(${ Id.VSub_Name SIZEFLAG)}
            {(${ Id.VSub_Name BFLAG)}
            {<-t>}
            {<ffs>}
            {(${ Id.VSub_Name LABELFLAG)}
            {<-f>}
            {<256>}
            {(${ Id.VSub_Name IMGFILE)}
            {(${ Id.VSub_Name manifest)}
          ]
          redirects: []
          do_fork: T
        )
      ]
    )
  ]
)