(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: '>
                        (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 '`'>
                        )
                        <' [options] command ... [path]\n'>
                        <'\n'>
                        <'Options:\n'>
                        <'  -b basedir   -- Operate on a system mounted at basedir\n'>
                        <'                  (default: /)\n'>
                        <'  -d workdir   -- Store working files in workdir\n'>
                        <'                  (default: /var/db/freebsd-update/)\n'>
                        <'  -f conffile  -- Read configuration options from conffile\n'>
                        <'                  (default: /etc/freebsd-update.conf)\n'>
                        <'  -F           -- Force a fetch operation to proceed\n'>
                        <'  -k KEY       -- Trust an RSA key with SHA256 hash of KEY\n'>
                        <'  -r release   -- Target for upgrade (e.g., 11.1-RELEASE)\n'>
                        <'  -s server    -- Server from which to fetch updates\n'>
                        <'                  (default: update.FreeBSD.org)\n'>
                        <'  -t address   -- Mail output of cron command, if any, to address\n'>
                        <'                  (default: root)\n'>
                        <'  --not-running-from-cron\n'>
                        <'               -- Run without a tty, for use by automated tools\n'>
                        <'  --currently-running release\n'>
                        <'               -- Update as if currently running this release\n'>
                        <'Commands:\n'>
                        <'  fetch        -- Fetch updates from server\n'>
                        <'  cron         -- Sleep rand(3600) seconds, fetch updates, and send an\n'>
                        <'                  email if updates were found\n'>
                        <
'  upgrade      -- Fetch upgrades to FreeBSD version specified via -r option\n'
                        >
                        <'  install      -- Install downloaded updates or upgrades\n'>
                        <'  rollback     -- Uninstall most recently installed updates\n'>
                        <'  IDS          -- Compare the system against an index of '>
                        <Id.Right_DoubleQuote '"'>
                        <'known good'>
                        <Id.Right_DoubleQuote '"'>
                        <' files.\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CONFIGOPTIONS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CONFIGOPTIONS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFIGOPTIONS='> name:CONFIGOPTIONS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'KEYPRINT WORKDIR SERVERNAME MAILTO ALLOWADD ALLOWDELETE\n'> 
                <'    KEEPMODIFIEDMETADATA COMPONENTS IGNOREPATHS UPDATEIFUNMODIFIED\n'> <'    BASEDIR VERBOSELEVEL TARGETRELEASE STRICTCOMPONENTS MERGECHANGES\n'> 
                <'    IDSIGNOREPATHS BACKUPKERNEL BACKUPKERNELDIR BACKUPKERNELSYMBOLFILES'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <nullconfig>
      name: nullconfig
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [X]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name CONFIGOPTIONS)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {(${ Id.VSub_Name X) <Id.Lit_Equals '='> (DQ )}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <saveconfig>
      name: saveconfig
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [X]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name CONFIGOPTIONS)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {(${ Id.VSub_Name X) <Id.Lit_VarLike '_saved='> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                            ch: '$'
                          ) (${ Id.VSub_Name X)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <mergeconfig>
      name: mergeconfig
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [X]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name CONFIGOPTIONS)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<Id.Lit_VarLike '_='> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                            ch: '$'
                          ) (${ Id.VSub_Name X) <_saved>
                        }
                      ]
                      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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {<-z>}
                                            {(DQ (${ Id.VSub_Name _))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {(${ Id.VSub_Name X) <Id.Lit_Equals '='> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\$'>
                                    ch: '$'
                                  ) (${ Id.VSub_Name X) <_saved>
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [351 368]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_KeyPrint>
      name: config_KeyPrint
      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>}
                                {(${ Id.VSub_Name KEYPRINT)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KEYPRINT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KEYPRINT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEYPRINT='> name:KEYPRINT)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [403 416]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_WorkDir>
      name: config_WorkDir
      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>}
                                {(${ Id.VSub_Name WORKDIR)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'WORKDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'WORKDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WORKDIR='> name:WORKDIR)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [447 460]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_ServerName>
      name: config_ServerName
      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>}
                                {(${ Id.VSub_Name SERVERNAME)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SERVERNAME='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SERVERNAME='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVERNAME='> name:SERVERNAME)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [491 504]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_MailTo>
      name: config_MailTo
      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>}
                                {(${ Id.VSub_Name MAILTO)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'MAILTO='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'MAILTO='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAILTO='> name:MAILTO)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [535 548]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_AllowAdd>
      name: config_AllowAdd
      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>}
                                {(${ Id.VSub_Name ALLOWADD)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ALLOWADD='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ALLOWADD='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ALLOWADD='>
                                      name: ALLOWADD
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ALLOWADD='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ALLOWADD='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ALLOWADD='>
                                      name: ALLOWADD
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [582 595]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_AllowDelete>
      name: config_AllowDelete
      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>}
                                {(${ Id.VSub_Name ALLOWDELETE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ALLOWDELETE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ALLOWDELETE='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ALLOWDELETE='>
                                      name: ALLOWDELETE
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ALLOWDELETE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ALLOWDELETE='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ALLOWDELETE='>
                                      name: ALLOWDELETE
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [679 692]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_KeepModifiedMetadata>
      name: config_KeepModifiedMetadata
      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>}
                                {(${ Id.VSub_Name KEEPMODIFIEDMETADATA)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='>
                                      name: KEEPMODIFIEDMETADATA
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'KEEPMODIFIEDMETADATA='>
                                      name: KEEPMODIFIEDMETADATA
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [782 795]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_Components>
      name: config_Components
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [C]
              iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}])
              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 '['>}
                                        {(DQ ($ Id.VSub_DollarName C))}
                                        {<Id.Lit_Equals '='>}
                                        {(DQ <src>)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (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 '['>}
                                                {<-e>}
                                                {<'/usr/src/COPYRIGHT'>}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'COMPONENTS='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'COMPONENTS='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'COMPONENTS='>
                                              name: COMPONENTS
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name COMPONENTS) <' '> 
                                                (${ Id.VSub_Name C)
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [911 922]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ <'src component not installed, skipped'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [891 908]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'COMPONENTS='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'COMPONENTS='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'COMPONENTS='>
                                  name: COMPONENTS
                                )
                              op: assign_op.Equal
                              rhs: {(DQ (${ Id.VSub_Name COMPONENTS) <' '> (${ Id.VSub_Name C))}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_IgnorePaths>
      name: config_IgnorePaths
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [C]
              iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'IGNOREPATHS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'IGNOREPATHS='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'IGNOREPATHS='>
                              name: IGNOREPATHS
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name IGNOREPATHS) <' '> (${ Id.VSub_Name C))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_IDSIgnorePaths>
      name: config_IDSIgnorePaths
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [C]
              iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'IDSIGNOREPATHS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'IDSIGNOREPATHS='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'IDSIGNOREPATHS='>
                              name: IDSIGNOREPATHS
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name IDSIGNOREPATHS) <' '> (${ Id.VSub_Name C))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_UpdateIfUnmodified>
      name: config_UpdateIfUnmodified
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [C]
              iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'UPDATEIFUNMODIFIED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'UPDATEIFUNMODIFIED='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'UPDATEIFUNMODIFIED='>
                              name: UPDATEIFUNMODIFIED
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name UPDATEIFUNMODIFIED) <' '> (${ Id.VSub_Name C))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_MergeChanges>
      name: config_MergeChanges
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [C]
              iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'MERGECHANGES='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'MERGECHANGES='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'MERGECHANGES='>
                              name: MERGECHANGES
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name MERGECHANGES) <' '> (${ Id.VSub_Name C))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_BaseDir>
      name: config_BaseDir
      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>}
                                {(${ Id.VSub_Name BASEDIR)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'BASEDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'BASEDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BASEDIR='> name:BASEDIR)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1150 1163]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_StrictComponents>
      name: config_StrictComponents
      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>}
                                {(${ Id.VSub_Name STRICTCOMPONENTS)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'STRICTCOMPONENTS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'STRICTCOMPONENTS='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'STRICTCOMPONENTS='>
                                      name: STRICTCOMPONENTS
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'STRICTCOMPONENTS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'STRICTCOMPONENTS='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'STRICTCOMPONENTS='>
                                      name: STRICTCOMPONENTS
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [1200 1213]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_TargetRelease>
      name: config_TargetRelease
      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>}
                                {(${ Id.VSub_Name TARGETRELEASE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'TARGETRELEASE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'TARGETRELEASE='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'TARGETRELEASE='>
                              name: TARGETRELEASE
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1297 1310]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              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.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(${ Id.VSub_Name TARGETRELEASE)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-qE>} {(SQ <'^[0-9.]+$'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'TARGETRELEASE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'TARGETRELEASE='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'TARGETRELEASE='>
                              name: TARGETRELEASE
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name TARGETRELEASE) <-RELEASE>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1328 1347]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_VerboseLevel>
      name: config_VerboseLevel
      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>}
                                {(${ Id.VSub_Name VERBOSELEVEL)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Dd> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Bb> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Uu> 
                                  <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Gg> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                                      name: VERBOSELEVEL
                                    )
                                  op: assign_op.Equal
                                  rhs: {<debug>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> 
                                  <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Aa> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> <Id.Lit_RBracket ']'> 
                                  <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                                      name: VERBOSELEVEL
                                    )
                                  op: assign_op.Equal
                                  rhs: {<nostats>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Tt> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Aa> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Tt> 
                                  <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VERBOSELEVEL='>
                                      name: VERBOSELEVEL
                                    )
                                  op: assign_op.Equal
                                  rhs: {<stats>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [1375 1388]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_BackupKernel>
      name: config_BackupKernel
      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>}
                                {(${ Id.VSub_Name BACKUPKERNEL)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'BACKUPKERNEL='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'BACKUPKERNEL='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'BACKUPKERNEL='>
                                      name: BACKUPKERNEL
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'BACKUPKERNEL='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'BACKUPKERNEL='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'BACKUPKERNEL='>
                                      name: BACKUPKERNEL
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [1515 1528]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_BackupKernelDir>
      name: config_BackupKernelDir
      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>}
                                {(${ Id.VSub_Name BACKUPKERNELDIR)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (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_Number 1))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'BackupKernelDir set to empty dir'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [1625 1638]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <'/'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<'/'>}
                                {<'/bin'>}
                                {<'/boot'>}
                                {<'/etc'>}
                                {<'/lib'>}
                                {<'/libexec'>}
                                {<'/sbin'>}
                                {<'/usr'>}
                                {<'/var'>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ <'BackupKernelDir set to invalid path '> ($ Id.VSub_Number 1))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/'>
                          pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                                      name: BACKUPKERNELDIR
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              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: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'BackupKernelDir ('> ($ Id.VSub_Number 1) 
                                    <') is not an absolute path'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [1609 1622]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <config_BackupKernelSymbolFiles>
      name: config_BackupKernelSymbolFiles
      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>}
                                {(${ Id.VSub_Name BACKUPKERNELSYMBOLFILES)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='>
                                      name: BACKUPKERNELSYMBOLFILES
                                    )
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'BACKUPKERNELSYMBOLFILES='>
                                      name: BACKUPKERNELSYMBOLFILES
                                    )
                                  op: assign_op.Equal
                                  rhs: {<no>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [1769 1782]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <configline>
      name: configline
      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 '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-eq>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)]
                  spids: [1866 1879]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'OPT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'OPT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPT='> name:OPT)
                  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: <config_>
              more_env: []
              words: [{<config_> (${ Id.VSub_Name OPT)} {($ Id.VSub_At '@')}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <init_params>
      name: init_params
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <nullconfig>
              more_env: []
              words: [{<nullconfig>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'CONFFILE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'CONFFILE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFFILE='> name:CONFFILE)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'COMMANDS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'COMMANDS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMANDS='> name:COMMANDS)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FORCEFETCH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FORCEFETCH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FORCEFETCH='> name:FORCEFETCH)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NOTTYOK='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NOTTYOK='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOTTYOK='> name:NOTTYOK)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <parse_cmdline>
      name: parse_cmdline
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (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 '['>}
                            {($ Id.VSub_Pound '#')}
                            {<-gt>}
                            {<0>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          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_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-f>
                          pattern: (pat.Words words:[{<-f>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (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 '#')}
                                                {<-eq>}
                                                {<1>}
                                                {<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: [2015 2028]
                                )
                              ]
                              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 '['>}
                                                {<Id.KW_Bang '!'>}
                                                {<-z>}
                                                {(DQ (${ Id.VSub_Name CONFFILE))}
                                                {<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: [2036 2053]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <shift>
                                  more_env: []
                                  words: [{<shift>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'CONFFILE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'CONFFILE='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'CONFFILE='>
                                      name: CONFFILE
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-F>
                          pattern: (pat.Words words:[{<-F>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FORCEFETCH='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FORCEFETCH='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'FORCEFETCH='>
                                      name: FORCEFETCH
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--not-running-from-cron>
                          pattern: (pat.Words words:[{<--not-running-from-cron>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'NOTTYOK='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'NOTTYOK='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'NOTTYOK='>
                                      name: NOTTYOK
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--currently-running>
                          pattern: (pat.Words words:[{<--currently-running>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <shift>
                                  more_env: []
                                  words: [{<shift>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <export>
                              more_env: []
                              words: [{<export>} {<Id.Lit_VarLike 'UNAME_r='> (DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-b>
                          pattern: (pat.Words words:[{<-b>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (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 '#')}
                                                    {<-eq>}
                                                    {<1>}
                                                    {<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: [2122 2135]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_BaseDir>
                                  more_env: []
                                  words: [{<config_BaseDir>} {($ Id.VSub_Number 1)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-d>
                          pattern: (pat.Words words:[{<-d>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (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 '#')}
                                                    {<-eq>}
                                                    {<1>}
                                                    {<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: [2162 2175]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_WorkDir>
                                  more_env: []
                                  words: [{<config_WorkDir>} {($ Id.VSub_Number 1)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-k>
                          pattern: (pat.Words words:[{<-k>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (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 '#')}
                                                    {<-eq>}
                                                    {<1>}
                                                    {<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: [2202 2215]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_KeyPrint>
                                  more_env: []
                                  words: [{<config_KeyPrint>} {($ Id.VSub_Number 1)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-s>
                          pattern: (pat.Words words:[{<-s>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (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 '#')}
                                                    {<-eq>}
                                                    {<1>}
                                                    {<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: [2242 2255]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_ServerName>
                                  more_env: []
                                  words: [{<config_ServerName>} {($ Id.VSub_Number 1)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-r>
                          pattern: (pat.Words words:[{<-r>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (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 '#')}
                                                    {<-eq>}
                                                    {<1>}
                                                    {<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: [2282 2295]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_TargetRelease>
                                  more_env: []
                                  words: [{<config_TargetRelease>} {($ Id.VSub_Number 1)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-t>
                          pattern: (pat.Words words:[{<-t>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (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 '#')}
                                                    {<-eq>}
                                                    {<1>}
                                                    {<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: [2322 2335]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_MailTo>
                                  more_env: []
                                  words: [{<config_MailTo>} {($ Id.VSub_Number 1)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-v>
                          pattern: (pat.Words words:[{<-v>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (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 '#')}
                                                    {<-eq>}
                                                    {<1>}
                                                    {<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: [2362 2375]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_VerboseLevel>
                                  more_env: []
                                  words: [{<config_VerboseLevel>} {($ Id.VSub_Number 1)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--debug>
                          pattern: (pat.Words words:[{<--debug>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_VerboseLevel>
                                  more_env: []
                                  words: [{<config_VerboseLevel>} {<debug>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--no-stats>
                          pattern: (pat.Words words:[{<--no-stats>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <config_VerboseLevel>
                                  more_env: []
                                  words: [{<config_VerboseLevel>} {<nostats>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <cron>
                          pattern: 
                            (pat.Words
                              words: [{<cron>} {<fetch>} {<upgrade>} {<install>} {<rollback>} {<IDS>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMMANDS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMMANDS='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMMANDS='>
                                      name: COMMANDS
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name COMMANDS) <' '> ($ Id.VSub_Number 1))}
                                )
                              ]
                              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: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              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 COMMANDS))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2506 2521]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <parse_conffile>
      name: parse_conffile
      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.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<Id.KW_Bang '!'>}
                                    {<-z>}
                                    {(DQ (${ Id.VSub_Name CONFFILE))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<Id.KW_Bang '!'>}
                                    {<-r>}
                                    {(DQ (${ Id.VSub_Name CONFFILE))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'File does not exist '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'or is not readable: '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name CONFFILE)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2551 2584]
                )
              ]
              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 '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name CONFFILE))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'CONFFILE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'CONFFILE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFFILE='> name:CONFFILE)
                          op: assign_op.Equal
                          rhs: {(DQ <'/etc/freebsd-update.conf'>)}
                        )
                      ]
                      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>}
                                        {(DQ (${ Id.VSub_Name CONFFILE))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return>)]
                          spids: [2657 2674]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [2633 2648]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <saveconfig>
              more_env: []
              words: [{<saveconfig>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <nullconfig>
              more_env: []
              words: [{<nullconfig>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'L='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'L='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<LINE>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'L='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'L='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'L='> name:L)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName L)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'LINEX='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'LINEX='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LINEX='> name:LINEX)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'#'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <configline>
                                          more_env: []
                                          words: [{<configline>} {(${ Id.VSub_Name LINEX)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'Error processing configuration file, line '> 
                                    ($ Id.VSub_DollarName L) <':'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'==> '> (${ Id.VSub_Name LINE))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [2763 2774]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(${ Id.VSub_Name CONFFILE)}
                )
              ]
            )
            (command.Simple
              blame_tok: <mergeconfig>
              more_env: []
              words: [{<mergeconfig>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <default_params>
      name: default_params
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <saveconfig>
              more_env: []
              words: [{<saveconfig>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <nullconfig>
              more_env: []
              words: [{<nullconfig>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_WorkDir>
              more_env: []
              words: [{<config_WorkDir>} {<'/var/db/freebsd-update'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_MailTo>
              more_env: []
              words: [{<config_MailTo>} {<root>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_AllowAdd>
              more_env: []
              words: [{<config_AllowAdd>} {<yes>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_AllowDelete>
              more_env: []
              words: [{<config_AllowDelete>} {<yes>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_KeepModifiedMetadata>
              more_env: []
              words: [{<config_KeepModifiedMetadata>} {<yes>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_BaseDir>
              more_env: []
              words: [{<config_BaseDir>} {<'/'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_VerboseLevel>
              more_env: []
              words: [{<config_VerboseLevel>} {<stats>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_StrictComponents>
              more_env: []
              words: [{<config_StrictComponents>} {<no>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_BackupKernel>
              more_env: []
              words: [{<config_BackupKernel>} {<yes>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_BackupKernelDir>
              more_env: []
              words: [{<config_BackupKernelDir>} {<'/boot/kernel.old'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <config_BackupKernelSymbolFiles>
              more_env: []
              words: [{<config_BackupKernelSymbolFiles>} {<no>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mergeconfig>
              more_env: []
              words: [{<mergeconfig>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_setup_verboselevel>
      name: fetch_setup_verboselevel
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(${ Id.VSub_Name VERBOSELEVEL)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <debug>
                  pattern: (pat.Words words:[{<debug>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'QUIETREDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'QUIETREDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETREDIR='> name:QUIETREDIR)
                          op: assign_op.Equal
                          rhs: {(DQ <'/dev/stderr'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'QUIETFLAG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'QUIETFLAG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETFLAG='> name:QUIETFLAG)
                          op: assign_op.Equal
                          rhs: {(DQ <' '>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'STATSREDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'STATSREDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATSREDIR='> name:STATSREDIR)
                          op: assign_op.Equal
                          rhs: {(DQ <'/dev/stderr'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DDSTATS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DDSTATS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DDSTATS='> name:DDSTATS)
                          op: assign_op.Equal
                          rhs: {(DQ <..>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'XARGST='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'XARGST='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XARGST='> name:XARGST)
                          op: assign_op.Equal
                          rhs: {(DQ <-t>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NDEBUG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NDEBUG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NDEBUG='> name:NDEBUG)
                          op: assign_op.Equal
                          rhs: {(DQ <' '>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <nostats>
                  pattern: (pat.Words words:[{<nostats>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'QUIETREDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'QUIETREDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETREDIR='> name:QUIETREDIR)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'QUIETFLAG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'QUIETFLAG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETFLAG='> name:QUIETFLAG)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'STATSREDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'STATSREDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATSREDIR='> name:STATSREDIR)
                          op: assign_op.Equal
                          rhs: {(DQ <'/dev/null'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DDSTATS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DDSTATS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DDSTATS='> name:DDSTATS)
                          op: assign_op.Equal
                          rhs: {(DQ <..>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'XARGST='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'XARGST='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XARGST='> name:XARGST)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NDEBUG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NDEBUG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NDEBUG='> name:NDEBUG)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <stats>
                  pattern: (pat.Words words:[{<stats>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'QUIETREDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'QUIETREDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETREDIR='> name:QUIETREDIR)
                          op: assign_op.Equal
                          rhs: {(DQ <'/dev/null'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'QUIETFLAG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'QUIETFLAG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIETFLAG='> name:QUIETFLAG)
                          op: assign_op.Equal
                          rhs: {(DQ <-q>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'STATSREDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'STATSREDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STATSREDIR='> name:STATSREDIR)
                          op: assign_op.Equal
                          rhs: {(DQ <'/dev/stdout'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DDSTATS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DDSTATS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DDSTATS='> name:DDSTATS)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'XARGST='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'XARGST='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XARGST='> name:XARGST)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NDEBUG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NDEBUG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NDEBUG='> name:NDEBUG)
                          op: assign_op.Equal
                          rhs: {(DQ <-n>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetchupgrade_check_params>
      name: fetchupgrade_check_params
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<Id.Lit_VarLike 'HTTP_USER_AGENT='> 
                  (DQ <'freebsd-update ('> (${ Id.VSub_Name COMMAND) <', '> 
                    (CommandSub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          blame_tok: <uname>
                          more_env: []
                          words: [{<uname>} {<-r>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Backtick_Right '`'>
                    ) <')'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_SERVERNAME_z='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_SERVERNAME_z='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_SERVERNAME_z='> name:_SERVERNAME_z)
                  op: assign_op.Equal
                  rhs: {(DQ <'SERVERNAME must be given via command line or configuration file.'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_KEYPRINT_z='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_KEYPRINT_z='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_z='> name:_KEYPRINT_z)
                  op: assign_op.Equal
                  rhs: {(DQ <'Key must be given via -k option or configuration file.'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_KEYPRINT_bad='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_KEYPRINT_bad='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_bad='> name:_KEYPRINT_bad)
                  op: assign_op.Equal
                  rhs: {(DQ <'Invalid key fingerprint: '>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_WORKDIR_bad='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_WORKDIR_bad='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad)
                  op: assign_op.Equal
                  rhs: {(DQ <'Directory does not exist or is not writable: '>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_WORKDIR_bad2='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_WORKDIR_bad2='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad2='> name:_WORKDIR_bad2)
                  op: assign_op.Equal
                  rhs: {(DQ <'Directory is not on a persistent filesystem: '>)}
                )
              ]
              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 SERVERNAME))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ (${ Id.VSub_Name _SERVERNAME_z))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3145 3160]
                )
              ]
              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 '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name KEYPRINT))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ (${ Id.VSub_Name _KEYPRINT_z))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3196 3211]
                )
              ]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ (${ Id.VSub_Name KEYPRINT))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-qE>} {(DQ <'^[0-9a-f]{64}'> <Id.Lit_Dollar '$'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _KEYPRINT_bad))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name KEYPRINT)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3247 3271]
                )
              ]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<-a>}
                                    {<-w>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3316 3343]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: 
                (case_arg.Word
                  w: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <df>
                            more_env: []
                            words: [{<df>} {<-T>} {(${ Id.VSub_Name WORKDIR)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <'/dev/md'> <Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> 
                          <Id.Lit_Star '*'>
                        }
                        {<Id.Lit_Star '*'> <tmpfs> <Id.Lit_Star '*'>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad2))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <chmod>
              more_env: []
              words: [{<chmod>} {<700>} {(${ Id.VSub_Name WORKDIR)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <cd>
                  more_env: []
                  words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'RELNUM='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'RELNUM='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELNUM='> name:RELNUM)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <uname>
                                more_env: []
                                words: [{<uname>} {<-r>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {<-E>} {(SQ <'s,-p[0-9]+,,'>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {<-E>} {(SQ <'s,-SECURITY,-RELEASE,'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ARCH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ARCH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARCH='> name:ARCH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <uname>
                            more_env: []
                            words: [{<uname>} {<-m>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FETCHDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FETCHDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FETCHDIR='> name:FETCHDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PATCHDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PATCHDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATCHDIR='> name:PATCHDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH) <'/bp'>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BOOTFILE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BOOTFILE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTFILE='> name:BOOTFILE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <sysctl>
                            more_env: []
                            words: [{<sysctl>} {<-n>} {<kern.bootfile>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KERNELDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KERNELDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNELDIR='> name:KERNELDIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name BOOTFILE>
                        var_name: BOOTFILE
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Percent '%'>
                            arg_word: {<Id.Lit_Slash '/'> <kernel>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {(${ Id.VSub_Name KERNELDIR)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Cannot identify running kernel'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3594 3609]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KERNCONF='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KERNCONF='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <uname>
                            more_env: []
                            words: [{<uname>} {<-i>}]
                            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 '['>}
                                {(${ Id.VSub_Name KERNCONF)}
                                {<Id.Lit_Equals '='>}
                                {(DQ <SMP-GENERIC>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KERNCONF='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KERNCONF='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF)
                          op: assign_op.Equal
                          rhs: {<SMP>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3670 3687]
                )
              ]
              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.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(${ Id.VSub_Name KERNCONF)}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <GENERIC>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(${ Id.VSub_Name ARCH)}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <amd64>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <sysctl>
                                          more_env: []
                                          words: [{<sysctl>} {<kern.version>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [{<grep>} {<-qE>} {(SQ <'/SMP$'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'KERNCONF='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'KERNCONF='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'KERNCONF='>
                                      name: KERNCONF
                                    )
                                  op: assign_op.Equal
                                  rhs: {<SMP>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3733 3750]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [3697 3730]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BSPATCH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BSPATCH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BSPATCH='> name:BSPATCH)
                  op: assign_op.Equal
                  rhs: {<'/usr/bin/bspatch'>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SHA256='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SHA256='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHA256='> name:SHA256)
                  op: assign_op.Equal
                  rhs: {<'/sbin/sha256'>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PHTTPGET='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PHTTPGET='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PHTTPGET='> name:PHTTPGET)
                  op: assign_op.Equal
                  rhs: {<'/usr/libexec/phttpget'>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <fetch_setup_verboselevel>
              more_env: []
              words: [{<fetch_setup_verboselevel>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BDHASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BDHASH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BDHASH='> name:BDHASH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {(${ Id.VSub_Name BASEDIR)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sha256>
                                more_env: []
                                words: [{<sha256>} {<-q>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_check_params>
      name: fetch_check_params
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <fetchupgrade_check_params>
              more_env: []
              words: [{<fetchupgrade_check_params>}]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-z>}
                                    {(DQ (${ Id.VSub_Name TARGETRELEASE))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {(DQ <'-r option is meaningless with \'fetch\' command.  '>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'(Did you mean \'upgrade\' instead?)'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3828 3845]
                )
              ]
              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 '['>}
                                {<-f>}
                                {(${ Id.VSub_Name BDHASH) <'-install/kerneldone'>}
                                {<-a>}
                                {($ Id.VSub_DollarName FORCEFETCH)}
                                {<-eq>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'You have a partially completed upgrade pending'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Run \''> ($ Id.VSub_Number 0) <' install\' first.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'Run \''> ($ Id.VSub_Number 0) <' fetch -F\' to proceed anyway.'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3893 3915]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <upgrade_check_params>
      name: upgrade_check_params
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <fetchupgrade_check_params>
              more_env: []
              words: [{<fetchupgrade_check_params>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NKERNCONF='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NKERNCONF='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NKERNCONF='> name:NKERNCONF)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name KERNCONF)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_TARGETRELEASE_z='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_TARGETRELEASE_z='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_TARGETRELEASE_z='>
                      name: _TARGETRELEASE_z
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <'Release target must be specified via -r option.'>)}
                )
              ]
              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 TARGETRELEASE))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ (${ Id.VSub_Name _TARGETRELEASE_z))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3989 4004]
                )
              ]
              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 '['>}
                                {(DQ (${ Id.VSub_Name TARGETRELEASE))}
                                {<Id.Lit_Equals '='>}
                                {(DQ (${ Id.VSub_Name RELNUM))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'Cannot upgrade from '> (${ Id.VSub_Name RELNUM) <' to itself'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4045 4066]
                )
              ]
              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 '['>}
                                {(DQ (${ Id.VSub_Name ALLOWADD))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <no>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'WARNING: '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) <'AllowAdd no'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' is a bad idea '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'when upgrading between releases.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [4109 4128]
                )
              ]
              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 '['>}
                                {(DQ (${ Id.VSub_Name ALLOWDELETE))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <no>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'WARNING: '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) <'AllowDelete no'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                            <' is a bad idea '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'when upgrading between releases.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [4173 4192]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [
                {<Id.Lit_Colon ':'>}
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name EDITOR>
                    var_name: EDITOR
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonEquals _>
                        arg_word: {(SQ <'/usr/bin/vi'>)}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_check_params>
      name: install_check_params
      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 '['>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <id>
                                        more_env: []
                                        words: [{<id>} {<-u>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'You must be root to run this.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4273 4293]
                )
              ]
              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 '['>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <sysctl>
                                        more_env: []
                                        words: [{<sysctl>} {<-n>} {<kern.securelevel>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                                {<-gt>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'Updates cannot be installed when the system securelevel'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'is greater than zero.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4316 4337]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_WORKDIR_bad='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_WORKDIR_bad='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad)
                  op: assign_op.Equal
                  rhs: {(DQ <'Directory does not exist or is not writable: '>)}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<-a>}
                                    {<-w>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4373 4400]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <cd>
                  more_env: []
                  words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BDHASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BDHASH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BDHASH='> name:BDHASH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {(${ Id.VSub_Name BASEDIR)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sha256>
                                more_env: []
                                words: [{<sha256>} {<-q>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-L>}
                                    {(${ Id.VSub_Name BDHASH) <-install>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'No updates are available to install.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Run \''> ($ Id.VSub_Number 0) <' fetch\' first.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4486 4502]
                )
              ]
              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.AndOr
                              children: [
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-f>}
                                        {(${ Id.VSub_Name BDHASH) <'-install/INDEX-OLD'>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-f>}
                                        {(${ Id.VSub_Name BDHASH) <'-install/INDEX-NEW'>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'Update manifest is corrupt -- this should never happen.'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Re-run \''> ($ Id.VSub_Number 0) <' fetch\'.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4529 4561]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BOOTFILE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BOOTFILE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTFILE='> name:BOOTFILE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <sysctl>
                            more_env: []
                            words: [{<sysctl>} {<-n>} {<kern.bootfile>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KERNELDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KERNELDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNELDIR='> name:KERNELDIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name BOOTFILE>
                        var_name: BOOTFILE
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Percent '%'>
                            arg_word: {<Id.Lit_Slash '/'> <kernel>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {(${ Id.VSub_Name KERNELDIR)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Cannot identify running kernel'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4614 4629]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rollback_check_params>
      name: rollback_check_params
      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 '['>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <id>
                                        more_env: []
                                        words: [{<id>} {<-u>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'You must be root to run this.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4667 4687]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_WORKDIR_bad='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_WORKDIR_bad='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad)
                  op: assign_op.Equal
                  rhs: {(DQ <'Directory does not exist or is not writable: '>)}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<-a>}
                                    {<-w>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4716 4743]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <cd>
                  more_env: []
                  words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BDHASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BDHASH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BDHASH='> name:BDHASH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {(${ Id.VSub_Name BASEDIR)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sha256>
                                more_env: []
                                words: [{<sha256>} {<-q>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-L>}
                                    {(${ Id.VSub_Name BDHASH) <-rollback>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'No rollback directory found.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4829 4845]
                )
              ]
              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.AndOr
                              children: [
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-f>}
                                        {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-OLD'>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-f>}
                                        {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-NEW'>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'Update manifest is corrupt -- this should never happen.'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4863 4895]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <IDS_check_params>
      name: IDS_check_params
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<Id.Lit_VarLike 'HTTP_USER_AGENT='> 
                  (DQ <'freebsd-update ('> (${ Id.VSub_Name COMMAND) <', '> 
                    (CommandSub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          blame_tok: <uname>
                          more_env: []
                          words: [{<uname>} {<-r>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Backtick_Right '`'>
                    ) <')'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_SERVERNAME_z='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_SERVERNAME_z='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_SERVERNAME_z='> name:_SERVERNAME_z)
                  op: assign_op.Equal
                  rhs: {(DQ <'SERVERNAME must be given via command line or configuration file.'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_KEYPRINT_z='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_KEYPRINT_z='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_z='> name:_KEYPRINT_z)
                  op: assign_op.Equal
                  rhs: {(DQ <'Key must be given via -k option or configuration file.'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_KEYPRINT_bad='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_KEYPRINT_bad='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_KEYPRINT_bad='> name:_KEYPRINT_bad)
                  op: assign_op.Equal
                  rhs: {(DQ <'Invalid key fingerprint: '>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_WORKDIR_bad='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_WORKDIR_bad='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_WORKDIR_bad='> name:_WORKDIR_bad)
                  op: assign_op.Equal
                  rhs: {(DQ <'Directory does not exist or is not writable: '>)}
                )
              ]
              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 SERVERNAME))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ (${ Id.VSub_Name _SERVERNAME_z))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [4991 5006]
                )
              ]
              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 '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name KEYPRINT))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ (${ Id.VSub_Name _KEYPRINT_z))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [5042 5057]
                )
              ]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ (${ Id.VSub_Name KEYPRINT))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-qE>} {(DQ <'^[0-9a-f]{64}'> <Id.Lit_Dollar '$'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _KEYPRINT_bad))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name KEYPRINT)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [5093 5117]
                )
              ]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<-a>}
                                    {<-w>}
                                    {(DQ (${ Id.VSub_Name WORKDIR))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <': '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name _WORKDIR_bad))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name WORKDIR)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [5162 5189]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <cd>
                  more_env: []
                  words: [{<cd>} {(${ Id.VSub_Name WORKDIR)}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'RELNUM='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'RELNUM='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELNUM='> name:RELNUM)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <uname>
                                more_env: []
                                words: [{<uname>} {<-r>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {<-E>} {(SQ <'s,-p[0-9]+,,'>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {<-E>} {(SQ <'s,-SECURITY,-RELEASE,'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ARCH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ARCH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARCH='> name:ARCH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <uname>
                            more_env: []
                            words: [{<uname>} {<-m>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FETCHDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FETCHDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FETCHDIR='> name:FETCHDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PATCHDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PATCHDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATCHDIR='> name:PATCHDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH) <'/bp'>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BOOTFILE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BOOTFILE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOOTFILE='> name:BOOTFILE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <sysctl>
                            more_env: []
                            words: [{<sysctl>} {<-n>} {<kern.bootfile>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KERNELDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KERNELDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNELDIR='> name:KERNELDIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name BOOTFILE>
                        var_name: BOOTFILE
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_Percent '%'>
                            arg_word: {<Id.Lit_Slash '/'> <kernel>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {(${ Id.VSub_Name KERNELDIR)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Cannot identify running kernel'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [5355 5370]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KERNCONF='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KERNCONF='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <uname>
                            more_env: []
                            words: [{<uname>} {<-i>}]
                            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 '['>}
                                {(${ Id.VSub_Name KERNCONF)}
                                {<Id.Lit_Equals '='>}
                                {(DQ <SMP-GENERIC>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KERNCONF='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KERNCONF='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KERNCONF='> name:KERNCONF)
                          op: assign_op.Equal
                          rhs: {<SMP>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [5431 5448]
                )
              ]
              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.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(${ Id.VSub_Name KERNCONF)}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <GENERIC>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(${ Id.VSub_Name ARCH)}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <amd64>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <sysctl>
                                          more_env: []
                                          words: [{<sysctl>} {<kern.version>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [{<grep>} {<-qE>} {(SQ <'/SMP$'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'KERNCONF='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'KERNCONF='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'KERNCONF='>
                                      name: KERNCONF
                                    )
                                  op: assign_op.Equal
                                  rhs: {<SMP>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [5494 5511]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [5458 5491]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SHA256='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SHA256='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHA256='> name:SHA256)
                  op: assign_op.Equal
                  rhs: {<'/sbin/sha256'>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PHTTPGET='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PHTTPGET='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PHTTPGET='> name:PHTTPGET)
                  op: assign_op.Equal
                  rhs: {<'/usr/libexec/phttpget'>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <fetch_setup_verboselevel>
              more_env: []
              words: [{<fetch_setup_verboselevel>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_pick_server_init>
      name: fetch_pick_server_init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<serverlist_tried>}
                )
              ]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <which>
                                  more_env: []
                                  words: [{<which>} {<-s>} {<host>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<serverlist_full>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [5610 5621]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {<-n>}
                {(DQ <'Looking up '> (${ Id.VSub_Name SERVERNAME) <' mirrors... '>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'MLIST='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'MLIST='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MLIST='> name:MLIST)
                  op: assign_op.Equal
                  rhs: {(DQ <_http._tcp.> (${ Id.VSub_Name SERVERNAME))}
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <host>
                  more_env: []
                  words: [{<host>} {<-t>} {<srv>} {(DQ (${ Id.VSub_Name MLIST))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [
                    {<sed>}
                    {<-nE>}
                    {(DQ <'s/'> (${ Id.VSub_Name MLIST) <' (has SRV record|server selection) //p'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [
                    {<cut>}
                    {<-f>}
                    {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <4>}
                    {<-d>}
                    {(SQ <' '>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-e>} {(SQ <'s/\\.$//'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<serverlist_full>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (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 '['>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: [
                                          (Redir
                                            op: <Id.Redir_Less '<'>
                                            loc: (redir_loc.Fd fd:0)
                                            arg: {<serverlist_full>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                                {<-eq>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'none found.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [5743 5766]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <wc>
                        more_env: []
                        words: [{<wc>} {<-l>}]
                        redirects: [
                          (Redir
                            op: <Id.Redir_Less '<'>
                            loc: (redir_loc.Fd fd:0)
                            arg: {<serverlist_full>}
                          )
                        ]
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
                {(DQ <'mirrors found.'>)}
              ]
              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 '['>}
                                {<-n>}
                                {(DQ (${ Id.VSub_Name HTTP_PROXY) (${ Id.VSub_Name http_proxy))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'RANDVALUE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'RANDVALUE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RANDVALUE='> name:RANDVALUE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <sha256>
                                        more_env: []
                                        words: [
                                          {<sha256>}
                                          {<-qs>}
                                          {
                                            (DQ (${ Id.VSub_Name HTTP_PROXY) 
                                              (${ Id.VSub_Name http_proxy)
                                            )
                                          }
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <tr>
                                        more_env: []
                                        words: [{<tr>} {<-d>} {(SQ <a-f>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-c>} {<1-9>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [5817 5835]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'RANDVALUE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'RANDVALUE='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RANDVALUE='> name:RANDVALUE)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                blame_tok: <jot>
                                more_env: []
                                words: [{<jot>} {<-r>} {<1>} {<0>} {<999999999>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_pick_server>
      name: fetch_pick_server
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<serverlist_tried>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-23>} {<serverlist_full>} {<->}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<serverlist>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (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 '['>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: [
                                          (Redir
                                            op: <Id.Redir_Less '<'>
                                            loc: (redir_loc.Fd fd:0)
                                            arg: {<serverlist>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                                {<-eq>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'No mirrors remaining, giving up.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [5941 5964]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SRV_PRIORITY='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SRV_PRIORITY='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_PRIORITY='> name:SRV_PRIORITY)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <cut>
                                more_env: []
                                words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <' '>)} {<serverlist>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sort>
                                more_env: []
                                words: [{<sort>} {<-n>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <head>
                                more_env: []
                                words: [{<head>} {<-1>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'SRV_WSUM='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'SRV_WSUM='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_WSUM='> name:SRV_WSUM)
                      op: assign_op.Equal
                      rhs: {<0>}
                    )
                  ]
                  redirects: []
                )
              terminator: <Id.Op_Semi _>
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<X>}]
                          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 X))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: 
                            (pat.Words
                              words: [
                                {(${ Id.VSub_Name SRV_PRIORITY) 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\ '>
                                    ch: ' '
                                  ) <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'SRV_W='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'SRV_W='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W='> name:SRV_W)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (command.Simple
                                                blame_tok: <echo>
                                                more_env: []
                                                words: [{<echo>} {($ Id.VSub_DollarName X)}]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <cut>
                                                more_env: []
                                                words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <' '>)}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [<Id.Op_Pipe _>]
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'SRV_WSUM='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'SRV_WSUM='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'SRV_WSUM='>
                                      name: SRV_WSUM
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (word_part.ArithSub
                                        left: <Id.Left_DollarDParen '$(('>
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Plus
                                            left: {($ Id.VSub_DollarName SRV_WSUM)}
                                            right: {($ Id.VSub_DollarName SRV_W)}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<serverlist>})]
            )
            (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_Name SRV_WSUM)}
                                {<-eq>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SRV_WSUM='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SRV_WSUM='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_WSUM='> name:SRV_WSUM)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <grep>
                                        more_env: []
                                        words: [
                                          {<grep>}
                                          {<-E>}
                                          {(DQ <'^'> (${ Id.VSub_Name SRV_PRIORITY) <' '>)}
                                          {<serverlist>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SRV_W_ADD='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SRV_W_ADD='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W_ADD='> name:SRV_W_ADD)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6106 6121]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'SRV_W_ADD='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'SRV_W_ADD='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W_ADD='> name:SRV_W_ADD)
                      op: assign_op.Equal
                      rhs: {<0>}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SRV_RND='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SRV_RND='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_RND='> name:SRV_RND)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <expr>
                            more_env: []
                            words: [
                              {<expr>}
                              {(${ Id.VSub_Name RANDVALUE)}
                              {<Id.Lit_Other '%'>}
                              {(${ Id.VSub_Name SRV_WSUM)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<X>}]
                          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 X))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: 
                            (pat.Words
                              words: [
                                {(${ Id.VSub_Name SRV_PRIORITY) 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\ '>
                                    ch: ' '
                                  ) <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'SRV_W='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'SRV_W='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W='> name:SRV_W)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (command.Simple
                                                blame_tok: <echo>
                                                more_env: []
                                                words: [{<echo>} {($ Id.VSub_DollarName X)}]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <cut>
                                                more_env: []
                                                words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <' '>)}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [<Id.Op_Pipe _>]
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'SRV_W='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'SRV_W='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SRV_W='> name:SRV_W)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (word_part.ArithSub
                                        left: <Id.Left_DollarDParen '$(('>
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Plus
                                            left: {($ Id.VSub_DollarName SRV_W)}
                                            right: {($ Id.VSub_DollarName SRV_W_ADD)}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              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.VSub_DollarName SRV_RND)}
                                                {<-lt>}
                                                {($ Id.VSub_DollarName SRV_W)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'SERVERNAME='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'SERVERNAME='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'SERVERNAME='>
                                              name: SERVERNAME
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <echo>
                                                        more_env: []
                                                        words: [{<echo>} {($ Id.VSub_DollarName X)}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <cut>
                                                        more_env: []
                                                        words: [{<cut>} {<-f>} {<3>} {<-d>} {(SQ <' '>)}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName X))}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<serverlist_tried>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [6258 6271]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'SRV_RND='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'SRV_RND='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'SRV_RND='>
                                          name: SRV_RND
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (word_part.ArithSub
                                            left: <Id.Left_DollarDParen '$(('>
                                            anode: 
                                              (arith_expr.Binary
                                                op_id: Id.Arith_Minus
                                                left: {($ Id.VSub_DollarName SRV_RND)}
                                                right: {($ Id.VSub_DollarName SRV_W)}
                                              )
                                            right: <Id.Right_DollarDParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<serverlist>})]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_make_patchlist>
      name: fetch_make_patchlist
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [
                    {<grep>}
                    {<-vE>}
                    {
                      (DQ <'^([0-9a-f]{64})'> <Id.Lit_BadBackslash '\\'> <'|'> 
                        <Id.Lit_BadBackslash '\\'> <1> <Id.Lit_Dollar '$'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}]
                  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>} {<X>} {<Y>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <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.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<-f>}
                                                {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<Id.KW_Bang '!'>}
                                                {<-f>}
                                                {(DQ <'files/'> (${ Id.VSub_Name X) <.gz>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_DPipe _>]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Continue continue>
                                )
                              ]
                              spids: [6399 6435]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ (${ Id.VSub_Name X) <'|'> (${ Id.VSub_Name Y))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <uniq>
                  more_env: []
                  words: [{<uniq>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_progress>
      name: fetch_progress
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'LNC='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'LNC='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LNC='> name:LNC)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<x>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'LNC='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'LNC='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LNC='> name:LNC)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName LNC)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      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 '['>}
                                        {
                                          (word_part.ArithSub
                                            left: <Id.Left_DollarDParen '$(('>
                                            anode: 
                                              (arith_expr.Binary
                                                op_id: Id.Arith_Percent
                                                left: {($ Id.VSub_DollarName LNC)}
                                                right: {<Id.Lit_Digits 10>}
                                              )
                                            right: <Id.Right_DollarDParen _>
                                          )
                                        }
                                        {<Id.Lit_Equals '='>}
                                        {<0>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<-n>} {($ Id.VSub_DollarName LNC)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [6502 6522]
                        )
                        (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 '['>}
                                        {
                                          (word_part.ArithSub
                                            left: <Id.Left_DollarDParen '$(('>
                                            anode: 
                                              (arith_expr.Binary
                                                op_id: Id.Arith_Percent
                                                left: {($ Id.VSub_DollarName LNC)}
                                                right: {<Id.Lit_Digits 2>}
                                              )
                                            right: <Id.Right_DollarDParen _>
                                          )
                                        }
                                        {<Id.Lit_Equals '='>}
                                        {<0>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<-n>} {<.>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [6532 6552]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<-n>} {(DQ <' '>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <continuep>
      name: continuep
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [
                            {<read>}
                            {<-p>}
                            {(DQ <'Does this look reasonable (y/n)? '>)}
                            {<CONTINUE>}
                          ]
                          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_Name CONTINUE))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <y>
                          pattern: (pat.Words words:[{<y> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <n>
                          pattern: (pat.Words words:[{<n> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <workdir_init>
      name: workdir_init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {<files>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <touch>
              more_env: []
              words: [{<touch>} {<tINDEX.present>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_key>
      name: fetch_key
      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.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-r>}
                                    {<pub.ssl>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <Id.Left_DollarBrace '${'>
                                            more_env: []
                                            words: [{(${ Id.VSub_Name SHA256)} {<-q>} {<pub.ssl>}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                    {<Id.Lit_Equals '='>}
                                    {(${ Id.VSub_Name KEYPRINT)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [6693 6728]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {<-n>}
                {(DQ <'Fetching public key from '> (${ Id.VSub_Name SERVERNAME) <'... '>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {<pub.ssl>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch>
                  more_env: []
                  words: [
                    {<fetch>}
                    {(${ Id.VSub_Name QUIETFLAG)}
                    {<http> <Id.Lit_Colon ':'> <'//'> (${ Id.VSub_Name SERVERNAME) <'/'> 
                      (${ Id.VSub_Name FETCHDIR) <'/pub.ssl'>
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {(${ Id.VSub_Name QUIETREDIR)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-r>}
                                    {<pub.ssl>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <failed.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [6790 6803]
                )
              ]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <Id.Left_DollarBrace '${'>
                                            more_env: []
                                            words: [{(${ Id.VSub_Name SHA256)} {<-q>} {<pub.ssl>}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                    {<Id.Lit_Equals '='>}
                                    {(${ Id.VSub_Name KEYPRINT)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'key has incorrect hash.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-f>} {<pub.ssl>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [6821 6848]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <done.>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_tag>
      name: fetch_tag
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<-n>} {(DQ <'Fetching metadata signature '>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(${ Id.VSub_Name NDEBUG)}
                {
                  (DQ <'for '> (${ Id.VSub_Name RELNUM) <' from '> (${ Id.VSub_Name SERVERNAME) <'... '>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {<latest.ssl>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch>
                  more_env: []
                  words: [
                    {<fetch>}
                    {(${ Id.VSub_Name QUIETFLAG)}
                    {<http> <Id.Lit_Colon ':'> <'//'> (${ Id.VSub_Name SERVERNAME) <'/'> 
                      (${ Id.VSub_Name FETCHDIR) <'/latest.ssl'>
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {(${ Id.VSub_Name QUIETREDIR)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-r>}
                                    {<latest.ssl>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <failed.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [6958 6971]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <openssl>
                  more_env: []
                  words: [{<openssl>} {<rsautl>} {<-pubin>} {<-inkey>} {<pub.ssl>} {<-verify>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {<latest.ssl>}
                    )
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<tag.new>}
                    )
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {(${ Id.VSub_Name QUIETREDIR)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<latest.ssl>}]
              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.AndOr
                              children: [
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                blame_tok: <wc>
                                                more_env: []
                                                words: [{<wc>} {<-l>}]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Less '<'>
                                                    loc: (redir_loc.Fd fd:0)
                                                    arg: {<tag.new>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                        {<Id.Lit_Equals '='>}
                                        {<1>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [
                                        {<grep>}
                                        {<-qE>}
                                        {
                                          (DQ <'^freebsd-update'> <Id.Lit_BadBackslash '\\'> <'|'> 
                                            (${ Id.VSub_Name ARCH) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name RELNUM) <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> 
                                            <Id.Lit_BadBackslash '\\'> <'|[0-9a-f]{64}'> <Id.Lit_BadBackslash '\\'> <'|[0-9]{10}'>
                                          )
                                        }
                                        {<tag.new>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'invalid signature.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [7028 7088]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <done.>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'RELPATCHNUM='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'RELPATCHNUM='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPATCHNUM='> name:RELPATCHNUM)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <cut>
                            more_env: []
                            words: [{<cut>} {<-f>} {<4>} {<-d>} {(SQ <'|'>)}]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {<tag.new>}
                              )
                            ]
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TINDEXHASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TINDEXHASH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TINDEXHASH='> name:TINDEXHASH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <cut>
                            more_env: []
                            words: [{<cut>} {<-f>} {<5>} {<-d>} {(SQ <'|'>)}]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {<tag.new>}
                              )
                            ]
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'EOLTIME='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'EOLTIME='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EOLTIME='> name:EOLTIME)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <cut>
                            more_env: []
                            words: [{<cut>} {<-f>} {<6>} {<-d>} {(SQ <'|'>)}]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {<tag.new>}
                              )
                            ]
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_tagsanity>
      name: fetch_tagsanity
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'RELPX='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'RELPX='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPX='> name:RELPX)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <uname>
                                more_env: []
                                words: [{<uname>} {<-r>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {<-E>} {(SQ <'s,.*-,,'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        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.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(${ Id.VSub_Name RELPX)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-qE>} {(SQ <'^p[0-9]+$'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'RELPX='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'RELPX='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPX='> name:RELPX)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {(${ Id.VSub_Name RELPX)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-c>} {<2->}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [7221 7240]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'RELPX='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'RELPX='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELPX='> name:RELPX)
                      op: assign_op.Equal
                      rhs: {<0>}
                    )
                  ]
                  redirects: []
                )
              ]
              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 '['>}
                                {(DQ (${ Id.VSub_Name RELPATCHNUM))}
                                {<-lt>}
                                {(DQ (${ Id.VSub_Name RELPX))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'Files on mirror ('> (${ Id.VSub_Name RELNUM) <-p> 
                            (${ Id.VSub_Name RELPATCHNUM) <')'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <' appear older than what'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'we are currently running ('> 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Simple
                                  blame_tok: <uname>
                                  more_env: []
                                  words: [{<uname>} {<-r>}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <')!'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Cowardly refusing to proceed any further.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [7273 7294]
                )
              ]
              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.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [{<Id.Lit_LBracket '['>} {<-f>} {<tag>} {<Id.Lit_RBracket ']'>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [
                                    {<grep>}
                                    {<-qE>}
                                    {
                                      (DQ <'^freebsd-update'> <Id.Lit_BadBackslash '\\'> <'|'> 
                                        (${ Id.VSub_Name ARCH) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name RELNUM) <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> 
                                        <Id.Lit_BadBackslash '\\'> <'|[0-9a-f]{64}'> <Id.Lit_BadBackslash '\\'> <'|[0-9]{10}'>
                                      )
                                    }
                                    {<tag>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'LASTRELPATCHNUM='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'LASTRELPATCHNUM='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'LASTRELPATCHNUM='>
                              name: LASTRELPATCHNUM
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <cut>
                                    more_env: []
                                    words: [{<cut>} {<-f>} {<4>} {<-d>} {(SQ <'|'>)}]
                                    redirects: [
                                      (Redir
                                        op: <Id.Redir_Less '<'>
                                        loc: (redir_loc.Fd fd:0)
                                        arg: {<tag>}
                                      )
                                    ]
                                    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 '['>}
                                        {(DQ (${ Id.VSub_Name RELPATCHNUM))}
                                        {<-lt>}
                                        {(DQ (${ Id.VSub_Name LASTRELPATCHNUM))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-n>}
                                {
                                  (DQ <'Files on mirror ('> (${ Id.VSub_Name RELNUM) <-p> 
                                    (${ Id.VSub_Name RELPATCHNUM) <')'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <' are older than the'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<-n>} {(DQ <'most recently seen updates'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <' ('> (${ Id.VSub_Name RELNUM) <-p> 
                                    (${ Id.VSub_Name LASTRELPATCHNUM) <').'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'Cowardly refusing to proceed any further.'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [7437 7458]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [7367 7411]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_metadata_index>
      name: fetch_metadata_index
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <'Fetching metadata index... '>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {(${ Id.VSub_Name TINDEXHASH)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch>
              more_env: []
              words: [
                {<fetch>}
                {(${ Id.VSub_Name QUIETFLAG)}
                {<http> <Id.Lit_Colon ':'> <'//'> (${ Id.VSub_Name SERVERNAME) <'/'> 
                  (${ Id.VSub_Name FETCHDIR) <'/t/'> (${ Id.VSub_Name TINDEXHASH)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.Redir_Great '2>'>
              more_env: []
              words: []
              redirects: [
                (Redir
                  op: <Id.Redir_Great '2>'>
                  loc: (redir_loc.Fd fd:2)
                  arg: {(${ Id.VSub_Name QUIETREDIR)}
                )
              ]
              do_fork: F
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-f>}
                                    {(${ Id.VSub_Name TINDEXHASH)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <failed.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [7591 7606]
                )
              ]
              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 '['>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <Id.Left_DollarBrace '${'>
                                        more_env: []
                                        words: [
                                          {(${ Id.VSub_Name SHA256)}
                                          {<-q>}
                                          {(${ Id.VSub_Name TINDEXHASH)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(${ Id.VSub_Name TINDEXHASH)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'update metadata index corrupt.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [7624 7652]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <done.>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_metadata_bogus>
      name: fetch_metadata_bogus
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'The update metadata'> ($ Id.VSub_Number 1) <' is correctly signed, but'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'failed an integrity check.'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Cowardly refusing to proceed any further.'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_metadata_index_merge>
      name: fetch_metadata_index_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [METAFILE]
                  iterable: (for_iter.Words words:[{($ Id.VSub_At '@')}])
                  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 '['>}
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <grep>
                                                        more_env: []
                                                        words: [
                                                          {<grep>}
                                                          {<-E>}
                                                          {
                                                            (DQ <'^'> (${ Id.VSub_Name METAFILE) 
                                                              <Id.Lit_BadBackslash '\\'> <'|'>
                                                            )
                                                          }
                                                          {(${ Id.VSub_Name TINDEXHASH)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <wc>
                                                        more_env: []
                                                        words: [{<wc>} {<-l>}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                            {<-ne>}
                                            {<1>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <fetch_metadata_bogus>
                                  more_env: []
                                  words: [{<fetch_metadata_bogus>} {(DQ <' index'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              spids: [7749 7791]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-E>}
                            {(DQ (${ Id.VSub_Name METAFILE) <Id.Lit_BadBackslash '\\'> <'|'>)}
                            {(${ Id.VSub_Name TINDEXHASH)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<tINDEX.wanted>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (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 '['>}
                                {<-f>}
                                {<tINDEX.present>}
                                {<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: <join>
                          more_env: []
                          words: [
                            {<join>}
                            {<-t>}
                            {(SQ <'|'>)}
                            {<-v>}
                            {<2>}
                            {<tINDEX.wanted>}
                            {<tINDEX.present>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>} {<-m>} {<->} {<tINDEX.wanted>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<tINDEX.new>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<tINDEX.wanted>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [7840 7851]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [{<mv>} {<tINDEX.wanted>} {<tINDEX.new>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_metadata_index_sanity>
      name: fetch_metadata_index_sanity
      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: <grep>
                              more_env: []
                              words: [
                                {<grep>}
                                {<-qvE>}
                                {(SQ <'^[0-9A-Z.-]+\\|[0-9a-f]{64}$'>)}
                                {<tINDEX.new>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <fetch_metadata_bogus>
                      more_env: []
                      words: [{<fetch_metadata_bogus>} {(DQ <' index'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [7926 7939]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_metadata_sanity>
      name: fetch_metadata_sanity
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'P='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'P='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'P='> name:P)
                  op: assign_op.Equal
                  rhs: {(DQ <'[-+./:=,%@_[~[:alnum:]]'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'M='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'M='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'M='> name:M)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'[0-9]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9]+'> <Id.Lit_BadBackslash '\\'> 
                        <'|[0-9]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9]+'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'H='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'H='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'H='> name:H)
                  op: assign_op.Equal
                  rhs: {(DQ <'[0-9a-f]{64}'>)}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <gunzip>
                                  more_env: []
                                  words: [{<gunzip>} {<-c>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {<'files/'> ($ Id.VSub_Number 1) <.gz>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [
                                    {<grep>}
                                    {<-qvE>}
                                    {
                                      (DQ <'^[a-z]+'> <Id.Lit_BadBackslash '\\'> <'|[0-9a-z-]+'> 
                                        <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name P) <'+'> <Id.Lit_BadBackslash '\\'> <'|[fdL-]'> <Id.Lit_BadBackslash '\\'> <'|'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <fetch_metadata_bogus>
                      more_env: []
                      words: [{<fetch_metadata_bogus>} {(DQ )}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [8011 8047]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <gunzip>
                  more_env: []
                  words: [{<gunzip>} {<-c>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {<'files/'> ($ Id.VSub_Number 1) <.gz>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<4->} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<sanitycheck.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-E>} {(SQ <'^f'>)} {<sanitycheck.tmp>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [
                                    {<grep>}
                                    {<-qvE>}
                                    {
                                      (DQ <'^f'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name M) 
                                        <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name H) <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name P) <'*'> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <fetch_metadata_bogus>
                      more_env: []
                      words: [{<fetch_metadata_bogus>} {(DQ )}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [8104 8145]
                )
              ]
              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.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-E>} {(SQ <'^d'>)} {<sanitycheck.tmp>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [
                                    {<grep>}
                                    {<-qvE>}
                                    {
                                      (DQ <'^d'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name M) 
                                        <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <fetch_metadata_bogus>
                      more_env: []
                      words: [{<fetch_metadata_bogus>} {(DQ )}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [8167 8201]
                )
              ]
              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.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-E>} {(SQ <'^L'>)} {<sanitycheck.tmp>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [
                                    {<grep>}
                                    {<-qvE>}
                                    {
                                      (DQ <'^L'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name M) 
                                        <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name P) <'*'> <Id.Lit_BadBackslash '\\'> <'|'> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <fetch_metadata_bogus>
                      more_env: []
                      words: [{<fetch_metadata_bogus>} {(DQ )}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [8223 8261]
                )
              ]
              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.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [{<grep>} {<-E>} {(SQ <'^-'>)} {<sanitycheck.tmp>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [
                                    {<grep>}
                                    {<-qvE>}
                                    {
                                      (DQ <'^-'> <Id.Lit_BadBackslash '\\'> <'|'> 
                                        <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> <Id.Lit_BadBackslash '\\'> <'|'> 
                                        <Id.Lit_BadBackslash '\\'> <'|'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <fetch_metadata_bogus>
                      more_env: []
                      words: [{<fetch_metadata_bogus>} {(DQ )}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [8283 8319]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<sanitycheck.tmp>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_metadata>
      name: fetch_metadata
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_metadata_index>
                  more_env: []
                  words: [{<fetch_metadata_index>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_metadata_index_merge>
                  more_env: []
                  words: [{<fetch_metadata_index_merge>} {($ Id.VSub_At '@')}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_metadata_index_sanity>
                  more_env: []
                  words: [{<fetch_metadata_index_sanity>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [
                    {<join>}
                    {<-t>}
                    {(SQ <'|'>)}
                    {<-o>}
                    {<1.2> <Id.Lit_Comma ','> <2.2>}
                    {<tINDEX.present>}
                    {<tINDEX.new>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fetch_make_patchlist>
                  more_env: []
                  words: [{<fetch_make_patchlist>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patchlist>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (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 '['>}
                                {<-s>}
                                {<patchlist>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'Fetching '> 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <wc>
                                      more_env: []
                                      words: [{<wc>} {<-l>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<patchlist>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <tr>
                                      more_env: []
                                      words: [{<tr>} {<-d>} {(SQ <' '>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <' '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(${ Id.VSub_Name NDEBUG)}
                        {(DQ <'metadata patches.'> (${ Id.VSub_Name DDSTATS))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'|'>)} {(SQ <->)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<patchlist>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <lam>
                          more_env: []
                          words: [
                            {<lam>}
                            {<-s>}
                            {(DQ (${ Id.VSub_Name FETCHDIR) <'/tp/'>)}
                            {<->}
                            {<-s>}
                            {(DQ <.gz>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <xargs>
                          more_env: []
                          words: [
                            {<xargs>}
                            {(${ Id.VSub_Name XARGST)}
                            {(${ Id.VSub_Name PHTTPGET)}
                            {(${ Id.VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {(${ Id.VSub_Name STATSREDIR)}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <fetch_progress>
                          more_env: []
                          words: [{<fetch_progress>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'Applying metadata patches... '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<patchlist>}
                            )
                          ]
                          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>} {<X>} {<Y>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <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>}
                                                    {
                                                      (DQ (${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y) 
                                                        <.gz>
                                                      )
                                                    }
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Sentence
                                          child: 
                                            (command.ControlFlow
                                              keyword: <Id.ControlFlow_Continue continue>
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      spids: [8603 8625]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <gunzip>
                                  more_env: []
                                  words: [{<gunzip>} {<-c>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y) <.gz>}
                                    )
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<diff>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <gunzip>
                                  more_env: []
                                  words: [{<gunzip>} {<-c>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {<'files/'> (${ Id.VSub_Name X) <.gz>}
                                    )
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<diff-OLD>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [{<grep>} {<-E>} {(SQ <'^-'>)} {<diff>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <cut>
                                      more_env: []
                                      words: [{<cut>} {<-c>} {<2->}]
                                      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>} {<PREFIX>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      body: 
                                        (command.DoGroup
                                          left: <Id.KW_Do do>
                                          children: [
                                            (command.Simple
                                              blame_tok: <look>
                                              more_env: []
                                              words: [
                                                {<look>}
                                                {(DQ (${ Id.VSub_Name PREFIX))}
                                                {<diff-OLD>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          right: <Id.KW_Done done>
                                        )
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <sort>
                                      more_env: []
                                      words: [{<sort>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<diff-rm>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                                )
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [{<grep>} {<-E>} {(SQ <'^\\+'>)} {<diff>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <cut>
                                      more_env: []
                                      words: [{<cut>} {<-c>} {<2->}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<diff-add>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <comm>
                                      more_env: []
                                      words: [{<comm>} {<-23>} {<diff-OLD>} {<diff-rm>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <sort>
                                      more_env: []
                                      words: [{<sort>} {<->} {<diff-add>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<diff-NEW>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                                (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 '['>}
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <Id.Left_DollarBrace '${'>
                                                            more_env: []
                                                            words: [
                                                              {(${ Id.VSub_Name SHA256)}
                                                              {<-q>}
                                                              {<diff-NEW>}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        right: <Id.Backtick_Right '`'>
                                                      )
                                                    }
                                                    {<Id.Lit_Equals '='>}
                                                    {(${ Id.VSub_Name Y)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <mv>
                                          more_env: []
                                          words: [{<mv>} {<diff-NEW>} {<'files/'> (${ Id.VSub_Name Y)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <gzip>
                                          more_env: []
                                          words: [{<gzip>} {<-n>} {<'files/'> (${ Id.VSub_Name Y)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [8782 8807]
                                    )
                                  ]
                                  else_kw: <Id.KW_Else else>
                                  else_action: [
                                    (command.Simple
                                      blame_tok: <mv>
                                      more_env: []
                                      words: [{<mv>} {<diff-NEW>} {(${ Id.VSub_Name Y) <.bad>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <rm>
                                  more_env: []
                                  words: [
                                    {<rm>}
                                    {<-f>}
                                    {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y) <.gz>}
                                    {<diff>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <rm>
                                  more_env: []
                                  words: [{<rm>} {<-f>} {<diff-OLD>} {<diff-NEW>} {<diff-add>} {<diff-rm>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {(${ Id.VSub_Name QUIETREDIR)}
                            )
                          ]
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [8425 8436]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<tINDEX.new>})]
                  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>} {<Y>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <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>}
                                            {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)}
                                            {<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: <echo>
                                      more_env: []
                                      words: [{<echo>} {(${ Id.VSub_Name Y)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [8927 8946]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (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 '['>} {<-s>} {<filelist>} {<Id.Lit_RBracket ']'>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'Fetching '> 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <wc>
                                      more_env: []
                                      words: [{<wc>} {<-l>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<filelist>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <tr>
                                      more_env: []
                                      words: [{<tr>} {<-d>} {(SQ <' '>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <' '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <'metadata files... '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <lam>
                          more_env: []
                          words: [
                            {<lam>}
                            {<-s>}
                            {(DQ (${ Id.VSub_Name FETCHDIR) <'/m/'>)}
                            {<->}
                            {<-s>}
                            {(DQ <.gz>)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<filelist>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <xargs>
                          more_env: []
                          words: [
                            {<xargs>}
                            {(${ Id.VSub_Name XARGST)}
                            {(${ Id.VSub_Name PHTTPGET)}
                            {(${ Id.VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {(${ Id.VSub_Name QUIETREDIR)}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<Y>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {(${ Id.VSub_Name Y) <.gz>}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <failed.>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [9090 9106]
                                )
                              ]
                              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 '['>}
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            blame_tok: <gunzip>
                                                            more_env: []
                                                            words: [{<gunzip>} {<-c>}]
                                                            redirects: [
                                                              (Redir
                                                                op: <Id.Redir_Less '<'>
                                                                loc: (redir_loc.Fd fd:0)
                                                                arg: {(${ Id.VSub_Name Y) <.gz>}
                                                              )
                                                            ]
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            blame_tok: <Id.Left_DollarBrace '${'>
                                                            more_env: []
                                                            words: [{(${ Id.VSub_Name SHA256)} {<-q>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                        ops: [<Id.Op_Pipe _>]
                                                      )
                                                    right: <Id.Backtick_Right '`'>
                                                  )
                                                }
                                                {<Id.Lit_Equals '='>}
                                                {(${ Id.VSub_Name Y)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <mv>
                                      more_env: []
                                      words: [
                                        {<mv>}
                                        {(${ Id.VSub_Name Y) <.gz>}
                                        {<'files/'> (${ Id.VSub_Name Y) <.gz>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [9124 9162]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ <'metadata is corrupt.'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<filelist>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [8975 8986]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <cut>
              more_env: []
              words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)} {<tINDEX.new>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})]
              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>} {<X>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_metadata_sanity>
                          more_env: []
                          words: [{<fetch_metadata_sanity>} {(${ Id.VSub_Name X)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<filelist>})]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)} {<tINDEX.present>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<oldfiles>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)} {<tINDEX.new>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {<->} {<oldfiles>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <lam>
                  more_env: []
                  words: [{<lam>} {<-s>} {(DQ <'files/'>)} {<->} {<-s>} {(DQ <.gz>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <xargs>
                  more_env: []
                  words: [{<xargs>} {<rm>} {<-f>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<patchlist>} {<filelist>} {<oldfiles>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {(${ Id.VSub_Name TINDEXHASH)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<tINDEX.new>} {<tINDEX.present>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<tag.new>} {<tag>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_metadata_components>
      name: fetch_filter_metadata_components
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'METAHASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'METAHASH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'METAHASH='> name:METAHASH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <look>
                                more_env: []
                                words: [{<look>} {(DQ ($ Id.VSub_Number 1) <'|'>)} {<tINDEX.present>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <cut>
                                more_env: []
                                words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <gunzip>
              more_env: []
              words: [{<gunzip>} {<-c>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<'files/'> (${ Id.VSub_Name METAHASH) <.gz>}
                )
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 1) <.all>}
                )
              ]
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [C]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name COMPONENTS)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <look>
                      more_env: []
                      words: [
                        {<look>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(${ Id.VSub_Name C)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <tr>
                                      more_env: []
                                      words: [{<tr>} {(SQ <'/'>)} {(SQ <'|'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <'|'>
                          )
                        }
                        {($ Id.VSub_Number 1) <.all>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 1)}
                )
              ]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {($ Id.VSub_Number 1) <.all>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_metadata>
      name: fetch_filter_metadata
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <fetch_filter_metadata_components>
              more_env: []
              words: [{<fetch_filter_metadata_components>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<3->} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 1)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-e>} {(SQ <'s,/|d|,|d|,'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-e>} {(SQ <'s,/|-|,|-|,'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [X]
                  iterable: (for_iter.Words words:[{(${ Id.VSub_Name IGNOREPATHS)}])
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-E>}
                            {(DQ <'^'> (${ Id.VSub_Name X))}
                            {($ Id.VSub_Number 1) <.tmp>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 1) <.tmp>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1)}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {($ Id.VSub_Number 1) <.tmp>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_kernel_names>
      name: fetch_filter_kernel_names
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [
                    {<grep>}
                    {<Id.Lit_Other '^'> <'/boot/'> ($ Id.VSub_Number 2)}
                    {($ Id.VSub_Number 1)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [
                    {<sed>}
                    {<-e>}
                    {(DQ <'s,/boot/'> ($ Id.VSub_Number 2) <','> (${ Id.VSub_Name KERNELDIR) <',g'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<->} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-d>}
                                    {<'/boot/'> ($ Id.VSub_Number 2)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <grep>
                      more_env: []
                      words: [
                        {<grep>}
                        {<-v>}
                        {<Id.Lit_Other '^'> <'/boot/'> ($ Id.VSub_Number 2)}
                        {($ Id.VSub_Number 1)}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_Number 1) <.tmp>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [9770 9784]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_inspect_system>
      name: fetch_inspect_system
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {<.err>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<-n>} {(DQ <'Inspecting system... '>)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 3)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<F>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <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.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<-e>}
                                                {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ (${ Id.VSub_Name F) <'|-||||||'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Continue continue>
                                )
                              ]
                              spids: [9920 9939]
                            )
                          ]
                          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.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<-r>}
                                                {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [
                                    {<echo>}
                                    {
                                      (DQ <'Cannot read file: '> (${ Id.VSub_Name BASEDIR) <'/'> 
                                        (${ Id.VSub_Name F)
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/stderr'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <touch>
                                  more_env: []
                                  words: [{<touch>} {<.err>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              spids: [9958 9977]
                            )
                          ]
                          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 '['>}
                                            {<-L>}
                                            {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name F) <'|L|'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <stat>
                                      more_env: []
                                      words: [
                                        {<stat>}
                                        {<-n>}
                                        {<-f>}
                                        {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)}
                                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <readlink>
                                      more_env: []
                                      words: [
                                        {<readlink>}
                                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [10017 10034]
                            )
                            (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 '['>}
                                            {<-f>}
                                            {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name F) <'|f|'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <stat>
                                      more_env: []
                                      words: [
                                        {<stat>}
                                        {<-n>}
                                        {<-f>}
                                        {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)}
                                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <sha256>
                                      more_env: []
                                      words: [
                                        {<sha256>}
                                        {<-q>}
                                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [10081 10098]
                            )
                            (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 '['>}
                                            {<-d>}
                                            {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name F) <'|d|'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <stat>
                                      more_env: []
                                      words: [
                                        {<stat>}
                                        {<-f>}
                                        {(SQ <'%d-%i|%u|%g|%Mp%Lp|%Of|'>)}
                                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [10147 10164]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'Unknown file type: '> (${ Id.VSub_Name BASEDIR) <'/'> 
                                    (${ Id.VSub_Name F)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/stderr'>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <touch>
                              more_env: []
                              words: [{<touch>} {<.err>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<filelist>})]
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-k>} {<3> <Id.Lit_Comma ','> <3>} {<-t>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 2) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<filelist>}]
              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 '['>} {<-f>} {<.err>} {<Id.Lit_RBracket ']'>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [10271 10282]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [
                    {<cut>}
                    {<-f>}
                    {<1> <Id.Lit_Comma ','> <3>}
                    {<-d>}
                    {(SQ <'|'>)}
                    {($ Id.VSub_Number 2) <.tmp>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-s>} {<-u>} {<-k>} {<2> <Id.Lit_Comma ','> <2>} {<-t>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [
                    {<join>}
                    {<-1>}
                    {<2>}
                    {<-2>}
                    {<3>}
                    {<-t>}
                    {(SQ <'|'>)}
                    {<->}
                    {($ Id.VSub_Number 2) <.tmp>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <awk>
                  more_env: []
                  words: [
                    {<awk>}
                    {<-F>}
                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\|'> ch:'|')}
                    {<-v>}
                    {<Id.Lit_VarLike 'OFS='> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\|'>
                        ch: '|'
                      )
                    }
                    {
                      (SQ <'{\n'> <'\t\t    if (($2 == $3) || ($4 == "-"))\n'> 
                        <'\t\t\tprint $3,$4,$5,$6,$7,$8,$9,""\n'> <'\t\t    else\n'> <'\t\t\tprint $3,$4,$5,$6,$7,$8,$9,$2\n'> <'\t\t}'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 2)}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {($ Id.VSub_Number 2) <.tmp>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <done.>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_mergechanges>
      name: fetch_filter_mergechanges
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [F]
              iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Pipeline
                      children: [
                        (command.ForEach
                          keyword: <Id.KW_For for>
                          iter_names: [X]
                          iterable: (for_iter.Words words:[{(${ Id.VSub_Name MERGECHANGES)}])
                          semi_tok: <Id.Op_Semi _>
                          body: 
                            (command.DoGroup
                              left: <Id.KW_Do do>
                              children: [
                                (command.Simple
                                  blame_tok: <grep>
                                  more_env: []
                                  words: [
                                    {<grep>}
                                    {<-E>}
                                    {(DQ <'^'> (${ Id.VSub_Name X))}
                                    {(${ Id.VSub_Name F)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [
                            {<cut>}
                            {<-f>}
                            {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>}
                            {<-d>}
                            {(SQ <'|'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(${ Id.VSub_Name F) <-values>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [
                    {<comm>}
                    {<-13>}
                    {($ Id.VSub_Number 1) <-values>}
                    {($ Id.VSub_Number 2) <-values>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fgrep>
                  more_env: []
                  words: [{<fgrep>} {(SQ <'|f|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 2) <-paths>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<X>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <look>
                          more_env: []
                          words: [
                            {<look>}
                            {(DQ (${ Id.VSub_Name X) <'|'>)}
                            {($ Id.VSub_Number 1) <-values>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <head>
                          more_env: []
                          words: [{<head>} {<-1>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_Number 2) <-paths>}
                )
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 3)}
                )
              ]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {($ Id.VSub_Number 1) <-values>}
                {($ Id.VSub_Number 2) <-values>}
                {($ Id.VSub_Number 2) <-paths>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_unmodified_notpresent>
      name: fetch_filter_unmodified_notpresent
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [X]
                  iterable: (for_iter.Words words:[{(${ Id.VSub_Name UPDATEIFUNMODIFIED)}])
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {($ Id.VSub_Number 1)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {($ Id.VSub_Number 3)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [
                    {<cut>}
                    {<-f>}
                    {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>}
                    {<-d>}
                    {(SQ <'|'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <-values>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [X]
                  iterable: (for_iter.Words words:[{(${ Id.VSub_Name UPDATEIFUNMODIFIED)}])
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {($ Id.VSub_Number 2)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [
                    {<cut>}
                    {<-f>}
                    {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>}
                    {<-d>}
                    {(SQ <'|'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 2) <-values>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [
                    {<comm>}
                    {<-13>}
                    {($ Id.VSub_Number 1) <-values>}
                    {($ Id.VSub_Number 2) <-values>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-t>} {(SQ <'|'>)} {<-k>} {<1> <Id.Lit_Comma ','> <1>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<mlines.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 4)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [{<join>} {<-v>} {<2>} {<-t>} {(SQ <'|'>)} {<->} {<mlines.tmp>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<mlines>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {($ Id.VSub_Number 1) <-values>}
                {($ Id.VSub_Number 2) <-values>}
                {<mlines.tmp>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [
                    {<cut>}
                    {<-f>}
                    {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>}
                    {<-d>}
                    {(SQ <'|'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fgrep>
                  more_env: []
                  words: [{<fgrep>} {(SQ <'|-|'>)}]
                  redirects: [(Redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<mlines>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [X]
              iterable: 
                (for_iter.Words
                  words: [{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 3)}]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <sort>
                      more_env: []
                      words: [
                        {<sort>}
                        {<-t>}
                        {(SQ <'|'>)}
                        {<-k>}
                        {<1> <Id.Lit_Comma ','> <1>}
                        {(${ Id.VSub_Name X)}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name X) <.tmp>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<mlines>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <join>
                          more_env: []
                          words: [
                            {<join>}
                            {<-v>}
                            {<2>}
                            {<-t>}
                            {(SQ <'|'>)}
                            {<->}
                            {(${ Id.VSub_Name X) <.tmp>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(${ Id.VSub_Name X)}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {(${ Id.VSub_Name X) <.tmp>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <fgrep>
                  more_env: []
                  words: [{<fgrep>} {<-v>} {(SQ <'|-|'>)} {<mlines>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<modifiedfiles>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<mlines>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_allowadd>
      name: fetch_filter_allowadd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 1)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fgrep>
                  more_env: []
                  words: [{<fgrep>} {(SQ <'|-'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<filesnotpresent>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (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_Name ALLOWADD)}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <yes>)}
                                {<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: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {($ Id.VSub_Number 2)}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <join>
                          more_env: []
                          words: [{<join>} {<-v>} {<1>} {<-t>} {(SQ <'|'>)} {<->} {<filesnotpresent>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_Number 2) <.tmp>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [{<mv>} {($ Id.VSub_Number 2) <.tmp>} {($ Id.VSub_Number 2)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [11226 11244]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 1)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [{<join>} {<-v>} {<1>} {<-t>} {(SQ <'|'>)} {<->} {<filesnotpresent>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<filesnotpresent>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_allowdelete>
      name: fetch_filter_allowdelete
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [X]
              iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1-2>} {<-d>} {(SQ <'|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(${ Id.VSub_Name X)}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>} {<-u>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(${ Id.VSub_Name X) <.nodes>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              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.VSub_Name ALLOWDELETE)}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <yes>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <comm>
                      more_env: []
                      words: [
                        {<comm>}
                        {<-23>}
                        {($ Id.VSub_Number 1) <.nodes>}
                        {($ Id.VSub_Number 2) <.nodes>}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_Number 1) <.badnodes>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [11419 11437]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <Id.Lit_Colon ':'>
                  more_env: []
                  words: [{<Id.Lit_Colon ':'>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.badnodes>}
                    )
                  ]
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<X>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <look>
                          more_env: []
                          words: [{<look>} {(DQ (${ Id.VSub_Name X) <'|'>)} {($ Id.VSub_Number 1)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 1) <.badnodes>}
                    )
                  ]
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {($ Id.VSub_Number 1) <.badnodes>}
                {($ Id.VSub_Number 1) <.nodes>}
                {($ Id.VSub_Number 2) <.nodes>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_modified_metadata>
      name: fetch_filter_modified_metadata
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [X]
              iterable: (for_iter.Words words:[{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <cut>
                      more_env: []
                      words: [{<cut>} {<-f>} {<1-6>} {<-d>} {(SQ <'|'>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(${ Id.VSub_Name X)}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(${ Id.VSub_Name X) <.metadata>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              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.VSub_Name KEEPMODIFIEDMETADATA)}
                                {<Id.Lit_Equals '='>}
                                {(DQ <yes>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <comm>
                      more_env: []
                      words: [
                        {<comm>}
                        {<-13>}
                        {($ Id.VSub_Number 1) <.metadata>}
                        {($ Id.VSub_Number 2) <.metadata>}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<keepmeta>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [11613 11630]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <Id.Lit_Colon ':'>
                  more_env: []
                  words: [{<Id.Lit_Colon ':'>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<keepmeta>})]
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 3) <.remove>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 3) <.add>}
                )
              ]
              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>} {<LINE>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NODE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NODE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NODE='> name:NODE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-f>} {<1-2>} {<-d>} {(SQ <'|'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <look>
                      more_env: []
                      words: [{<look>} {(DQ (${ Id.VSub_Name NODE) <'|'>)} {($ Id.VSub_Number 3)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_Number 3) <.remove>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <look>
                          more_env: []
                          words: [{<look>} {(DQ (${ Id.VSub_Name NODE) <'|'>)} {($ Id.VSub_Number 3)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<7->} {<-d>} {(SQ <'|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <lam>
                          more_env: []
                          words: [{<lam>} {<-s>} {(DQ (${ Id.VSub_Name LINE) <'|'>)} {<->}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_Number 3) <.add>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<keepmeta>})]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {($ Id.VSub_Number 3) <.remove>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 3)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>} {<->} {($ Id.VSub_Number 3) <.add>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 3) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 3) <.tmp>} {($ Id.VSub_Number 3)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {<keepmeta>}
                {($ Id.VSub_Number 1) <.metadata>}
                {($ Id.VSub_Number 2) <.metadata>}
                {($ Id.VSub_Number 3) <.add>}
                {($ Id.VSub_Number 3) <.remove>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_filter_uptodate>
      name: fetch_filter_uptodate
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <comm>
              more_env: []
              words: [{<comm>} {<-23>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 1) <.tmp>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <comm>
              more_env: []
              words: [{<comm>} {<-13>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 2) <.tmp>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 2) <.tmp>} {($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_files_premerge>
      name: fetch_files_premerge
      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 '['>}
                                {<-s>}
                                {($ Id.VSub_Number 1)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'Fetching files from '> (${ Id.VSub_Name OLDRELNUM) <' for merging... '>)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <fgrep>
                          more_env: []
                          words: [{<fgrep>} {(SQ <'|f|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {($ Id.VSub_Number 1)}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<3>} {<-d>} {(SQ <'|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>} {<-u>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<files.wanted>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<Y>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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>}
                                                {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)}
                                                {<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: <echo>
                                          more_env: []
                                          words: [{<echo>} {(${ Id.VSub_Name Y)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [12027 12046]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<files.wanted>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<filelist>}
                        )
                      ]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <lam>
                          more_env: []
                          words: [
                            {<lam>}
                            {<-s>}
                            {(DQ (${ Id.VSub_Name OLDFETCHDIR) <'/f/'>)}
                            {<->}
                            {<-s>}
                            {(DQ <.gz>)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<filelist>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <xargs>
                          more_env: []
                          words: [
                            {<xargs>}
                            {(${ Id.VSub_Name XARGST)}
                            {(${ Id.VSub_Name PHTTPGET)}
                            {(${ Id.VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {(${ Id.VSub_Name QUIETREDIR)}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<Y>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {(${ Id.VSub_Name Y) <.gz>}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <failed.>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [12139 12155]
                                )
                              ]
                              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 '['>}
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            blame_tok: <gunzip>
                                                            more_env: []
                                                            words: [{<gunzip>} {<-c>}]
                                                            redirects: [
                                                              (Redir
                                                                op: <Id.Redir_Less '<'>
                                                                loc: (redir_loc.Fd fd:0)
                                                                arg: {(${ Id.VSub_Name Y) <.gz>}
                                                              )
                                                            ]
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            blame_tok: <Id.Left_DollarBrace '${'>
                                                            more_env: []
                                                            words: [{(${ Id.VSub_Name SHA256)} {<-q>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                        ops: [<Id.Op_Pipe _>]
                                                      )
                                                    right: <Id.Backtick_Right '`'>
                                                  )
                                                }
                                                {<Id.Lit_Equals '='>}
                                                {(${ Id.VSub_Name Y)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <mv>
                                      more_env: []
                                      words: [
                                        {<mv>}
                                        {(${ Id.VSub_Name Y) <.gz>}
                                        {<'files/'> (${ Id.VSub_Name Y) <.gz>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [12173 12211]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ (${ Id.VSub_Name Y) <' has incorrect hash.'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<filelist>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<filelist>} {<files.wanted>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [11939 11950]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_files_prepare>
      name: fetch_files_prepare
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<-n>} {(DQ <'Preparing to download files... '>)}]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [X]
              iterable: 
                (for_iter.Words
                  words: [{($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 3)}]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [
                            {<cut>}
                            {<-f>}
                            {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>}
                            {<-d>}
                            {(SQ <'|'>)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(${ Id.VSub_Name X)}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <fgrep>
                          more_env: []
                          words: [{<fgrep>} {(SQ <'|f|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <3>} {<-d>} {(SQ <'|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(${ Id.VSub_Name X) <.hashes>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 3) <.hashes>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  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>} {<HASH>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <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.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<-f>}
                                                {<'files/'> (${ Id.VSub_Name HASH) <.gz>}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(${ Id.VSub_Name HASH)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              spids: [12437 12454]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<files.wanted>}
                    )
                  ]
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [
                    {<comm>}
                    {<-12>}
                    {($ Id.VSub_Number 1) <.hashes>}
                    {($ Id.VSub_Number 2) <.hashes>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<unmodified.files>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<LINE>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'F='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'F='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'F='> name:F)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'HASH='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'HASH='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HASH='> name:HASH)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {(DQ (${ Id.VSub_Name LINE))}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                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 '['>}
                                        {<-f>}
                                        {<'files/'> (${ Id.VSub_Name HASH) <.gz>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                          spids: [12595 12610]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <cp>
                      more_env: []
                      words: [
                        {<cp>}
                        {(DQ (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F))}
                        {<tmpfile>}
                      ]
                      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 '['>}
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                blame_tok: <sha256>
                                                more_env: []
                                                words: [{<sha256>} {<-q>} {<tmpfile>}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                        {(${ Id.VSub_Name HASH)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'File changed while FreeBSD Update running: '> 
                                    (${ Id.VSub_Name F)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [12639 12663]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <gzip>
                      more_env: []
                      words: [{<gzip>} {<-c>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<tmpfile>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'files/'> (${ Id.VSub_Name HASH) <.gz>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<tmpfile>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {($ Id.VSub_Number 2) <.hashes>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [
                    {<sort>}
                    {<-k>}
                    {<1> <Id.Lit_Comma ','> <1>}
                    {<-t>}
                    {(SQ <'|'>)}
                    {($ Id.VSub_Number 3) <.hashes>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [
                    {<join>}
                    {<-t>}
                    {(SQ <'|'>)}
                    {<-o>}
                    {<2.2> <Id.Lit_Comma ','> <1.2>}
                    {<->}
                    {<unmodified.files>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fetch_make_patchlist>
                  more_env: []
                  words: [{<fetch_make_patchlist>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patchlist>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {<unmodified.files>}
                {($ Id.VSub_Number 1) <.hashes>}
                {($ Id.VSub_Number 2) <.hashes>}
                {($ Id.VSub_Number 3) <.hashes>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <done.>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_files>
      name: fetch_files
      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 '['>}
                                {<-s>}
                                {<patchlist>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'Fetching '> 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <wc>
                                      more_env: []
                                      words: [{<wc>} {<-l>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<patchlist>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <tr>
                                      more_env: []
                                      words: [{<tr>} {<-d>} {(SQ <' '>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <' '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(${ Id.VSub_Name NDEBUG)}
                        {(DQ <patches.> (${ Id.VSub_Name DDSTATS))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'|'>)} {(SQ <->)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<patchlist>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <lam>
                          more_env: []
                          words: [{<lam>} {<-s>} {(DQ (${ Id.VSub_Name PATCHDIR) <'/'>)} {<->}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <xargs>
                          more_env: []
                          words: [
                            {<xargs>}
                            {(${ Id.VSub_Name XARGST)}
                            {(${ Id.VSub_Name PHTTPGET)}
                            {(${ Id.VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {(${ Id.VSub_Name STATSREDIR)}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <fetch_progress>
                          more_env: []
                          words: [{<fetch_progress>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'Applying patches... '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<patchlist>}
                            )
                          ]
                          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>} {<X>} {<Y>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <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>}
                                                    {(DQ (${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y))}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Sentence
                                          child: 
                                            (command.ControlFlow
                                              keyword: <Id.ControlFlow_Continue continue>
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                      spids: [13001 13022]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <gunzip>
                                  more_env: []
                                  words: [{<gunzip>} {<-c>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {<'files/'> (${ Id.VSub_Name X) <.gz>}
                                    )
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<OLD>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <bspatch>
                                  more_env: []
                                  words: [
                                    {<bspatch>}
                                    {<OLD>}
                                    {<NEW>}
                                    {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y)}
                                  ]
                                  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 '['>}
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <Id.Left_DollarBrace '${'>
                                                            more_env: []
                                                            words: [
                                                              {(${ Id.VSub_Name SHA256)}
                                                              {<-q>}
                                                              {<NEW>}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        right: <Id.Backtick_Right '`'>
                                                      )
                                                    }
                                                    {<Id.Lit_Equals '='>}
                                                    {(${ Id.VSub_Name Y)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <mv>
                                          more_env: []
                                          words: [{<mv>} {<NEW>} {<'files/'> (${ Id.VSub_Name Y)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <gzip>
                                          more_env: []
                                          words: [{<gzip>} {<-n>} {<'files/'> (${ Id.VSub_Name Y)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [13064 13089]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <rm>
                                  more_env: []
                                  words: [
                                    {<rm>}
                                    {<-f>}
                                    {<diff>}
                                    {<OLD>}
                                    {<NEW>}
                                    {(${ Id.VSub_Name X) <-> (${ Id.VSub_Name Y)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {(${ Id.VSub_Name QUIETREDIR)}
                            )
                          ]
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [12833 12844]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<Y>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <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>}
                                        {(DQ <'files/'> (${ Id.VSub_Name Y) <.gz>)}
                                        {<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: <echo>
                                  more_env: []
                                  words: [{<echo>} {(${ Id.VSub_Name Y)}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [13167 13186]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<files.wanted>}
                )
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<filelist>}
                )
              ]
            )
            (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 '['>} {<-s>} {<filelist>} {<Id.Lit_RBracket ']'>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ <'Fetching '> 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <wc>
                                      more_env: []
                                      words: [{<wc>} {<-l>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<filelist>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <tr>
                                      more_env: []
                                      words: [{<tr>} {<-d>} {(SQ <' '>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <' '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name NDEBUG)} {(DQ <'files... '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <lam>
                          more_env: []
                          words: [
                            {<lam>}
                            {<-s>}
                            {(DQ (${ Id.VSub_Name FETCHDIR) <'/f/'>)}
                            {<->}
                            {<-s>}
                            {(DQ <.gz>)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<filelist>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <xargs>
                          more_env: []
                          words: [
                            {<xargs>}
                            {(${ Id.VSub_Name XARGST)}
                            {(${ Id.VSub_Name PHTTPGET)}
                            {(${ Id.VSub_Name SERVERNAME)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {(${ Id.VSub_Name QUIETREDIR)}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<Y>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {(${ Id.VSub_Name Y) <.gz>}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <failed.>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [13327 13343]
                                )
                              ]
                              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 '['>}
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            blame_tok: <gunzip>
                                                            more_env: []
                                                            words: [{<gunzip>} {<-c>}]
                                                            redirects: [
                                                              (Redir
                                                                op: <Id.Redir_Less '<'>
                                                                loc: (redir_loc.Fd fd:0)
                                                                arg: {(${ Id.VSub_Name Y) <.gz>}
                                                              )
                                                            ]
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            blame_tok: <Id.Left_DollarBrace '${'>
                                                            more_env: []
                                                            words: [{(${ Id.VSub_Name SHA256)} {<-q>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                        ops: [<Id.Op_Pipe _>]
                                                      )
                                                    right: <Id.Backtick_Right '`'>
                                                  )
                                                }
                                                {<Id.Lit_Equals '='>}
                                                {(${ Id.VSub_Name Y)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <mv>
                                      more_env: []
                                      words: [
                                        {<mv>}
                                        {(${ Id.VSub_Name Y) <.gz>}
                                        {<'files/'> (${ Id.VSub_Name Y) <.gz>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [13361 13399]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ (${ Id.VSub_Name Y) <' has incorrect hash.'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<filelist>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [13212 13223]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<files.wanted>} {<filelist>} {<patchlist>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_create_manifest>
      name: fetch_create_manifest
      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 '['>}
                                {<-L>}
                                {(DQ (${ Id.VSub_Name BDHASH) <-install>)}
                                {<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>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-install/'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-install>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [13488 13504]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              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 '['>}
                                    {<-s>}
                                    {<modifiedfiles>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {<-n>}
                            {(DQ <'The following files are affected by updates, '>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'but no changes have'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <'been downloaded because the files have been '>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'modified locally:'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cat>
                          more_env: []
                          words: [{<cat>} {<modifiedfiles>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [13533 13544]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$PAGER'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName PAGER)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<modifiedfiles>}]
              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.AndOr
                              children: [
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-s>}
                                        {<INDEX-PRESENT>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-s>}
                                        {<INDEX-NEW>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'No updates needed to update system to '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ (${ Id.VSub_Name RELNUM) <-p> (${ Id.VSub_Name RELPATCHNUM) <.>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  spids: [13604 13630]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {<INDEX-PRESENT>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<INDEX-PRESENT.flist>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<INDEX-NEW>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<INDEX-NEW.flist>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <comm>
              more_env: []
              words: [{<comm>} {<-23>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<files.removed>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <comm>
              more_env: []
              words: [{<comm>} {<-13>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<files.added>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <comm>
              more_env: []
              words: [{<comm>} {<-12>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<files.updated>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<INDEX-PRESENT.flist>} {<INDEX-NEW.flist>}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              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 '['>}
                                    {<-s>}
                                    {<files.removed>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <'The following files will be removed '>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'as part of updating to '> (${ Id.VSub_Name RELNUM) <-p> 
                                (${ Id.VSub_Name RELPATCHNUM) <':'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cat>
                          more_env: []
                          words: [{<cat>} {<files.removed>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [13784 13795]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$PAGER'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName PAGER)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<files.removed>}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              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 '['>}
                                    {<-s>}
                                    {<files.added>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <'The following files will be added '>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'as part of updating to '> (${ Id.VSub_Name RELNUM) <-p> 
                                (${ Id.VSub_Name RELPATCHNUM) <':'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cat>
                          more_env: []
                          words: [{<cat>} {<files.added>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [13847 13858]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$PAGER'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName PAGER)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<files.added>}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              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 '['>}
                                    {<-s>}
                                    {<files.updated>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <'The following files will be updated '>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'as part of updating to '> (${ Id.VSub_Name RELNUM) <-p> 
                                (${ Id.VSub_Name RELPATCHNUM) <':'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cat>
                          more_env: []
                          words: [{<cat>} {<files.updated>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [13910 13921]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$PAGER'>
                  more_env: []
                  words: [{($ Id.VSub_DollarName PAGER)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<files.updated>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'MDIR='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'MDIR='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MDIR='> name:MDIR)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                blame_tok: <mktemp>
                                more_env: []
                                words: [{<mktemp>} {<-d>} {<install.XXXXXX>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<INDEX-PRESENT>} {(${ Id.VSub_Name MDIR) <'/INDEX-OLD'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<INDEX-NEW>} {(${ Id.VSub_Name MDIR) <'/INDEX-NEW'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <ln>
              more_env: []
              words: [{<ln>} {<-s>} {(${ Id.VSub_Name MDIR)} {(${ Id.VSub_Name BDHASH) <-install>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_warn_eol>
      name: fetch_warn_eol
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NOWTIME='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NOWTIME='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOWTIME='> name:NOWTIME)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <date>
                            more_env: []
                            words: [{<date>} {(DQ <'+%s'>)}]
                            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 '['>}
                                {<-f>}
                                {<lasteolwarn>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'LASTWARN='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'LASTWARN='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTWARN='> name:LASTWARN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <cat>
                                    more_env: []
                                    words: [{<cat>} {<lasteolwarn>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [14070 14081]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'LASTWARN='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'LASTWARN='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTWARN='> name:LASTWARN)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                blame_tok: <expr>
                                more_env: []
                                words: [{<expr>} {(${ Id.VSub_Name NOWTIME)} {<->} {<63072000>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              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 '['>}
                                {(${ Id.VSub_Name EOLTIME)}
                                {<-lt>}
                                {(${ Id.VSub_Name NOWTIME)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <cat>
                      more_env: []
                      words: [{<cat>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DLessDash '<<-'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'WARNING: '>
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      blame_tok: <uname>
                                      more_env: []
                                      words: [{<uname>} {<-sr>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                                <' HAS PASSED ITS END-OF-LIFE DATE.\n'>
                                <'Any security issues discovered after '>
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      blame_tok: <date>
                                      more_env: []
                                      words: [{<date>} {<-r>} {(${ Id.VSub_Name EOLTIME)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                                <'\n'>
                                <'will not have been corrected.\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [14121 14138]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SINCEWARN='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SINCEWARN='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SINCEWARN='> name:SINCEWARN)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <expr>
                            more_env: []
                            words: [
                              {<expr>}
                              {(${ Id.VSub_Name NOWTIME)}
                              {<->}
                              {(${ Id.VSub_Name LASTWARN)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TIMELEFT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TIMELEFT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TIMELEFT='> name:TIMELEFT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <expr>
                            more_env: []
                            words: [
                              {<expr>}
                              {(${ Id.VSub_Name EOLTIME)}
                              {<->}
                              {(${ Id.VSub_Name NOWTIME)}
                            ]
                            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 '['>}
                                {(${ Id.VSub_Name TIMELEFT)}
                                {<-gt>}
                                {<7884000>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [14233 14248]
                )
              ]
              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 '['>}
                                {(${ Id.VSub_Name TIMELEFT)}
                                {<-gt>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <expr>
                                        more_env: []
                                        words: [
                                          {<expr>}
                                          {(${ Id.VSub_Name SINCEWARN)}
                                          {
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\*'>
                                              ch: '*'
                                            )
                                          }
                                          {<3>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [14268 14297]
                )
              ]
              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 '['>}
                                {(${ Id.VSub_Name TIMELEFT)}
                                {<-lt>}
                                {<604800>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'UNIT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'UNIT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT)
                          op: assign_op.Equal
                          rhs: {(DQ <day>)}
                        )
                      ]
                      redirects: []
                    )
                    (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: {<86400>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [14313 14328]
                )
                (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 '['>}
                                {(${ Id.VSub_Name TIMELEFT)}
                                {<-lt>}
                                {<2678400>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'UNIT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'UNIT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT)
                          op: assign_op.Equal
                          rhs: {(DQ <week>)}
                        )
                      ]
                      redirects: []
                    )
                    (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: {<604800>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [14341 14356]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'UNIT='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'UNIT='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT)
                      op: assign_op.Equal
                      rhs: {(DQ <month>)}
                    )
                  ]
                  redirects: []
                )
                (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: {<2678400>}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NUM='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NUM='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NUM='> name:NUM)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <expr>
                            more_env: []
                            words: [
                              {<expr>}
                              {(${ Id.VSub_Name TIMELEFT)}
                              {<'/'>}
                              {(${ Id.VSub_Name SIZE)}
                            ]
                            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 '['>}
                                {(${ Id.VSub_Name NUM)}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {<1>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'UNIT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'UNIT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNIT='> name:UNIT)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name UNIT) <s>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [14408 14424]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'WARNING: '>
                        (CommandSub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              blame_tok: <uname>
                              more_env: []
                              words: [{<uname>} {<-sr>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                        <' is approaching its End-of-Life date.\n'>
                        <'It is strongly recommended that you upgrade to a newer\n'>
                        <'release within the next '>
                        (${ Id.VSub_Name NUM)
                        <' '>
                        (${ Id.VSub_Name UNIT)
                        <'.\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(${ Id.VSub_Name NOWTIME)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<lasteolwarn>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fetch_run>
      name: fetch_run
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <workdir_init>
                  more_env: []
                  words: [{<workdir_init>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_pick_server_init>
                  more_env: []
                  words: [{<fetch_pick_server_init>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fetch_pick_server>
                  more_env: []
                  words: [{<fetch_pick_server>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <fetch_key>
                              more_env: []
                              words: [{<fetch_key>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_pick_server>
                          more_env: []
                          words: [{<fetch_pick_server>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <fetch_tag>
                              more_env: []
                              words: [{<fetch_tag>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_pick_server>
                          more_env: []
                          words: [{<fetch_pick_server>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_tagsanity>
                  more_env: []
                  words: [{<fetch_tagsanity>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_metadata>
                  more_env: []
                  words: [{<fetch_metadata>} {<INDEX-NEW>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_filter_metadata>
                  more_env: []
                  words: [{<fetch_filter_metadata>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_filter_metadata>
                  more_env: []
                  words: [{<fetch_filter_metadata>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <fetch_filter_kernel_names>
              more_env: []
              words: [{<fetch_filter_kernel_names>} {<INDEX-NEW>} {(${ Id.VSub_Name KERNCONF)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_kernel_names>
              more_env: []
              words: [{<fetch_filter_kernel_names>} {<INDEX-OLD>} {(${ Id.VSub_Name KERNCONF)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_inspect_system>
                  more_env: []
                  words: [{<fetch_inspect_system>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <fetch_filter_unmodified_notpresent>
              more_env: []
              words: [
                {<fetch_filter_unmodified_notpresent>}
                {<INDEX-OLD>}
                {<INDEX-PRESENT>}
                {<INDEX-NEW>}
                {<'/dev/null'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_allowadd>
              more_env: []
              words: [{<fetch_filter_allowadd>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_allowdelete>
              more_env: []
              words: [{<fetch_filter_allowdelete>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_modified_metadata>
              more_env: []
              words: [{<fetch_filter_modified_metadata>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_uptodate>
              more_env: []
              words: [{<fetch_filter_uptodate>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_files_prepare>
                  more_env: []
                  words: [{<fetch_files_prepare>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_files>
                  more_env: []
                  words: [{<fetch_files>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_create_manifest>
                  more_env: []
                  words: [{<fetch_create_manifest>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_warn_eol>
                  more_env: []
                  words: [{<fetch_warn_eol>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <upgrade_guess_components>
      name: upgrade_guess_components
      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 '['>}
                                {(DQ (${ Id.VSub_Name STRICTCOMPONENTS))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <no>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_filter_metadata_components>
                          more_env: []
                          words: [{<fetch_filter_metadata_components>} {($ Id.VSub_Number 1)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'Inspecting system... '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1-3>} {<-d>} {(SQ <'|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<INDEX-ALL>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}]
                          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>} {<C>} {<S>} {<F>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <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 '['>}
                                                    {<-e>}
                                                    {(${ Id.VSub_Name BASEDIR) <'/'> 
                                                      (${ Id.VSub_Name F)
                                                    }
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [
                                            {<echo>}
                                            {
                                              (DQ <'+ '> (${ Id.VSub_Name C) <'|'> (${ Id.VSub_Name S))
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [15003 15020]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [
                                    {<echo>}
                                    {(DQ <'= '> (${ Id.VSub_Name C) <'|'> (${ Id.VSub_Name S))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <uniq>
                          more_env: []
                          words: [{<uniq>} {<-c>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sed>
                          more_env: []
                          words: [{<sed>} {<-E>} {(SQ <'s,^ +,,'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<compfreq>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {(SQ <' = '>)} {<compfreq>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <3>} {<-d>} {(SQ <' '>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>} {<-k>} {<2> <Id.Lit_Comma ','> <2>} {<-t>} {(SQ <' '>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<compfreq.total>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {(SQ <' + '>)} {<compfreq>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <3>} {<-d>} {(SQ <' '>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>} {<-k>} {<2> <Id.Lit_Comma ','> <2>} {<-t>} {(SQ <' '>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<compfreq.present>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <join>
                          more_env: []
                          words: [
                            {<join>}
                            {<-t>}
                            {(SQ <' '>)}
                            {<-1>}
                            {<2>}
                            {<-2>}
                            {<2>}
                            {<compfreq.present>}
                            {<compfreq.total>}
                          ]
                          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>} {<S>} {<P>} {<T>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <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.VSub_Name P)}
                                                    {<-gt>}
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <expr>
                                                            more_env: []
                                                            words: [
                                                              {<expr>}
                                                              {(${ Id.VSub_Name T)}
                                                              {<'/'>}
                                                              {<2>}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        right: <Id.Backtick_Right '`'>
                                                      )
                                                    }
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [{<echo>} {(${ Id.VSub_Name S)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [15215 15242]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<comp.present>}
                            )
                          ]
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <cut>
                      more_env: []
                      words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <' '>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<compfreq.total>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<comp.total>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<INDEX-ALL>} {<compfreq>} {<compfreq.total>} {<compfreq.present>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <done.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KCOMP='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KCOMP='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KCOMP='> name:KCOMP)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {(${ Id.VSub_Name KERNCONF)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <tr>
                                        more_env: []
                                        words: [{<tr>} {(SQ <A-Z>)} {(SQ <a-z>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <grep>
                      more_env: []
                      words: [
                        {<grep>}
                        {<-E>}
                        {
                          (DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> <'|'> (${ Id.VSub_Name KCOMP) 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                              ch: '$'
                            )
                          )
                        }
                        {<comp.total>}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<comp.present>}
                        )
                      ]
                      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.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [
                                            {<grep>}
                                            {<-qE>}
                                            {(DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> <'|'>)}
                                            {<comp.total>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <grep>
                                              more_env: []
                                              words: [
                                                {<grep>}
                                                {<-qE>}
                                                {
                                                  (DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> <'|'> 
                                                    (${ Id.VSub_Name KCOMP) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$')
                                                  )
                                                }
                                                {<comp.total>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DLessDash '<<-'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: 
                                    (redir_param.HereDoc
                                      here_begin: {<EOF>}
                                      here_end_tok: <Id.Undefined_Tok ''>
                                      stdin_parts: [
                                        <'\n'>
                                        <'WARNING: This system is running a '>
                                        <Id.Right_DoubleQuote '"'>
                                        (${ Id.VSub_Name KCOMP)
                                        <Id.Right_DoubleQuote '"'>
                                        <' kernel, which is not a\n'>
                                        <'kernel configuration distributed as part of FreeBSD '>
                                        (${ Id.VSub_Name RELNUM)
                                        <'.\n'>
                                        <
'This kernel will not be updated: you MUST update the kernel manually\n'
                                        >
                                        <'before running '>
                                        <Id.Right_DoubleQuote '"'>
                                        ($ Id.VSub_Number 0)
                                        <' install'>
                                        <Id.Right_DoubleQuote '"'>
                                        <'.\n'>
                                      ]
                                    )
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [15389 15425]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sort>
                      more_env: []
                      words: [{<sort>} {<-u>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<comp.present>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<comp.present.tmp>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [{<mv>} {<comp.present.tmp>} {<comp.present>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <comm>
                      more_env: []
                      words: [{<comm>} {<-13>} {<comp.present>} {<comp.total>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<comp.absent>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'The following components of FreeBSD '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'seem to be installed:'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'|'>)} {(SQ <'/'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<comp.present>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <fmt>
                          more_env: []
                          words: [{<fmt>} {<-72>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'The following components of FreeBSD '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'do not seem to be installed:'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'|'>)} {(SQ <'/'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {<comp.absent>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <fmt>
                          more_env: []
                          words: [{<fmt>} {<-72>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <continuep>
                          more_env: []
                          words: [{<continuep>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMPONENTS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMPONENTS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPONENTS='> name:COMPONENTS)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <tr>
                      more_env: []
                      words: [{<tr>} {(SQ <'|'>)} {(SQ <'/'>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<comp.present>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<comp.present.tmp>}
                        )
                      ]
                      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>} {<C>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMPONENTS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMPONENTS='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'COMPONENTS='>
                                      name: COMPONENTS
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name COMPONENTS) <' '> (${ Id.VSub_Name C))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<comp.present.tmp>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<comp.present>} {<comp.present.tmp>} {<comp.absent>} {<comp.total>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [14893 14912]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <upgrade_guess_new_kernel>
      name: upgrade_guess_new_kernel
      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 '['>}
                                {(DQ (${ Id.VSub_Name STRICTCOMPONENTS))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <no>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'METAHASH='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'METAHASH='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'METAHASH='> name:METAHASH)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <look>
                                        more_env: []
                                        words: [
                                          {<look>}
                                          {(DQ ($ Id.VSub_Number 1) <'|'>)}
                                          {<tINDEX.present>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <cut>
                                        more_env: []
                                        words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <gunzip>
                      more_env: []
                      words: [{<gunzip>} {<-c>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<'files/'> (${ Id.VSub_Name METAHASH) <.gz>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_Number 1) <.all>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [C]
                      iterable: (for_iter.Words words:[{(${ Id.VSub_Name COMPONENTS)}])
                      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.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {(${ Id.VSub_Name C)}
                                                    {<Id.Lit_Equals '='>}
                                                    {(DQ <'kernel/'> (${ Id.VSub_Name KCOMP))}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Pipeline
                                                  negated: <Id.KW_Bang '!'>
                                                  children: [
                                                    (command.Simple
                                                      blame_tok: <grep>
                                                      more_env: []
                                                      words: [
                                                        {<grep>}
                                                        {<-qE>}
                                                        {
                                                          (DQ <'^kernel'> <Id.Lit_BadBackslash '\\'> 
                                                            <'|'> (${ Id.VSub_Name KCOMP) <Id.Lit_BadBackslash '\\'> <'|'>
                                                          )
                                                        }
                                                        {($ Id.VSub_Number 1) <.all>}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  ops: []
                                                )
                                              ]
                                              ops: [<Id.Op_DAmp _>]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'COMPONENTS='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'COMPONENTS='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'COMPONENTS='>
                                              name: COMPONENTS
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name COMPONENTS) <' kernel/generic'>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'NKERNCONF='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'NKERNCONF='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'NKERNCONF='>
                                              name: NKERNCONF
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ <GENERIC>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <cat>
                                      more_env: []
                                      words: [{<cat>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_DLessDash '<<-'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: 
                                            (redir_param.HereDoc
                                              here_begin: {<EOF>}
                                              here_end_tok: <Id.Undefined_Tok ''>
                                              stdin_parts: [
                                                <'\n'>
                                                <'WARNING: This system is running a '>
                                                <Id.Right_DoubleQuote '"'>
                                                (${ Id.VSub_Name KCOMP)
                                                <Id.Right_DoubleQuote '"'>
                                                <' kernel, which is not a\n'>
                                                <
'kernel configuration distributed as part of FreeBSD '
                                                >
                                                (${ Id.VSub_Name RELNUM)
                                                <'.\n'>
                                                <'As part of upgrading to FreeBSD '>
                                                (${ Id.VSub_Name RELNUM)
                                                <', this kernel will be\n'>
                                                <'replaced with a '>
                                                <Id.Right_DoubleQuote '"'>
                                                <generic>
                                                <Id.Right_DoubleQuote '"'>
                                                <' kernel.\n'>
                                              ]
                                            )
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <continuep>
                                          more_env: []
                                          words: [{<continuep>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Return return>
                                          arg_word: {<1>}
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  ]
                                  spids: [15814 15857]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {($ Id.VSub_Number 1) <.all>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [15718 15737]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <upgrade_oldall_to_oldnew>
      name: upgrade_oldall_to_oldnew
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 1)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.paths>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 2)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {($ Id.VSub_Number 1) <.paths>} {<->}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <lam>
                  more_env: []
                  words: [{<lam>} {<->} {<-s>} {(DQ <'|-||||||'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<->} {($ Id.VSub_Number 1)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <comm>
              more_env: []
              words: [{<comm>} {<-23>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 1) <.tmp>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 1) <.tmp>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 1)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 1) <.paths>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 2)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [{<join>} {<-t>} {(SQ <'|'>)} {<->} {($ Id.VSub_Number 1) <.paths>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 2) <.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {($ Id.VSub_Number 1) <.paths>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 2) <.tmp>} {($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 3)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <samef>
      name: samef
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'X='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'X='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'X='> name:X)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {<-E>} {(SQ <'s/\\$FreeBSD.*\\$/$FreeBSD$/'>)}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Less '<'>
                                    loc: (redir_loc.Fd fd:0)
                                    arg: {($ Id.VSub_Number 1)}
                                  )
                                ]
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <Id.Left_DollarBrace '${'>
                                more_env: []
                                words: [{(${ Id.VSub_Name SHA256)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'Y='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'Y='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'Y='> name:Y)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {<-E>} {(SQ <'s/\\$FreeBSD.*\\$/$FreeBSD$/'>)}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Less '<'>
                                    loc: (redir_loc.Fd fd:0)
                                    arg: {($ Id.VSub_Number 2)}
                                  )
                                ]
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <Id.Left_DollarBrace '${'>
                                more_env: []
                                words: [{(${ Id.VSub_Name SHA256)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        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 '['>}
                                {($ Id.VSub_DollarName X)}
                                {<Id.Lit_Equals '='>}
                                {($ Id.VSub_DollarName Y)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [16280 16293]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Sentence
                  child: (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
                  terminator: <Id.Op_Semi _>
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <upgrade_merge>
      name: upgrade_merge
      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 '['>}
                                {<-s>}
                                {($ Id.VSub_Number 1)}
                                {<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: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)} {($ Id.VSub_Number 1)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_Number 1) <-paths>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-rf>} {<'merge/'>}]
                      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>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'D='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'D='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'D='> name:D)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <dirname>
                                            more_env: []
                                            words: [{<dirname>} {(${ Id.VSub_Name F)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <mkdir>
                              more_env: []
                              words: [{<mkdir>} {<-p>} {<'merge/old/'> (${ Id.VSub_Name D)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <mkdir>
                              more_env: []
                              words: [
                                {<mkdir>}
                                {<-p>}
                                {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> (${ Id.VSub_Name D)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <mkdir>
                              more_env: []
                              words: [
                                {<mkdir>}
                                {<-p>}
                                {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name D)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <mkdir>
                              more_env: []
                              words: [{<mkdir>} {<-p>} {<'merge/new/'> (${ Id.VSub_Name D)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_Number 1) <-paths>}
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'V='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'V='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (command.Simple
                                                blame_tok: <look>
                                                more_env: []
                                                words: [
                                                  {<look>}
                                                  {(DQ (${ Id.VSub_Name F) <'|'>)}
                                                  {($ Id.VSub_Number 2)}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <cut>
                                                more_env: []
                                                words: [{<cut>} {<-f>} {<7>} {<-d>} {(SQ <'|'>)}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [<Id.Op_Pipe _>]
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <gunzip>
                              more_env: []
                              words: [{<gunzip>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {<'files/'> (${ Id.VSub_Name V) <.gz>}
                                )
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'merge/old/'> (${ Id.VSub_Name F)}
                                )
                              ]
                              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.Pipeline
                                              children: [
                                                (command.Simple
                                                  blame_tok: <look>
                                                  more_env: []
                                                  words: [
                                                    {<look>}
                                                    {(DQ (${ Id.VSub_Name F) <'|'>)}
                                                    {($ Id.VSub_Number 1)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <fgrep>
                                                  more_env: []
                                                  words: [{<fgrep>} {<-q>} {(DQ <'|f|'>)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_Pipe _>]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'V='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'V='>
                                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <look>
                                                        more_env: []
                                                        words: [
                                                          {<look>}
                                                          {(DQ (${ Id.VSub_Name F) <'|'>)}
                                                          {($ Id.VSub_Number 1)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <cut>
                                                        more_env: []
                                                        words: [{<cut>} {<-f>} {<3>} {<-d>} {(SQ <'|'>)}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <gunzip>
                                      more_env: []
                                      words: [{<gunzip>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<'files/'> (${ Id.VSub_Name V) <.gz>}
                                        )
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: 
                                            {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> 
                                              (${ Id.VSub_Name F)
                                            }
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [16536 16560]
                                )
                              ]
                              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.Pipeline
                                              children: [
                                                (command.Simple
                                                  blame_tok: <look>
                                                  more_env: []
                                                  words: [
                                                    {<look>}
                                                    {(DQ (${ Id.VSub_Name F) <'|'>)}
                                                    {($ Id.VSub_Number 3)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <cut>
                                                  more_env: []
                                                  words: [
                                                    {<cut>}
                                                    {<-f>}
                                                    {<1> <Id.Lit_Comma ','> <2> <Id.Lit_Comma ','> <7>}
                                                    {<-d>}
                                                    {(SQ <'|'>)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <fgrep>
                                                  more_env: []
                                                  words: [{<fgrep>} {<-q>} {(DQ <'|f|'>)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'V='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'V='>
                                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <look>
                                                        more_env: []
                                                        words: [
                                                          {<look>}
                                                          {(DQ (${ Id.VSub_Name F) <'|'>)}
                                                          {($ Id.VSub_Number 3)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <cut>
                                                        more_env: []
                                                        words: [{<cut>} {<-f>} {<7>} {<-d>} {(SQ <'|'>)}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <gunzip>
                                      more_env: []
                                      words: [{<gunzip>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<'files/'> (${ Id.VSub_Name V) <.gz>}
                                        )
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: 
                                            {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> 
                                              (${ Id.VSub_Name F)
                                            }
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [16626 16669]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_Number 1) <-paths>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'Attempting to automatically merge '>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ <'changes in files...'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<failed.merges>}
                        )
                      ]
                      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>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> 
                                                      (${ Id.VSub_Name F)
                                                    }
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [16790 16810]
                                )
                              ]
                              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.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> 
                                                      (${ Id.VSub_Name F)
                                                    }
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <cp>
                                      more_env: []
                                      words: [
                                        {<cp>}
                                        {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name F)}
                                        {<'merge/new/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [16832 16852]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(${ Id.VSub_Name F)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <'/etc/spwd.db'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<'/etc/spwd.db'>}
                                        {<'/etc/pwd.db'>}
                                        {<'/etc/login.conf.db'>}
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <cp>
                                      more_env: []
                                      words: [
                                        {<cp>}
                                        {<'merge/old/'> (${ Id.VSub_Name F)}
                                        {<'merge/new/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.Pipeline
                                                      negated: <Id.KW_Bang '!'>
                                                      children: [
                                                        (command.Simple
                                                          blame_tok: <merge>
                                                          more_env: []
                                                          words: [
                                                            {<merge>}
                                                            {<-p>}
                                                            {<-L>}
                                                            {(DQ <'current version'>)}
                                                            {<-L>}
                                                            {(DQ (${ Id.VSub_Name OLDRELNUM))}
                                                            {<-L>}
                                                            {(DQ (${ Id.VSub_Name RELNUM))}
                                                            {<'merge/old/'> (${ Id.VSub_Name F)}
                                                            {<'merge/'> (${ Id.VSub_Name OLDRELNUM) 
                                                              <'/'> (${ Id.VSub_Name F)
                                                            }
                                                            {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> 
                                                              (${ Id.VSub_Name F)
                                                            }
                                                          ]
                                                          redirects: [
                                                            (Redir
                                                              op: <Id.Redir_Great '>'>
                                                              loc: (redir_loc.Fd fd:1)
                                                              arg: 
                                                                {<'merge/new/'> (${ Id.VSub_Name F)}
                                                            )
                                                            (Redir
                                                              op: <Id.Redir_Great '2>'>
                                                              loc: (redir_loc.Fd fd:2)
                                                              arg: {<'/dev/null'>}
                                                            )
                                                          ]
                                                          do_fork: T
                                                        )
                                                      ]
                                                      ops: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [{<echo>} {(${ Id.VSub_Name F)}]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_DGreat '>>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<failed.merges>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          spids: [16932 17006]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_Number 1) <-paths>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <' done.'>)}]
                      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>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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: <samef>
                                              more_env: []
                                              words: [
                                                {<samef>}
                                                {<'merge/old/'> (${ Id.VSub_Name F)}
                                                {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> 
                                                  (${ Id.VSub_Name F)
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <cp>
                                      more_env: []
                                      words: [
                                        {<cp>}
                                        {<'merge/'> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name F)}
                                        {<'merge/new/'> (${ Id.VSub_Name F)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [17071 17090]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DLessDash '<<-'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: 
                                    (redir_param.HereDoc
                                      here_begin: {<EOF>}
                                      here_end_tok: <Id.Undefined_Tok ''>
                                      stdin_parts: [
                                        <'\n'>
                                        <'The following file could not be merged automatically: '>
                                        (${ Id.VSub_Name F)
                                        <'\n'>
                                        <'Press Enter to edit this file in '>
                                        (${ Id.VSub_Name EDITOR)
                                        <' and resolve the conflicts\n'>
                                        <'manually...\n'>
                                      ]
                                    )
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<dummy>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {<'/dev/tty'>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <Id.Left_DollarBrace '${'>
                              more_env: []
                              words: [
                                {(${ Id.VSub_Name EDITOR)}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <pwd>
                                        more_env: []
                                        words: [{<pwd>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  ) <'/merge/new/'> (${ Id.VSub_Name F)
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {<'/dev/tty'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<failed.merges>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<failed.merges>}]
                      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>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {<'merge/old/'> (${ Id.VSub_Name F)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {<'merge/new/'> (${ Id.VSub_Name F)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <samef>
                                                  more_env: []
                                                  words: [
                                                    {<samef>}
                                                    {<'merge/old/'> (${ Id.VSub_Name F)}
                                                    {<'merge/new/'> (${ Id.VSub_Name F)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [17203 17245]
                                )
                              ]
                              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.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {<'merge/old/'> (${ Id.VSub_Name F)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> 
                                                      (${ Id.VSub_Name F)
                                                    }
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <samef>
                                                  more_env: []
                                                  words: [
                                                    {<samef>}
                                                    {<'merge/old/'> (${ Id.VSub_Name F)}
                                                    {<'merge/'> (${ Id.VSub_Name OLDRELNUM) <'/'> 
                                                      (${ Id.VSub_Name F)
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [17263 17314]
                                )
                              ]
                              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.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-f>}
                                                    {<'merge/new/'> (${ Id.VSub_Name F)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <cat>
                                      more_env: []
                                      words: [{<cat>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_DLessDash '<<-'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: 
                                            (redir_param.HereDoc
                                              here_begin: {<EOF>}
                                              here_end_tok: <Id.Undefined_Tok ''>
                                              stdin_parts: [
                                                <'\n'>
                                                <
'The following file will be removed, as it no longer exists in\n'
                                                >
                                                <'FreeBSD '>
                                                (${ Id.VSub_Name RELNUM)
                                                <': '>
                                                (${ Id.VSub_Name F)
                                                <'\n'>
                                              ]
                                            )
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <continuep>
                                          more_env: []
                                          words: [{<continuep>}]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_Less '<'>
                                              loc: (redir_loc.Fd fd:0)
                                              arg: {<'/dev/tty'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Return return>
                                          arg_word: {<1>}
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [17328 17344]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DLessDash '<<-'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: 
                                    (redir_param.HereDoc
                                      here_begin: {<EOF>}
                                      here_end_tok: <Id.Undefined_Tok ''>
                                      stdin_parts: [
                                        <'\n'>
                                        <'The following changes, which occurred between FreeBSD '>
                                        (${ Id.VSub_Name OLDRELNUM)
                                        <' and\n'>
                                        <'FreeBSD '>
                                        (${ Id.VSub_Name RELNUM)
                                        <' have been merged into '>
                                        (${ Id.VSub_Name F)
                                        <':\n'>
                                      ]
                                    )
                                )
                              ]
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <diff>
                                  more_env: []
                                  words: [
                                    {<diff>}
                                    {<-U>}
                                    {<5>}
                                    {<-L>}
                                    {(DQ <'current version'>)}
                                    {<-L>}
                                    {(DQ <'new version'>)}
                                    {<'merge/old/'> (${ Id.VSub_Name F)}
                                    {<'merge/new/'> (${ Id.VSub_Name F)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <true>
                                  more_env: []
                                  words: [{<true>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <continuep>
                                  more_env: []
                                  words: [{<continuep>}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {<'/dev/tty'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_Number 1) <-paths>}
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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 '['>}
                                                {<-f>}
                                                {<'merge/new/'> (${ Id.VSub_Name F)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'V='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'V='>
                                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'V='> name:V)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <Id.Left_DollarBrace '${'>
                                                    more_env: []
                                                    words: [
                                                      {(${ Id.VSub_Name SHA256)}
                                                      {<-q>}
                                                      {<'merge/new/'> (${ Id.VSub_Name F)}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <gzip>
                                      more_env: []
                                      words: [{<gzip>} {<-c>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<'merge/new/'> (${ Id.VSub_Name F)}
                                        )
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'files/'> (${ Id.VSub_Name V) <.gz>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {(DQ (${ Id.VSub_Name F) <'|'> (${ Id.VSub_Name V))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [17484 17498]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_Number 1) <-paths>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<newhashes>}
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <look>
                              more_env: []
                              words: [{<look>} {(DQ (${ Id.VSub_Name F) <'|'>)} {($ Id.VSub_Number 3)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_Number 1) <-paths>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_Number 3) <-oldlines>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <join>
                      more_env: []
                      words: [
                        {<join>}
                        {<-t>}
                        {(SQ <'|'>)}
                        {<-o>}
                        {<1.1> <Id.Lit_Comma ','> <1.2> <Id.Lit_Comma ','> <1.3> <Id.Lit_Comma ','> <1.4> 
                          <Id.Lit_Comma ','> <1.5> <Id.Lit_Comma ','> <1.6> <Id.Lit_Comma ','> <2.2> <Id.Lit_Comma ','> <1.8>
                        }
                        {($ Id.VSub_Number 3) <-oldlines>}
                        {<newhashes>}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_Number 3) <-newlines>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>} {($ Id.VSub_Number 3) <-oldlines>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <comm>
                          more_env: []
                          words: [{<comm>} {<-13>} {<->} {($ Id.VSub_Number 3)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>} {<->} {($ Id.VSub_Number 3) <-newlines>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_Number 3) <.tmp>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [{<mv>} {($ Id.VSub_Number 3) <.tmp>} {($ Id.VSub_Number 3)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [
                        {<rm>}
                        {($ Id.VSub_Number 1) <-paths>}
                        {<newhashes>}
                        {($ Id.VSub_Number 3) <-oldlines>}
                        {($ Id.VSub_Number 3) <-newlines>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-rf>} {<'merge/'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [16334 16345]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <upgrade_run>
      name: upgrade_run
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <workdir_init>
                  more_env: []
                  words: [{<workdir_init>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_pick_server_init>
                  more_env: []
                  words: [{<fetch_pick_server_init>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fetch_pick_server>
                  more_env: []
                  words: [{<fetch_pick_server>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <fetch_key>
                              more_env: []
                              words: [{<fetch_key>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_pick_server>
                          more_env: []
                          words: [{<fetch_pick_server>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <fetch_tag>
                              more_env: []
                              words: [{<fetch_tag>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_pick_server>
                          more_env: []
                          words: [{<fetch_pick_server>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_tagsanity>
                  more_env: []
                  words: [{<fetch_tagsanity>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_metadata>
                  more_env: []
                  words: [{<fetch_metadata>} {<INDEX-OLD>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <upgrade_guess_components>
                  more_env: []
                  words: [{<upgrade_guess_components>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_filter_metadata>
                  more_env: []
                  words: [{<fetch_filter_metadata>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_filter_metadata>
                  more_env: []
                  words: [{<fetch_filter_metadata>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <sort>
              more_env: []
              words: [{<sort>} {<INDEX-OLD>} {<INDEX-ALL>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD.tmp>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<INDEX-OLD.tmp>} {<INDEX-OLD>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<INDEX-ALL>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'OLDRELNUM='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'OLDRELNUM='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OLDRELNUM='> name:OLDRELNUM)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name RELNUM)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'RELNUM='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'RELNUM='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RELNUM='> name:RELNUM)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name TARGETRELEASE)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'OLDFETCHDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'OLDFETCHDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OLDFETCHDIR='> name:OLDFETCHDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FETCHDIR)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FETCHDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FETCHDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FETCHDIR='> name:FETCHDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH)}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <fetch_tag>
                              more_env: []
                              words: [{<fetch_tag>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_pick_server>
                          more_env: []
                          words: [{<fetch_pick_server>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_metadata>
                  more_env: []
                  words: [{<fetch_metadata>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <upgrade_guess_new_kernel>
                  more_env: []
                  words: [{<upgrade_guess_new_kernel>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_filter_metadata>
                  more_env: []
                  words: [{<fetch_filter_metadata>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <upgrade_oldall_to_oldnew>
              more_env: []
              words: [{<upgrade_oldall_to_oldnew>} {<INDEX-OLD>} {<INDEX-ALL>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_kernel_names>
              more_env: []
              words: [{<fetch_filter_kernel_names>} {<INDEX-NEW>} {(${ Id.VSub_Name NKERNCONF)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_kernel_names>
              more_env: []
              words: [{<fetch_filter_kernel_names>} {<INDEX-OLD>} {(${ Id.VSub_Name KERNCONF)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_inspect_system>
                  more_env: []
                  words: [{<fetch_inspect_system>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <fetch_filter_mergechanges>
              more_env: []
              words: [{<fetch_filter_mergechanges>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<tomerge-old>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_unmodified_notpresent>
              more_env: []
              words: [
                {<fetch_filter_unmodified_notpresent>}
                {<INDEX-OLD>}
                {<INDEX-PRESENT>}
                {<INDEX-NEW>}
                {<tomerge-old>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_allowadd>
              more_env: []
              words: [{<fetch_filter_allowadd>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_allowdelete>
              more_env: []
              words: [{<fetch_filter_allowdelete>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_modified_metadata>
              more_env: []
              words: [{<fetch_filter_modified_metadata>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_uptodate>
              more_env: []
              words: [{<fetch_filter_uptodate>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_files_premerge>
              more_env: []
              words: [{<fetch_files_premerge>} {<tomerge-old>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_files_prepare>
                  more_env: []
                  words: [{<fetch_files_prepare>} {<INDEX-OLD>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PATCHDIR='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PATCHDIR='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATCHDIR='> name:PATCHDIR)
                  op: assign_op.Equal
                  rhs: {<to-> (${ Id.VSub_Name RELNUM) <'/'> (${ Id.VSub_Name ARCH) <'/bp'>}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_files>
                  more_env: []
                  words: [{<fetch_files>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <upgrade_merge>
                  more_env: []
                  words: [{<upgrade_merge>} {<tomerge-old>} {<INDEX-PRESENT>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_create_manifest>
                  more_env: []
                  words: [{<fetch_create_manifest>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <touch>
              more_env: []
              words: [{<touch>} {(${ Id.VSub_Name BDHASH) <'-install/kernelfirst'>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'To install the downloaded upgrades, run '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) ($ Id.VSub_Number 0) <' install'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <.>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_verify>
      name: install_verify
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {($ Id.VSub_At '@')}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<2> <Id.Lit_Comma ','> <7>} {<-d>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'^f'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<2>} {<-d>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<HASH>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {<-f>}
                                            {<'files/'> (${ Id.VSub_Name HASH) <.gz>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<-n>} {(DQ <'Update files missing -- '>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'this should never happen.'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'Re-run \''> ($ Id.VSub_Number 0) <' fetch\'.'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [18495 18512]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<filelist>})]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<filelist>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_unschg>
      name: install_unschg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {($ Id.VSub_At '@')}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<filelist>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  children: [
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<F>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <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.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<-e>}
                                                    {(${ Id.VSub_Name BASEDIR) <'/'> 
                                                      (${ Id.VSub_Name F)
                                                    }
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  spids: [18621 18640]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [
                                    {<echo>}
                                    {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name F)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {<filelist>}
                        )
                      ]
                    )
                    (command.Simple
                      blame_tok: <xargs>
                      more_env: []
                      words: [{<xargs>} {<chflags>} {<noschg>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<filelist>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <backup_kernel_finddir>
      name: backup_kernel_finddir
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'CNT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'CNT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CNT='> name:CNT)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <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 '!'>}
                                        {<-e>}
                                        {($ Id.VSub_DollarName BASEDIR) <'/'> 
                                          ($ Id.VSub_DollarName BACKUPKERNELDIR)
                                        }
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [18728 18743]
                        )
                      ]
                      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 '['>}
                                        {<-d>}
                                        {($ Id.VSub_DollarName BASEDIR) <'/'> 
                                          ($ Id.VSub_DollarName BACKUPKERNELDIR)
                                        }
                                        {<-a>}
                                        {<-e>}
                                        {($ Id.VSub_DollarName BASEDIR) <'/'> 
                                          ($ Id.VSub_DollarName BACKUPKERNELDIR) <'/.freebsd-update'>
                                        }
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [18763 18787]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'CNT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'CNT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CNT='> name:CNT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: ($ Id.Lit_ArithVarLike CNT)
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      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.VSub_DollarName CNT)}
                                        {<-gt>}
                                        {<9>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'Could not find valid backup dir ('> 
                                    ($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) <')'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [18818 18831]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                              name: BACKUPKERNELDIR
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [{<echo>} {($ Id.VSub_DollarName BACKUPKERNELDIR)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <sed>
                                          more_env: []
                                          words: [{<sed>} {<-Ee>} {(SQ <'s/[0-9]$//'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'BACKUPKERNELDIR='>
                              name: BACKUPKERNELDIR
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name BACKUPKERNELDIR) (${ Id.VSub_Name CNT))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <backup_kernel>
      name: backup_kernel
      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 '['>}
                                {($ Id.VSub_DollarName BACKUPKERNEL)}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {<yes>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [18926 18940]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <backup_kernel_finddir>
              more_env: []
              words: [{<backup_kernel_finddir>}]
              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 '['>}
                                {<-d>}
                                {($ Id.VSub_DollarName BASEDIR) <'/'> 
                                  ($ Id.VSub_DollarName BACKUPKERNELDIR)
                                }
                                {<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>}
                        {<-fr>}
                        {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [18972 18985]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [
                {<mkdir>}
                {<-p>}
                {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <mtree>
                  more_env: []
                  words: [
                    {<mtree>}
                    {<-cdn>}
                    {<-p>}
                    {(DQ (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name KERNELDIR))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <mtree>
                  more_env: []
                  words: [
                    {<mtree>}
                    {<-Ue>}
                    {<-p>}
                    {(DQ (${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name BACKUPKERNELDIR))}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <touch>
              more_env: []
              words: [
                {<touch>}
                {($ Id.VSub_DollarName BASEDIR) <'/'> ($ Id.VSub_DollarName BACKUPKERNELDIR) 
                  <'/.freebsd-update'>
                }
              ]
              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_QMark '?')}
                                {<-ne>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Could not create kernel backup directory'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [19068 19081]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {<-f>}]
              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_DollarName BACKUPKERNELSYMBOLFILES)}
                                {<Id.Lit_Equals '='>}
                                {<yes>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FINDFILTER='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FINDFILTER='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FINDFILTER='> name:FINDFILTER)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [19118 19131]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'FINDFILTER='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'FINDFILTER='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FINDFILTER='> name:FINDFILTER)
                      op: assign_op.Equal
                      rhs: {(DQ <'-a ! -name *.debug -a ! -name *.symbols'>)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <cd>
                      more_env: []
                      words: [{<cd>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name KERNELDIR)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <find>
                      more_env: []
                      words: [
                        {<find>}
                        {<.>}
                        {<-type>}
                        {<f>}
                        {($ Id.VSub_DollarName FINDFILTER)}
                        {<-exec>}
                        {<cp>}
                        {<-pl>}
                        {(SQ <'{}'>)}
                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name BACKUPKERNELDIR) <'/'> 
                          (SQ <'{}'>)
                        }
                        {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\;'> ch:';')}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {<Id.Lit_Other '+'> <f>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_from_index>
      name: install_from_index
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [
                    {<sort>}
                    {<-k>}
                    {<1> <Id.Lit_Comma ','> <1>}
                    {<-t>}
                    {(SQ <'|'>)}
                    {($ Id.VSub_Number 1)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}]
                  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>}
                                {<FPATH>}
                                {<TYPE>}
                                {<OWNER>}
                                {<GROUP>}
                                {<PERM>}
                                {<FLAGS>}
                                {<HASH>}
                                {<LINK>}
                              ]
                              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:{(${ Id.VSub_Name TYPE)})
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <d>
                              pattern: (pat.Words words:[{<d>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.Simple
                                  blame_tok: <install>
                                  more_env: []
                                  words: [
                                    {<install>}
                                    {<-d>}
                                    {<-o>}
                                    {(${ Id.VSub_Name OWNER)}
                                    {<-g>}
                                    {(${ Id.VSub_Name GROUP)}
                                    {<-m>}
                                    {(${ Id.VSub_Name PERM)}
                                    {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <f>
                              pattern: (pat.Words words:[{<f>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (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 LINK))}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <gunzip>
                                          more_env: []
                                          words: [{<gunzip>}]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_Less '<'>
                                              loc: (redir_loc.Fd fd:0)
                                              arg: {<'files/'> (${ Id.VSub_Name HASH) <.gz>}
                                            )
                                            (Redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {(${ Id.VSub_Name HASH)}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <install>
                                          more_env: []
                                          words: [
                                            {<install>}
                                            {<-S>}
                                            {<-o>}
                                            {(${ Id.VSub_Name OWNER)}
                                            {<-g>}
                                            {(${ Id.VSub_Name GROUP)}
                                            {<-m>}
                                            {(${ Id.VSub_Name PERM)}
                                            {(${ Id.VSub_Name HASH)}
                                            {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <rm>
                                          more_env: []
                                          words: [{<rm>} {(${ Id.VSub_Name HASH)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [19352 19367]
                                    )
                                  ]
                                  else_kw: <Id.KW_Else else>
                                  else_action: [
                                    (command.Simple
                                      blame_tok: <ln>
                                      more_env: []
                                      words: [
                                        {<ln>}
                                        {<-f>}
                                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name LINK)}
                                        {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <L>
                              pattern: (pat.Words words:[{<L>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.Simple
                                  blame_tok: <ln>
                                  more_env: []
                                  words: [
                                    {<ln>}
                                    {<-sfh>}
                                    {(${ Id.VSub_Name HASH)}
                                    {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 1)}
                    )
                  ]
                  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>}
                                {<FPATH>}
                                {<TYPE>}
                                {<OWNER>}
                                {<GROUP>}
                                {<PERM>}
                                {<FLAGS>}
                                {<HASH>}
                                {<LINK>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <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.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(${ Id.VSub_Name TYPE)}
                                                {<Id.Lit_Equals '='>}
                                                {(DQ <f>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Pipeline
                                              negated: <Id.KW_Bang '!'>
                                              children: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {(${ Id.VSub_Name FLAGS)}
                                                    {<Id.Lit_Equals '='>}
                                                    {(DQ <0>)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: []
                                            )
                                          ]
                                          ops: [<Id.Op_DAmp _>]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <chflags>
                                  more_env: []
                                  words: [
                                    {<chflags>}
                                    {(${ Id.VSub_Name FLAGS)}
                                    {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              spids: [19549 19585]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_delete>
      name: install_delete
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {($ Id.VSub_Number 2)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<newfiles>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [
                    {<sort>}
                    {<-k>}
                    {<1> <Id.Lit_Comma ','> <1>}
                    {<-t>}
                    {(SQ <'|'>)}
                    {($ Id.VSub_Number 1)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [{<join>} {<-t>} {(SQ <'|'>)} {<-v>} {<1>} {<->} {<newfiles>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-r>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1> <Id.Lit_Comma ','> <2>} {<-d>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {(SQ <'|'>)} {(SQ <' '>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<killfiles>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<FPATH>} {<TYPE>}]
                          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:{(${ Id.VSub_Name TYPE)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <d>
                          pattern: (pat.Words words:[{<d>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <rmdir>
                              more_env: []
                              words: [
                                {<rmdir>}
                                {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <f>
                          pattern: (pat.Words words:[{<f>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <rm>
                              more_env: []
                              words: [{<rm>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <L>
                          pattern: (pat.Words words:[{<L>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <rm>
                              more_env: []
                              words: [{<rm>} {(${ Id.VSub_Name BASEDIR) <'/'> (${ Id.VSub_Name FPATH)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<killfiles>})]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<newfiles>} {<killfiles>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_files>
      name: install_files
      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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-f>}
                                    {($ Id.VSub_Number 1) <'/kerneldone'>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <grep>
                      more_env: []
                      words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<INDEX-OLD>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <grep>
                      more_env: []
                      words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<INDEX-NEW>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <backup_kernel>
                          more_env: []
                          words: [{<backup_kernel>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <install_from_index>
                          more_env: []
                          words: [{<install_from_index>} {<INDEX-NEW>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <install_delete>
                          more_env: []
                          words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (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 '['>}
                                        {<-s>}
                                        {<INDEX-OLD>}
                                        {<-o>}
                                        {<-s>}
                                        {<INDEX-NEW>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <kldxref>
                              more_env: []
                              words: [{<kldxref>} {<-R>} {(${ Id.VSub_Name BASEDIR) <'/boot/'>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [19967 19984]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <touch>
                      more_env: []
                      words: [{<touch>} {($ Id.VSub_Number 1) <'/kerneldone'>}]
                      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.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {<-f>}
                                            {($ Id.VSub_Number 1) <'/kernelfirst'>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {<-s>}
                                            {<INDEX-OLD>}
                                            {<-o>}
                                            {<-s>}
                                            {<INDEX-NEW>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DLessDash '<<-'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: 
                                    (redir_param.HereDoc
                                      here_begin: {<EOF>}
                                      here_end_tok: <Id.Undefined_Tok ''>
                                      stdin_parts: [
                                        <'\n'>
                                        <
'Kernel updates have been installed.  Please reboot and run\n'
                                        >
                                        <Id.Right_DoubleQuote '"'>
                                        ($ Id.VSub_Number 0)
                                        <' install'>
                                        <Id.Right_DoubleQuote '"'>
                                        <' again to finish installing updates.\n'>
                                      ]
                                    )
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [20019 20048]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [19865 19879]
                )
              ]
              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.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-f>}
                                    {($ Id.VSub_Number 1) <'/worlddone'>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-vE>}
                            {(SQ <'^/boot/'>)}
                            {($ Id.VSub_Number 1) <'/INDEX-NEW'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(SQ <'^[^|]+\\|d\\|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<INDEX-NEW>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <install_from_index>
                          more_env: []
                          words: [{<install_from_index>} {<INDEX-NEW>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-vE>}
                            {(SQ <'^/boot/'>)}
                            {($ Id.VSub_Number 1) <'/INDEX-NEW'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<INDEX-NEW>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <install_from_index>
                          more_env: []
                          words: [{<install_from_index>} {<INDEX-NEW>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-vE>}
                            {(SQ <'^/boot/'>)}
                            {($ Id.VSub_Number 1) <'/INDEX-NEW'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<INDEX-NEW>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <install_from_index>
                          more_env: []
                          words: [{<install_from_index>} {<INDEX-NEW>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-vE>}
                            {(SQ <'^/boot/'>)}
                            {($ Id.VSub_Number 1) <'/INDEX-OLD'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<INDEX-OLD>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-vE>}
                            {(SQ <'^/boot/'>)}
                            {($ Id.VSub_Number 1) <'/INDEX-NEW'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^/libexec/ld-elf[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-vE>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<INDEX-NEW>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <install_from_index>
                          more_env: []
                          words: [{<install_from_index>} {<INDEX-NEW>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <install_delete>
                          more_env: []
                          words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(${ Id.VSub_Name BASEDIR) <'/etc/master.passwd'>}
                                            {<-nt>}
                                            {(${ Id.VSub_Name BASEDIR) <'/etc/spwd.db'>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(${ Id.VSub_Name BASEDIR) <'/etc/master.passwd'>}
                                            {<-nt>}
                                            {(${ Id.VSub_Name BASEDIR) <'/etc/pwd.db'>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <pwd_mkdb>
                              more_env: []
                              words: [
                                {<pwd_mkdb>}
                                {<-d>}
                                {(${ Id.VSub_Name BASEDIR) <'/etc'>}
                                {(${ Id.VSub_Name BASEDIR) <'/etc/master.passwd'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [20392 20430]
                        )
                      ]
                      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 '['>}
                                        {(${ Id.VSub_Name BASEDIR) <'/etc/login.conf'>}
                                        {<-nt>}
                                        {(${ Id.VSub_Name BASEDIR) <'/etc/login.conf.db'>}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <cap_mkdb>
                              more_env: []
                              words: [{<cap_mkdb>} {(${ Id.VSub_Name BASEDIR) <'/etc/login.conf'>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [20456 20475]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <touch>
                      more_env: []
                      words: [{<touch>} {($ Id.VSub_Number 1) <'/worlddone'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-vE>}
                            {(SQ <'^/boot/'>)}
                            {($ Id.VSub_Number 1) <'/INDEX-NEW'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sort>
                          more_env: []
                          words: [{<sort>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<newfiles>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [
                                            {<grep>}
                                            {<-vE>}
                                            {(SQ <'^/boot/'>)}
                                            {($ Id.VSub_Number 1) <'/INDEX-OLD'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [
                                            {<grep>}
                                            {<-E>}
                                            {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <cut>
                                          more_env: []
                                          words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <sort>
                                          more_env: []
                                          words: [{<sort>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <join>
                                          more_env: []
                                          words: [{<join>} {<-v>} {<1>} {<->} {<newfiles>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [{<grep>} {<-q>} {<.>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [
                                        <Id.Op_Pipe _>
                                        <Id.Op_Pipe _>
                                        <Id.Op_Pipe _>
                                        <Id.Op_Pipe _>
                                        <Id.Op_Pipe _>
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DLessDash '<<-'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: 
                                    (redir_param.HereDoc
                                      here_begin: {<EOF>}
                                      here_end_tok: <Id.Undefined_Tok ''>
                                      stdin_parts: [
                                        <'\n'>
                                        <
'Completing this upgrade requires removing old shared object files.\n'
                                        >
                                        <
'Please rebuild all installed 3rd party software (e.g., programs\n'
                                        >
                                        <'installed from the ports tree) and then run '>
                                        <Id.Right_DoubleQuote '"'>
                                        ($ Id.VSub_Number 0)
                                        <' install'>
                                        <Id.Right_DoubleQuote '"'>
                                        <'\n'>
                                        <'again to finish installing updates.\n'>
                                      ]
                                    )
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <rm>
                              more_env: []
                              words: [{<rm>} {<newfiles>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [20556 20623]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<newfiles>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [20082 20096]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^[^|]+\\|d\\|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'^[^|]*/lib/[^|]*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_delete>
                  more_env: []
                  words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'^[^|]+\\|d\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'^[^|]+\\|d\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_delete>
                  more_env: []
                  words: [{<install_delete>} {<INDEX-OLD>} {<INDEX-NEW>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<INDEX-OLD>} {<INDEX-NEW>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_setup_rollback>
      name: install_setup_rollback
      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 '['>}
                                {<-f>}
                                {(${ Id.VSub_Name BDHASH) <'-install/kernelfirst'>}
                                {<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>} {(${ Id.VSub_Name BDHASH) <'-install/kernelfirst'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {(${ Id.VSub_Name BDHASH) <'-install/kerneldone'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [20868 20882]
                )
              ]
              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 '['>}
                                {<-f>}
                                {(${ Id.VSub_Name BDHASH) <'-install/worlddone'>}
                                {<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>} {(${ Id.VSub_Name BDHASH) <'-install/worlddone'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [20904 20918]
                )
              ]
              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 '['>}
                                {<-L>}
                                {(${ Id.VSub_Name BDHASH) <-rollback>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [
                        {<mv>}
                        {(${ Id.VSub_Name BDHASH) <-rollback>}
                        {(${ Id.VSub_Name BDHASH) <'-install/rollback'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [20933 20947]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [
                {<mv>}
                {(${ Id.VSub_Name BDHASH) <-install>}
                {(${ Id.VSub_Name BDHASH) <-rollback>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <install_run>
      name: install_run
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<-n>} {(DQ <'Installing updates...'>)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_verify>
                  more_env: []
                  words: [
                    {<install_verify>}
                    {(${ Id.VSub_Name BDHASH) <'-install/INDEX-OLD'>}
                    {(${ Id.VSub_Name BDHASH) <'-install/INDEX-NEW'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_unschg>
                  more_env: []
                  words: [
                    {<install_unschg>}
                    {(${ Id.VSub_Name BDHASH) <'-install/INDEX-OLD'>}
                    {(${ Id.VSub_Name BDHASH) <'-install/INDEX-NEW'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_files>
                  more_env: []
                  words: [{<install_files>} {(${ Id.VSub_Name BDHASH) <-install>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <install_setup_rollback>
              more_env: []
              words: [{<install_setup_rollback>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <' done.'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rollback_setup_rollback>
      name: rollback_setup_rollback
      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 '['>}
                                {<-L>}
                                {(${ Id.VSub_Name BDHASH) <'-rollback/rollback'>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [{<mv>} {(${ Id.VSub_Name BDHASH) <'-rollback/rollback'>} {<rollback-tmp>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-rollback/'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-rollback>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [{<mv>} {<rollback-tmp>} {(${ Id.VSub_Name BDHASH) <-rollback>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [21102 21116]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <rm>
                  more_env: []
                  words: [{<rm>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-rollback/'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rm>
                  more_env: []
                  words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-rollback>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rollback_files>
      name: rollback_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-f>} {<1>} {<-d>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<INDEX-NEW.libs.flist>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {<->}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [{<join>} {<-t>} {(SQ <'|'>)} {<-v>} {<1>} {<->} {<INDEX-NEW.libs.flist>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_from_index>
                  more_env: []
                  words: [{<install_from_index>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_from_index>
                  more_env: []
                  words: [{<install_from_index>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_delete>
                  more_env: []
                  words: [{<install_delete>} {<INDEX-NEW>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)} {<->}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [{<join>} {<-t>} {(SQ <'|'>)} {<->} {<INDEX-NEW.libs.flist>}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_from_index>
                  more_env: []
                  words: [{<install_from_index>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-vE>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(SQ <'/lib/.*\\.so\\.[0-9]+\\|'>)}]
                  redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_delete>
                  more_env: []
                  words: [{<install_delete>} {<INDEX-NEW>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <grep>
              more_env: []
              words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-OLD'>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-OLD>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <grep>
              more_env: []
              words: [{<grep>} {<-E>} {(SQ <'^/boot/'>)} {($ Id.VSub_Number 1) <'/INDEX-NEW'>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-NEW>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_from_index>
                  more_env: []
                  words: [{<install_from_index>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_delete>
                  more_env: []
                  words: [{<install_delete>} {<INDEX-NEW>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (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 '['>}
                                {<-s>}
                                {<INDEX-OLD>}
                                {<-o>}
                                {<-s>}
                                {<INDEX-NEW>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <kldxref>
                      more_env: []
                      words: [{<kldxref>} {<-R>} {<'/boot/'>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [21618 21635]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<INDEX-OLD>} {<INDEX-NEW>} {<INDEX-NEW.libs.flist>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rollback_run>
      name: rollback_run
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<-n>} {(DQ <'Uninstalling updates...'>)}]
              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 '['>}
                                {<-L>}
                                {(${ Id.VSub_Name BDHASH) <-install>}
                                {<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>} {<-r>} {(${ Id.VSub_Name BDHASH) <'-install/'>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {(${ Id.VSub_Name BDHASH) <-install>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [21696 21710]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_verify>
                  more_env: []
                  words: [
                    {<install_verify>}
                    {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-NEW'>}
                    {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-OLD'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_unschg>
                  more_env: []
                  words: [
                    {<install_unschg>}
                    {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-NEW'>}
                    {(${ Id.VSub_Name BDHASH) <'-rollback/INDEX-OLD'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <rollback_files>
                  more_env: []
                  words: [{<rollback_files>} {(${ Id.VSub_Name BDHASH) <-rollback>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <rollback_setup_rollback>
              more_env: []
              words: [{<rollback_setup_rollback>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <' done.'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <IDS_compare>
      name: IDS_compare
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <cut>
              more_env: []
              words: [
                {<cut>}
                {<-f>}
                {<1-5> <Id.Lit_Comma ','> <7-8>}
                {<-d>}
                {(SQ <'|'>)}
                {($ Id.VSub_Number 1)}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 1) <.noflags>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <sort>
              more_env: []
              words: [
                {<sort>}
                {<-k>}
                {<1> <Id.Lit_Comma ','> <1>}
                {<-t>}
                {(SQ <'|'>)}
                {($ Id.VSub_Number 1) <.noflags>}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 1) <.sorted>}
                )
              ]
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [
                    {<cut>}
                    {<-f>}
                    {<1-5> <Id.Lit_Comma ','> <7-8>}
                    {<-d>}
                    {(SQ <'|'>)}
                    {($ Id.VSub_Number 2)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {($ Id.VSub_Number 1) <.noflags>} {<->}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fgrep>
                  more_env: []
                  words: [{<fgrep>} {<-v>} {(SQ <'|-|||||'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-k>} {<1> <Id.Lit_Comma ','> <1>} {<-t>} {(SQ <'|'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [{<join>} {<-t>} {(SQ <'|'>)} {($ Id.VSub_Number 1) <.sorted>} {<->}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<INDEX-NOTMATCHING>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Pipeline
              children: [
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [X]
                  iterable: (for_iter.Words words:[{(${ Id.VSub_Name IDSIGNOREPATHS)}])
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-E>} {(DQ <'^'> (${ Id.VSub_Name X))} {<INDEX-NOTMATCHING>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [{<sort>} {<-u>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <comm>
                  more_env: []
                  words: [{<comm>} {<-13>} {<->} {<INDEX-NOTMATCHING>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<INDEX-NOTMATCHING.tmp>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<INDEX-NOTMATCHING.tmp>} {<INDEX-NOTMATCHING>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'IFS='> (SQ <'|'>)}]
              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>}
                            {<FPATH>}
                            {<TYPE>}
                            {<OWNER>}
                            {<GROUP>}
                            {<PERM>}
                            {<HASH>}
                            {<LINK>}
                            {<P_TYPE>}
                            {<P_OWNER>}
                            {<P_GROUP>}
                            {<P_PERM>}
                            {<P_HASH>}
                            {<P_LINK>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ (${ Id.VSub_Name TYPE))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ (${ Id.VSub_Name P_TYPE))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name FPATH) <' is a '>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name P_TYPE))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <f>
                                  pattern: (pat.Words words:[{<f>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {<-n>} {(DQ <'regular file, '>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <d>
                                  pattern: (pat.Words words:[{<d>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {<-n>} {(DQ <'directory, '>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <L>
                                  pattern: (pat.Words words:[{<L>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {<-n>} {(DQ <'symlink, '>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<-n>} {(DQ <'but should be a '>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name TYPE))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <f>
                                  pattern: (pat.Words words:[{<f>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {<-n>} {(DQ <'regular file.'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <d>
                                  pattern: (pat.Words words:[{<d>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {<-n>} {(DQ <directory.>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <L>
                                  pattern: (pat.Words words:[{<L>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {<-n>} {(DQ <symlink.>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [22096 22119]
                        )
                      ]
                      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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ (${ Id.VSub_Name OWNER))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ (${ Id.VSub_Name P_OWNER))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-n>}
                                {
                                  (DQ (${ Id.VSub_Name FPATH) <' is owned by user id '> 
                                    (${ Id.VSub_Name P_OWNER) <', '>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ <'but should be owned by user id '> (${ Id.VSub_Name OWNER) <.>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [22284 22307]
                        )
                      ]
                      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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ (${ Id.VSub_Name GROUP))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ (${ Id.VSub_Name P_GROUP))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-n>}
                                {
                                  (DQ (${ Id.VSub_Name FPATH) <' is owned by group id '> 
                                    (${ Id.VSub_Name P_GROUP) <', '>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'but should be owned by group id '> (${ Id.VSub_Name GROUP) <.>)
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [22345 22368]
                        )
                      ]
                      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.AndOr
                                      children: [
                                        (command.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ (${ Id.VSub_Name PERM))}
                                                {<Id.Lit_Equals '='>}
                                                {(DQ (${ Id.VSub_Name P_PERM))}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                        (command.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ (${ Id.VSub_Name TYPE))}
                                                {<Id.Lit_Equals '='>}
                                                {(DQ <L>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-n>}
                                {
                                  (DQ (${ Id.VSub_Name FPATH) <' has '> (${ Id.VSub_Name P_PERM) 
                                    <' permissions, '>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ <'but should have '> (${ Id.VSub_Name PERM) <' permissions.'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [22418 22462]
                        )
                      ]
                      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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ (${ Id.VSub_Name HASH))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ (${ Id.VSub_Name P_HASH))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (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 '['>}
                                                {(DQ (${ Id.VSub_Name TYPE))}
                                                {<Id.Lit_Equals '='>}
                                                {(DQ <L>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {<-n>}
                                        {
                                          (DQ (${ Id.VSub_Name FPATH) <' is a symlink to '> 
                                            (${ Id.VSub_Name P_HASH) <', '>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'but should be a symlink to '> (${ Id.VSub_Name HASH) 
                                            <.>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [22526 22545]
                                )
                              ]
                              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 '['>}
                                                {(DQ (${ Id.VSub_Name TYPE))}
                                                {<Id.Lit_Equals '='>}
                                                {(DQ <f>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {<-n>}
                                        {
                                          (DQ (${ Id.VSub_Name FPATH) <' has SHA256 hash '> 
                                            (${ Id.VSub_Name P_HASH) <', '>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'but should have SHA256 hash '> (${ Id.VSub_Name HASH) 
                                            <.>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [22578 22597]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [22500 22523]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {<INDEX-NOTMATCHING>}
                )
              ]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {($ Id.VSub_Number 1)}
                {($ Id.VSub_Number 1) <.noflags>}
                {($ Id.VSub_Number 1) <.sorted>}
                {($ Id.VSub_Number 2)}
                {<INDEX-NOTMATCHING>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <IDS_run>
      name: IDS_run
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <workdir_init>
                  more_env: []
                  words: [{<workdir_init>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_pick_server_init>
                  more_env: []
                  words: [{<fetch_pick_server_init>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <fetch_pick_server>
                  more_env: []
                  words: [{<fetch_pick_server>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <fetch_key>
                              more_env: []
                              words: [{<fetch_key>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_pick_server>
                          more_env: []
                          words: [{<fetch_pick_server>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <fetch_tag>
                              more_env: []
                              words: [{<fetch_tag>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <fetch_pick_server>
                          more_env: []
                          words: [{<fetch_pick_server>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_tagsanity>
                  more_env: []
                  words: [{<fetch_tagsanity>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_metadata>
                  more_env: []
                  words: [{<fetch_metadata>} {<INDEX-OLD>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_filter_metadata>
                  more_env: []
                  words: [{<fetch_filter_metadata>} {<INDEX-OLD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_filter_metadata>
                  more_env: []
                  words: [{<fetch_filter_metadata>} {<INDEX-ALL>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <sort>
              more_env: []
              words: [{<sort>} {<INDEX-OLD>} {<INDEX-ALL>}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<INDEX-ALL.tmp>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [{<mv>} {<INDEX-ALL.tmp>} {<INDEX-ALL>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<INDEX-OLD>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <fetch_filter_kernel_names>
              more_env: []
              words: [{<fetch_filter_kernel_names>} {<INDEX-ALL>} {(${ Id.VSub_Name KERNCONF)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_inspect_system>
                  more_env: []
                  words: [{<fetch_inspect_system>} {<INDEX-ALL>} {<INDEX-PRESENT>} {<'/dev/null'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <IDS_compare>
              more_env: []
              words: [{<IDS_compare>} {<INDEX-ALL>} {<INDEX-PRESENT>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <get_params>
      name: get_params
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <init_params>
              more_env: []
              words: [{<init_params>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <parse_cmdline>
              more_env: []
              words: [{<parse_cmdline>} {($ Id.VSub_At '@')}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <parse_conffile>
              more_env: []
              words: [{<parse_conffile>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <default_params>
              more_env: []
              words: [{<default_params>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_fetch>
      name: cmd_fetch
      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 '['>}
                                {<Id.KW_Bang '!'>}
                                {<-t>}
                                {<0>}
                                {<-a>}
                                {($ Id.VSub_DollarName NOTTYOK)}
                                {<-eq>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-n>}
                        {
                          (DQ 
                            (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 '`'>
                            ) <' fetch should not '>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'be run non-interactively.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Run '> 
                            (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 '`'>
                            ) <' cron instead.'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [22952 22973]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <fetch_check_params>
              more_env: []
              words: [{<fetch_check_params>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <fetch_run>
                  more_env: []
                  words: [{<fetch_run>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_cron>
      name: cmd_cron
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <fetch_check_params>
              more_env: []
              words: [{<fetch_check_params>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <sleep>
              more_env: []
              words: [
                {<sleep>}
                {
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <jot>
                        more_env: []
                        words: [{<jot>} {<-r>} {<1>} {<0>} {<3600>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'TMPFILE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'TMPFILE='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPFILE='> name:TMPFILE)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                blame_tok: <mktemp>
                                more_env: []
                                words: [{<mktemp>} {<'/tmp/freebsd-update.XXXXXX'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              children: [
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <fetch_run>
                                      more_env: []
                                      words: [{<fetch_run>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(${ Id.VSub_Name TMPFILE)}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [
                                        {<grep>}
                                        {<-q>}
                                        {(DQ <'No updates needed'>)}
                                        {(${ Id.VSub_Name TMPFILE)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(${ Id.VSub_Name VERBOSELEVEL)}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <debug>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <mail>
                      more_env: []
                      words: [
                        {<mail>}
                        {<-s>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Simple
                                  blame_tok: <hostname>
                                  more_env: []
                                  words: [{<hostname>}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <' security updates'>
                          )
                        }
                        {(${ Id.VSub_Name MAILTO)}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(${ Id.VSub_Name TMPFILE)}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [23093 23140]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {(${ Id.VSub_Name TMPFILE)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_upgrade>
      name: cmd_upgrade
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <upgrade_check_params>
              more_env: []
              words: [{<upgrade_check_params>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <upgrade_run>
                  more_env: []
                  words: [{<upgrade_run>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_install>
      name: cmd_install
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <install_check_params>
              more_env: []
              words: [{<install_check_params>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <install_run>
                  more_env: []
                  words: [{<install_run>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_rollback>
      name: cmd_rollback
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rollback_check_params>
              more_env: []
              words: [{<rollback_check_params>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <rollback_run>
                  more_env: []
                  words: [{<rollback_run>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_IDS>
      name: cmd_IDS
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <IDS_check_params>
              more_env: []
              words: [{<IDS_check_params>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <IDS_run>
                  more_env: []
                  words: [{<IDS_run>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [
        {<export>}
        {<Id.Lit_VarLike 'PATH='> <'/sbin'> <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/sbin'> 
          <Id.Lit_Colon ':'> <'/usr/bin'> <Id.Lit_Colon ':'> (${ Id.VSub_Name PATH)
        }
      ]
      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_DollarName PAGER))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PAGER='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PAGER='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PAGER='> name:PAGER)
                  op: assign_op.Equal
                  rhs: {<'/usr/bin/more'>}
                )
              ]
              redirects: []
            )
          ]
          spids: [23306 23319]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [{<export>} {<Id.Lit_VarLike 'LC_ALL='> <C>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <get_params>
      more_env: []
      words: [{<get_params>} {($ Id.VSub_At '@')}]
      redirects: []
      do_fork: T
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [COMMAND]
      iterable: (for_iter.Words words:[{(${ Id.VSub_Name COMMANDS)}])
      semi_tok: <Id.Op_Semi _>
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Simple
              blame_tok: <cmd_>
              more_env: []
              words: [{<cmd_> (${ Id.VSub_Name COMMAND)}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
  ]
)