(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'KUBE_ROOT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'KUBE_ROOT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KUBE_ROOT='> name:KUBE_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <dirname>
                    more_env: []
                    words: [{<dirname>} {(DQ (${ Id.VSub_Name BASH_SOURCE))}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              ) <'/../..'>
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <source>
      more_env: []
      words: [
        {<source>}
        {
          (DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/gce/'> 
            (BracedVarSub
              left: <Id.Left_DollarBrace '${'>
              token: <Id.VSub_Name KUBE_CONFIG_FILE>
              var_name: KUBE_CONFIG_FILE
              suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{(DQ <config-default.sh>)})
              right: <Id.Right_DollarBrace '}'>
            )
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <source>
      more_env: []
      words: [{<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/common.sh'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <source>
      more_env: []
      words: [{<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/hack/lib/util.sh'>)}]
      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.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                              right: {(DQ <debian>)}
                            )
                          right: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                                  right: {(DQ <container-linux>)}
                                )
                              right: 
                                (bool_expr.LogicalOr
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                                      right: {(DQ <trusty>)}
                                    )
                                  right: 
                                    (bool_expr.LogicalOr
                                      left: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                                          right: {(DQ <gci>)}
                                        )
                                      right: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                                          right: {(DQ <ubuntu>)}
                                        )
                                    )
                                )
                            )
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <source>
              more_env: []
              words: [
                {<source>}
                {
                  (DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/gce/'> 
                    (${ Id.VSub_Name NODE_OS_DISTRIBUTION) <'/node-helper.sh'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          spids: [101 176]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [
            {<echo>}
            {
              (DQ <'Cannot operate on cluster using node os distro: '> 
                (${ Id.VSub_Name NODE_OS_DISTRIBUTION)
              )
            }
          ]
          redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
        (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> 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.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.LogicalOr
                          left: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                              right: {(DQ <container-linux>)}
                            )
                          right: 
                            (bool_expr.LogicalOr
                              left: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                                  right: {(DQ <trusty>)}
                                )
                              right: 
                                (bool_expr.LogicalOr
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                                      right: {(DQ <gci>)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                                      right: {(DQ <ubuntu>)}
                                    )
                                )
                            )
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <source>
              more_env: []
              words: [
                {<source>}
                {
                  (DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/gce/'> 
                    (${ Id.VSub_Name MASTER_OS_DISTRIBUTION) <'/master-helper.sh'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          spids: [215 276]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [
            {<echo>}
            {
              (DQ <'Cannot operate on cluster using master os distro: '> 
                (${ Id.VSub_Name MASTER_OS_DISTRIBUTION)
              )
            }
          ]
          redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
        (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> 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.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                          right: {(DQ <gci>)}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                      name: DEFAULT_GCI_PROJECT
                    )
                  op: assign_op.Equal
                  rhs: {<google-containers>}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name GCI_VERSION))}
                                  right: {(DQ <cos>) <Id.Lit_Other '*'>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                              name: DEFAULT_GCI_PROJECT
                            )
                          op: assign_op.Equal
                          rhs: {<cos-cloud>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [341 361]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'MASTER_IMAGE_PROJECT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'MASTER_IMAGE_PROJECT='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'MASTER_IMAGE_PROJECT='>
                      name: MASTER_IMAGE_PROJECT
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name KUBE_GCE_MASTER_PROJECT>
                        var_name: KUBE_GCE_MASTER_PROJECT
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {(${ Id.VSub_Name DEFAULT_GCI_PROJECT)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'MASTER_IMAGE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'MASTER_IMAGE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MASTER_IMAGE='> name:MASTER_IMAGE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name KUBE_GCE_MASTER_IMAGE>
                        var_name: KUBE_GCE_MASTER_IMAGE
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {(${ Id.VSub_Name GCI_VERSION)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          spids: [315 334]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                          right: {(DQ <debian>)}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'MASTER_IMAGE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'MASTER_IMAGE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MASTER_IMAGE='> name:MASTER_IMAGE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name KUBE_GCE_MASTER_IMAGE>
                        var_name: KUBE_GCE_MASTER_IMAGE
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {(${ Id.VSub_Name CVM_VERSION)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'MASTER_IMAGE_PROJECT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'MASTER_IMAGE_PROJECT='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'MASTER_IMAGE_PROJECT='>
                      name: MASTER_IMAGE_PROJECT
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name KUBE_GCE_MASTER_PROJECT>
                        var_name: KUBE_GCE_MASTER_PROJECT
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {<google-containers>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          spids: [398 417]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <set-node-image>
      name: set-node-image
      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                                  right: {(DQ <gci>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                              name: DEFAULT_GCI_PROJECT
                            )
                          op: assign_op.Equal
                          rhs: {<google-containers>}
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ (${ Id.VSub_Name GCI_VERSION))}
                                          right: {(DQ <cos>) <Id.Lit_Other '*'>}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'DEFAULT_GCI_PROJECT='>
                                      name: DEFAULT_GCI_PROJECT
                                    )
                                  op: assign_op.Equal
                                  rhs: {<cos-cloud>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [481 501]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NODE_IMAGE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NODE_IMAGE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NODE_IMAGE='> name:NODE_IMAGE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name KUBE_GCE_NODE_IMAGE>
                                var_name: KUBE_GCE_NODE_IMAGE
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonHyphen _>
                                    arg_word: {(${ Id.VSub_Name GCI_VERSION)}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NODE_IMAGE_PROJECT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NODE_IMAGE_PROJECT='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'NODE_IMAGE_PROJECT='>
                              name: NODE_IMAGE_PROJECT
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name KUBE_GCE_NODE_PROJECT>
                                var_name: KUBE_GCE_NODE_PROJECT
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonHyphen _>
                                    arg_word: {(${ Id.VSub_Name DEFAULT_GCI_PROJECT)}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [455 474]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                                  right: {(DQ <debian>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NODE_IMAGE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NODE_IMAGE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NODE_IMAGE='> name:NODE_IMAGE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name KUBE_GCE_NODE_IMAGE>
                                var_name: KUBE_GCE_NODE_IMAGE
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonHyphen _>
                                    arg_word: {(${ Id.VSub_Name CVM_VERSION)}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NODE_IMAGE_PROJECT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NODE_IMAGE_PROJECT='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'NODE_IMAGE_PROJECT='>
                              name: NODE_IMAGE_PROJECT
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name KUBE_GCE_NODE_PROJECT>
                                var_name: KUBE_GCE_NODE_PROJECT
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonHyphen _>
                                    arg_word: {<google-containers>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [540 559]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <set-node-image>
      more_env: []
      words: [{<set-node-image>}]
      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.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {(DQ (${ Id.VSub_Name ENABLE_CLUSTER_AUTOSCALER))}
                          right: {(DQ <true>)}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName AUTOSCALER_MIN_NODES)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'AUTOSCALER_MIN_NODES not set.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [613 624]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {($ Id.VSub_DollarName AUTOSCALER_MAX_NODES)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'AUTOSCALER_MAX_NODES not set.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [642 653]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [591 610]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'NODE_INSTANCE_PREFIX='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'NODE_INSTANCE_PREFIX='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'NODE_INSTANCE_PREFIX='>
              name: NODE_INSTANCE_PREFIX
            )
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name INSTANCE_PREFIX) <-minion>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'NODE_TAGS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'NODE_TAGS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NODE_TAGS='> name:NODE_TAGS)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name NODE_TAG))}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ALLOCATE_NODE_CIDRS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ALLOCATE_NODE_CIDRS='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'ALLOCATE_NODE_CIDRS='>
              name: ALLOCATE_NODE_CIDRS
            )
          op: assign_op.Equal
          rhs: {<true>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PREEXISTING_NETWORK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PREEXISTING_NETWORK='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'PREEXISTING_NETWORK='>
              name: PREEXISTING_NETWORK
            )
          op: assign_op.Equal
          rhs: {<false>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PREEXISTING_NETWORK_MODE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PREEXISTING_NETWORK_MODE='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'PREEXISTING_NETWORK_MODE='>
              name: PREEXISTING_NETWORK_MODE
            )
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'KUBE_PROMPT_FOR_UPDATE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'KUBE_PROMPT_FOR_UPDATE='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'KUBE_PROMPT_FOR_UPDATE='>
              name: KUBE_PROMPT_FOR_UPDATE
            )
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name KUBE_PROMPT_FOR_UPDATE>
                var_name: KUBE_PROMPT_FOR_UPDATE
                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{(DQ <n>)})
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'KUBE_CLUSTER_INITIALIZATION_TIMEOUT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'KUBE_CLUSTER_INITIALIZATION_TIMEOUT='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'KUBE_CLUSTER_INITIALIZATION_TIMEOUT='>
              name: KUBE_CLUSTER_INITIALIZATION_TIMEOUT
            )
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name KUBE_CLUSTER_INITIALIZATION_TIMEOUT>
                var_name: KUBE_CLUSTER_INITIALIZATION_TIMEOUT
                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<300>})
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <join_csv>
      name: join_csv
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [{<local>} {<Id.Lit_VarLike 'IFS='> (SQ <','>)}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_Star '*'))}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <split_csv>
      name: split_csv
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_Star '*'))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-d> (SQ <','>)} {<-f1>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <verify-prereqs>
      name: verify-prereqs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<cmd>}]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [cmd]
              iterable: (for_iter.Words words:[{<gcloud>} {<gsutil>}])
              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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <which>
                                          more_env: []
                                          words: [{<which>} {(DQ (${ Id.VSub_Name cmd))}]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <local>
                              more_env: []
                              words: [{<local>} {<Id.Lit_VarLike 'resp='> (DQ <n>)}]
                              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.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: {(DQ (${ Id.VSub_Name KUBE_PROMPT_FOR_UPDATE))}
                                                  right: {(DQ <y>)}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'Can\'t find '> (${ Id.VSub_Name cmd) 
                                            <
' in PATH.  Do you wish to install the Google Cloud SDK? [Y/n]'
                                            >
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <read>
                                      more_env: []
                                      words: [{<read>} {<resp>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [837 856]
                                )
                              ]
                              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.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.LogicalAnd
                                                  left: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobNEqual
                                                      left: {(DQ (${ Id.VSub_Name resp))}
                                                      right: {(DQ <n>)}
                                                    )
                                                  right: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobNEqual
                                                      left: {(DQ (${ Id.VSub_Name resp))}
                                                      right: {(DQ <N>)}
                                                    )
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <curl>
                                          more_env: []
                                          words: [
                                            {<curl>}
                                            {<https> <Id.Lit_Colon ':'> <'//sdk.cloud.google.com'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <bash>
                                          more_env: []
                                          words: [{<bash>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  ]
                                  spids: [878 911]
                                )
                              ]
                              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: <which>
                                                  more_env: []
                                                  words: [{<which>} {(DQ (${ Id.VSub_Name cmd))}]
                                                  redirects: [
                                                    (Redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      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>}
                                        {
                                          (DQ <'Can\'t find '> (${ Id.VSub_Name cmd) 
                                            <' in PATH, please fix and retry. The Google Cloud '>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ 
                                            <
'SDK can be downloaded from https://cloud.google.com/sdk/.'
                                            >
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [928 944]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [810 826]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <update-or-verify-gcloud>
              more_env: []
              words: [{<update-or-verify-gcloud>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <detect-project>
      name: detect-project
      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name PROJECT>
                                          var_name: PROJECT
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PROJECT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PROJECT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROJECT='> name:PROJECT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <gcloud>
                                    more_env: []
                                    words: [
                                      {<gcloud>}
                                      {<config>}
                                      {<list>}
                                      {<project>}
                                      {<--format>}
                                      {(SQ <'value(core.project)'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1020 1036]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NETWORK_PROJECT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NETWORK_PROJECT='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'NETWORK_PROJECT='>
                      name: NETWORK_PROJECT
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name NETWORK_PROJECT>
                        var_name: NETWORK_PROJECT
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {(${ Id.VSub_Name PROJECT)}
                          )
                        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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name PROJECT>
                                          var_name: PROJECT
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            <
'Could not detect Google Cloud Platform project.  Set the default project using '
                            >
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'\'gcloud config set project <PROJECT>\''>)}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1072 1088]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name PROJECT_REPORTED>
                                          var_name: PROJECT_REPORTED
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Project: '> (${ Id.VSub_Name PROJECT))}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Network Project: '> (${ Id.VSub_Name NETWORK_PROJECT))}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Zone: '> (${ Id.VSub_Name ZONE))}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PROJECT_REPORTED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PROJECT_REPORTED='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PROJECT_REPORTED='>
                              name: PROJECT_REPORTED
                            )
                          op: assign_op.Equal
                          rhs: {<true>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1119 1135]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <gsutil_get_tar_md5>
      name: gsutil_get_tar_md5
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'tar_location='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'tar_md5='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <gsutil>
                            more_env: []
                            words: [{<gsutil>} {<hash>} {<-h>} {<-m>} {(${ Id.VSub_Name tar_location)}]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <grep>
                            more_env: []
                            words: [{<grep>} {(DQ <'Hash (md5):'>)}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <awk>
                            more_env: []
                            words: [{<awk>} {<-F>} {(SQ <':'>)} {(SQ <'{print $2}'>)}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <sed>
                            more_env: []
                            words: [{<sed>} {(SQ <'s/^[[:space:]]*//g'>)}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name tar_md5))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <copy-to-staging>
      name: copy-to-staging
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'staging_path='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'gs_url='> ($ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'tar='> ($ Id.VSub_Number 3)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'hash='> ($ Id.VSub_Number 4)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'basename_tar='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <basename>
                        more_env: []
                        words: [{<basename>} {(${ Id.VSub_Name tar)}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'remote_tar_md5='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <gsutil_get_tar_md5>
                        more_env: []
                        words: [
                          {<gsutil_get_tar_md5>}
                          {(DQ (${ Id.VSub_Name staging_path) <'/'> (${ Id.VSub_Name basename_tar))}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {(${ Id.VSub_Name remote_tar_md5)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<-r>}
                        {<Id.Lit_VarLike 'local_tar_md5='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <gsutil_get_tar_md5>
                                more_env: []
                                words: [{<gsutil_get_tar_md5>} {(DQ (${ Id.VSub_Name tar))}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ (${ Id.VSub_Name remote_tar_md5))}
                                          right: {(DQ (${ Id.VSub_Name local_tar_md5))}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'+++ '> (${ Id.VSub_Name basename_tar) 
                                    <' uploaded earlier, cloud and local file md5 match (md5 = '> (${ Id.VSub_Name local_tar_md5) <')'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [1430 1451]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1390 1403]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name hash))}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name tar) <.sha1>)}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <gsutil>
              more_env: []
              words: [
                {<gsutil>}
                {<-m>}
                {<-q>}
                {<-h>}
                {(DQ <'Cache-Control:private, max-age=0'>)}
                {<cp>}
                {(DQ (${ Id.VSub_Name tar))}
                {(DQ (${ Id.VSub_Name tar) <.sha1>)}
                {(DQ (${ Id.VSub_Name staging_path))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gsutil>
              more_env: []
              words: [
                {<gsutil>}
                {<-m>}
                {<acl>}
                {<ch>}
                {<-g>}
                {<all> <Id.Lit_Colon ':'> <R>}
                {(DQ (${ Id.VSub_Name gs_url))}
                {(DQ (${ Id.VSub_Name gs_url) <.sha1>)}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'+++ '> (${ Id.VSub_Name basename_tar) <' uploaded (sha1 = '> 
                    (${ Id.VSub_Name hash) <')'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <set-preferred-region>
      name: set-preferred-region
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(${ Id.VSub_Name ZONE)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <asia->
                  pattern: (pat.Words words:[{<asia-> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                              name: PREFERRED_REGION
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [{(DQ <asia>)} {(DQ <us>)} {(DQ <eu>)}]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <europe->
                  pattern: (pat.Words words:[{<europe-> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                              name: PREFERRED_REGION
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [{(DQ <eu>)} {(DQ <us>)} {(DQ <asia>)}]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                              name: PREFERRED_REGION
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [{(DQ <us>)} {(DQ <eu>)} {(DQ <asia>)}]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'preferred='> 
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name PREFERRED_REGION>
                      var_name: PREFERRED_REGION
                      bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: {(DQ (${ Id.VSub_Name RELEASE_REGION_FALLBACK))}
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'PREFERRED_REGION='>
                              name: PREFERRED_REGION
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [{(DQ (${ Id.VSub_Name preferred))}]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1726 1745]
                )
              ]
              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.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ (${ Id.VSub_Name REGIONAL_KUBE_ADDONS))}
                                      right: {(DQ <true>)}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(DQ (${ Id.VSub_Name preferred))}
                                      right: {(DQ <us>)}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_ADDON_REGISTRY='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_ADDON_REGISTRY='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_ADDON_REGISTRY='>
                              name: KUBE_ADDON_REGISTRY
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name preferred) <'.gcr.io/google_containers'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1776 1813]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'KUBE_ADDON_REGISTRY='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'KUBE_ADDON_REGISTRY='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'KUBE_ADDON_REGISTRY='>
                          name: KUBE_ADDON_REGISTRY
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <'gcr.io/google_containers'>)}
                    )
                  ]
                  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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name ENABLE_DOCKER_REGISTRY_CACHE>
                                          var_name: ENABLE_DOCKER_REGISTRY_CACHE
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DOCKER_REGISTRY_MIRROR_URL='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DOCKER_REGISTRY_MIRROR_URL='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'DOCKER_REGISTRY_MIRROR_URL='>
                              name: DOCKER_REGISTRY_MIRROR_URL
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'https://'> (${ Id.VSub_Name preferred) <-mirror.gcr.io>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1838 1858]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <upload-server-tars>
      name: upload-server-tars
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_URL='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_URL='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_URL='>
                      name: SERVER_BINARY_TAR_URL
                    )
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_HASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_HASH='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_HASH='>
                      name: SERVER_BINARY_TAR_HASH
                    )
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SALT_TAR_URL='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SALT_TAR_URL='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SALT_TAR_URL='> name:SALT_TAR_URL)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SALT_TAR_HASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SALT_TAR_HASH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SALT_TAR_HASH='> name:SALT_TAR_HASH)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_URL='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_URL='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_URL='>
                      name: KUBE_MANIFESTS_TAR_URL
                    )
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_HASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_HASH='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_HASH='>
                      name: KUBE_MANIFESTS_TAR_HASH
                    )
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<project_hash>}]
              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: <which>
                              more_env: []
                              words: [{<which>} {<md5>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (Redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'project_hash='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'project_hash='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'project_hash='>
                              name: project_hash
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <md5>
                                    more_env: []
                                    words: [{<md5>} {<-q>} {<-s>} {(DQ ($ Id.VSub_DollarName PROJECT))}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1957 1971]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'project_hash='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'project_hash='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'project_hash='> name:project_hash)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <echo>
                                    more_env: []
                                    words: [{<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName PROJECT))}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <md5sum>
                                    more_env: []
                                    words: [{<md5sum>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <awk>
                                    more_env: []
                                    words: [{<awk>} {(SQ <'{ print $1 }'>)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'project_hash='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'project_hash='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'project_hash='> name:project_hash)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name project_hash>
                        var_name: project_hash
                        suffix_op: 
                          (suffix_op.Slice
                            begin: {<Id.Lit_Digits 0>}
                            length: {<Id.Lit_Digits 10>}
                          )
                        right: <Id.Arith_RBrace _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <set-preferred-region>
              more_env: []
              words: [{<set-preferred-region>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_HASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_HASH='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_HASH='>
                      name: SERVER_BINARY_TAR_HASH
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <sha1sum-file>
                            more_env: []
                            words: [{<sha1sum-file>} {(DQ (${ Id.VSub_Name SERVER_BINARY_TAR))}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SALT_TAR_HASH='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SALT_TAR_HASH='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SALT_TAR_HASH='> name:SALT_TAR_HASH)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <sha1sum-file>
                            more_env: []
                            words: [{<sha1sum-file>} {(DQ (${ Id.VSub_Name SALT_TAR))}]
                            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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_MANIFESTS_TAR>
                                          var_name: KUBE_MANIFESTS_TAR
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_HASH='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_HASH='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_HASH='>
                              name: KUBE_MANIFESTS_TAR_HASH
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <sha1sum-file>
                                    more_env: []
                                    words: [{<sha1sum-file>} {(DQ (${ Id.VSub_Name KUBE_MANIFESTS_TAR))}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2066 2082]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'server_binary_tar_urls='> 
                  (ShArrayLiteral
                    left: <Id.Op_LParen _>
                    words: []
                    right: <Id.Right_ShArrayLiteral _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'salt_tar_urls='> 
                  (ShArrayLiteral
                    left: <Id.Op_LParen _>
                    words: []
                    right: <Id.Right_ShArrayLiteral _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'kube_manifest_tar_urls='> 
                  (ShArrayLiteral
                    left: <Id.Op_LParen _>
                    words: []
                    right: <Id.Right_ShArrayLiteral _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [region]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name PREFERRED_REGION>
                          var_name: PREFERRED_REGION
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'suffix='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'suffix='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suffix='> name:suffix)
                          op: assign_op.Equal
                          rhs: {(DQ <-> (${ Id.VSub_Name region))}
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ (${ Id.VSub_Name suffix))}
                                          right: {(DQ <-us>)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'suffix='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'suffix='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suffix='> name:suffix)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2151 2170]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'staging_bucket='> 
                          (DQ <'gs://kubernetes-staging-'> (${ Id.VSub_Name project_hash) 
                            (${ Id.VSub_Name suffix)
                          )
                        }
                      ]
                      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: <gsutil>
                                          more_env: []
                                          words: [
                                            {<gsutil>}
                                            {<ls>}
                                            {(DQ (${ Id.VSub_Name staging_bucket))}
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              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>} {(DQ <'Creating '> (${ Id.VSub_Name staging_bucket))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <gsutil>
                              more_env: []
                              words: [
                                {<gsutil>}
                                {<mb>}
                                {<-l>}
                                {(DQ (${ Id.VSub_Name region))}
                                {(DQ (${ Id.VSub_Name staging_bucket))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [2200 2218]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'staging_path='> 
                          (DQ (${ Id.VSub_Name staging_bucket) <'/'> (${ Id.VSub_Name INSTANCE_PREFIX) 
                            <-devel>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'+++ Staging server tars to Google Storage: '> 
                            (${ Id.VSub_Name staging_path)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'server_binary_gs_url='> 
                          (DQ (${ Id.VSub_Name staging_path) <'/'> 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name SERVER_BINARY_TAR>
                              var_name: SERVER_BINARY_TAR
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VOp1_DPound '##'>
                                  arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'salt_gs_url='> 
                          (DQ (${ Id.VSub_Name staging_path) <'/'> 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name SALT_TAR>
                              var_name: SALT_TAR
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VOp1_DPound '##'>
                                  arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <copy-to-staging>
                      more_env: []
                      words: [
                        {<copy-to-staging>}
                        {(DQ (${ Id.VSub_Name staging_path))}
                        {(DQ (${ Id.VSub_Name server_binary_gs_url))}
                        {(DQ (${ Id.VSub_Name SERVER_BINARY_TAR))}
                        {(DQ (${ Id.VSub_Name SERVER_BINARY_TAR_HASH))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <copy-to-staging>
                      more_env: []
                      words: [
                        {<copy-to-staging>}
                        {(DQ (${ Id.VSub_Name staging_path))}
                        {(DQ (${ Id.VSub_Name salt_gs_url))}
                        {(DQ (${ Id.VSub_Name SALT_TAR))}
                        {(DQ (${ Id.VSub_Name SALT_TAR_HASH))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'server_binary_tar_urls+='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'server_binary_tar_urls+='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'server_binary_tar_urls+='>
                              name: server_binary_tar_urls
                            )
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name server_binary_gs_url>
                                        var_name: server_binary_gs_url
                                        suffix_op: 
                                          (suffix_op.PatSub
                                            pat: 
                                              {<'gs:'> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\/'>
                                                  ch: '/'
                                                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\/'> ch:'/')
                                              }
                                            replace: 
                                              {<'https:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> 
                                                <storage.googleapis.com> <Id.Lit_Slash '/'>
                                              }
                                            replace_mode: Id.Undefined_Tok
                                            slash_tok: <Id.VOp2_Slash _>
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'salt_tar_urls+='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'salt_tar_urls+='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'salt_tar_urls+='>
                              name: salt_tar_urls
                            )
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name salt_gs_url>
                                        var_name: salt_gs_url
                                        suffix_op: 
                                          (suffix_op.PatSub
                                            pat: 
                                              {<'gs:'> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\/'>
                                                  ch: '/'
                                                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\/'> ch:'/')
                                              }
                                            replace: 
                                              {<'https:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> 
                                                <storage.googleapis.com> <Id.Lit_Slash '/'>
                                              }
                                            replace_mode: Id.Undefined_Tok
                                            slash_tok: <Id.VOp2_Slash _>
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name KUBE_MANIFESTS_TAR>
                                                  var_name: KUBE_MANIFESTS_TAR
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VTest_ColonHyphen _>
                                                      arg_word: (rhs_word__Empty)
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <local>
                              more_env: []
                              words: [
                                {<local>}
                                {<Id.Lit_VarLike 'kube_manifests_gs_url='> 
                                  (DQ (${ Id.VSub_Name staging_path) <'/'> 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name KUBE_MANIFESTS_TAR>
                                      var_name: KUBE_MANIFESTS_TAR
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op: <Id.VOp1_DPound '##'>
                                          arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <copy-to-staging>
                              more_env: []
                              words: [
                                {<copy-to-staging>}
                                {(DQ (${ Id.VSub_Name staging_path))}
                                {(DQ (${ Id.VSub_Name kube_manifests_gs_url))}
                                {(DQ (${ Id.VSub_Name KUBE_MANIFESTS_TAR))}
                                {(DQ (${ Id.VSub_Name KUBE_MANIFESTS_TAR_HASH))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'kube_manifests_tar_urls+='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'kube_manifests_tar_urls+='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'kube_manifests_tar_urls+='>
                                      name: kube_manifests_tar_urls
                                    )
                                  op: assign_op.PlusEqual
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name kube_manifests_gs_url>
                                                var_name: kube_manifests_gs_url
                                                suffix_op: 
                                                  (suffix_op.PatSub
                                                    pat: 
                                                      {<'gs:'> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\/'>
                                                          ch: '/'
                                                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\/'> ch:'/')
                                                      }
                                                    replace: 
                                                      {<'https:'> <Id.Lit_Slash '/'> 
                                                        <Id.Lit_Slash '/'> <storage.googleapis.com> <Id.Lit_Slash '/'>
                                                      }
                                                    replace_mode: Id.Undefined_Tok
                                                    slash_tok: <Id.VOp2_Slash _>
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2413 2429]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_URL='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_URL='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'SERVER_BINARY_TAR_URL='>
                      name: SERVER_BINARY_TAR_URL
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <join_csv>
                            more_env: []
                            words: [
                              {<join_csv>}
                              {
                                (DQ 
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name server_binary_tar_urls>
                                    var_name: server_binary_tar_urls
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SALT_TAR_URL='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SALT_TAR_URL='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SALT_TAR_URL='> name:SALT_TAR_URL)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <join_csv>
                            more_env: []
                            words: [
                              {<join_csv>}
                              {
                                (DQ 
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name salt_tar_urls>
                                    var_name: salt_tar_urls
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              }
                            ]
                            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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_MANIFESTS_TAR>
                                          var_name: KUBE_MANIFESTS_TAR
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_URL='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_URL='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_MANIFESTS_TAR_URL='>
                              name: KUBE_MANIFESTS_TAR_URL
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <join_csv>
                                    more_env: []
                                    words: [
                                      {<join_csv>}
                                      {
                                        (DQ 
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name kube_manifests_tar_urls>
                                            var_name: kube_manifests_tar_urls
                                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        )
                                      }
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2537 2553]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <detect-node-names>
      name: detect-node-names
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'INSTANCE_GROUPS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'INSTANCE_GROUPS='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'INSTANCE_GROUPS='>
                      name: INSTANCE_GROUPS
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: []
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'INSTANCE_GROUPS+='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'INSTANCE_GROUPS+='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'INSTANCE_GROUPS+='>
                      name: INSTANCE_GROUPS
                    )
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<instance-groups>}
                                        {<managed>}
                                        {<list>}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                        {<--filter>}
                                        {
                                          (DQ <'name ~ \''> (${ Id.VSub_Name NODE_INSTANCE_PREFIX) 
                                            <'-.+\' AND zone:('> (${ Id.VSub_Name ZONE) <')'>
                                          )
                                        }
                                        {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <true>
                                      more_env: []
                                      words: [{<true>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NODE_NAMES='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NODE_NAMES='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NODE_NAMES='> name:NODE_NAMES)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: []
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name INSTANCE_GROUPS>
                                          var_name: INSTANCE_GROUPS
                                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [group]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name INSTANCE_GROUPS>
                                  var_name: INSTANCE_GROUPS
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          ]
                        )
                      semi_tok: <Id.Op_Semi _>
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'NODE_NAMES+='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'NODE_NAMES+='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'NODE_NAMES+='>
                                      name: NODE_NAMES
                                    )
                                  op: assign_op.PlusEqual
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <gcloud>
                                                  more_env: []
                                                  words: [
                                                    {<gcloud>}
                                                    {<compute>}
                                                    {<instance-groups>}
                                                    {<managed>}
                                                    {<list-instances>}
                                                    {(DQ (${ Id.VSub_Name group))}
                                                    {<--zone>}
                                                    {(DQ (${ Id.VSub_Name ZONE))}
                                                    {<--project>}
                                                    {(DQ (${ Id.VSub_Name PROJECT))}
                                                    {<--format> <Id.Lit_Equals '='> 
                                                      (SQ <'value(instance)'>)
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  spids: [2673 2692]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name HEAPSTER_MACHINE_TYPE>
                                          var_name: HEAPSTER_MACHINE_TYPE
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NODE_NAMES+='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NODE_NAMES+='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'NODE_NAMES+='>
                              name: NODE_NAMES
                            )
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [{(DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-heapster>)}]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2772 2788]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'INSTANCE_GROUPS='> 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name INSTANCE_GROUPS>
                      var_name: INSTANCE_GROUPS
                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'NODE_NAMES='> 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name NODE_NAMES>
                      var_name: NODE_NAMES
                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <detect-nodes>
      name: detect-nodes
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-node-names>
              more_env: []
              words: [{<detect-node-names>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBE_NODE_IP_ADDRESSES='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBE_NODE_IP_ADDRESSES='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'KUBE_NODE_IP_ADDRESSES='>
                      name: KUBE_NODE_IP_ADDRESSES
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: []
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ForExpr
              keyword: <Id.KW_For for>
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: ($ Id.Lit_ArithVarLike i)
                  right: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name NODE_NAMES>
                        var_name: NODE_NAMES
                        prefix_op: <Id.VSub_Pound '#'>
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'node_ip='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <gcloud>
                                more_env: []
                                words: [
                                  {<gcloud>}
                                  {<compute>}
                                  {<instances>}
                                  {<describe>}
                                  {<--project>}
                                  {(DQ (${ Id.VSub_Name PROJECT))}
                                  {<--zone>}
                                  {(DQ (${ Id.VSub_Name ZONE))}
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name NODE_NAMES>
                                        var_name: NODE_NAMES
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: {($ Id.VSub_DollarName i)}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    )
                                  }
                                  {<--format> <Id.Lit_Equals '='> 
                                    (SQ <'value(networkInterfaces[0].accessConfigs[0].natIP)'>)
                                  }
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_z
                                          child: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name node_ip>
                                                  var_name: node_ip
                                                  suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'Did not find '> 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name NODE_NAMES>
                                      var_name: NODE_NAMES
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {($ Id.VSub_DollarName i)}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          spids: [2959 2976]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'Found '> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name NODE_NAMES>
                                  var_name: NODE_NAMES
                                  bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)})
                                  right: <Id.Right_DollarBrace '}'>
                                ) <' at '> (${ Id.VSub_Name node_ip)
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'KUBE_NODE_IP_ADDRESSES+='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'KUBE_NODE_IP_ADDRESSES+='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'KUBE_NODE_IP_ADDRESSES+='>
                                  name: KUBE_NODE_IP_ADDRESSES
                                )
                              op: assign_op.PlusEqual
                              rhs: 
                                {
                                  (ShArrayLiteral
                                    left: <Id.Op_LParen _>
                                    words: [{(DQ (${ Id.VSub_Name node_ip))}]
                                    right: <Id.Right_ShArrayLiteral _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_NODE_IP_ADDRESSES>
                                          var_name: KUBE_NODE_IP_ADDRESSES
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            <
'Could not detect Kubernetes minion nodes.  Make sure you\'ve launched a cluster with \'kube-up.sh\''
                            >
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3031 3047]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <detect-master>
      name: detect-master
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBE_MASTER='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBE_MASTER='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KUBE_MASTER='> name:KUBE_MASTER)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name MASTER_NAME)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'Trying to find master named \''> (${ Id.VSub_Name MASTER_NAME) <'\''>)}
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_MASTER_IP>
                                          var_name: KUBE_MASTER_IP
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'master_address_name='> 
                          (DQ (${ Id.VSub_Name MASTER_NAME) <-ip>)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'Looking for address \''> (${ Id.VSub_Name master_address_name) <'\''>)}
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_MASTER_IP='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_MASTER_IP='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_MASTER_IP='>
                              name: KUBE_MASTER_IP
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <gcloud>
                                    more_env: []
                                    words: [
                                      {<gcloud>}
                                      {<compute>}
                                      {<addresses>}
                                      {<describe>}
                                      {(DQ (${ Id.VSub_Name master_address_name))}
                                      {<--project>}
                                      {(DQ (${ Id.VSub_Name PROJECT))}
                                      {<--region>}
                                      {(DQ (${ Id.VSub_Name REGION))}
                                      {<-q>}
                                      {<--format> <Id.Lit_Equals '='> (SQ <'value(address)'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3129 3145]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_MASTER_IP>
                                          var_name: KUBE_MASTER_IP
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            <
'Could not detect Kubernetes master node.  Make sure you\'ve launched a cluster with \'kube-up.sh\''
                            >
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [3220 3236]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Using master: '> ($ Id.VSub_DollarName KUBE_MASTER) <' (external IP: '> 
                    ($ Id.VSub_DollarName KUBE_MASTER_IP) <')'>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-master-env>
      name: get-master-env
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<--project>}
                {(${ Id.VSub_Name PROJECT)}
                {<ssh>}
                {<--zone>}
                {(${ Id.VSub_Name ZONE)}
                {(${ Id.VSub_Name KUBE_MASTER)}
                {<--command>}
                {
                  (DQ <'curl --fail --silent -H \'Metadata-Flavor: Google\' '> 
                    <'      \'http://metadata/computeMetadata/v1/instance/attributes/kube-env\''>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<--project>}
                {(${ Id.VSub_Name PROJECT)}
                {<ssh>}
                {<--zone>}
                {(${ Id.VSub_Name ZONE)}
                {(${ Id.VSub_Name KUBE_MASTER)}
                {<--command>}
                {
                  (DQ <'curl --fail --silent -H \'Metadata-Flavor: Google\' '> 
                    <
'      \'http://metadata/computeMetadata/v1/instance/attributes/kube-master-certs\''
                    >
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-static-ip>
      name: create-static-ip
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'attempt='> <0>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'REGION='> (DQ ($ Id.VSub_Number 2))}]
              redirects: []
              do_fork: T
            )
            (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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<addresses>}
                                        {<create>}
                                        {(DQ ($ Id.VSub_Number 1))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                        {<--region>}
                                        {(DQ (${ Id.VSub_Name REGION))}
                                        {<-q>}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'start='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'start='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'start='> name:start)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <date>
                                              more_env: []
                                              words: [
                                                {<date>}
                                                {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                )
                              ]
                              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.ShAssignment
                                      left: <Id.Lit_VarLike 'now='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'now='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'now='>
                                              name: now
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <date>
                                                      more_env: []
                                                      words: [
                                                        {<date>}
                                                        {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}
                                                      ]
                                                      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.DBracket
                                                      left: <Id.KW_DLeftBracket '[['>
                                                      expr: 
                                                        (bool_expr.Binary
                                                          op_id: Id.BoolBinary_gt
                                                          left: 
                                                            {
                                                              (word_part.ArithSub
                                                                left: <Id.Left_DollarDParen '$(('>
                                                                anode: 
                                                                  (arith_expr.Binary
                                                                    op_id: Id.Arith_Minus
                                                                    left: ($ Id.Lit_ArithVarLike now)
                                                                    right: 
                                                                      ($ Id.Lit_ArithVarLike start)
                                                                  )
                                                                right: <Id.Right_DollarDParen _>
                                                              )
                                                            }
                                                          right: {<900>}
                                                        )
                                                      right: <Id.Lit_DRightBracket ']]'>
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ 
                                                    <
'Timeout while waiting for master IP visibility'
                                                    >
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.ControlFlow
                                              keyword: <Id.ControlFlow_Exit exit>
                                              arg_word: {<2>}
                                            )
                                          ]
                                          spids: [3505 3525]
                                        )
                                      ]
                                      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: <gcloud>
                                                      more_env: []
                                                      words: [
                                                        {<gcloud>}
                                                        {<compute>}
                                                        {<addresses>}
                                                        {<describe>}
                                                        {(DQ ($ Id.VSub_Number 1))}
                                                        {<--project>}
                                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                                        {<--region>}
                                                        {(DQ (${ Id.VSub_Name REGION))}
                                                      ]
                                                      redirects: [
                                                        (Redir
                                                          op: <Id.Redir_Great '>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: {<'/dev/null'>}
                                                        )
                                                        (Redir
                                                          op: <Id.Redir_GreatAnd '2>&'>
                                                          loc: (redir_loc.Fd fd:2)
                                                          arg: {<1>}
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ControlFlow
                                              keyword: <Id.ControlFlow_Break break>
                                            )
                                          ]
                                          spids: [3543 3580]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <'Master IP not visible yet. Waiting...'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <sleep>
                                      more_env: []
                                      words: [{<sleep>} {<5>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.KW_Done done>
                                )
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [3421 3462]
                        )
                      ]
                      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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<addresses>}
                                        {<describe>}
                                        {(DQ ($ Id.VSub_Number 1))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                        {<--region>}
                                        {(DQ (${ Id.VSub_Name REGION))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                        (Redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          spids: [3611 3652]
                        )
                      ]
                      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.DParen
                                      left: <Id.Op_DLeftParen _>
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Great
                                          left: ($ Id.Lit_ArithVarLike attempt)
                                          right: {<Id.Lit_Digits 4>}
                                        )
                                      right: <Id.Op_DRightParen _>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_red) <'Failed to create static ip '> 
                                    ($ Id.VSub_Number 1) <' '> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [3666 3680]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'attempt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'attempt='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'attempt='> name:attempt)
                          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 attempt)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ (${ Id.VSub_Name color_yellow) <'Attempt '> 
                            ($ Id.VSub_DollarName attempt) <' failed to create static ip '> ($ Id.VSub_Number 1) <'. Retrying.'> (${ Id.VSub_Name color_norm)
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [
                        {<sleep>}
                        {
                          (word_part.ArithSub
                            left: <Id.Left_DollarDParen '$(('>
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Star
                                left: {($ Id.VSub_DollarName attempt)}
                                right: {<Id.Lit_Digits 5>}
                              )
                            right: <Id.Right_DollarDParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-firewall-rule>
      name: create-firewall-rule
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'attempt='> <0>}]
              redirects: []
              do_fork: T
            )
            (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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<firewall-rules>}
                                            {<create>}
                                            {(DQ ($ Id.VSub_Number 1))}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                            {<--network>}
                                            {(DQ (${ Id.VSub_Name NETWORK))}
                                            {<--source-ranges>}
                                            {(DQ ($ Id.VSub_Number 2))}
                                            {<--target-tags>}
                                            {(DQ ($ Id.VSub_Number 3))}
                                            {<--allow>}
                                            {<tcp> <Id.Lit_Comma ','> <udp> <Id.Lit_Comma ','> <icmp> 
                                              <Id.Lit_Comma ','> <esp> <Id.Lit_Comma ','> <ah> <Id.Lit_Comma ','> <sctp>
                                            }
                                          ]
                                          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.DParen
                                              left: <Id.Op_DLeftParen _>
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: ($ Id.Lit_ArithVarLike attempt)
                                                  right: {<Id.Lit_Digits 4>}
                                                )
                                              right: <Id.Op_DRightParen _>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {<-e>}
                                        {
                                          (DQ (${ Id.VSub_Name color_red) 
                                            <'Failed to create firewall rule '> ($ Id.VSub_Number 1) <' '> (${ Id.VSub_Name color_norm)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                      arg_word: {<2>}
                                    )
                                  ]
                                  spids: [3869 3883]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_yellow) <'Attempt '> 
                                    (word_part.ArithSub
                                      left: <Id.Left_DollarDParen '$(('>
                                      anode: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Plus
                                          left: {($ Id.VSub_DollarName attempt)}
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                      right: <Id.Right_DollarDParen _>
                                    ) <' failed to create firewall rule '> ($ Id.VSub_Number 1) <'. Retrying.'> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'attempt='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'attempt='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'attempt='>
                                      name: attempt
                                    )
                                  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 attempt)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <sleep>
                              more_env: []
                              words: [
                                {<sleep>}
                                {
                                  (word_part.ArithSub
                                    left: <Id.Left_DollarDParen '$(('>
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Star
                                        left: {($ Id.VSub_DollarName attempt)}
                                        right: {<Id.Lit_Digits 5>}
                                      )
                                    right: <Id.Right_DollarDParen _>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [3797 3866]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <make-gcloud-network-argument>
      name: make-gcloud-network-argument
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'network_project='> (DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'region='> (DQ ($ Id.VSub_Number 2))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'network='> (DQ ($ Id.VSub_Number 3))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'subnet='> (DQ ($ Id.VSub_Number 4))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'address='> (DQ ($ Id.VSub_Number 5))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'enable_ip_alias='> (DQ ($ Id.VSub_Number 6))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'alias_size='> (DQ ($ Id.VSub_Number 7))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'networkURL='> 
                  (DQ <'projects/'> (${ Id.VSub_Name network_project) <'/global/networks/'> 
                    (${ Id.VSub_Name network)
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'subnetURL='> 
                  (DQ <'projects/'> (${ Id.VSub_Name network_project) <'/regions/'> 
                    (${ Id.VSub_Name region) <'/subnetworks/'> 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name subnet>
                      var_name: subnet
                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'ret='> (DQ )}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name enable_ip_alias))}
                                  right: {(SQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: {(DQ <--network-interface>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name ret) <' network='> (${ Id.VSub_Name networkURL))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name ret) <',address='> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name address>
                                  var_name: address
                                  suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name ret) <',subnet='> (${ Id.VSub_Name subnetURL))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name ret) <',aliases=pods-default:'> 
                                (${ Id.VSub_Name alias_size)
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name ret) <' --no-can-ip-forward'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4098 4117]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name subnet>
                                            var_name: subnet
                                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'ret='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'ret='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name ret) <' --subnet '> (${ Id.VSub_Name subnetURL))
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [4191 4205]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ (${ Id.VSub_Name ret) <' --network '> (${ Id.VSub_Name networkURL))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'ret='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'ret='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name ret) <' --can-ip-forward'>)}
                    )
                  ]
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name address>
                                            var_name: address
                                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'ret='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'ret='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                              op: assign_op.Equal
                              rhs: 
                                {(DQ (${ Id.VSub_Name ret) <' --address '> (${ Id.VSub_Name address))}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [4248 4262]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name ret))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-template-name-from-version>
      name: get-template-name-from-version
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {(DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-template-> (${ Id.VSub_Number 1))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-c>} {<1-63>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {(SQ <'s/[\\.\\+]/-/g;s/-*$//g'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-node-template>
      name: create-node-template
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-subnetworks>
              more_env: []
              words: [{<detect-subnetworks>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'template_name='> (DQ ($ 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.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<instance-templates>}
                                {<describe>}
                                {(DQ ($ Id.VSub_DollarName template_name))}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Instance template '> (${ Id.VSub_Number 1) 
                            <' already exists; deleting.'>
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      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: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<instance-templates>}
                                            {<delete>}
                                            {(DQ ($ Id.VSub_DollarName template_name))}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name PROJECT))}
                                            {<--quiet>}
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_AndGreat '&>'>
                                              loc: (redir_loc.Fd fd:1)
                                              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>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_yellow) 
                                    <'Failed to delete existing instance template'> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [4437 4467]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [4394 4420]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'gcloud='> (DQ <gcloud>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'accelerator_args='> (DQ )}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {(DQ (${ Id.VSub_Name NODE_ACCELERATORS))}
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'accelerator_args='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'accelerator_args='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'accelerator_args='>
                              name: accelerator_args
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                <
'--maintenance-policy TERMINATE --restart-on-failure --accelerator '
                                > (${ Id.VSub_Name NODE_ACCELERATORS)
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'gcloud='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'gcloud='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gcloud='> name:gcloud)
                          op: assign_op.Equal
                          rhs: {(DQ <'gcloud beta'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4524 4541]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name ENABLE_IP_ALIASES>
                                          var_name: ENABLE_IP_ALIASES
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(SQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'gcloud='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'gcloud='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gcloud='> name:gcloud)
                          op: assign_op.Equal
                          rhs: {(DQ <'gcloud beta'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4563 4583]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'preemptible_minions='> (DQ )}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name PREEMPTIBLE_NODE))}
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'preemptible_minions='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'preemptible_minions='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'preemptible_minions='>
                              name: preemptible_minions
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'--preemptible --maintenance-policy TERMINATE'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4603 4622]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'local_ssds='> (DQ )}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalNot
                                  child: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name NODE_LOCAL_SSDS>
                                            var_name: NODE_LOCAL_SSDS
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VTest_Plus _>
                                                arg_word: {<x>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_ge
                                          left: {(${ Id.VSub_Name NODE_LOCAL_SSDS)}
                                          right: {<1>}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ForEach
                              keyword: <Id.KW_For for>
                              iter_names: [i]
                              iterable: 
                                (for_iter.Words
                                  words: [
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <seq>
                                            more_env: []
                                            words: [{<seq>} {(${ Id.VSub_Name NODE_LOCAL_SSDS)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                  ]
                                )
                              semi_tok: <Id.Op_Semi _>
                              body: 
                                (command.DoGroup
                                  left: <Id.KW_Do do>
                                  children: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'local_ssds='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'local_ssds='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'local_ssds='>
                                              name: local_ssds
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName local_ssds) 
                                                <'--local-ssd=interface=SCSI '>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.KW_Done done>
                                )
                              redirects: []
                            )
                          ]
                          spids: [4670 4685]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [4642 4659]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'network='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <make-gcloud-network-argument>
                        more_env: []
                        words: [
                          {<make-gcloud-network-argument>}
                          {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                          {(DQ (${ Id.VSub_Name REGION))}
                          {(DQ (${ Id.VSub_Name NETWORK))}
                          {
                            (DQ 
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name SUBNETWORK>
                                var_name: SUBNETWORK
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          }
                          {(DQ )}
                          {
                            (DQ 
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name ENABLE_IP_ALIASES>
                                var_name: ENABLE_IP_ALIASES
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          }
                          {
                            (DQ 
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name IP_ALIAS_SIZE>
                                var_name: IP_ALIAS_SIZE
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          }
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'attempt='> <1>}]
              redirects: []
              do_fork: T
            )
            (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.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Attempt '> (${ Id.VSub_Name attempt) <' to create '> 
                            (${ Id.VSub_Number 1)
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      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.Left_DollarBrace '${'>
                                          more_env: []
                                          words: [
                                            {(${ Id.VSub_Name gcloud)}
                                            {<compute>}
                                            {<instance-templates>}
                                            {<create>}
                                            {(DQ ($ Id.VSub_DollarName template_name))}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name PROJECT))}
                                            {<--machine-type>}
                                            {(DQ (${ Id.VSub_Name NODE_SIZE))}
                                            {<--boot-disk-type>}
                                            {(DQ (${ Id.VSub_Name NODE_DISK_TYPE))}
                                            {<--boot-disk-size>}
                                            {(DQ (${ Id.VSub_Name NODE_DISK_SIZE))}
                                            {<--image-project> <Id.Lit_Equals '='> 
                                              (DQ (${ Id.VSub_Name NODE_IMAGE_PROJECT))
                                            }
                                            {<--image>}
                                            {(DQ (${ Id.VSub_Name NODE_IMAGE))}
                                            {<--tags>}
                                            {(DQ (${ Id.VSub_Name NODE_TAG))}
                                            {(${ Id.VSub_Name accelerator_args)}
                                            {(${ Id.VSub_Name local_ssds)}
                                            {<--region>}
                                            {(DQ (${ Id.VSub_Name REGION))}
                                            {(${ Id.VSub_Name network)}
                                            {(${ Id.VSub_Name preemptible_minions)}
                                            {($ Id.VSub_Number 2)}
                                            {<--metadata-from-file>}
                                            {($ Id.VSub_Number 3)}
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_GreatAnd '>&'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<2>}
                                            )
                                          ]
                                          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.DParen
                                              left: <Id.Op_DLeftParen _>
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: ($ Id.Lit_ArithVarLike attempt)
                                                  right: {<Id.Lit_Digits 5>}
                                                )
                                              right: <Id.Op_DRightParen _>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {<-e>}
                                        {
                                          (DQ (${ Id.VSub_Name color_red) 
                                            <'Failed to create instance template '> ($ Id.VSub_DollarName template_name) <' '> (${ Id.VSub_Name color_norm)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                      arg_word: {<2>}
                                    )
                                  ]
                                  spids: [4960 4974]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_yellow) <'Attempt '> 
                                    (${ Id.VSub_Name attempt) <' failed to create instance template '> ($ Id.VSub_DollarName template_name) <'. Retrying.'> 
                                    (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'attempt='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'attempt='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'attempt='>
                                      name: attempt
                                    )
                                  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 attempt)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <sleep>
                              more_env: []
                              words: [
                                {<sleep>}
                                {
                                  (word_part.ArithSub
                                    left: <Id.Left_DollarDParen '$(('>
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Star
                                        left: {($ Id.VSub_DollarName attempt)}
                                        right: {<Id.Lit_Digits 5>}
                                      )
                                    right: <Id.Right_DollarDParen _>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<instance-templates>}
                                    {<delete>}
                                    {(DQ ($ Id.VSub_DollarName template_name))}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name PROJECT))}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_AndGreat '&>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <true>
                                  more_env: []
                                  words: [{<true>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          spids: [4819 4957]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <add-instance-metadata>
      name: add-instance-metadata
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'instance='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>} {<1>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'kvs='> 
                  (ShArrayLiteral
                    left: <Id.Op_LParen _>
                    words: [{(DQ ($ Id.VSub_At '@'))}]
                    right: <Id.Right_ShArrayLiteral _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'attempt='> <0>}]
              redirects: []
              do_fork: T
            )
            (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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<instances>}
                                            {<add-metadata>}
                                            {(DQ (${ Id.VSub_Name instance))}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name PROJECT))}
                                            {<--zone>}
                                            {(DQ (${ Id.VSub_Name ZONE))}
                                            {<--metadata>}
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name kvs>
                                                  var_name: kvs
                                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                          ]
                                          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.DParen
                                              left: <Id.Op_DLeftParen _>
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: ($ Id.Lit_ArithVarLike attempt)
                                                  right: {<Id.Lit_Digits 5>}
                                                )
                                              right: <Id.Op_DRightParen _>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {<-e>}
                                        {
                                          (DQ (${ Id.VSub_Name color_red) 
                                            <'Failed to add instance metadata in '> (${ Id.VSub_Name instance) <' '> (${ Id.VSub_Name color_norm)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                      arg_word: {<2>}
                                    )
                                  ]
                                  spids: [5222 5236]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_yellow) <'Attempt '> 
                                    (word_part.ArithSub
                                      left: <Id.Left_DollarDParen '$(('>
                                      anode: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Plus
                                          left: {($ Id.VSub_DollarName attempt)}
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                      right: <Id.Right_DollarDParen _>
                                    ) <' failed to add metadata in '> (${ Id.VSub_Name instance) <'. Retrying.'> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'attempt='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'attempt='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'attempt='>
                                      name: attempt
                                    )
                                  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 attempt)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <sleep>
                              more_env: []
                              words: [
                                {<sleep>}
                                {
                                  (word_part.ArithSub
                                    left: <Id.Left_DollarDParen '$(('>
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Star
                                        left: {<Id.Lit_Digits 5>}
                                        right: {($ Id.VSub_DollarName attempt)}
                                      )
                                    right: <Id.Right_DollarDParen _>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [5167 5219]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <add-instance-metadata-from-file>
      name: add-instance-metadata-from-file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'instance='> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>} {<1>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'kvs='> 
                  (ShArrayLiteral
                    left: <Id.Op_LParen _>
                    words: [{(DQ ($ Id.VSub_At '@'))}]
                    right: <Id.Right_ShArrayLiteral _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'attempt='> <0>}]
              redirects: []
              do_fork: T
            )
            (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.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name kvs>
                              var_name: kvs
                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      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: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<instances>}
                                            {<add-metadata>}
                                            {(DQ (${ Id.VSub_Name instance))}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name PROJECT))}
                                            {<--zone>}
                                            {(DQ (${ Id.VSub_Name ZONE))}
                                            {<--metadata-from-file>}
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <join_csv>
                                                      more_env: []
                                                      words: [
                                                        {<join_csv>}
                                                        {
                                                          (BracedVarSub
                                                            left: <Id.Left_DollarBrace '${'>
                                                            token: <Id.VSub_Name kvs>
                                                            var_name: kvs
                                                            bracket_op: 
                                                              (bracket_op.WholeArray
                                                                op_id: Id.Lit_At
                                                              )
                                                            right: <Id.Right_DollarBrace '}'>
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              )
                                            }
                                          ]
                                          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.DParen
                                              left: <Id.Op_DLeftParen _>
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: ($ Id.Lit_ArithVarLike attempt)
                                                  right: {<Id.Lit_Digits 5>}
                                                )
                                              right: <Id.Op_DRightParen _>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {<-e>}
                                        {
                                          (DQ (${ Id.VSub_Name color_red) 
                                            <'Failed to add instance metadata in '> (${ Id.VSub_Name instance) <' '> (${ Id.VSub_Name color_norm)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                      arg_word: {<2>}
                                    )
                                  ]
                                  spids: [5466 5480]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_yellow) <'Attempt '> 
                                    (word_part.ArithSub
                                      left: <Id.Left_DollarDParen '$(('>
                                      anode: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Plus
                                          left: {($ Id.VSub_DollarName attempt)}
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                      right: <Id.Right_DollarDParen _>
                                    ) <' failed to add metadata in '> (${ Id.VSub_Name instance) <'. Retrying.'> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'attempt='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'attempt='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'attempt='>
                                      name: attempt
                                    )
                                  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 attempt)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                        right: <Id.Right_DollarDParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <sleep>
                              more_env: []
                              words: [
                                {<sleep>}
                                {
                                  (word_part.ArithSub
                                    left: <Id.Left_DollarDParen '$(('>
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Star
                                        left: {($ Id.VSub_DollarName attempt)}
                                        right: {<Id.Lit_Digits 5>}
                                      )
                                    right: <Id.Right_DollarDParen _>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [5407 5463]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <kube-up>
      name: kube-up
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <kube>
              more_env: []
              words: [
                {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> 
                  <Id.Lit_Colon ':'> <ensure-temp-dir>
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <load-or-gen-kube-basicauth>
              more_env: []
              words: [{<load-or-gen-kube-basicauth>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <load-or-gen-kube-bearertoken>
              more_env: []
              words: [{<load-or-gen-kube-bearertoken>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <find-release-tars>
              more_env: []
              words: [{<find-release-tars>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <upload-server-tars>
              more_env: []
              words: [{<upload-server-tars>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set_num_migs>
              more_env: []
              words: [{<set_num_migs>}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name KUBE_USE_EXISTING_MASTER>
                                        var_name: KUBE_USE_EXISTING_MASTER
                                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <detect-master>
                      more_env: []
                      words: [{<detect-master>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <parse-master-env>
                      more_env: []
                      words: [{<parse-master-env>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <create-subnetworks>
                      more_env: []
                      words: [{<create-subnetworks>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <detect-subnetworks>
                      more_env: []
                      words: [{<detect-subnetworks>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <create-nodes>
                      more_env: []
                      words: [{<create-nodes>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [5640 5658]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name KUBE_REPLICATE_EXISTING_MASTER>
                                        var_name: KUBE_REPLICATE_EXISTING_MASTER
                                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.LogicalAnd
                                          left: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobNEqual
                                              left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                                              right: {(DQ <gci>)}
                                            )
                                          right: 
                                            (bool_expr.LogicalAnd
                                              left: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobNEqual
                                                  left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                                                  right: {(DQ <debian>)}
                                                )
                                              right: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobNEqual
                                                  left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                                                  right: {(DQ <ubuntu>)}
                                                )
                                            )
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ 
                                    <
'Master replication supported only for gci, debian, and ubuntu'
                                    >
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [5697 5744]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <create-loadbalancer>
                      more_env: []
                      words: [{<create-loadbalancer>}]
                      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: <replicate-master>
                                          more_env: []
                                          words: [{<replicate-master>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <remove-replica-from-etcd>
                                  more_env: []
                                  words: [{<remove-replica-from-etcd>} {<2379>}]
                                  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: <remove-replica-from-etcd>
                                  more_env: []
                                  words: [{<remove-replica-from-etcd>} {<4002>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <true>
                                  more_env: []
                                  words: [{<true>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          spids: [5769 5776]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [5676 5694]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <check-existing>
                  more_env: []
                  words: [{<check-existing>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <create-network>
                  more_env: []
                  words: [{<create-network>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <create-subnetworks>
                  more_env: []
                  words: [{<create-subnetworks>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <detect-subnetworks>
                  more_env: []
                  words: [{<detect-subnetworks>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <write-cluster-name>
                  more_env: []
                  words: [{<write-cluster-name>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <create-autoscaler-config>
                  more_env: []
                  words: [{<create-autoscaler-config>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <create-master>
                  more_env: []
                  words: [{<create-master>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <create-nodes-firewall>
                  more_env: []
                  words: [{<create-nodes-firewall>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <create-nodes-template>
                  more_env: []
                  words: [{<create-nodes-template>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <create-nodes>
                  more_env: []
                  words: [{<create-nodes>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <check-cluster>
                  more_env: []
                  words: [{<check-cluster>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <check-existing>
      name: check-existing
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'running_in_terminal='> <false>}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: (bool_expr.Unary op_id:Id.BoolUnary_t child:{<1>})
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'running_in_terminal='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'running_in_terminal='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'running_in_terminal='>
                              name: running_in_terminal
                            )
                          op: assign_op.Equal
                          rhs: {<true>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [5860 5871]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalOr
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(${ Id.VSub_Name running_in_terminal)}
                                      right: {(DQ <true>)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(${ Id.VSub_Name KUBE_UP_AUTOMATIC_CLEANUP)}
                                      right: {(DQ <true>)}
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          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
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <check-resources>
                                          more_env: []
                                          words: [{<check-resources>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <local>
                              more_env: []
                              words: [{<local>} {<Id.Lit_VarLike 'run_kube_down='> (DQ <n>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ (${ Id.VSub_Name KUBE_RESOURCE_FOUND) <' found.'>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              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.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.LogicalAnd
                                                  left: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobDEqual
                                                      left: {(${ Id.VSub_Name running_in_terminal)}
                                                      right: {(DQ <true>)}
                                                    )
                                                  right: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobDEqual
                                                      left: 
                                                        {(${ Id.VSub_Name KUBE_UP_AUTOMATIC_CLEANUP)}
                                                      right: {(DQ <false>)}
                                                    )
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <read>
                                      more_env: []
                                      words: [
                                        {<read>}
                                        {<-p>}
                                        {
                                          (DQ 
                                            <
'Would you like to shut down the old cluster (call kube-down)? [y/N] '
                                            >
                                          )
                                        }
                                        {<run_kube_down>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [5949 5978]
                                )
                              ]
                              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.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.LogicalOr
                                                  left: 
                                                    (bool_expr.Binary
                                                      op_id: Id.BoolBinary_GlobDEqual
                                                      left: {(${ Id.VSub_Name run_kube_down)}
                                                      right: {(DQ <y>)}
                                                    )
                                                  right: 
                                                    (bool_expr.LogicalOr
                                                      left: 
                                                        (bool_expr.Binary
                                                          op_id: Id.BoolBinary_GlobDEqual
                                                          left: {(${ Id.VSub_Name run_kube_down)}
                                                          right: {(DQ <Y>)}
                                                        )
                                                      right: 
                                                        (bool_expr.Binary
                                                          op_id: Id.BoolBinary_GlobDEqual
                                                          left: 
                                                            {
                                                              (${ Id.VSub_Name 
KUBE_UP_AUTOMATIC_CLEANUP
                                                              )
                                                            }
                                                          right: {(DQ <true>)}
                                                        )
                                                    )
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <'... calling kube-down'>)}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <kube-down>
                                      more_env: []
                                      words: [{<kube-down>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [5995 6036]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [5914 5921]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [5882 5911]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-network>
      name: create-network
      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: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<networks>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                    {<describe>}
                                    {(DQ (${ Id.VSub_Name NETWORK))}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_AndGreat '&>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<Id.Lit_VarLike 'network_mode='> (DQ <auto>)}]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name CREATE_CUSTOM_NETWORK>
                                                  var_name: CREATE_CUSTOM_NETWORK
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VTest_ColonHyphen _>
                                                      arg_word: (rhs_word__Empty)
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                          right: {(DQ <true>)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'network_mode='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'network_mode='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'network_mode='>
                                      name: network_mode
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <custom>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [6121 6141]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Creating new '> (${ Id.VSub_Name network_mode) <' network: '> 
                            (${ Id.VSub_Name NETWORK)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <gcloud>
                      more_env: []
                      words: [
                        {<gcloud>}
                        {<compute>}
                        {<networks>}
                        {<create>}
                        {<--project>}
                        {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                        {(DQ (${ Id.VSub_Name NETWORK))}
                        {<--mode> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name network_mode))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [6072 6102]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'PREEXISTING_NETWORK='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'PREEXISTING_NETWORK='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'PREEXISTING_NETWORK='>
                          name: PREEXISTING_NETWORK
                        )
                      op: assign_op.Equal
                      rhs: {<true>}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'PREEXISTING_NETWORK_MODE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'PREEXISTING_NETWORK_MODE='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'PREEXISTING_NETWORK_MODE='>
                          name: PREEXISTING_NETWORK_MODE
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<networks>}
                                        {<list>}
                                        {<--filter> <Id.Lit_Equals '='> 
                                          (DQ <'name=(\''> (${ Id.VSub_Name NETWORK) <'\')'>)
                                        }
                                        {<--project>}
                                        {(${ Id.VSub_Name NETWORK_PROJECT)}
                                        {<--format> <Id.Lit_Equals '='> 
                                          (SQ <'value(x_gcloud_subnet_mode)'>)
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <true>
                                      more_env: []
                                      words: [{<true>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ <'Found existing network '> (${ Id.VSub_Name NETWORK) <' in '> 
                        (${ Id.VSub_Name PREEXISTING_NETWORK_MODE) <' mode.'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              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: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<firewall-rules>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                    {<describe>}
                                    {(DQ (${ Id.VSub_Name CLUSTER_NAME) <-default-internal-master>)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_AndGreat '&>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <gcloud>
                          more_env: []
                          words: [
                            {<gcloud>}
                            {<compute>}
                            {<firewall-rules>}
                            {<create>}
                            {(DQ (${ Id.VSub_Name CLUSTER_NAME) <-default-internal-master>)}
                            {<--project>}
                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                            {<--network>}
                            {(DQ (${ Id.VSub_Name NETWORK))}
                            {<--source-ranges>}
                            {(DQ <'10.0.0.0/8'>)}
                            {<--allow>}
                            {(DQ <'tcp:1-2379,tcp:2382-65535,udp:1-65535,icmp'>)}
                            {<--target-tags>}
                            {(DQ (${ Id.VSub_Name MASTER_TAG))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  spids: [6264 6295]
                )
              ]
              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: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<firewall-rules>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                    {<describe>}
                                    {(DQ (${ Id.VSub_Name CLUSTER_NAME) <-default-internal-node>)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_AndGreat '&>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <gcloud>
                          more_env: []
                          words: [
                            {<gcloud>}
                            {<compute>}
                            {<firewall-rules>}
                            {<create>}
                            {(DQ (${ Id.VSub_Name CLUSTER_NAME) <-default-internal-node>)}
                            {<--project>}
                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                            {<--network>}
                            {(DQ (${ Id.VSub_Name NETWORK))}
                            {<--source-ranges>}
                            {(DQ <'10.0.0.0/8'>)}
                            {<--allow>}
                            {(DQ <'tcp:1-65535,udp:1-65535,icmp'>)}
                            {<--target-tags>}
                            {(DQ (${ Id.VSub_Name NODE_TAG))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  spids: [6365 6396]
                )
              ]
              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: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<firewall-rules>}
                                    {<describe>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                    {(DQ (${ Id.VSub_Name NETWORK) <-default-ssh>)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_AndGreat '&>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <gcloud>
                          more_env: []
                          words: [
                            {<gcloud>}
                            {<compute>}
                            {<firewall-rules>}
                            {<create>}
                            {(DQ (${ Id.VSub_Name NETWORK) <-default-ssh>)}
                            {<--project>}
                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                            {<--network>}
                            {(DQ (${ Id.VSub_Name NETWORK))}
                            {<--source-ranges>}
                            {(DQ <'0.0.0.0/0'>)}
                            {<--allow>}
                            {(DQ <'tcp:22'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  spids: [6466 6497]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <expand-default-subnetwork>
      name: expand-default-subnetwork
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <gcloud>
                  more_env: []
                  words: [
                    {<gcloud>}
                    {<compute>}
                    {<networks>}
                    {<switch-mode>}
                    {(DQ (${ Id.VSub_Name NETWORK))}
                    {<--mode>}
                    {<custom>}
                    {<--project>}
                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                    {<--quiet>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<networks>}
                {<subnets>}
                {<expand-ip-range>}
                {(DQ (${ Id.VSub_Name NETWORK))}
                {<--region> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name REGION))}
                {<--project>}
                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                {<--prefix-length> <Id.Lit_Equals '='> <19>}
                {<--quiet>}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-subnetworks>
      name: create-subnetworks
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(${ Id.VSub_Name ENABLE_IP_ALIASES)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <true>
                  pattern: (pat.Words words:[{<true>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'IP aliases are enabled. Creating subnetworks.'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <false>
                  pattern: (pat.Words words:[{<false>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'IP aliases are disabled.'>)}]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobEqual
                                          left: {(DQ (${ Id.VSub_Name ENABLE_BIG_CLUSTER_SUBNETS))}
                                          right: {(DQ <true>)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  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.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobNEqual
                                                  left: {(DQ (${ Id.VSub_Name PREEXISTING_NETWORK))}
                                                  right: {(DQ <true>)}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <expand-default-subnetwork>
                                      more_env: []
                                      words: [{<expand-default-subnetwork>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [6718 6737]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [
                                    {<echo>}
                                    {
                                      (DQ (${ Id.VSub_Name color_yellow) 
                                        <'Using pre-existing network '> (${ Id.VSub_Name NETWORK) <', subnets won\'t be expanded to /19!'> (${ Id.VSub_Name color_norm)
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [6696 6715]
                        )
                        (IfArm
                          keyword: <Id.KW_Elif elif>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.LogicalAnd
                                          left: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobDEqual
                                              left: 
                                                {
                                                  (DQ 
                                                    (BracedVarSub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name CREATE_CUSTOM_NETWORK>
                                                      var_name: CREATE_CUSTOM_NETWORK
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VTest_ColonHyphen _>
                                                          arg_word: (rhs_word__Empty)
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                              right: {(DQ <true>)}
                                            )
                                          right: 
                                            (bool_expr.Binary
                                              op_id: Id.BoolBinary_GlobNEqual
                                              left: {(DQ (${ Id.VSub_Name PREEXISTING_NETWORK))}
                                              right: {(DQ <true>)}
                                            )
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<networks>}
                                {<subnets>}
                                {<create>}
                                {(DQ (${ Id.VSub_Name SUBNETWORK))}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {<--region>}
                                {(DQ (${ Id.VSub_Name REGION))}
                                {<--network>}
                                {(DQ (${ Id.VSub_Name NETWORK))}
                                {<--range>}
                                {(DQ (${ Id.VSub_Name NODE_IP_RANGE))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [6766 6800]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  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 (${ Id.VSub_Name color_red) <'Invalid argument to ENABLE_IP_ALIASES'> 
                            (${ Id.VSub_Name color_norm)
                          )
                        }
                      ]
                      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: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'subnet='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <gcloud>
                        more_env: []
                        words: [
                          {<gcloud>}
                          {<beta>}
                          {<compute>}
                          {<networks>}
                          {<subnets>}
                          {<describe>}
                          {<--project>}
                          {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                          {<--region>}
                          {(${ Id.VSub_Name REGION)}
                          {(${ Id.VSub_Name IP_ALIAS_SUBNETWORK)}
                        ]
                        redirects: [
                          (Redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<'/dev/null'>}
                          )
                        ]
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {(${ Id.VSub_Name subnet)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobNEqual
                                          left: {(${ Id.VSub_Name IP_ALIAS_SUBNETWORK)}
                                          right: {(${ Id.VSub_Name INSTANCE_PREFIX) <-subnet-default>}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ (${ Id.VSub_Name color_red) <'Subnetwork '> 
                                    (${ Id.VSub_Name NETWORK) <':'> (${ Id.VSub_Name IP_ALIAS_SUBNETWORK) <' does not exist'> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [6958 6976]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Creating subnet '> (${ Id.VSub_Name NETWORK) <':'> 
                            (${ Id.VSub_Name IP_ALIAS_SUBNETWORK)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <gcloud>
                      more_env: []
                      words: [
                        {<gcloud>}
                        {<beta>}
                        {<compute>}
                        {<networks>}
                        {<subnets>}
                        {<create>}
                        {(${ Id.VSub_Name IP_ALIAS_SUBNETWORK)}
                        {<--description>}
                        {
                          (DQ <'Automatically generated subnet for '> 
                            (${ Id.VSub_Name INSTANCE_PREFIX) <' cluster. This will be removed on cluster teardown.'>
                          )
                        }
                        {<--project>}
                        {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                        {<--network>}
                        {(${ Id.VSub_Name NETWORK)}
                        {<--region>}
                        {(${ Id.VSub_Name REGION)}
                        {<--range>}
                        {(${ Id.VSub_Name NODE_IP_RANGE)}
                        {<--secondary-range>}
                        {(DQ <'pods-default='> (${ Id.VSub_Name CLUSTER_IP_RANGE))}
                        {<--secondary-range>}
                        {(DQ <'services-default='> (${ Id.VSub_Name SERVICE_CLUSTER_IP_RANGE))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'Created subnetwork '> (${ Id.VSub_Name IP_ALIAS_SUBNETWORK))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [6938 6951]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_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: <echo>
                                      more_env: []
                                      words: [{<echo>} {(${ Id.VSub_Name subnet)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [
                                        {<grep>}
                                        {<--quiet>}
                                        {<secondaryIpRanges>}
                                        {(${ Id.VSub_Name subnet)}
                                      ]
                                      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>}
                            {
                              (DQ (${ Id.VSub_Name color_red) <'Subnet '> 
                                (${ Id.VSub_Name IP_ALIAS_SUBNETWORK) <' does not have a secondary range'> (${ Id.VSub_Name color_norm)
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                          arg_word: {<1>}
                        )
                      ]
                      spids: [7123 7146]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <detect-subnetworks>
      name: detect-subnetworks
      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name SUBNETWORK>
                                        var_name: SUBNETWORK
                                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Using subnet '> (${ Id.VSub_Name SUBNETWORK))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [7215 7229]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name IP_ALIAS_SUBNETWORK>
                                        var_name: IP_ALIAS_SUBNETWORK
                                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SUBNETWORK='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SUBNETWORK='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUBNETWORK='> name:SUBNETWORK)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name IP_ALIAS_SUBNETWORK)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Using IP Alias subnet '> (${ Id.VSub_Name SUBNETWORK))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [7251 7265]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SUBNETWORK='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SUBNETWORK='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUBNETWORK='> name:SUBNETWORK)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <gcloud>
                            more_env: []
                            words: [
                              {<gcloud>}
                              {<beta>}
                              {<compute>}
                              {<networks>}
                              {<subnets>}
                              {<list>}
                              {<--network> <Id.Lit_Equals '='> (${ Id.VSub_Name NETWORK)}
                              {<--regions> <Id.Lit_Equals '='> (${ Id.VSub_Name REGION)}
                              {<--project> <Id.Lit_Equals '='> (${ Id.VSub_Name NETWORK_PROJECT)}
                              {<--limit> <Id.Lit_Equals '='> <1>}
                              {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
                            ]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name SUBNETWORK>
                                        var_name: SUBNETWORK
                                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Found subnet for region '> (${ Id.VSub_Name REGION) <' in network '> 
                            (${ Id.VSub_Name NETWORK) <': '> (${ Id.VSub_Name SUBNETWORK)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [7351 7365]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ (${ Id.VSub_Name color_red) <'Could not find subnetwork with region '> 
                    (${ Id.VSub_Name REGION) <', network '> (${ Id.VSub_Name NETWORK) <', and project '> (${ Id.VSub_Name NETWORK_PROJECT)
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <delete-all-firewall-rules>
      name: delete-all-firewall-rules
      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.ShAssignment
                              left: <Id.Lit_VarLike 'fws='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'fws='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fws='> name:fws)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <gcloud>
                                            more_env: []
                                            words: [
                                              {<gcloud>}
                                              {<compute>}
                                              {<firewall-rules>}
                                              {<list>}
                                              {<--project>}
                                              {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                              {<--filter> <Id.Lit_Equals '='> 
                                                (DQ <'network='> (${ Id.VSub_Name NETWORK))
                                              }
                                              {<--format> <Id.Lit_Equals '='> (DQ <'value(name)'>)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Deleting firewall rules remaining in network '> 
                            (${ Id.VSub_Name NETWORK) <': '> (${ Id.VSub_Name fws)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <delete-firewall-rules>
                      more_env: []
                      words: [{<delete-firewall-rules>} {(DQ ($ Id.VSub_DollarName fws))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [7427 7464]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ <'Failed to list firewall rules from the network '> 
                        (${ Id.VSub_Name NETWORK)
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <delete-firewall-rules>
      name: delete-firewall-rules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [fw]
              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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.AndOr
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <gcloud>
                                                        more_env: []
                                                        words: [
                                                          {<gcloud>}
                                                          {<compute>}
                                                          {<firewall-rules>}
                                                          {<--project>}
                                                          {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                                          {<describe>}
                                                          {(DQ (${ Id.VSub_Name fw))}
                                                          {<--format> <Id.Lit_Equals '='> 
                                                            (SQ <'value(name)'>)
                                                          }
                                                        ]
                                                        redirects: [
                                                          (Redir
                                                            op: <Id.Redir_Great '2>'>
                                                            loc: (redir_loc.Fd fd:2)
                                                            arg: {<'/dev/null'>}
                                                          )
                                                        ]
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <true>
                                                        more_env: []
                                                        words: [{<true>}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_DPipe _>]
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<firewall-rules>}
                                    {<delete>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                    {<--quiet>}
                                    {(DQ (${ Id.VSub_Name fw))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Amp _>
                            )
                          ]
                          spids: [7527 7573]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <kube>
                  more_env: []
                  words: [
                    {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> 
                      <Id.Lit_Colon ':'> <wait-for-jobs>
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ (${ Id.VSub_Name color_red) <'Failed to delete firewall rules.'> 
                            (${ Id.VSub_Name color_norm)
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <delete-network>
      name: delete-network
      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.AndOr
                                            children: [
                                              (command.Simple
                                                blame_tok: <gcloud>
                                                more_env: []
                                                words: [
                                                  {<gcloud>}
                                                  {<compute>}
                                                  {<networks>}
                                                  {<--project>}
                                                  {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                                  {<describe>}
                                                  {(DQ (${ Id.VSub_Name NETWORK))}
                                                  {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
                                                ]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <true>
                                                more_env: []
                                                words: [{<true>}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [<Id.Op_DPipe _>]
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          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
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<networks>}
                                            {<delete>}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                            {<--quiet>}
                                            {(DQ (${ Id.VSub_Name NETWORK))}
                                          ]
                                          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 to delete network \''> (${ Id.VSub_Name NETWORK) 
                                    <'\'. Listing firewall-rules:'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<firewall-rules>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {<list>}
                                {<--filter> <Id.Lit_Equals '='> 
                                  (DQ <'network='> (${ Id.VSub_Name NETWORK))
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [7703 7732]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [7654 7700]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <delete-subnetworks>
      name: delete-subnetworks
      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name ENABLE_IP_ALIASES>
                                        var_name: ENABLE_IP_ALIASES
                                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'mode='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'mode='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mode='> name:mode)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<networks>}
                                            {<list>}
                                            {<--filter> <Id.Lit_Equals '='> 
                                              (DQ <'name=(\''> (${ Id.VSub_Name NETWORK) <'\')'>)
                                            }
                                            {<--project>}
                                            {(${ Id.VSub_Name NETWORK_PROJECT)}
                                            {<--format> <Id.Lit_Equals '='> 
                                              (SQ <'value(x_gcloud_subnet_mode)'>)
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <true>
                                          more_env: []
                                          words: [{<true>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ (${ Id.VSub_Name mode))}
                                          right: {(DQ <CUSTOM>)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  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.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (${ Id.VSub_Name ENABLE_BIG_CLUSTER_SUBNETS)
                                                      )
                                                    }
                                                  right: {(DQ <true>)}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <'Deleting default subnets...'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <local>
                                      more_env: []
                                      words: [{<local>} {<Id.Lit_VarLike 'parallelism='> <9>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              blame_tok: <gcloud>
                                              more_env: []
                                              words: [
                                                {<gcloud>}
                                                {<compute>}
                                                {<networks>}
                                                {<subnets>}
                                                {<list>}
                                                {<--network> <Id.Lit_Equals '='> 
                                                  (DQ (${ Id.VSub_Name NETWORK))
                                                }
                                                {<--project>}
                                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                                {<--format> <Id.Lit_Equals '='> 
                                                  (SQ <'value(region.basename())'>)
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <xargs>
                                              more_env: []
                                              words: [
                                                {<xargs>}
                                                {<-i>}
                                                {<-P>}
                                                {(${ Id.VSub_Name parallelism)}
                                                {<gcloud>}
                                                {<--quiet>}
                                                {<compute>}
                                                {<networks>}
                                                {<subnets>}
                                                {<delete>}
                                                {(DQ (${ Id.VSub_Name NETWORK))}
                                                {<--project>}
                                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                                {<--region> <Id.Lit_Equals '='> (DQ <'{}'>)}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_Pipe _>]
                                        )
                                        (command.Simple
                                          blame_tok: <true>
                                          more_env: []
                                          words: [{<true>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  ]
                                  spids: [7881 7900]
                                )
                                (IfArm
                                  keyword: <Id.KW_Elif elif>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              left: <Id.KW_DLeftBracket '[['>
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_GlobDEqual
                                                  left: 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name CREATE_CUSTOM_NETWORK>
                                                          var_name: CREATE_CUSTOM_NETWORK
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VTest_ColonHyphen _>
                                                              arg_word: (rhs_word__Empty)
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      )
                                                    }
                                                  right: {(DQ <true>)}
                                                )
                                              right: <Id.Lit_DRightBracket ']]'>
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ <'Deleting custom subnet...'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<--quiet>}
                                            {<compute>}
                                            {<networks>}
                                            {<subnets>}
                                            {<delete>}
                                            {(DQ (${ Id.VSub_Name SUBNETWORK))}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                            {<--region> <Id.Lit_Equals '='> 
                                              (DQ (${ Id.VSub_Name REGION))
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <true>
                                          more_env: []
                                          words: [{<true>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  ]
                                  spids: [8003 8023]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [7859 7878]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  spids: [7794 7812]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(${ Id.VSub_Name IP_ALIAS_SUBNETWORK)}
                                  right: {(${ Id.VSub_Name INSTANCE_PREFIX) <-subnet-default>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Removing auto-created subnet '> (${ Id.VSub_Name NETWORK) <':'> 
                            (${ Id.VSub_Name IP_ALIAS_SUBNETWORK)
                          )
                        }
                      ]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <gcloud>
                                                    more_env: []
                                                    words: [
                                                      {<gcloud>}
                                                      {<beta>}
                                                      {<compute>}
                                                      {<networks>}
                                                      {<subnets>}
                                                      {<describe>}
                                                      {<--project>}
                                                      {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                                      {<--region>}
                                                      {(${ Id.VSub_Name REGION)}
                                                      {(${ Id.VSub_Name IP_ALIAS_SUBNETWORK)}
                                                    ]
                                                    redirects: [
                                                      (Redir
                                                        op: <Id.Redir_Great '2>'>
                                                        loc: (redir_loc.Fd fd:2)
                                                        arg: {<'/dev/null'>}
                                                      )
                                                    ]
                                                    do_fork: T
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<beta>}
                                {<--quiet>}
                                {<compute>}
                                {<networks>}
                                {<subnets>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {<--region>}
                                {(${ Id.VSub_Name REGION)}
                                {(${ Id.VSub_Name IP_ALIAS_SUBNETWORK)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [8124 8174]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [8089 8107]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-etcd-certs>
      name: create-etcd-certs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'host='> (${ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'ca_cert='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 2>
                    var_name: 2
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'ca_key='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 3>
                    var_name: 3
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <generate-etcd-cert>
              more_env: [
                (EnvPair
                  left: <Id.Lit_VarLike 'GEN_ETCD_CA_CERT='>
                  name: GEN_ETCD_CA_CERT
                  val: {(DQ (${ Id.VSub_Name ca_cert))}
                )
                (EnvPair
                  left: <Id.Lit_VarLike 'GEN_ETCD_CA_KEY='>
                  name: GEN_ETCD_CA_KEY
                  val: {(DQ (${ Id.VSub_Name ca_key))}
                )
              ]
              words: [
                {<generate-etcd-cert>}
                {(DQ (${ Id.VSub_Name KUBE_TEMP) <'/cfssl'>)}
                {(DQ (${ Id.VSub_Name host))}
                {(DQ <peer>)}
                {(DQ <peer>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pushd>
              more_env: []
              words: [{<pushd>} {(DQ (${ Id.VSub_Name KUBE_TEMP) <'/cfssl'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ETCD_CA_KEY_BASE64='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ETCD_CA_KEY_BASE64='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ETCD_CA_KEY_BASE64='>
                      name: ETCD_CA_KEY_BASE64
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ <ca-key.pem>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <base64>
                                more_env: []
                                words: [{<base64>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {<-d>} {(SQ <'\\r\\n'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ETCD_CA_CERT_BASE64='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ETCD_CA_CERT_BASE64='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ETCD_CA_CERT_BASE64='>
                      name: ETCD_CA_CERT_BASE64
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ <ca.pem>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <gzip>
                                more_env: []
                                words: [{<gzip>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <base64>
                                more_env: []
                                words: [{<base64>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {<-d>} {(SQ <'\\r\\n'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ETCD_PEER_KEY_BASE64='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ETCD_PEER_KEY_BASE64='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ETCD_PEER_KEY_BASE64='>
                      name: ETCD_PEER_KEY_BASE64
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ <peer-key.pem>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <base64>
                                more_env: []
                                words: [{<base64>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {<-d>} {(SQ <'\\r\\n'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ETCD_PEER_CERT_BASE64='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ETCD_PEER_CERT_BASE64='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ETCD_PEER_CERT_BASE64='>
                      name: ETCD_PEER_CERT_BASE64
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ <peer.pem>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <gzip>
                                more_env: []
                                words: [{<gzip>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <base64>
                                more_env: []
                                words: [{<base64>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {<-d>} {(SQ <'\\r\\n'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <popd>
              more_env: []
              words: [{<popd>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-master>
      name: create-master
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Starting master and configuring firewalls'>)}]
              redirects: []
              do_fork: T
            )
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <gcloud>
                  more_env: []
                  words: [
                    {<gcloud>}
                    {<compute>}
                    {<firewall-rules>}
                    {<create>}
                    {(DQ (${ Id.VSub_Name MASTER_NAME) <-https>)}
                    {<--project>}
                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                    {<--network>}
                    {(DQ (${ Id.VSub_Name NETWORK))}
                    {<--target-tags>}
                    {(DQ (${ Id.VSub_Name MASTER_TAG))}
                    {<--allow>}
                    {<tcp> <Id.Lit_Colon ':'> <443>}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Amp _>
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<disks>}
                {<create>}
                {(DQ (${ Id.VSub_Name MASTER_NAME) <-pd>)}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name ZONE))}
                {<--type>}
                {(DQ (${ Id.VSub_Name MASTER_DISK_TYPE))}
                {<--size>}
                {(DQ (${ Id.VSub_Name MASTER_DISK_SIZE))}
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ (${ Id.VSub_Name ENABLE_CLUSTER_REGISTRY))}
                                      right: {<true>}
                                    )
                                  right: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <gcloud>
                          more_env: []
                          words: [
                            {<gcloud>}
                            {<compute>}
                            {<disks>}
                            {<create>}
                            {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                            {<--project>}
                            {(DQ (${ Id.VSub_Name PROJECT))}
                            {<--zone>}
                            {(DQ (${ Id.VSub_Name ZONE))}
                            {<--type>}
                            {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK_TYPE_GCE))}
                            {<--size>}
                            {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK_SIZE))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  spids: [8617 8644]
                )
              ]
              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: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<firewall-rules>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                    {<describe>}
                                    {(DQ (${ Id.VSub_Name MASTER_NAME) <-etcd>)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_AndGreat '&>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <gcloud>
                          more_env: []
                          words: [
                            {<gcloud>}
                            {<compute>}
                            {<firewall-rules>}
                            {<create>}
                            {(DQ (${ Id.VSub_Name MASTER_NAME) <-etcd>)}
                            {<--project>}
                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                            {<--network>}
                            {(DQ (${ Id.VSub_Name NETWORK))}
                            {<--source-tags>}
                            {(DQ (${ Id.VSub_Name MASTER_TAG))}
                            {<--allow>}
                            {(DQ <'tcp:2380,tcp:2381'>)}
                            {<--target-tags>}
                            {(DQ (${ Id.VSub_Name MASTER_TAG))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  spids: [8712 8743]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBELET_TOKEN='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBELET_TOKEN='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'KUBELET_TOKEN='> name:KUBELET_TOKEN)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <dd>
                                more_env: []
                                words: [
                                  {<dd>}
                                  {<Id.Lit_VarLike 'if='> <'/dev/urandom'>}
                                  {<Id.Lit_VarLike 'bs='> <128>}
                                  {<Id.Lit_VarLike 'count='> <1>}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <base64>
                                more_env: []
                                words: [{<base64>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {<-d>} {(DQ <'=+/'>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <dd>
                                more_env: []
                                words: [
                                  {<dd>}
                                  {<Id.Lit_VarLike 'bs='> <32>}
                                  {<Id.Lit_VarLike 'count='> <1>}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBE_PROXY_TOKEN='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBE_PROXY_TOKEN='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'KUBE_PROXY_TOKEN='>
                      name: KUBE_PROXY_TOKEN
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <dd>
                                more_env: []
                                words: [
                                  {<dd>}
                                  {<Id.Lit_VarLike 'if='> <'/dev/urandom'>}
                                  {<Id.Lit_VarLike 'bs='> <128>}
                                  {<Id.Lit_VarLike 'count='> <1>}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <base64>
                                more_env: []
                                words: [{<base64>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <tr>
                                more_env: []
                                words: [{<tr>} {<-d>} {(DQ <'=+/'>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <dd>
                                more_env: []
                                words: [
                                  {<dd>}
                                  {<Id.Lit_VarLike 'bs='> <32>}
                                  {<Id.Lit_VarLike 'count='> <1>}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name ENABLE_NODE_PROBLEM_DETECTOR>
                                          var_name: ENABLE_NODE_PROBLEM_DETECTOR
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(DQ <standalone>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NODE_PROBLEM_DETECTOR_TOKEN='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NODE_PROBLEM_DETECTOR_TOKEN='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'NODE_PROBLEM_DETECTOR_TOKEN='>
                              name: NODE_PROBLEM_DETECTOR_TOKEN
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <dd>
                                        more_env: []
                                        words: [
                                          {<dd>}
                                          {<Id.Lit_VarLike 'if='> <'/dev/urandom'>}
                                          {<Id.Lit_VarLike 'bs='> <128>}
                                          {<Id.Lit_VarLike 'count='> <1>}
                                        ]
                                        redirects: [
                                          (Redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <base64>
                                        more_env: []
                                        words: [{<base64>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <tr>
                                        more_env: []
                                        words: [{<tr>} {<-d>} {(DQ <'=+/'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <dd>
                                        more_env: []
                                        words: [
                                          {<dd>}
                                          {<Id.Lit_VarLike 'bs='> <32>}
                                          {<Id.Lit_VarLike 'count='> <1>}
                                        ]
                                        redirects: [
                                          (Redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [8922 8942]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <create-static-ip>
              more_env: []
              words: [
                {<create-static-ip>}
                {(DQ (${ Id.VSub_Name MASTER_NAME) <-ip>)}
                {(DQ (${ Id.VSub_Name REGION))}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'MASTER_RESERVED_IP='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'MASTER_RESERVED_IP='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'MASTER_RESERVED_IP='>
                      name: MASTER_RESERVED_IP
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <gcloud>
                            more_env: []
                            words: [
                              {<gcloud>}
                              {<compute>}
                              {<addresses>}
                              {<describe>}
                              {(DQ (${ Id.VSub_Name MASTER_NAME) <-ip>)}
                              {<--project>}
                              {(DQ (${ Id.VSub_Name PROJECT))}
                              {<--region>}
                              {(DQ (${ Id.VSub_Name REGION))}
                              {<-q>}
                              {<--format> <Id.Lit_Equals '='> (SQ <'value(address)'>)}
                            ]
                            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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name REGISTER_MASTER_KUBELET>
                                          var_name: REGISTER_MASTER_KUBELET
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBELET_APISERVER='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBELET_APISERVER='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBELET_APISERVER='>
                              name: KUBELET_APISERVER
                            )
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name MASTER_RESERVED_IP))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [9064 9084]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBERNETES_MASTER_NAME='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBERNETES_MASTER_NAME='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'KUBERNETES_MASTER_NAME='>
                      name: KUBERNETES_MASTER_NAME
                    )
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name MASTER_RESERVED_IP))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'MASTER_ADVERTISE_ADDRESS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'MASTER_ADVERTISE_ADDRESS='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'MASTER_ADVERTISE_ADDRESS='>
                      name: MASTER_ADVERTISE_ADDRESS
                    )
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name MASTER_RESERVED_IP))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <create-certs>
              more_env: []
              words: [{<create-certs>} {(DQ (${ Id.VSub_Name MASTER_RESERVED_IP))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <create-etcd-certs>
              more_env: []
              words: [{<create-etcd-certs>} {(${ Id.VSub_Name MASTER_NAME)}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_ge
                                  left: {(DQ (${ Id.VSub_Name NUM_NODES))}
                                  right: {(DQ <50>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <create-master-instance>
                      more_env: []
                      words: [{<create-master-instance>} {(DQ (${ Id.VSub_Name MASTER_RESERVED_IP))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [9133 9152]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <create-master-instance>
                      more_env: []
                      words: [{<create-master-instance>} {(DQ (${ Id.VSub_Name MASTER_RESERVED_IP))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Amp _>
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <add-replica-to-etcd>
      name: add-replica-to-etcd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'client_port='> (DQ (${ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'internal_port='> (DQ (${ Id.VSub_Number 2))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<ssh>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_NAME))}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_ZONE))}
                {<--command>}
                {
                  (DQ <'curl localhost:'> (${ Id.VSub_Name client_port) <'/v2/members -XPOST -H '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <'Content-Type: application/json'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    <' -d \'{'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <peerURLs> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <':['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'https://'> 
                    (${ Id.VSub_Name REPLICA_NAME) <':'> (${ Id.VSub_Name internal_port) 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <']}\' -s'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_QMark '?')}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <set-existing-master>
      name: set-existing-master
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'existing_master='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <gcloud>
                            more_env: []
                            words: [
                              {<gcloud>}
                              {<compute>}
                              {<instances>}
                              {<list>}
                              {<--project>}
                              {(DQ (${ Id.VSub_Name PROJECT))}
                              {<--filter>}
                              {
                                (DQ <'name ~ \''> 
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <get-replica-name-regexp>
                                        more_env: []
                                        words: [{<get-replica-name-regexp>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <'\''>
                                )
                              }
                              {<--format>}
                              {(DQ <'value(name,zone)'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <head>
                            more_env: []
                            words: [{<head>} {<-n1>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'EXISTING_MASTER_NAME='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'EXISTING_MASTER_NAME='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'EXISTING_MASTER_NAME='>
                      name: EXISTING_MASTER_NAME
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ (${ Id.VSub_Name existing_master))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <cut>
                                  more_env: []
                                  words: [{<cut>} {<-f1>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'EXISTING_MASTER_ZONE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'EXISTING_MASTER_ZONE='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'EXISTING_MASTER_ZONE='>
                      name: EXISTING_MASTER_ZONE
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ (${ Id.VSub_Name existing_master))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <cut>
                                  more_env: []
                                  words: [{<cut>} {<-f2>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <replicate-master>
      name: replicate-master
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <set-replica-name>
              more_env: []
              words: [{<set-replica-name>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set-existing-master>
              more_env: []
              words: [{<set-existing-master>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Experimental: replicating existing master '> 
                    (${ Id.VSub_Name EXISTING_MASTER_ZONE) <'/'> (${ Id.VSub_Name EXISTING_MASTER_NAME) <' as '> (${ Id.VSub_Name ZONE) <'/'> 
                    (${ Id.VSub_Name REPLICA_NAME)
                  )
                }
              ]
              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: <add-replica-to-etcd>
                                  more_env: []
                                  words: [{<add-replica-to-etcd>} {<2379>} {<2380>}]
                                  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 to add master replica to etcd cluster.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [9492 9503]
                )
              ]
              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: <add-replica-to-etcd>
                                  more_env: []
                                  words: [{<add-replica-to-etcd>} {<4002>} {<2381>}]
                                  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 to add master replica to etcd events cluster.'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [9521 9532]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<disks>}
                {<create>}
                {(DQ (${ Id.VSub_Name REPLICA_NAME) <-pd>)}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name ZONE))}
                {<--type>}
                {(DQ (${ Id.VSub_Name MASTER_DISK_TYPE))}
                {<--size>}
                {(DQ (${ Id.VSub_Name MASTER_DISK_SIZE))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'existing_master_replicas='> 
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <get-all-replica-names>
                          more_env: []
                          words: [{<get-all-replica-names>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <replicate-master-instance>
              more_env: []
              words: [
                {<replicate-master-instance>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_ZONE))}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_NAME))}
                {(DQ (${ Id.VSub_Name existing_master_replicas))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<target-pools>}
                {<add-instances>}
                {(DQ (${ Id.VSub_Name MASTER_NAME))}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name ZONE))}
                {<--instances>}
                {(DQ (${ Id.VSub_Name REPLICA_NAME))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <attach-external-ip>
      name: attach-external-ip
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'NAME='> (${ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'ZONE='> (${ Id.VSub_Number 2)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'IP_ADDR='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Number 3>
                    var_name: 3
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'ACCESS_CONFIG_NAME='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <gcloud>
                        more_env: []
                        words: [
                          {<gcloud>}
                          {<compute>}
                          {<instances>}
                          {<describe>}
                          {(DQ (${ Id.VSub_Name NAME))}
                          {<--project>}
                          {(DQ (${ Id.VSub_Name PROJECT))}
                          {<--zone>}
                          {(DQ (${ Id.VSub_Name ZONE))}
                          {<--format> <Id.Lit_Equals '='> 
                            (DQ <'value(networkInterfaces[0].accessConfigs[0].name)'>)
                          }
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<instances>}
                {<delete-access-config>}
                {(DQ (${ Id.VSub_Name NAME))}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name ZONE))}
                {<--access-config-name>}
                {(DQ (${ Id.VSub_Name ACCESS_CONFIG_NAME))}
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: {(${ Id.VSub_Name IP_ADDR)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <gcloud>
                      more_env: []
                      words: [
                        {<gcloud>}
                        {<compute>}
                        {<instances>}
                        {<add-access-config>}
                        {(DQ (${ Id.VSub_Name NAME))}
                        {<--project>}
                        {(DQ (${ Id.VSub_Name PROJECT))}
                        {<--zone>}
                        {(DQ (${ Id.VSub_Name ZONE))}
                        {<--access-config-name>}
                        {(DQ (${ Id.VSub_Name ACCESS_CONFIG_NAME))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [9840 9853]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <gcloud>
                  more_env: []
                  words: [
                    {<gcloud>}
                    {<compute>}
                    {<instances>}
                    {<add-access-config>}
                    {(DQ (${ Id.VSub_Name NAME))}
                    {<--project>}
                    {(DQ (${ Id.VSub_Name PROJECT))}
                    {<--zone>}
                    {(DQ (${ Id.VSub_Name ZONE))}
                    {<--access-config-name>}
                    {(DQ (${ Id.VSub_Name ACCESS_CONFIG_NAME))}
                    {<--address>}
                    {(DQ (${ Id.VSub_Name IP_ADDR))}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-loadbalancer>
      name: create-loadbalancer
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-master>
              more_env: []
              words: [{<detect-master>}]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<forwarding-rules>}
                                {<describe>}
                                {(${ Id.VSub_Name MASTER_NAME)}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--region>}
                                {(${ Id.VSub_Name REGION)}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                                (Redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Load balancer already exists'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  spids: [10001 10039]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'EXISTING_MASTER_NAME='> 
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <get-all-replica-names>
                          more_env: []
                          words: [{<get-all-replica-names>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'EXISTING_MASTER_ZONE='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <gcloud>
                        more_env: []
                        words: [
                          {<gcloud>}
                          {<compute>}
                          {<instances>}
                          {<list>}
                          {(DQ (${ Id.VSub_Name EXISTING_MASTER_NAME))}
                          {<--project>}
                          {(DQ (${ Id.VSub_Name PROJECT))}
                          {<--format> <Id.Lit_Equals '='> (DQ <'value(zone)'>)}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Creating load balancer in front of an already existing master in '> 
                    (${ Id.VSub_Name EXISTING_MASTER_ZONE)
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <attach-external-ip>
              more_env: []
              words: [
                {<attach-external-ip>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_NAME))}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_ZONE))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<target-pools>}
                {<create>}
                {(DQ (${ Id.VSub_Name MASTER_NAME))}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--region>}
                {(DQ (${ Id.VSub_Name REGION))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<target-pools>}
                {<add-instances>}
                {(DQ (${ Id.VSub_Name MASTER_NAME))}
                {<--instances>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_NAME))}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_ZONE))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<forwarding-rules>}
                {<create>}
                {(${ Id.VSub_Name MASTER_NAME)}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--region>}
                {(${ Id.VSub_Name REGION)}
                {<--target-pool>}
                {(${ Id.VSub_Name MASTER_NAME)}
                {<--address> <Id.Lit_Equals '='> (${ Id.VSub_Name KUBE_MASTER_IP)}
                {<--ports> <Id.Lit_Equals '='> <443>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {<-n>}
                {(DQ <'Waiting for the load balancer configuration to propagate...'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'counter='> <0>}]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_Until until>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Left_DollarParen '$('>
                          more_env: []
                          words: [
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <curl>
                                    more_env: []
                                    words: [
                                      {<curl>}
                                      {<-k>}
                                      {<-m1>}
                                      {<https> <Id.Lit_Colon ':'> <'//'> 
                                        (${ Id.VSub_Name KUBE_MASTER_IP)
                                      }
                                    ]
                                    redirects: [
                                      (Redir
                                        op: <Id.Redir_AndGreat '&>'>
                                        loc: (redir_loc.Fd fd:1)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'counter='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'counter='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'counter='> name:counter)
                          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 counter)
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {<.>}]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_ge
                                          left: {(${ Id.VSub_Name counter)}
                                          right: {<1800>}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_red) <TIMEOUT> 
                                    (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_red) 
                                    <'Load balancer failed to initialize within '> (${ Id.VSub_Name counter) <' seconds.'> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [10325 10340]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <DONE>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-nodes-firewall>
      name: create-nodes-firewall
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <create-firewall-rule>
                  more_env: []
                  words: [
                    {<create-firewall-rule>}
                    {(DQ (${ Id.VSub_Name NODE_TAG) <-all>)}
                    {(DQ (${ Id.VSub_Name CLUSTER_IP_RANGE))}
                    {(DQ (${ Id.VSub_Name NODE_TAG))}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Amp _>
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name ENABLE_NODE_LOGGING>
                                          var_name: ENABLE_NODE_LOGGING
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'+++ Logging using Fluentd to '> 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name LOGGING_DESTINATION>
                              var_name: LOGGING_DESTINATION
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VTest_ColonHyphen _>
                                  arg_word: {<unknown>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [10445 10465]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <kube>
                  more_env: []
                  words: [
                    {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> 
                      <Id.Lit_Colon ':'> <wait-for-jobs>
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ (${ Id.VSub_Name color_red) <'Some commands failed.'> 
                            (${ Id.VSub_Name color_norm)
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-scope-flags>
      name: get-scope-flags
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'scope_flags='>}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {(DQ (${ Id.VSub_Name NODE_SCOPES))}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'scope_flags='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'scope_flags='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'scope_flags='>
                              name: scope_flags
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'--scopes '> (${ Id.VSub_Name NODE_SCOPES))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10538 10553]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'scope_flags='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'scope_flags='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'scope_flags='> name:scope_flags)
                      op: assign_op.Equal
                      rhs: {(DQ <--no-scopes>)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name scope_flags))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-nodes-template>
      name: create-nodes-template
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Creating nodes.'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'scope_flags='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <get-scope-flags>
                        more_env: []
                        words: [{<get-scope-flags>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <write-node-env>
              more_env: []
              words: [{<write-node-env>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'template_name='> 
                  (DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-template>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <create-node-instance-template>
              more_env: []
              words: [{<create-node-instance-template>} {($ Id.VSub_DollarName template_name)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <set_num_migs>
      name: set_num_migs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'defaulted_max_instances_per_mig='> 
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name MAX_INSTANCES_PER_MIG>
                    var_name: MAX_INSTANCES_PER_MIG
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<1000>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_le
                                  left: {(${ Id.VSub_Name defaulted_max_instances_per_mig)}
                                  right: {(DQ <0>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'MAX_INSTANCES_PER_MIG cannot be negative. Assuming default 1000'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'defaulted_max_instances_per_mig='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'defaulted_max_instances_per_mig='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'defaulted_max_instances_per_mig='>
                              name: defaulted_max_instances_per_mig
                            )
                          op: assign_op.Equal
                          rhs: {<1000>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [10671 10688]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<Id.Lit_VarLike 'NUM_MIGS='> 
                  (word_part.ArithSub
                    left: <Id.Left_DollarDParen '$(('>
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Slash
                        left: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Minus
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: {(${ Id.VSub_Name NUM_NODES)}
                                right: {(${ Id.VSub_Name defaulted_max_instances_per_mig)}
                              )
                            right: {<Id.Lit_Digits 1>}
                          )
                        right: {(${ Id.VSub_Name defaulted_max_instances_per_mig)}
                      )
                    right: <Id.Right_DollarDParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-nodes>
      name: create-nodes
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'template_name='> 
                  (DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-template>)
                }
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name HEAPSTER_MACHINE_TYPE>
                                          var_name: HEAPSTER_MACHINE_TYPE
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<-r>}
                        {<Id.Lit_VarLike 'nodes='> (DQ (${ Id.VSub_Name NUM_NODES))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [10775 10791]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <local>
                  more_env: []
                  words: [
                    {<local>}
                    {<-r>}
                    {<Id.Lit_VarLike 'nodes='> 
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Minus
                            left: ($ Id.Lit_ArithVarLike NUM_NODES)
                            right: {<Id.Lit_Digits 1>}
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'instances_left='> (${ Id.VSub_Name nodes)}]
              redirects: []
              do_fork: T
            )
            (command.ForExpr
              keyword: <Id.KW_For for>
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 1>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_LessEqual
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {(${ Id.VSub_Name NUM_MIGS)}
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'group_name='> 
                          (DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-group-> ($ Id.VSub_DollarName i))
                        }
                      ]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName i)}
                                          right: {(${ Id.VSub_Name NUM_MIGS)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'group_name='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'group_name='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'group_name='>
                                      name: group_name
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-group>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [10879 10894]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'this_mig_size='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'this_mig_size='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'this_mig_size='>
                              name: this_mig_size
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Slash
                                    left: {(${ Id.VSub_Name instances_left)}
                                    right: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Minus
                                            left: {(${ Id.VSub_Name NUM_MIGS)}
                                            right: {(${ Id.VSub_Name i)}
                                          )
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'instances_left='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'instances_left='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'instances_left='>
                              name: instances_left
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: ($ Id.Lit_ArithVarLike instances_left)
                                    right: {(${ Id.VSub_Name this_mig_size)}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<instance-groups>}
                                {<managed>}
                                {<create>}
                                {(DQ (${ Id.VSub_Name group_name))}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {<--base-instance-name>}
                                {(DQ (${ Id.VSub_Name group_name))}
                                {<--size>}
                                {(DQ (${ Id.VSub_Name this_mig_size))}
                                {<--template>}
                                {(DQ ($ Id.VSub_DollarName template_name))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <true>
                              more_env: []
                              words: [{<true>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<instance-groups>}
                                {<managed>}
                                {<wait-until-stable>}
                                {(DQ (${ Id.VSub_Name group_name))}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <true>
                              more_env: []
                              words: [{<true>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name HEAPSTER_MACHINE_TYPE>
                                          var_name: HEAPSTER_MACHINE_TYPE
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Creating a special node for heapster with machine-type '> 
                            (${ Id.VSub_Name HEAPSTER_MACHINE_TYPE)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <create-heapster-node>
                      more_env: []
                      words: [{<create-heapster-node>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [11076 11092]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-heapster-node>
      name: create-heapster-node
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'gcloud='> (DQ <gcloud>)}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name ENABLE_IP_ALIASES>
                                          var_name: ENABLE_IP_ALIASES
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(SQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'gcloud='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'gcloud='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gcloud='> name:gcloud)
                          op: assign_op.Equal
                          rhs: {(DQ <'gcloud beta'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [11179 11199]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'network='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <make-gcloud-network-argument>
                        more_env: []
                        words: [
                          {<make-gcloud-network-argument>}
                          {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                          {(DQ (${ Id.VSub_Name REGION))}
                          {(DQ (${ Id.VSub_Name NETWORK))}
                          {
                            (DQ 
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name SUBNETWORK>
                                var_name: SUBNETWORK
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          }
                          {(DQ )}
                          {
                            (DQ 
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name ENABLE_IP_ALIASES>
                                var_name: ENABLE_IP_ALIASES
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          }
                          {
                            (DQ 
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name IP_ALIAS_SIZE>
                                var_name: IP_ALIAS_SIZE
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          }
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.Left_DollarBrace '${'>
              more_env: []
              words: [
                {(${ Id.VSub_Name gcloud)}
                {<compute>}
                {<instances>}
                {<create>}
                {(DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-heapster>)}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name ZONE))}
                {<--machine-type> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name HEAPSTER_MACHINE_TYPE))}
                {<--boot-disk-type>}
                {(DQ (${ Id.VSub_Name NODE_DISK_TYPE))}
                {<--boot-disk-size>}
                {(DQ (${ Id.VSub_Name NODE_DISK_SIZE))}
                {<--image-project> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name NODE_IMAGE_PROJECT))}
                {<--image>}
                {(DQ (${ Id.VSub_Name NODE_IMAGE))}
                {<--tags>}
                {(DQ (${ Id.VSub_Name NODE_TAG))}
                {(${ Id.VSub_Name network)}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <get-scope-flags>
                        more_env: []
                        words: [{<get-scope-flags>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
                {<--metadata-from-file>}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <get-node-instance-metadata>
                          more_env: []
                          words: [{<get-node-instance-metadata>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-cluster-autoscaler-mig-config>
      name: create-cluster-autoscaler-mig-config
      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_lt
                                  left: {(${ Id.VSub_Name AUTOSCALER_MIN_NODES)}
                                  right: {<0>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'AUTOSCALER_MIN_NODES must be greater or equal 0'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<2>}
                    )
                  ]
                  spids: [11446 11461]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_lt
                                  left: {(${ Id.VSub_Name AUTOSCALER_MAX_NODES)}
                                  right: {(${ Id.VSub_Name NUM_MIGS)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'AUTOSCALER_MAX_NODES must be greater or equal '> 
                            (${ Id.VSub_Name NUM_MIGS)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<2>}
                    )
                  ]
                  spids: [11488 11505]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
                      name: AUTOSCALER_MIG_CONFIG
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'left_min='> (${ Id.VSub_Name AUTOSCALER_MIN_NODES)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'left_max='> (${ Id.VSub_Name AUTOSCALER_MAX_NODES)}]
              redirects: []
              do_fork: T
            )
            (command.ForExpr
              keyword: <Id.KW_For for>
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 1>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_LessEqual
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {(${ Id.VSub_Name NUM_MIGS)}
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'group_name='> 
                          (DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-group-> ($ Id.VSub_DollarName i))
                        }
                      ]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName i)}
                                          right: {(${ Id.VSub_Name NUM_MIGS)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'group_name='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'group_name='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'group_name='>
                                      name: group_name
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-group>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [11594 11609]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'this_mig_min='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'this_mig_min='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'this_mig_min='>
                              name: this_mig_min
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Slash
                                    left: {(${ Id.VSub_Name left_min)}
                                    right: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Minus
                                            left: {(${ Id.VSub_Name NUM_MIGS)}
                                            right: {(${ Id.VSub_Name i)}
                                          )
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'this_mig_max='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'this_mig_max='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'this_mig_max='>
                              name: this_mig_max
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Slash
                                    left: {(${ Id.VSub_Name left_max)}
                                    right: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Minus
                                            left: {(${ Id.VSub_Name NUM_MIGS)}
                                            right: {(${ Id.VSub_Name i)}
                                          )
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'left_min='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'left_min='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'left_min='> name:left_min)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: ($ Id.Lit_ArithVarLike left_min)
                                    right: {($ Id.VSub_DollarName this_mig_min)}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'left_max='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'left_max='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'left_max='> name:left_max)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Minus
                                    left: ($ Id.Lit_ArithVarLike left_max)
                                    right: {($ Id.VSub_DollarName this_mig_max)}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'mig_url='> 
                          (DQ <'https://www.googleapis.com/compute/v1/projects/'> 
                            (${ Id.VSub_Name PROJECT) <'/zones/'> (${ Id.VSub_Name ZONE) <'/instanceGroups/'> (${ Id.VSub_Name group_name)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
                              name: AUTOSCALER_MIG_CONFIG
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name AUTOSCALER_MIG_CONFIG) <' --nodes='> 
                                (${ Id.VSub_Name this_mig_min) <':'> (${ Id.VSub_Name this_mig_max) <':'> (${ Id.VSub_Name mig_url)
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'AUTOSCALER_MIG_CONFIG='>
                      name: AUTOSCALER_MIG_CONFIG
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name AUTOSCALER_MIG_CONFIG) <' --scale-down-enabled='> 
                        (${ Id.VSub_Name AUTOSCALER_ENABLE_SCALE_DOWN)
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <create-autoscaler-config>
      name: create-autoscaler-config
      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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name ENABLE_CLUSTER_AUTOSCALER))}
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <create-cluster-autoscaler-mig-config>
                      more_env: []
                      words: [{<create-cluster-autoscaler-mig-config>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Using autoscaler config: '> (${ Id.VSub_Name AUTOSCALER_MIG_CONFIG) 
                            <' '> (${ Id.VSub_Name AUTOSCALER_EXPANDER_CONFIG)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [11788 11807]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <check-cluster>
      name: check-cluster
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-node-names>
              more_env: []
              words: [{<detect-node-names>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-master>
              more_env: []
              words: [{<detect-master>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Waiting up to '> (${ Id.VSub_Name KUBE_CLUSTER_INITIALIZATION_TIMEOUT) 
                    <' seconds for cluster initialization.'>
                  )
                }
              ]
              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>}
                {
                  (DQ 
                    <'  This will continually check to see if the API for kubernetes is reachable.'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'  This may time out if there was some uncaught error during start up.'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'secure='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'secure='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'secure='> name:secure)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              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: <which>
                              more_env: []
                              words: [{<which>} {<sw_vers>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobEqual
                                          left: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <sw_vers>
                                                        more_env: []
                                                        words: [{<sw_vers>}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <grep>
                                                        more_env: []
                                                        words: [{<grep>} {<ProductVersion>}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <awk>
                                                        more_env: []
                                                        words: [{<awk>} {(SQ <'{print $2}'>)}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                          right: {(DQ <10.9.>) <Id.Lit_Other '*'>}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'secure='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'secure='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'secure='> name:secure)
                                  op: assign_op.Equal
                                  rhs: {(DQ <--insecure>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [11903 11935]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [11889 11900]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'start_time='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <date>
                        more_env: []
                        words: [{<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_Until until>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <curl>
                          more_env: []
                          words: [
                            {<curl>}
                            {<--cacert>}
                            {(DQ (${ Id.VSub_Name CERT_DIR) <'/pki/ca.crt'>)}
                            {<-H>}
                            {(DQ <'Authorization: Bearer '> (${ Id.VSub_Name KUBE_BEARER_TOKEN))}
                            {(${ Id.VSub_Name secure)}
                            {<--max-time>}
                            {<5>}
                            {<--fail>}
                            {<--output>}
                            {<'/dev/null'>}
                            {<--silent>}
                            {(DQ <'https://'> (${ Id.VSub_Name KUBE_MASTER_IP) <'/api/v1/pods'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'elapsed='> 
                          (word_part.ArithSub
                            left: <Id.Left_DollarDParen '$(('>
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Minus
                                left: 
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <date>
                                          more_env: []
                                          words: [{<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                right: {(${ Id.VSub_Name start_time)}
                              )
                            right: <Id.Right_DollarDParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_gt
                                          left: {(${ Id.VSub_Name elapsed)}
                                          right: 
                                            {(${ Id.VSub_Name KUBE_CLUSTER_INITIALIZATION_TIMEOUT)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_red) 
                                    <'Cluster failed to initialize within '> (${ Id.VSub_Name KUBE_CLUSTER_INITIALIZATION_TIMEOUT) <' seconds.'> (${ Id.VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<2>}
                            )
                          ]
                          spids: [12042 12059]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [{<printf>} {(DQ <.>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<2>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Kubernetes cluster created.'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<Id.Lit_VarLike 'KUBE_CERT='> 
                  (DQ (${ Id.VSub_Name CERT_DIR) <'/pki/issued/kubecfg.crt'>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<Id.Lit_VarLike 'KUBE_KEY='> 
                  (DQ (${ Id.VSub_Name CERT_DIR) <'/pki/private/kubecfg.key'>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<Id.Lit_VarLike 'CA_CERT='> (DQ (${ Id.VSub_Name CERT_DIR) <'/pki/ca.crt'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<Id.Lit_VarLike 'CONTEXT='> 
                  (DQ (${ Id.VSub_Name PROJECT) <_> (${ Id.VSub_Name INSTANCE_PREFIX))
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (command.Simple
                      blame_tok: <umask>
                      more_env: []
                      words: [{<umask>} {<077>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <create-kubeconfig>
                      more_env: []
                      words: [{<create-kubeconfig>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <create-kubeconfig-for-federation>
                      more_env: []
                      words: [{<create-kubeconfig-for-federation>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
            (command.Simple
              blame_tok: <get-kubeconfig-basicauth>
              more_env: []
              words: [{<get-kubeconfig-basicauth>}]
              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>}
                {<-e>}
                {
                  (DQ (${ Id.VSub_Name color_green) 
                    <'Kubernetes cluster is running.  The master is running at:'>
                  )
                }
              ]
              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>}
                {<-e>}
                {(DQ (${ Id.VSub_Name color_yellow) <'  https://'> (${ Id.VSub_Name KUBE_MASTER_IP))}
              ]
              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>}
                {<-e>}
                {
                  (DQ (${ Id.VSub_Name color_green) 
                    <'The user name and password to use is located in '> (${ Id.VSub_Name KUBECONFIG) <.> (${ Id.VSub_Name color_norm)
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <remove-replica-from-etcd>
      name: remove-replica-from-etcd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'port='> (DQ (${ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.DBracket
                  left: <Id.KW_DLeftBracket '[['>
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_n
                      child: {(DQ (${ Id.VSub_Name EXISTING_MASTER_NAME))}
                    )
                  right: <Id.Lit_DRightBracket ']]'>
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<ssh>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_NAME))}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone>}
                {(DQ (${ Id.VSub_Name EXISTING_MASTER_ZONE))}
                {<--command>}
                {
                  (DQ <'curl -s localhost:'> (${ Id.VSub_Name port) <'/v2/members/'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    ) <'(curl -s localhost:'> (${ Id.VSub_Name port) <'/v2/members -XGET | sed \'s/{'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\\\'>
                      ch: '\\'
                    ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'id/'> <Id.Lit_BadBackslash '\\'> 
                    <'n/g\' | grep '> (${ Id.VSub_Name REPLICA_NAME) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <' | cut -f 3 -d '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <') -XDELETE -L 2>/dev/null'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'res='> ($ Id.VSub_QMark '?')}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Removing etcd replica, name: '> (${ Id.VSub_Name REPLICA_NAME) <', port: '> 
                    (${ Id.VSub_Name port) <', result: '> (${ Id.VSub_Name res)
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(DQ (${ Id.VSub_Name res))}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <kube-down>
      name: kube-down
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-r>} {<Id.Lit_VarLike 'batch='> <200>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-node-names>
              more_env: []
              words: [{<detect-node-names>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Bringing down cluster'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {<Id.Lit_Other '+'> <e>}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_DELETE_NODES>
                                          var_name: KUBE_DELETE_NODES
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(DQ <false>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'templates='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <get-template>
                                more_env: []
                                words: [{<get-template>} {(DQ (${ Id.VSub_Name PROJECT))}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [group]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name INSTANCE_GROUPS>
                                var_name: INSTANCE_GROUPS
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      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: <gcloud>
                                              more_env: []
                                              words: [
                                                {<gcloud>}
                                                {<compute>}
                                                {<instance-groups>}
                                                {<managed>}
                                                {<describe>}
                                                {(DQ (${ Id.VSub_Name group))}
                                                {<--project>}
                                                {(DQ (${ Id.VSub_Name PROJECT))}
                                                {<--zone>}
                                                {(DQ (${ Id.VSub_Name ZONE))}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_AndGreat '&>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<'/dev/null'>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<instance-groups>}
                                            {<managed>}
                                            {<delete>}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name PROJECT))}
                                            {<--quiet>}
                                            {<--zone>}
                                            {(DQ (${ Id.VSub_Name ZONE))}
                                            {(DQ (${ Id.VSub_Name group))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Amp _>
                                    )
                                  ]
                                  spids: [12567 12605]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <kube>
                          more_env: []
                          words: [
                            {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> 
                              <Id.Lit_Colon ':'> <wait-for-jobs>
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {<-e>} {(DQ <'Failed to delete instance group(s).'>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [template]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name templates>
                                var_name: templates
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      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: <gcloud>
                                              more_env: []
                                              words: [
                                                {<gcloud>}
                                                {<compute>}
                                                {<instance-templates>}
                                                {<describe>}
                                                {<--project>}
                                                {(DQ (${ Id.VSub_Name PROJECT))}
                                                {(DQ (${ Id.VSub_Name template))}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_AndGreat '&>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<'/dev/null'>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<instance-templates>}
                                        {<delete>}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                        {<--quiet>}
                                        {(DQ (${ Id.VSub_Name template))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [12711 12739]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Unary
                                          op_id: Id.BoolUnary_n
                                          child: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name HEAPSTER_MACHINE_TYPE>
                                                  var_name: HEAPSTER_MACHINE_TYPE
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VTest_ColonHyphen _>
                                                      arg_word: (rhs_word__Empty)
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <local>
                              more_env: []
                              words: [
                                {<local>}
                                {<-r>}
                                {<Id.Lit_VarLike 'heapster_machine_name='> 
                                  (DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-heapster>)
                                }
                              ]
                              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: <gcloud>
                                              more_env: []
                                              words: [
                                                {<gcloud>}
                                                {<compute>}
                                                {<instances>}
                                                {<describe>}
                                                {(DQ (${ Id.VSub_Name heapster_machine_name))}
                                                {<--zone>}
                                                {(DQ (${ Id.VSub_Name ZONE))}
                                                {<--project>}
                                                {(DQ (${ Id.VSub_Name PROJECT))}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_AndGreat '&>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<'/dev/null'>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<instances>}
                                        {<delete>}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                        {<--quiet>}
                                        {<--delete-disks>}
                                        {<all>}
                                        {<--zone>}
                                        {(DQ (${ Id.VSub_Name ZONE))}
                                        {(DQ (${ Id.VSub_Name heapster_machine_name))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [12816 12852]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [12784 12800]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [12499 12519]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'REPLICA_NAME='> 
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name KUBE_REPLICA_NAME>
                      var_name: KUBE_REPLICA_NAME
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VTest_ColonHyphen _>
                          arg_word: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <get-replica-name>
                                    more_env: []
                                    words: [{<get-replica-name>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set-existing-master>
              more_env: []
              words: [{<set-existing-master>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <remove-replica-from-etcd>
              more_env: []
              words: [{<remove-replica-from-etcd>} {<2379>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <remove-replica-from-etcd>
              more_env: []
              words: [{<remove-replica-from-etcd>} {<4002>}]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<instances>}
                                {<describe>}
                                {(DQ (${ Id.VSub_Name REPLICA_NAME))}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<target-pools>}
                                        {<describe>}
                                        {(DQ (${ Id.VSub_Name MASTER_NAME))}
                                        {<--region>}
                                        {(DQ (${ Id.VSub_Name REGION))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_AndGreat '&>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<target-pools>}
                                {<remove-instances>}
                                {(DQ (${ Id.VSub_Name MASTER_NAME))}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {<--instances>}
                                {(DQ (${ Id.VSub_Name REPLICA_NAME))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [12999 13035]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <gcloud>
                      more_env: []
                      words: [
                        {<gcloud>}
                        {<compute>}
                        {<instances>}
                        {<delete>}
                        {<--project>}
                        {(DQ (${ Id.VSub_Name PROJECT))}
                        {<--quiet>}
                        {<--delete-disks>}
                        {<all>}
                        {<--zone>}
                        {(DQ (${ Id.VSub_Name ZONE))}
                        {(DQ (${ Id.VSub_Name REPLICA_NAME))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [12956 12992]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<-r>}
                {<Id.Lit_VarLike 'replica_pd='> 
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name REPLICA_NAME>
                      var_name: REPLICA_NAME
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VTest_ColonHyphen _>
                          arg_word: {(${ Id.VSub_Name MASTER_NAME)}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    ) <-pd>
                  )
                }
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<disks>}
                                {<describe>}
                                {(DQ (${ Id.VSub_Name replica_pd))}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <gcloud>
                      more_env: []
                      words: [
                        {<gcloud>}
                        {<compute>}
                        {<disks>}
                        {<delete>}
                        {<--project>}
                        {(DQ (${ Id.VSub_Name PROJECT))}
                        {<--quiet>}
                        {<--zone>}
                        {(DQ (${ Id.VSub_Name ZONE))}
                        {(DQ (${ Id.VSub_Name replica_pd))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [13166 13202]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ (${ Id.VSub_Name ENABLE_CLUSTER_REGISTRY))}
                                      right: {<true>}
                                    )
                                  right: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<disks>}
                                        {<describe>}
                                        {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                                        {<--zone>}
                                        {(DQ (${ Id.VSub_Name ZONE))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_AndGreat '&>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<disks>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--quiet>}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [13284 13320]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [13254 13281]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'REMAINING_MASTER_COUNT='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <gcloud>
                            more_env: []
                            words: [
                              {<gcloud>}
                              {<compute>}
                              {<instances>}
                              {<list>}
                              {<--project>}
                              {(DQ (${ Id.VSub_Name PROJECT))}
                              {<--filter> <Id.Lit_Equals '='> 
                                (DQ <'name ~ \''> 
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <get-replica-name-regexp>
                                        more_env: []
                                        words: [{<get-replica-name-regexp>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <'\''>
                                )
                              }
                              {<--format>}
                              {(DQ <'value(zone)'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <wc>
                            more_env: []
                            words: [{<wc>} {<-l>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {(DQ (${ Id.VSub_Name REMAINING_MASTER_COUNT))}
                                  right: {<1>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<forwarding-rules>}
                                        {<describe>}
                                        {(DQ (${ Id.VSub_Name MASTER_NAME))}
                                        {<--region>}
                                        {(DQ (${ Id.VSub_Name REGION))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_AndGreat '&>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <detect-master>
                              more_env: []
                              words: [{<detect-master>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <local>
                              more_env: []
                              words: [
                                {<local>}
                                {<Id.Lit_VarLike 'REMAINING_REPLICA_NAME='> 
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <get-all-replica-names>
                                          more_env: []
                                          words: [{<get-all-replica-names>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <local>
                              more_env: []
                              words: [
                                {<local>}
                                {<Id.Lit_VarLike 'REMAINING_REPLICA_ZONE='> 
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <gcloud>
                                        more_env: []
                                        words: [
                                          {<gcloud>}
                                          {<compute>}
                                          {<instances>}
                                          {<list>}
                                          {(DQ (${ Id.VSub_Name REMAINING_REPLICA_NAME))}
                                          {<--project>}
                                          {(DQ (${ Id.VSub_Name PROJECT))}
                                          {<--format> <Id.Lit_Equals '='> (DQ <'value(zone)'>)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<forwarding-rules>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--region>}
                                {(DQ (${ Id.VSub_Name REGION))}
                                {<--quiet>}
                                {(DQ (${ Id.VSub_Name MASTER_NAME))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <attach-external-ip>
                              more_env: []
                              words: [
                                {<attach-external-ip>}
                                {(DQ (${ Id.VSub_Name REMAINING_REPLICA_NAME))}
                                {(DQ (${ Id.VSub_Name REMAINING_REPLICA_ZONE))}
                                {(DQ (${ Id.VSub_Name KUBE_MASTER_IP))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<target-pools>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--region>}
                                {(DQ (${ Id.VSub_Name REGION))}
                                {<--quiet>}
                                {(DQ (${ Id.VSub_Name MASTER_NAME))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [13450 13486]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [13430 13447]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {(DQ (${ Id.VSub_Name REMAINING_MASTER_COUNT))}
                                  right: {<0>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <delete-firewall-rules>
                      more_env: []
                      words: [
                        {<delete-firewall-rules>}
                        {(DQ (${ Id.VSub_Name MASTER_NAME) <-https>)}
                        {(DQ (${ Id.VSub_Name MASTER_NAME) <-etcd>)}
                        {(DQ (${ Id.VSub_Name NODE_TAG) <-all>)}
                      ]
                      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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<addresses>}
                                        {<describe>}
                                        {(DQ (${ Id.VSub_Name MASTER_NAME) <-ip>)}
                                        {<--region>}
                                        {(DQ (${ Id.VSub_Name REGION))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_AndGreat '&>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<addresses>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--region>}
                                {(DQ (${ Id.VSub_Name REGION))}
                                {<--quiet>}
                                {(DQ (${ Id.VSub_Name MASTER_NAME) <-ip>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [13704 13741]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [13652 13669]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_DELETE_NODES>
                                          var_name: KUBE_DELETE_NODES
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {(DQ <false>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<-a>} {<minions>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'minions='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'minions='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'minions='> name:minions)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<instances>}
                                            {<list>}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name PROJECT))}
                                            {<--filter> <Id.Lit_Equals '='> 
                                              (DQ <'name ~ \''> (${ Id.VSub_Name NODE_INSTANCE_PREFIX) 
                                                <'-.+\' AND zone:('> (${ Id.VSub_Name ZONE) <')'>
                                              )
                                            }
                                            {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  left: <Id.Op_DLeftParen _>
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Great
                                      left: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Name minions>
                                              var_name: minions
                                              prefix_op: <Id.VSub_Pound '#'>
                                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          )
                                        }
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                  right: <Id.Op_DRightParen _>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<Deleting>}
                                {<nodes>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name minions>
                                      var_name: minions
                                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                      suffix_op: (suffix_op.Slice length:{(${ Id.VSub_Name batch)})
                                      right: <Id.Arith_RBrace _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<instances>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--quiet>}
                                {<--delete-disks>}
                                {<boot>}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name minions>
                                      var_name: minions
                                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      suffix_op: (suffix_op.Slice length:{(${ Id.VSub_Name batch)})
                                      right: <Id.Arith_RBrace _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'minions='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'minions='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'minions='>
                                      name: minions
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name minions>
                                                var_name: minions
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                                suffix_op: 
                                                  (suffix_op.Slice
                                                    begin: {(${ Id.VSub_Name batch)}
                                                  )
                                                right: <Id.Arith_RBrace _>
                                              )
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  spids: [13793 13813]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_eq
                                  left: {(DQ (${ Id.VSub_Name REMAINING_MASTER_COUNT))}
                                  right: {<0>}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [{<local>} {<-a>} {<routes>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'TRUNCATED_PREFIX='> 
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name INSTANCE_PREFIX>
                              var_name: INSTANCE_PREFIX
                              suffix_op: 
                                (suffix_op.Slice
                                  begin: {<Id.Lit_Digits 0>}
                                  length: {<Id.Lit_Digits 26>}
                                )
                              right: <Id.Arith_RBrace _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'routes='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'routes='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'routes='> name:routes)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (ShArrayLiteral
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gcloud>
                                          more_env: []
                                          words: [
                                            {<gcloud>}
                                            {<compute>}
                                            {<routes>}
                                            {<list>}
                                            {<--project>}
                                            {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                            {<--filter> <Id.Lit_Equals '='> 
                                              (DQ <'name ~ \''> (${ Id.VSub_Name TRUNCATED_PREFIX) 
                                                <'-.{8}-.{4}-.{4}-.{4}-.{12}\''>
                                              )
                                            }
                                            {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  }
                                ]
                                right: <Id.Right_ShArrayLiteral _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  left: <Id.Op_DLeftParen _>
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Great
                                      left: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Name routes>
                                              var_name: routes
                                              prefix_op: <Id.VSub_Pound '#'>
                                              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          )
                                        }
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                  right: <Id.Op_DRightParen _>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<Deleting>}
                                {<routes>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name routes>
                                      var_name: routes
                                      bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                                      suffix_op: (suffix_op.Slice length:{(${ Id.VSub_Name batch)})
                                      right: <Id.Arith_RBrace _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<routes>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {<--quiet>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name routes>
                                      var_name: routes
                                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      suffix_op: (suffix_op.Slice length:{(${ Id.VSub_Name batch)})
                                      right: <Id.Arith_RBrace _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'routes='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'routes='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'routes='> name:routes)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (ShArrayLiteral
                                        left: <Id.Op_LParen _>
                                        words: [
                                          {
                                            (DQ 
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name routes>
                                                var_name: routes
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                                suffix_op: 
                                                  (suffix_op.Slice
                                                    begin: {(${ Id.VSub_Name batch)}
                                                  )
                                                right: <Id.Arith_RBrace _>
                                              )
                                            )
                                          }
                                        ]
                                        right: <Id.Right_ShArrayLiteral _>
                                      )
                                    }
                                )
                              ]
                              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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<disks>}
                                        {<describe>}
                                        {(DQ (${ Id.VSub_Name INSTANCE_PREFIX)) <-influxdb-pd>}
                                        {<--zone>}
                                        {(DQ (${ Id.VSub_Name ZONE))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_AndGreat '&>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<disks>}
                                {<delete>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {<--quiet>}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                                {(DQ (${ Id.VSub_Name INSTANCE_PREFIX)) <-influxdb-pd>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [14233 14270]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <delete-firewall-rules>
                      more_env: []
                      words: [
                        {<delete-firewall-rules>}
                        {(DQ (${ Id.VSub_Name CLUSTER_NAME) <-default-internal-master>)}
                        {(DQ (${ Id.VSub_Name CLUSTER_NAME) <-default-internal-node>)}
                        {(DQ (${ Id.VSub_Name NETWORK) <-default-ssh>)}
                        {(DQ (${ Id.VSub_Name NETWORK) <-default-internal>)}
                      ]
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(DQ (${ Id.VSub_Name KUBE_DELETE_NETWORK))}
                                          right: {(DQ <true>)}
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <delete-all-firewall-rules>
                                  more_env: []
                                  words: [{<delete-all-firewall-rules>}]
                                  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: <delete-subnetworks>
                                  more_env: []
                                  words: [{<delete-subnetworks>}]
                                  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: <delete-network>
                                  more_env: []
                                  words: [{<delete-network>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <true>
                                  more_env: []
                                  words: [{<true>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          spids: [14366 14385]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <export>
                      more_env: []
                      words: [
                        {<export>}
                        {<Id.Lit_VarLike 'CONTEXT='> 
                          (DQ (${ Id.VSub_Name PROJECT) <_> (${ Id.VSub_Name INSTANCE_PREFIX))
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <clear-kubeconfig>
                      more_env: []
                      words: [{<clear-kubeconfig>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [14012 14029]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'... calling validate-cluster'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.AndOr
                  children: [
                    (command.Subshell
                      left: <Id.Op_LParen _>
                      child: 
                        (command.Simple
                          blame_tok: <validate-cluster>
                          more_env: []
                          words: [{<validate-cluster>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Right_Subshell _>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'validate_result='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'validate_result='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'validate_result='>
                              name: validate_result
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_QMark '?'))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'validate_result='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'validate_result='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'validate_result='>
                              name: validate_result
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_QMark '?'))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  ops: [<Id.Op_DAmp _> <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.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_eq
                                      left: {(DQ (${ Id.VSub_Name validate_result))}
                                      right: {<1>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
                      spids: [14498 14515]
                    )
                    (IfArm
                      keyword: <Id.KW_Elif elif>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  left: <Id.KW_DLeftBracket '[['>
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_eq
                                      left: {(DQ (${ Id.VSub_Name validate_result))}
                                      right: {<2>}
                                    )
                                  right: <Id.Lit_DRightBracket ']]'>
                                  redirects: []
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'...ignoring non-fatal errors in validate-cluster'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      spids: [14523 14540]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {<-e>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-replica-name>
      name: get-replica-name
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <gcloud>
                            more_env: []
                            words: [
                              {<gcloud>}
                              {<compute>}
                              {<instances>}
                              {<list>}
                              {<--project>}
                              {(DQ (${ Id.VSub_Name PROJECT))}
                              {<--filter> <Id.Lit_Equals '='> 
                                (DQ <'name ~ \''> 
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <get-replica-name-regexp>
                                        more_env: []
                                        words: [{<get-replica-name-regexp>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <'\' AND zone:('> (${ Id.VSub_Name ZONE) <')'>
                                )
                              }
                              {<--format>}
                              {(DQ <'value(name)'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <head>
                            more_env: []
                            words: [{<head>} {<-n1>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-all-replica-names>
      name: get-all-replica-names
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <gcloud>
                            more_env: []
                            words: [
                              {<gcloud>}
                              {<compute>}
                              {<instances>}
                              {<list>}
                              {<--project>}
                              {(DQ (${ Id.VSub_Name PROJECT))}
                              {<--filter> <Id.Lit_Equals '='> 
                                (DQ <'name ~ \''> 
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <get-replica-name-regexp>
                                        more_env: []
                                        words: [{<get-replica-name-regexp>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <'\''>
                                )
                              }
                              {<--format>}
                              {(DQ <'value(name)'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <tr>
                            more_env: []
                            words: [{<tr>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)} {(DQ <','>)}]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <sed>
                            more_env: []
                            words: [{<sed>} {(SQ <'s/,$//'>)}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-master-replicas-count>
      name: get-master-replicas-count
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'num_masters='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (command.Simple
                            blame_tok: <gcloud>
                            more_env: []
                            words: [
                              {<gcloud>}
                              {<compute>}
                              {<instances>}
                              {<list>}
                              {<--project>}
                              {(DQ (${ Id.VSub_Name PROJECT))}
                              {<--filter> <Id.Lit_Equals '='> 
                                (DQ <'name ~ \''> 
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <get-replica-name-regexp>
                                        more_env: []
                                        words: [{<get-replica-name-regexp>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  ) <'\''>
                                )
                              }
                              {<--format>}
                              {(DQ <'value(zone)'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <wc>
                            more_env: []
                            words: [{<wc>} {<-l>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<-n>} {(DQ (${ Id.VSub_Name num_masters))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-replica-name-regexp>
      name: get-replica-name-regexp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name MASTER_NAME) <'(-...)?'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <set-replica-name>
      name: set-replica-name
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'instances='> 
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <gcloud>
                        more_env: []
                        words: [
                          {<gcloud>}
                          {<compute>}
                          {<instances>}
                          {<list>}
                          {<--project>}
                          {(DQ (${ Id.VSub_Name PROJECT))}
                          {<--filter> <Id.Lit_Equals '='> 
                            (DQ <'name ~ \''> 
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <get-replica-name-regexp>
                                    more_env: []
                                    words: [{<get-replica-name-regexp>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              ) <'\''>
                            )
                          }
                          {<--format>}
                          {(DQ <'value(name)'>)}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'suffix='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'suffix='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suffix='> name:suffix)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ (${ Id.VSub_Name instances))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <grep>
                              more_env: []
                              words: [{<grep>} {(DQ (${ Id.VSub_Name suffix))}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_Pipe _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'suffix='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'suffix='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'suffix='> name:suffix)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <date>
                                          more_env: []
                                          words: [{<date>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <md5sum>
                                          more_env: []
                                          words: [{<md5sum>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <head>
                                          more_env: []
                                          words: [{<head>} {<-c3>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'REPLICA_NAME='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'REPLICA_NAME='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REPLICA_NAME='> name:REPLICA_NAME)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name MASTER_NAME) <-> (${ Id.VSub_Name suffix))}
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <get-template>
      name: get-template
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<instance-templates>}
                {<list>}
                {<--filter> <Id.Lit_Equals '='> 
                  (DQ <'name ~ \''> (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <'-template(-('> 
                    (${ Id.VSub_Name KUBE_RELEASE_VERSION_DASHED_REGEX) <'|'> (${ Id.VSub_Name KUBE_CI_VERSION_DASHED_REGEX) <'))?\''>
                  )
                }
                {<--project> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Number 1))}
                {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <check-resources>
      name: check-resources
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-node-names>
              more_env: []
              words: [{<detect-node-names>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Looking for already existing resources'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      name: KUBE_RESOURCE_FOUND
                    )
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name INSTANCE_GROUPS>
                                          var_name: INSTANCE_GROUPS
                                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Managed instance groups '> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name INSTANCE_GROUPS>
                                  var_name: INSTANCE_GROUPS
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15148 15167]
                )
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<instance-templates>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {(DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-template>)}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Instance template '> (${ Id.VSub_Name NODE_INSTANCE_PREFIX) 
                                <-template>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15191 15220]
                )
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<instances>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {(DQ (${ Id.VSub_Name MASTER_NAME))}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Kubernetes master '> (${ Id.VSub_Name MASTER_NAME))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15242 15278]
                )
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<disks>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {(DQ (${ Id.VSub_Name MASTER_NAME)) <-pd>}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Persistent disk '> (${ Id.VSub_Name MASTER_NAME) <-pd>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15299 15336]
                )
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<disks>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {(DQ (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                                {<--zone>}
                                {(DQ (${ Id.VSub_Name ZONE))}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Persistent disk '> (${ Id.VSub_Name CLUSTER_REGISTRY_DISK))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15358 15394]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-a>} {<minions>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'minions='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'minions='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'minions='> name:minions)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<instances>}
                                    {<list>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name PROJECT))}
                                    {<--filter> <Id.Lit_Equals '='> 
                                      (DQ <'name ~ \''> (${ Id.VSub_Name NODE_INSTANCE_PREFIX) 
                                        <'-.+\' AND zone:('> (${ Id.VSub_Name ZONE) <')'>
                                      )
                                    }
                                    {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Great
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name minions>
                                          var_name: minions
                                          prefix_op: <Id.VSub_Pound '#'>
                                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {<Id.Lit_Digits 0>}
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name minions>
                                  var_name: minions
                                  prefix_op: <Id.VSub_Pound '#'>
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  right: <Id.Right_DollarBrace '}'>
                                ) <' matching matching '> (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <'-.+'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15476 15498]
                )
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<firewall-rules>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {(DQ (${ Id.VSub_Name MASTER_NAME) <-https>)}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Firewall rules for '> (${ Id.VSub_Name MASTER_NAME) <-https>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15527 15556]
                )
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<firewall-rules>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {(DQ (${ Id.VSub_Name NODE_TAG) <-all>)}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Firewall rules for '> (${ Id.VSub_Name MASTER_NAME) <-all>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15578 15607]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<-a>} {<routes>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'routes='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'routes='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'routes='> name:routes)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gcloud>
                                  more_env: []
                                  words: [
                                    {<gcloud>}
                                    {<compute>}
                                    {<routes>}
                                    {<list>}
                                    {<--project>}
                                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                    {<--filter> <Id.Lit_Equals '='> 
                                      (DQ <'name ~ \''> (${ Id.VSub_Name INSTANCE_PREFIX) 
                                        <'-minion-.{4}\''>
                                      )
                                    }
                                    {<--format> <Id.Lit_Equals '='> (SQ <'value(name)'>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Great
                                  left: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name routes>
                                          var_name: routes
                                          prefix_op: <Id.VSub_Pound '#'>
                                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                  right: {<Id.Lit_Digits 0>}
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name routes>
                                  var_name: routes
                                  prefix_op: <Id.VSub_Pound '#'>
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  right: <Id.Right_DollarBrace '}'>
                                ) <' routes matching '> (${ Id.VSub_Name INSTANCE_PREFIX) <'-minion-.{4}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15678 15700]
                )
              ]
              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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<addresses>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name PROJECT))}
                                {(DQ (${ Id.VSub_Name MASTER_NAME) <-ip>)}
                                {<--region>}
                                {(DQ (${ Id.VSub_Name REGION))}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'KUBE_RESOURCE_FOUND='>
                              name: KUBE_RESOURCE_FOUND
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'Master\'s reserved IP'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15729 15766]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <prepare-push>
      name: prepare-push
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'node='> 
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Number 1>
                      var_name: 1
                      suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:(rhs_word__Empty))
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {(DQ (${ Id.VSub_Name node))}
                                      right: {(DQ <true>)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(DQ (${ Id.VSub_Name NODE_OS_DISTRIBUTION))}
                                      right: {(DQ <debian>)}
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Updating nodes in a kubernetes cluster with '> 
                            (${ Id.VSub_Name NODE_OS_DISTRIBUTION) <' is not supported yet.'>
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15825 15858]
                )
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(DQ (${ Id.VSub_Name node))}
                                      right: {(DQ <true>)}
                                    )
                                  right: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: {(DQ (${ Id.VSub_Name MASTER_OS_DISTRIBUTION))}
                                      right: {(DQ <debian>)}
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Updating the master in a kubernetes cluster with '> 
                            (${ Id.VSub_Name MASTER_OS_DISTRIBUTION) <' is not supported yet.'>
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [15883 15916]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'OUTPUT='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'OUTPUT='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OUTPUT='> name:OUTPUT)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name KUBE_ROOT) <'/_output/logs'>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {(${ Id.VSub_Name OUTPUT)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <kube>
              more_env: []
              words: [
                {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> 
                  <Id.Lit_Colon ':'> <ensure-temp-dir>
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-master>
              more_env: []
              words: [{<detect-master>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <detect-node-names>
              more_env: []
              words: [{<detect-node-names>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <get-kubeconfig-basicauth>
              more_env: []
              words: [{<get-kubeconfig-basicauth>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <get-kubeconfig-bearertoken>
              more_env: []
              words: [{<get-kubeconfig-bearertoken>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <tars_from_version>
              more_env: []
              words: [{<tars_from_version>}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {(DQ (${ Id.VSub_Name node))}
                                  right: {(DQ <true>)}
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <write-node-env>
                      more_env: []
                      words: [{<write-node-env>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'scope_flags='> 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <get-scope-flags>
                                more_env: []
                                words: [{<get-scope-flags>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'tmp_template_name='> 
                          (DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-template-tmp>)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <create-node-instance-template>
                      more_env: []
                      words: [
                        {<create-node-instance-template>}
                        {($ Id.VSub_DollarName tmp_template_name)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'template_name='> 
                          (DQ (${ Id.VSub_Name NODE_INSTANCE_PREFIX) <-template>)
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [group]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name INSTANCE_GROUPS>
                                var_name: INSTANCE_GROUPS
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      semi_tok: <Id.Op_Semi _>
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<instance-groups>}
                                        {<managed>}
                                        {<set-instance-template>}
                                        {(DQ (${ Id.VSub_Name group))}
                                        {<--template>}
                                        {(DQ ($ Id.VSub_DollarName tmp_template_name))}
                                        {<--zone>}
                                        {(DQ (${ Id.VSub_Name ZONE))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <true>
                                      more_env: []
                                      words: [{<true>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <gcloud>
                          more_env: []
                          words: [
                            {<gcloud>}
                            {<compute>}
                            {<instance-templates>}
                            {<delete>}
                            {<--project>}
                            {(DQ (${ Id.VSub_Name PROJECT))}
                            {<--quiet>}
                            {(DQ ($ Id.VSub_DollarName template_name))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <create-node-instance-template>
                      more_env: []
                      words: [
                        {<create-node-instance-template>}
                        {(DQ ($ Id.VSub_DollarName template_name))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [group]
                      iterable: 
                        (for_iter.Words
                          words: [
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name INSTANCE_GROUPS>
                                var_name: INSTANCE_GROUPS
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                        )
                      semi_tok: <Id.Op_Semi _>
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<instance-groups>}
                                        {<managed>}
                                        {<set-instance-template>}
                                        {(DQ (${ Id.VSub_Name group))}
                                        {<--template>}
                                        {(DQ ($ Id.VSub_DollarName template_name))}
                                        {<--zone>}
                                        {(DQ (${ Id.VSub_Name ZONE))}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <true>
                                      more_env: []
                                      words: [{<true>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <gcloud>
                          more_env: []
                          words: [
                            {<gcloud>}
                            {<compute>}
                            {<instance-templates>}
                            {<delete>}
                            {<--project>}
                            {(DQ (${ Id.VSub_Name PROJECT))}
                            {<--quiet>}
                            {(DQ ($ Id.VSub_DollarName tmp_template_name))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [15996 16015]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <push-master>
      name: push-master
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Updating master metadata ...'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <write-master-env>
              more_env: []
              words: [{<write-master-env>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <prepare-startup-script>
              more_env: []
              words: [{<prepare-startup-script>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <add-instance-metadata-from-file>
              more_env: []
              words: [
                {<add-instance-metadata-from-file>}
                {(DQ (${ Id.VSub_Name KUBE_MASTER))}
                {(DQ <'kube-env='> (${ Id.VSub_Name KUBE_TEMP) <'/master-kube-env.yaml'>)}
                {(DQ <'startup-script='> (${ Id.VSub_Name KUBE_TEMP) <'/configure-vm.sh'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Pushing to master (log at '> (${ Id.VSub_Name OUTPUT) <'/push-'> 
                    (${ Id.VSub_Name KUBE_MASTER) <'.log) ...'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {(${ Id.VSub_Name KUBE_TEMP) <'/configure-vm.sh'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <gcloud>
                  more_env: []
                  words: [
                    {<gcloud>}
                    {<compute>}
                    {<ssh>}
                    {<--ssh-flag> <Id.Lit_Equals '='> (DQ <'-o LogLevel=quiet'>)}
                    {<--project>}
                    {(DQ (${ Id.VSub_Name PROJECT))}
                    {<--zone>}
                    {(DQ (${ Id.VSub_Name ZONE))}
                    {(DQ (${ Id.VSub_Name KUBE_MASTER))}
                    {<--command>}
                    {(DQ <'sudo bash -s -- --push'>)}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_AndGreat '&>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: 
                        {(${ Id.VSub_Name OUTPUT) <'/push-'> (DQ (${ Id.VSub_Name KUBE_MASTER)) <.log>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <push-node>
      name: push-node
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          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: {(${ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Updating node '> (${ Id.VSub_Name node) <' metadata... '>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <prepare-startup-script>
              more_env: []
              words: [{<prepare-startup-script>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <add-instance-metadata-from-file>
              more_env: []
              words: [
                {<add-instance-metadata-from-file>}
                {(DQ (${ Id.VSub_Name node))}
                {(DQ <'kube-env='> (${ Id.VSub_Name KUBE_TEMP) <'/node-kube-env.yaml'>)}
                {(DQ <'startup-script='> (${ Id.VSub_Name KUBE_TEMP) <'/configure-vm.sh'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'Start upgrading node '> (${ Id.VSub_Name node) <' (log at '> 
                    (${ Id.VSub_Name OUTPUT) <'/push-'> (${ Id.VSub_Name node) <'.log) ...'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {(${ Id.VSub_Name KUBE_TEMP) <'/configure-vm.sh'>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <gcloud>
                  more_env: []
                  words: [
                    {<gcloud>}
                    {<compute>}
                    {<ssh>}
                    {<--ssh-flag> <Id.Lit_Equals '='> (DQ <'-o LogLevel=quiet'>)}
                    {<--project>}
                    {(DQ (${ Id.VSub_Name PROJECT))}
                    {<--zone>}
                    {(DQ (${ Id.VSub_Name ZONE))}
                    {(DQ (${ Id.VSub_Name node))}
                    {<--command>}
                    {(DQ <'sudo bash -s -- --push'>)}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_AndGreat '&>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(${ Id.VSub_Name OUTPUT) <'/push-'> (DQ (${ Id.VSub_Name node)) <.log>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <kube-push>
      name: kube-push
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'./cluster/kube-push.sh is currently not supported in GCE.'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Please use ./cluster/gce/upgrade.sh.'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
            (command.Simple
              blame_tok: <prepare-push>
              more_env: []
              words: [{<prepare-push>} {<true>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <push-master>
              more_env: []
              words: [{<push-master>}]
              redirects: []
              do_fork: T
            )
            (command.ForExpr
              keyword: <Id.KW_For for>
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: ($ Id.Lit_ArithVarLike i)
                  right: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name NODE_NAMES>
                        var_name: NODE_NAMES
                        prefix_op: <Id.VSub_Pound '#'>
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i))
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <push-node>
                          more_env: []
                          words: [
                            {<push-node>}
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name NODE_NAMES>
                                  var_name: NODE_NAMES
                                  bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <kube>
                  more_env: []
                  words: [
                    {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> 
                      <Id.Lit_Colon ':'> <wait-for-jobs>
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ (${ Id.VSub_Name color_red) <'Some commands failed.'> 
                            (${ Id.VSub_Name color_norm)
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Kubernetes cluster is running.  The master is running at:'>)}]
              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>} {(DQ <'  https://'> (${ Id.VSub_Name KUBE_MASTER_IP))}]
              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>} {(DQ <'The user name and password to use is located in ~/.kube/config'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <test-build-release>
      name: test-build-release
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <Id.Left_DoubleQuote '"'>
              more_env: []
              words: [{(DQ (${ Id.VSub_Name KUBE_ROOT) <'/build/release.sh'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <test-setup>
      name: test-setup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name MULTIZONE>
                                            var_name: MULTIZONE
                                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                      right: {(DQ <true>)}
                                    )
                                  right: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name E2E_ZONES>
                                            var_name: E2E_ZONES
                                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [KUBE_GCE_ZONE]
                      iterable: (for_iter.Words words:[{(${ Id.VSub_Name E2E_ZONES)}])
                      semi_tok: <Id.Op_Semi _>
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <Id.Left_DoubleQuote '"'>
                              more_env: [
                                (EnvPair
                                  left: <Id.Lit_VarLike 'KUBE_GCE_ZONE='>
                                  name: KUBE_GCE_ZONE
                                  val: {(DQ (${ Id.VSub_Name KUBE_GCE_ZONE))}
                                )
                                (EnvPair
                                  left: <Id.Lit_VarLike 'KUBE_USE_EXISTING_MASTER='>
                                  name: KUBE_USE_EXISTING_MASTER
                                  val: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name KUBE_USE_EXISTING_MASTER>
                                          var_name: KUBE_USE_EXISTING_MASTER
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              ]
                              words: [{(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kube-up.sh'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'KUBE_USE_EXISTING_MASTER='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'KUBE_USE_EXISTING_MASTER='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'KUBE_USE_EXISTING_MASTER='>
                                      name: KUBE_USE_EXISTING_MASTER
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <true>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  spids: [16842 16869]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <Id.Left_DoubleQuote '"'>
                  more_env: []
                  words: [{(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kube-up.sh'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [
                {<local>}
                {<Id.Lit_VarLike 'start='> 
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <date>
                        more_env: []
                        words: [{<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <gcloud>
                  more_env: []
                  words: [
                    {<gcloud>}
                    {<compute>}
                    {<firewall-rules>}
                    {<create>}
                    {<--project>}
                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                    {<--target-tags>}
                    {(DQ (${ Id.VSub_Name NODE_TAG))}
                    {<--allow>}
                    {<tcp> <Id.Lit_Colon ':'> <80> <Id.Lit_Comma ','> <tcp> <Id.Lit_Colon ':'> <8080>}
                    {<--network>}
                    {(DQ (${ Id.VSub_Name NETWORK))}
                    {
                      (DQ (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) <-http-alt>)
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<firewall-rules>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {
                                  (DQ (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) 
                                    <-http-alt>
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_lt
                                          left: 
                                            {
                                              (word_part.ArithSub
                                                left: <Id.Left_DollarDParen '$(('>
                                                anode: 
                                                  (arith_expr.Binary
                                                    op_id: Id.Arith_Plus
                                                    left: {($ Id.VSub_DollarName start)}
                                                    right: {<Id.Lit_Digits 1200>}
                                                  )
                                                right: <Id.Right_DollarDParen _>
                                              )
                                            }
                                          right: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <date>
                                                    more_env: []
                                                    words: [
                                                      {<date>}
                                                      {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_red) <'Failed to create firewall '> 
                                    (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) <'-http-alt in '> (${ Id.VSub_Name NETWORK_PROJECT)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [17077 17105]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<5>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'start='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'start='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'start='> name:start)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <date>
                            more_env: []
                            words: [{<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <gcloud>
                  more_env: []
                  words: [
                    {<gcloud>}
                    {<compute>}
                    {<firewall-rules>}
                    {<create>}
                    {<--project>}
                    {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                    {<--target-tags>}
                    {(DQ (${ Id.VSub_Name NODE_TAG))}
                    {<--allow>}
                    {<tcp> <Id.Lit_Colon ':'> <30000-32767> <Id.Lit_Comma ','> <udp> <Id.Lit_Colon ':'> 
                      <30000-32767>
                    }
                    {<--network>}
                    {(DQ (${ Id.VSub_Name NETWORK))}
                    {
                      (DQ (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) <-nodeports>)
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <true>
                  more_env: []
                  words: [{<true>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (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: <gcloud>
                              more_env: []
                              words: [
                                {<gcloud>}
                                {<compute>}
                                {<firewall-rules>}
                                {<describe>}
                                {<--project>}
                                {(DQ (${ Id.VSub_Name NETWORK_PROJECT))}
                                {
                                  (DQ (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) 
                                    <-nodeports>
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      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.DBracket
                                      left: <Id.KW_DLeftBracket '[['>
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_lt
                                          left: 
                                            {
                                              (word_part.ArithSub
                                                left: <Id.Left_DollarDParen '$(('>
                                                anode: 
                                                  (arith_expr.Binary
                                                    op_id: Id.Arith_Plus
                                                    left: {($ Id.VSub_DollarName start)}
                                                    right: {<Id.Lit_Digits 1200>}
                                                  )
                                                right: <Id.Right_DollarDParen _>
                                              )
                                            }
                                          right: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <date>
                                                    more_env: []
                                                    words: [
                                                      {<date>}
                                                      {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      right: <Id.Lit_DRightBracket ']]'>
                                      redirects: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {<-e>}
                                {
                                  (DQ (${ Id.VSub_Name color_red) <'Failed to create firewall '> 
                                    (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) <'-nodeports in '> (${ Id.VSub_Name PROJECT)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [17290 17318]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<5>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <test-teardown>
      name: test-teardown
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Shutting down test cluster in background.'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <delete-firewall-rules>
              more_env: []
              words: [
                {<delete-firewall-rules>}
                {(DQ (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) <-http-alt>)}
                {(DQ (${ Id.VSub_Name NODE_TAG) <-> (${ Id.VSub_Name INSTANCE_PREFIX) <-nodeports>)}
              ]
              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.DBracket
                              left: <Id.KW_DLeftBracket '[['>
                              expr: 
                                (bool_expr.LogicalAnd
                                  left: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name MULTIZONE>
                                            var_name: MULTIZONE
                                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                      right: {(DQ <true>)}
                                    )
                                  right: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_n
                                      child: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name E2E_ZONES>
                                            var_name: E2E_ZONES
                                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                )
                              right: <Id.Lit_DRightBracket ']]'>
                              redirects: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <local>
                      more_env: []
                      words: [
                        {<local>}
                        {<Id.Lit_VarLike 'zones='> 
                          (ShArrayLiteral
                            left: <Id.Op_LParen _>
                            words: [{(${ Id.VSub_Name E2E_ZONES)}]
                            right: <Id.Right_ShArrayLiteral _>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ForExpr
                      keyword: <Id.KW_For for>
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike zone_num)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Minus
                              left: 
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name zones>
                                    var_name: zones
                                    prefix_op: <Id.VSub_Pound '#'>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Great
                          left: ($ Id.Lit_ArithVarLike zone_num)
                          right: {<Id.Lit_Digits 0>}
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDMinus
                          child: ($ Id.Lit_ArithVarLike zone_num)
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <Id.Left_DoubleQuote '"'>
                              more_env: [
                                (EnvPair
                                  left: <Id.Lit_VarLike 'KUBE_GCE_ZONE='>
                                  name: KUBE_GCE_ZONE
                                  val: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name zones>
                                          var_name: zones
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: ($ Id.Lit_ArithVarLike zone_num)
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                                (EnvPair
                                  left: <Id.Lit_VarLike 'KUBE_USE_EXISTING_MASTER='>
                                  name: KUBE_USE_EXISTING_MASTER
                                  val: {(DQ <true>)}
                                )
                              ]
                              words: [{(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kube-down.sh'>)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <Id.Left_DoubleQuote '"'>
                      more_env: [
                        (EnvPair
                          left: <Id.Lit_VarLike 'KUBE_GCE_ZONE='>
                          name: KUBE_GCE_ZONE
                          val: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name zones>
                                  var_name: zones
                                  bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                        (EnvPair
                          left: <Id.Lit_VarLike 'KUBE_USE_EXISTING_MASTER='>
                          name: KUBE_USE_EXISTING_MASTER
                          val: {(DQ <false>)}
                        )
                      ]
                      words: [{(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kube-down.sh'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [17419 17446]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <Id.Left_DoubleQuote '"'>
                  more_env: []
                  words: [{(DQ (${ Id.VSub_Name KUBE_ROOT) <'/cluster/kube-down.sh'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <ssh-to-node>
      name: ssh-to-node
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'node='> (DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<Id.Lit_VarLike 'cmd='> (DQ ($ Id.VSub_Number 2))}]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [try]
              iterable: 
                (for_iter.Words
                  words: [
                    (word.BracedTree
                      parts: [
                        (word_part.BracedRange
                          blame_tok: <1..5>
                          kind: Id.Range_Int
                          start: 1
                          end: 5
                          step: 1
                        )
                      ]
                    )
                  ]
                )
              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: <gcloud>
                                      more_env: []
                                      words: [
                                        {<gcloud>}
                                        {<compute>}
                                        {<ssh>}
                                        {<--ssh-flag> <Id.Lit_Equals '='> (DQ <'-o LogLevel=quiet'>)}
                                        {<--ssh-flag> <Id.Lit_Equals '='> (DQ <'-o ConnectTimeout=30'>)}
                                        {<--project>}
                                        {(DQ (${ Id.VSub_Name PROJECT))}
                                        {<--zone> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name ZONE))}
                                        {(DQ (${ Id.VSub_Name node))}
                                        {<--command>}
                                        {(DQ <'echo test > /dev/null'>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          spids: [17606 17655]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <sleep>
                      more_env: []
                      words: [{<sleep>} {<5>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <gcloud>
              more_env: []
              words: [
                {<gcloud>}
                {<compute>}
                {<ssh>}
                {<--ssh-flag> <Id.Lit_Equals '='> (DQ <'-o LogLevel=quiet'>)}
                {<--ssh-flag> <Id.Lit_Equals '='> (DQ <'-o ConnectTimeout=30'>)}
                {<--project>}
                {(DQ (${ Id.VSub_Name PROJECT))}
                {<--zone> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name ZONE))}
                {(DQ (${ Id.VSub_Name node))}
                {<--command>}
                {(DQ (${ Id.VSub_Name cmd))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <prepare-e2e>
      name: prepare-e2e
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <detect-project>
              more_env: []
              words: [{<detect-project>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      keyword: <Id.KW_Function function>
      name_tok: <prepare-startup-script>
      name: prepare-startup-script
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'SED='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'SED='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SED='> name:SED)
                  op: assign_op.Equal
                  rhs: {<sed>}
                )
              ]
              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: <which>
                              more_env: []
                              words: [{<which>} {<gsed>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SED='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SED='> name:SED)
                          op: assign_op.Equal
                          rhs: {<gsed>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [17770 17780]
                )
              ]
              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.Subshell
                                  left: <Id.Op_LParen _>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.VSub_DollarName '$SED'>
                                          more_env: []
                                          words: [{($ Id.VSub_DollarName SED)} {<--version>}]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_GreatAnd '2>&'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<1>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [{<grep>} {<-q>} {<GNU>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  right: <Id.Right_Subshell _>
                                  redirects: []
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'!!! GNU sed is required.  If on OS X, use \'brew install gnu-sed\'.'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [17790 17812]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$SED'>
              more_env: []
              words: [
                {($ Id.VSub_DollarName SED)}
                {(SQ <'/^\\s*#\\([^!].*\\)*$/ d'>)}
                {(${ Id.VSub_Name KUBE_ROOT) <'/cluster/gce/configure-vm.sh'>}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name KUBE_TEMP) <'/configure-vm.sh'>}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)