(CommandList
  children: [
    (C {(set)} {(-o)} {(errexit)})
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(echo)} 
      {
        (DQ 
          (
'kube-push.sh is currently broken; see https://github.com/kubernetes/kubernetes/issues/17397'
          )
        )
      }
    )
    (C {(exit)} {(1)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [88 96]
              ) (/..)
            }
          spids: [87]
        )
      ]
      spids: [87]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(-f)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/env.sh))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/env.sh))})]
          spids: [16777215 116]
        )
      ]
      spids: [16777215 128]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/kube-util.sh))})
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ (${ VSub_Number 0) (' [-m|-n <node id>] <version>'))})
            (C {(echo)} 
              {
                (DQ 
                  (
'  Updates Kubernetes binaries. Can be done for all components (by default), master(-m) or specified node(-n).'
                  )
                )
              }
            )
            (C {(echo)} {(DQ ('  If the version is not specified will try to use local binaries.'))})
            (C {(echo)} {(DQ ('  Warning: upgrading single node is experimental'))})
          ]
          spids: [147]
        )
      spids: [141 146]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:push_to_master) op:Equal rhs:{(false)} spids:[183])]
      spids: [183]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:push_to_node) op:Equal rhs:{(false)} spids:[186])]
      spids: [186]
    )
    (While
      cond: [(Sentence child:(C {(getopts)} {(DQ ('mn:h'))} {(opt)}) terminator:<Op_Semi ';'>)]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(${ VSub_Name opt)}
              arms: [
                (case_arm
                  pat_list: [{(m)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:push_to_master)
                          op: Equal
                          rhs: {(true)}
                          spids: [217]
                        )
                      ]
                      spids: [217]
                    )
                  ]
                  spids: [213 214 219 16777215]
                )
                (case_arm
                  pat_list: [{(n)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:push_to_node)
                          op: Equal
                          rhs: {(true)}
                          spids: [226]
                        )
                      ]
                      spids: [226]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:node_id)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$OPTARG'))}
                          spids: [230]
                        )
                      ]
                      spids: [230]
                    )
                  ]
                  spids: [222 223 234 16777215]
                )
                (case_arm
                  pat_list: [{(h)}]
                  action: [(C {(usage)}) (C {(exit)} {(0)})]
                  spids: [237 238 247 16777215]
                )
                (case_arm
                  pat_list: [{(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Invalid option: -') ($ VSub_Name '$OPTARG'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[261])]
                    )
                    (C {(usage)})
                    (C {(exit)} {(1)})
                  ]
                  spids: [250 251 271 16777215]
                )
              ]
              spids: [204 210 274]
            )
          ]
          spids: [201 276]
        )
    )
    (C {(shift)} 
      {
        (ArithSubPart
          anode: 
            (ArithBinary
              op_id: Arith_Minus
              left: (ArithVarRef name:OPTIND)
              right: (ArithWord w:{(Lit_Digits 1)})
            )
          spids: [280 285]
        )
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  children: [
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(DQ (${ VSub_Name push_to_master))}
                          right: {(DQ (true))}
                        )
                    )
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(DQ (${ VSub_Name push_to_node))}
                          right: {(DQ (true))}
                        )
                    )
                  ]
                  op_id: Op_DAmp
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Only one of options -m -n should be specified'))})
            (C {(usage)})
            (C {(exit)} {(1)})
          ]
          spids: [16777215 325]
        )
      ]
      spids: [16777215 342]
    )
    (C {(verify-prereqs)})
    (C {(verify-kube-binaries)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_VERSION)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Number 1>
                suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                spids: [350 353]
              )
            }
          spids: [349]
        )
      ]
      spids: [349]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  children: [
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(DQ (${ VSub_Name push_to_master))}
                          right: {(DQ (false))}
                        )
                    )
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(DQ (${ VSub_Name push_to_node))}
                          right: {(DQ (false))}
                        )
                    )
                  ]
                  op_id: Op_DAmp
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ('Updating cluster using provider: ') ($ VSub_Name '$KUBERNETES_PROVIDER'))}
            )
            (C {(kube-push)})
          ]
          spids: [16777215 393]
        )
      ]
      spids: [16777215 406]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ (${ VSub_Name push_to_master))}
                      right: {(DQ (true))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ('Updating master to version ') 
                  (BracedVarSub
                    token: <VSub_Name KUBE_VERSION>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (dev))})
                    spids: [435 441]
                  )
                )
              }
            )
            (C {(prepare-push)} {(false)})
            (C {(push-master)})
          ]
          spids: [16777215 428]
        )
      ]
      spids: [16777215 452]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ (${ VSub_Name push_to_node))}
                      right: {(DQ (true))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ('Updating node ') ($ VSub_Name '$node_id') (' to version ') 
                  (BracedVarSub
                    token: <VSub_Name KUBE_VERSION>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (dev))})
                    spids: [483 489]
                  )
                )
              }
            )
            (C {(prepare-push)} {(true)})
            (C {(push-node)} {($ VSub_Name '$node_id')})
          ]
          spids: [16777215 474]
        )
      ]
      spids: [16777215 502]
    )
    (C {(echo)} {(DQ ('Validating cluster post-push...'))})
    (C {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/validate-cluster.sh))})
    (C {(echo)} {(DQ (Done))})
  ]
)