(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ATLAS_API_URL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ATLAS_API_URL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATLAS_API_URL='> name:ATLAS_API_URL)
          op: assign_op.Equal
          rhs: {(SQ )}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ATLAS_UPLOAD_URL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ATLAS_UPLOAD_URL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATLAS_UPLOAD_URL='> name:ATLAS_UPLOAD_URL)
          op: assign_op.Equal
          rhs: {(SQ <'https://app.vagrantup.com'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DESCRIPTION='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DESCRIPTION='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DESCRIPTION='> name:DESCRIPTION)
          op: assign_op.Equal
          rhs: {(DQ <'FreeBSD Snapshot Build'>)}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Number 0) <' usage:'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ 
                    <
'-b box-name -d \'box description\' -f box-to-upload -k api-key -p provider -u user -v version'
                    >
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <main>
      name: main
      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: <getopts>
                          more_env: []
                          words: [{<getopts>} {(DQ <'b:d:f:k:p:u:v:'>)} {<arg>}]
                          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 arg))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <b>
                          pattern: (pat.Words words:[{<b>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'BOX='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'BOX='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOX='> name:BOX)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <d>
                          pattern: (pat.Words words:[{<d>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'DESCRIPTION='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'DESCRIPTION='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'DESCRIPTION='>
                                      name: DESCRIPTION
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <f>
                          pattern: (pat.Words words:[{<f>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FILE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FILE='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILE='> name:FILE)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <k>
                          pattern: (pat.Words words:[{<k>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'KEY='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'KEY='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KEY='> name:KEY)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <p>
                          pattern: (pat.Words words:[{<p>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'PROVIDER='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'PROVIDER='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'PROVIDER='>
                                      name: PROVIDER
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <u>
                          pattern: (pat.Words words:[{<u>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'USERNAME='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'USERNAME='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'USERNAME='>
                                      name: USERNAME
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <v>
                          pattern: (pat.Words words:[{<v>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'VERSION='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'VERSION='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'VERSION='>
                                      name: VERSION
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  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 BOX))}
                                {<-o>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name FILE))}
                                {<-o>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name KEY))}
                                {<-o>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name PROVIDER))}
                                {<-o>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name USERNAME))}
                                {<-o>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name VERSION))}
                                {<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: <usage>
                          more_env: []
                          words: [{<usage>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                          arg_word: {<0>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [280 356]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'BOXRESULT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'BOXRESULT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BOXRESULT='> name:BOXRESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <'/usr/local/bin/curl'>
                            more_env: []
                            words: [
                              {<'/usr/local/bin/curl'>}
                              {<-s>}
                              {
                                (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                                  (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'?access_token='> (${ Id.VSub_Name KEY)
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              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_QMark '?')}
                                {<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 <'Failed to connect to the API'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [402 416]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {($ Id.VSub_DollarName BOXRESULT)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [
                    {<grep>}
                    {
                      (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <name> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <':'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name BOX) 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        )
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  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 '['>}
                                {($ Id.VSub_QMark '?')}
                                {<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 <'Creating box: '> (${ Id.VSub_Name BOX))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <'/usr/local/bin/curl'>
                      more_env: []
                      words: [
                        {<'/usr/local/bin/curl'>}
                        {<-s>}
                        {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/boxes'>}
                        {<-X>}
                        {<POST>}
                        {<-d>}
                        {(DQ <'box[name]='> (${ Id.VSub_Name BOX))}
                        {<-d>}
                        {(DQ <'access_token='> (${ Id.VSub_Name KEY))}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <'/usr/local/bin/curl'>
                      more_env: []
                      words: [
                        {<'/usr/local/bin/curl'>}
                        {<-s>}
                        {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                          (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX)
                        }
                        {<-X>}
                        {<PUT>}
                        {<-d>}
                        {(DQ <'box[is_private]=false'>)}
                        {<-d>}
                        {(DQ <'access_token='> (${ Id.VSub_Name KEY))}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <'/usr/local/bin/curl'>
                      more_env: []
                      words: [
                        {<'/usr/local/bin/curl'>}
                        {<-s>}
                        {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                          (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX)
                        }
                        {<-X>}
                        {<PUT>}
                        {<-d>}
                        {(DQ <'box[description]=\''> (${ Id.VSub_Name DESCRIPTION) <'\''>)}
                        {<-d>}
                        {(DQ <'access_token='> (${ Id.VSub_Name KEY))}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [460 474]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Box already exists'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'VERSIONRESULT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'VERSIONRESULT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VERSIONRESULT='> name:VERSIONRESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <'/usr/local/bin/curl'>
                            more_env: []
                            words: [
                              {<'/usr/local/bin/curl'>}
                              {<-s>}
                              {
                                (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                                  (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'?access_token='> 
                                  (${ Id.VSub_Name KEY)
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              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_QMark '?')}
                                {<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 <'Failed to connect to the API'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [655 669]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {($ Id.VSub_DollarName VERSIONRESULT)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {(DQ <'version/'> (${ Id.VSub_Name VERSION))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  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 '['>}
                                {($ Id.VSub_QMark '?')}
                                {<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 <'Creating version: '> (${ Id.VSub_Name VERSION))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <'/usr/local/bin/curl'>
                      more_env: []
                      words: [
                        {<'/usr/local/bin/curl'>}
                        {<-s>}
                        {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                          (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/versions'>
                        }
                        {<-X>}
                        {<POST>}
                        {<-d>}
                        {(DQ <'version[version]='> (${ Id.VSub_Name VERSION))}
                        {<-d>}
                        {(DQ <'access_token='> (${ Id.VSub_Name KEY))}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <'/usr/local/bin/curl'>
                      more_env: []
                      words: [
                        {<'/usr/local/bin/curl'>}
                        {<-s>}
                        {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                          (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION)
                        }
                        {<-X>}
                        {<PUT>}
                        {<-d>}
                        {(DQ <'version[description]='> (${ Id.VSub_Name DESCRIPTION))}
                        {<-d>}
                        {(DQ <'access_token='> (${ Id.VSub_Name KEY))}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'VERSIONRESULT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'VERSIONRESULT='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'VERSIONRESULT='>
                              name: VERSIONRESULT
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <'/usr/local/bin/curl'>
                                    more_env: []
                                    words: [
                                      {<'/usr/local/bin/curl'>}
                                      {<-s>}
                                      {
                                        (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                                          (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'?access_token='> 
                                          (${ Id.VSub_Name KEY)
                                        )
                                      }
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName VERSIONRESULT)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {(DQ <'version/'> (${ Id.VSub_Name VERSION))}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          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 '['>}
                                        {($ Id.VSub_QMark '?')}
                                        {<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 <'Failed to create version'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [876 890]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [708 722]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Version already exists'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PROVIDERRESULT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PROVIDERRESULT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROVIDERRESULT='> name:PROVIDERRESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <'/usr/local/bin/curl'>
                            more_env: []
                            words: [
                              {<'/usr/local/bin/curl'>}
                              {<-s>}
                              {
                                (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                                  (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/provider/'> 
                                  (${ Id.VSub_Name PROVIDER) <'?access_token='> (${ Id.VSub_Name KEY)
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              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_QMark '?')}
                                {<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 <'Failed to connect to the API'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [960 974]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {($ Id.VSub_DollarName PROVIDERRESULT)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {(DQ <'provider/'> (${ Id.VSub_Name PROVIDER))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  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 '['>}
                                {($ Id.VSub_QMark '?')}
                                {<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 <'Creating provider: '> (${ Id.VSub_Name PROVIDER))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <'/usr/local/bin/curl'>
                      more_env: []
                      words: [
                        {<'/usr/local/bin/curl'>}
                        {<-s>}
                        {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                          (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/providers'>
                        }
                        {<-X>}
                        {<POST>}
                        {<-d>}
                        {(DQ <'provider[name]='> (${ Id.VSub_Name PROVIDER))}
                        {<-d>}
                        {(DQ <'access_token='> (${ Id.VSub_Name KEY))}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [1013 1027]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Provider already exists'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TOKENRESULT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TOKENRESULT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TOKENRESULT='> name:TOKENRESULT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <'/usr/local/bin/curl'>
                            more_env: []
                            words: [
                              {<'/usr/local/bin/curl'>}
                              {<-s>}
                              {
                                (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                                  (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/provider/'> 
                                  (${ Id.VSub_Name PROVIDER) <'/upload?access_token='> (${ Id.VSub_Name KEY)
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              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_QMark '?')}
                                {<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 <'Failed to get the token from the API'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [1140 1154]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(${ Id.VSub_Name TOKENRESULT)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {<-E>} {(DQ <upload_path>)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  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 '['>}
                                {($ Id.VSub_QMark '?')}
                                {<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 <'No token found from the API'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<2>}
                    )
                  ]
                  spids: [1194 1208]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'TOKEN='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'TOKEN='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TOKEN='> name:TOKEN)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <echo>
                                    more_env: []
                                    words: [{<echo>} {($ Id.VSub_DollarName TOKENRESULT)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <sed>
                                    more_env: []
                                    words: [
                                      {<sed>}
                                      {<-e>}
                                      {(SQ <'s/.*token":"//'>)}
                                      {<-e>}
                                      {(SQ <'s/.*upload_path":"//'>)}
                                      {<-e>}
                                      {(SQ <'s/}$//g'>)}
                                      {<-e>}
                                      {(SQ <'s/"//g'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Uploading to Atlas'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'UPLOADRESULT='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'UPLOADRESULT='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UPLOADRESULT='> name:UPLOADRESULT)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <'/usr/local/bin/curl'>
                                more_env: []
                                words: [
                                  {<'/usr/local/bin/curl'>}
                                  {<-s>}
                                  {<-X>}
                                  {<PUT>}
                                  {<--upload-file>}
                                  {(${ Id.VSub_Name FILE)}
                                  {(DQ (${ Id.VSub_Name TOKEN))}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <Validating>)}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'VALIDRESULT='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'VALIDRESULT='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'VALIDRESULT='> name:VALIDRESULT)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <'/usr/local/bin/curl'>
                                more_env: []
                                words: [
                                  {<'/usr/local/bin/curl'>}
                                  {<-s>}
                                  {
                                    (DQ (${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> 
                                      (${ Id.VSub_Name USERNAME) <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/provider/'> 
                                      (${ Id.VSub_Name PROVIDER) <'?access_token='> (${ Id.VSub_Name KEY)
                                    )
                                  }
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'HOSTED_TOKEN='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'HOSTED_TOKEN='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HOSTED_TOKEN='> name:HOSTED_TOKEN)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <echo>
                                    more_env: []
                                    words: [{<echo>} {($ Id.VSub_DollarName VALIDRESULT)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <sed>
                                    more_env: []
                                    words: [
                                      {<sed>}
                                      {<-e>}
                                      {(SQ <'s/.*"hosted"://'>)}
                                      {<-e>}
                                      {(SQ <'s/,.*$//'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  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>}
                                    {(${ Id.VSub_Name TOKEN)}
                                    {<-a>}
                                    {(DQ (${ Id.VSub_Name HOSTED_TOKEN))}
                                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                    {(DQ <true>)}
                                    {<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 <'Upload failed, try again.'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                          arg_word: {<2>}
                        )
                      ]
                      spids: [1363 1393]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ <'Releasing '> (${ Id.VSub_Name VERSION) <' of '> (${ Id.VSub_Name BOX) 
                        <' in Atlas'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <'/usr/local/bin/curl'>
                  more_env: []
                  words: [
                    {<'/usr/local/bin/curl'>}
                    {<-s>}
                    {(${ Id.VSub_Name ATLAS_UPLOAD_URL) <'/api/v1/box/'> (${ Id.VSub_Name USERNAME) 
                      <'/'> (${ Id.VSub_Name BOX) <'/version/'> (${ Id.VSub_Name VERSION) <'/release'>
                    }
                    {<-X>}
                    {<PUT>}
                    {<-d>}
                    {(DQ <'access_token='> (${ Id.VSub_Name KEY))}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <main>
      more_env: []
      words: [{<main>} {(DQ ($ Id.VSub_At '@'))}]
      redirects: []
      do_fork: T
    )
  ]
)