(command.CommandList
  children: [
    (C {(set)} {(-e)})
    (C {(.)} 
      {
        (word_part.CommandSubPart
          command_list: (command.CommandList children:[(C {(dirname)} {(${ VSub_Number 0)})])
          left_token: <Left_CommandSub '$('>
          spids: [24 30]
        ) (/atexit.sh)
      }
    )
    (C {(.)} 
      {
        (word_part.CommandSubPart
          command_list: (command.CommandList children:[(C {(dirname)} {(${ VSub_Number 0)})])
          left_token: <Left_CommandSub '$('>
          spids: [39 45]
        ) (/colors.sh)
      }
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test)} {(${ VSub_Pound '#')} {(-eq)} {(2)})
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {(echo)} 
                  {
                    (DQ ('Usage: ') 
                      (word_part.CommandSubPart
                        command_list: 
                          (command.CommandList
                            children: [(C {(basename)} {(${ VSub_Number 0)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [69 75]
                      ) (' [version] [candidate]')
                    )
                  }
                )
              terminator: <Op_Semi ';'>
            )
            (command.Sentence
              child: (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [63]
        )
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:VERSION spids:[88])
          op: Equal
          rhs: {(${ VSub_Number 1)}
          spids: [88]
        )
      ]
      spids: [88]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:CANDIDATE spids:[93])
          op: Equal
          rhs: {(${ VSub_Number 2)}
          spids: [93]
        )
      ]
      spids: [93]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:TAG spids:[98])
          op: Equal
          rhs: {(DQ (${ VSub_Name VERSION) (-rc) (${ VSub_Name CANDIDATE))}
          spids: [98]
        )
      ]
      spids: [98]
    )
    (C {(echo)} 
      {
        (DQ (${ VSub_Name GREEN) ('Releasing mesos-') (${ VSub_Name TAG) (' as mesos-') 
          (${ VSub_Name VERSION) (${ VSub_Name NORMAL)
        )
      }
    )
    (C {(read)} {(-p)} {(DQ ('Hit enter to continue ... '))})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:WORK_DIR spids:[139])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(mktemp)} {(-d)} {(/tmp/mesos-release-XXXX)})]
                  )
                left_token: <Left_Backtick '`'>
                spids: [140 146]
              )
            }
          spids: [139]
        )
      ]
      spids: [139]
    )
    (C {(atexit)} {(DQ ('rm -rf ') (${ VSub_Name WORK_DIR))})
    (C {(pushd)} {(${ VSub_Name WORK_DIR)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SVN_DEV_REPO spids:[165])
          op: Equal
          rhs: {(DQ ('https://dist.apache.org/repos/dist/dev/mesos'))}
          spids: [165]
        )
      ]
      spids: [165]
    )
    (C {(echo)} 
      {
        (DQ (${ VSub_Name GREEN) ('Downloading the artifacts from the dev repo ...') 
          (${ VSub_Name NORMAL)
        )
      }
    )
    (C {(svn)} {(export)} {(${ VSub_Name SVN_DEV_REPO) (/) (${ VSub_Name TAG)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SVN_RELEASE_REPO spids:[196])
          op: Equal
          rhs: {(DQ ('https://dist.apache.org/repos/dist/release/mesos'))}
          spids: [196]
        )
      ]
      spids: [196]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:SVN_RELEASE_LOCAL spids:[201])
          op: Equal
          rhs: {(DQ (${ VSub_Name WORK_DIR) (/release))}
          spids: [201]
        )
      ]
      spids: [201]
    )
    (C {(echo)} {(DQ (${ VSub_Name GREEN) ('Checking out svn release repo ...') (${ VSub_Name NORMAL))})
    (C {(svn)} {(co)} {(--depth) (Lit_Other '=') (empty)} {(${ VSub_Name SVN_RELEASE_REPO)} 
      {(${ VSub_Name SVN_RELEASE_LOCAL)}
    )
    (C {(echo)} {(DQ (${ VSub_Name GREEN) ('Uploading the artifacts (the distribution,'))} 
      {(DQ ('signature, and MD5) to the release repo ') (${ VSub_Name NORMAL))}
    )
    (C {(mv)} {(${ VSub_Name TAG)} {(${ VSub_Name SVN_RELEASE_LOCAL) (/) (${ VSub_Name VERSION)})
    (C {(pushd)} {(${ VSub_Name SVN_RELEASE_LOCAL)})
    (C {(svn)} {(add)} {(${ VSub_Name VERSION)})
    (C {(svn)} {(commit)} {(-m)} {(DQ ('Adding mesos-') (${ VSub_Name VERSION) (.))})
    (C {(popd)})
    (C {(popd)})
    (C {(echo)} 
      {
        (DQ (${ VSub_Name GREEN) ('Tagging ') (${ VSub_Name TAG) (' as ') (${ VSub_Name VERSION) (' ') 
          (${ VSub_Name NORMAL)
        )
      }
    )
    (C {(git)} {(tag)} {(${ VSub_Name VERSION)} {(${ VSub_Name TAG)})
    (C {(echo)} 
      {(DQ (${ VSub_Name GREEN) ('Pushing the git tag to the repository...') (${ VSub_Name NORMAL))}
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:MESOS_GIT_URL spids:[369])
          op: Equal
          rhs: {(DQ ('https://git-wip-us.apache.org/repos/asf/mesos.git'))}
          spids: [369]
        )
      ]
      spids: [369]
    )
    (C {(git)} {(push)} {(${ VSub_Name MESOS_GIT_URL)} {(${ VSub_Name VERSION)})
    (C {(echo)} 
      {
        (DQ (${ VSub_Name GREEN) ('Successfully published artifacts to svn release repo ...') 
          (${ VSub_Name NORMAL)
        )
      }
    )
    (C {(echo)} 
      {
        (DQ (${ VSub_Name GREEN) 
          ('Please *release* the staging maven repository that contains the mesos jar ...') (${ VSub_Name NORMAL)
        )
      }
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:input spids:[414])
          op: Equal
          rhs: {(DQ )}
          spids: [414]
        )
      ]
      spids: [414]
    )
    (command.WhileUntil
      keyword: <KW_While while>
      cond: [
        (command.Sentence
          child: 
            (C {(Lit_Other '[')} {(KW_Bang '!')} 
              {
                (word_part.BracedVarSub
                  token: <VSub_Name input>
                  suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(n)})
                  spids: [424 428]
                )
              } {(Lit_Other '=')} {(DQ (y))} {(Lit_Other ']')}
            )
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (C {(read)} {(-p)} {(DQ ('Have you released the maven repository? (y/n): '))} {(input)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (C {(Lit_Other '[')} 
                  {
                    (word_part.BracedVarSub
                      token: <VSub_Name input>
                      suffix_op: (suffix_op.StringUnary op_id:VTest_ColonHyphen arg_word:{(n)})
                      spids: [455 459]
                    )
                  } {(Lit_Other '=')} {(DQ (y))} {(Lit_Other ']')}
                )
                (C {(echo)} {(DQ ('Please release the staging maven repository before continuing'))})
              ]
            )
          ]
          spids: [439 477]
        )
    )
    (C {(echo)} 
      {
        (DQ (${ VSub_Name GREEN) ('Success! Now send the following RESULT VOTE email ...') 
          (${ VSub_Name NORMAL)
        )
      }
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:MESSAGE spids:[496])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [
                      (command.SimpleCommand
                        words: [{(cat)}]
                        redirects: [
                          (redir.HereDoc
                            op: <Redir_DLess '<<'>
                            fd: 16777215
                            here_begin: {(__EOF__)}
                            here_end_span_id: 572
                            stdin_parts: [
                              ('To: dev@mesos.apache.org, user@mesos.apache.org\n')
                              ('Subject: [RESULT][VOTE] Release Apache Mesos ')
                              (${ VSub_Name VERSION)
                              (' (rc')
                              (${ VSub_Name CANDIDATE)
                              (')\n')
                              ('\n')
                              ('Hi all,\n')
                              ('\n')
                              ('The vote for Mesos ')
                              (${ VSub_Name VERSION)
                              (' (rc')
                              (${ VSub_Name CANDIDATE)
                              (') has passed with the\n')
                              ('following votes.\n')
                              ('\n')
                              ('+1 (Binding)\n')
                              ('------------------------------\n')
                              ('***\n')
                              ('***\n')
                              ('***\n')
                              ('\n')
                              ('+1 (Non-binding)\n')
                              ('------------------------------\n')
                              ('***\n')
                              ('***\n')
                              ('***\n')
                              ('\n')
                              ('There were no 0 or -1 votes.\n')
                              ('\n')
                              ('Please find the release at:\n')
                              (${ VSub_Name SVN_RELEASE_REPO)
                              (/)
                              (${ VSub_Name VERSION)
                              ('\n')
                              ('\n')
                              ('It is recommended to use a mirror to download the release:\n')
                              ('http://www.apache.org/dyn/closer.cgi\n')
                              ('\n')
                              ('The CHANGELOG for the release is available at:\n')
                              (
'https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb='
                              )
                              (${ VSub_Name VERSION)
                              ('\n')
                              ('\n')
                              ('The mesos-')
                              (${ VSub_Name VERSION)
                              ('.jar has been released to:\n')
                              ('https://repository.apache.org\n')
                              ('\n')
                              (
'The website (http://mesos.apache.org) will be updated shortly to reflect this release.\n'
                              )
                              ('\n')
                              ('Thanks,\n')
                            ]
                          )
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [497 573]
              )
            }
          spids: [496]
        )
      ]
      spids: [496]
    )
    (C {(echo)} {(DQ (${ VSub_Name MESSAGE))})
    (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)