(CommandList
  children: [
    (C {(set)} {(-o)} {(errexit)})
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TMP_ROOT)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [69 77]
                ) (/../..)
              )
            }
          spids: [67]
        )
      ]
      spids: [67]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (AndOr
                        children: [
                          (SimpleCommand
                            words: [{(readlink)} {(-e)} {(${ VSub_Name TMP_ROOT)}]
                            redirects: [
                              (Redir
                                op_id: Redir_Great
                                fd: 2
                                arg_word: {(/dev/null)}
                                spids: [91]
                              )
                            ]
                          )
                          (C {(perl)} {(-MCwd)} {(-e)} {(SQ <"print Cwd::abs_path shift">)} 
                            {(${ VSub_Name TMP_ROOT)}
                          )
                        ]
                        op_id: Op_DPipe
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [82 110]
              )
            }
          spids: [81]
        )
      ]
      spids: [81]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/test/kubemark/skeleton/util.sh))})
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/test/kubemark/cloud-provider-config.sh))})
    (C {(source)} 
      {(DQ (${ VSub_Name KUBE_ROOT) (/test/kubemark/) (${ VSub_Name CLOUD_PROVIDER) (/util.sh))}
    )
    (C {(source)} 
      {
        (DQ (${ VSub_Name KUBE_ROOT) (/cluster/kubemark/) (${ VSub_Name CLOUD_PROVIDER) 
          (/config-default.sh)
        )
      }
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/kubemark/util.sh))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(-z)} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name ETCD_VERSION>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                        spids: [186 189]
                      )
                    )
                  } {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ETCD_VERSION)
                  op: Equal
                  rhs: {(DQ (avoid-overwrite))}
                  spids: [198]
                )
              ]
              spids: [198]
            )
          ]
          spids: [-1 195]
        )
      ]
      spids: [-1 203]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/init.sh))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} 
                  {
                    (DQ 
                      (BracedVarSub
                        token: <VSub_Name ETCD_VERSION>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                        spids: [219 222]
                      )
                    )
                  } {(Lit_Other "=") (Lit_Other "=")} {(DQ (avoid-overwrite))} {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:ETCD_VERSION) op:Equal rhs:{(DQ )} spids:[238])]
              spids: [238]
            )
          ]
          spids: [-1 235]
        )
      ]
      spids: [-1 242]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBECTL)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/kubectl.sh))}
          spids: [245]
        )
      ]
      spids: [245]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBEMARK_DIRECTORY)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/test/kubemark))}
          spids: [253]
        )
      ]
      spids: [253]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RESOURCE_DIRECTORY)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBEMARK_DIRECTORY) (/resources))}
          spids: [261]
        )
      ]
      spids: [261]
    )
    (FuncDef
      name: create-master-environment-file
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/kubemark-master-env.sh))}
                  spids: [285]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("# Generic variables.\n") ("INSTANCE_PREFIX=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name INSTANCE_PREFIX>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [300 303]
                        ) (Right_DoubleQuote "\"") ("\n") ("SERVICE_CLUSTER_IP_RANGE=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name SERVICE_CLUSTER_IP_RANGE>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [308 311]
                        ) (Right_DoubleQuote "\"") ("\n") ("\n") ("# Etcd related variables.\n") ("ETCD_IMAGE=") 
                        (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name ETCD_IMAGE>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(3.1.10)})
                          spids: [318 322]
                        ) (Right_DoubleQuote "\"") ("\n") ("ETCD_VERSION=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name ETCD_VERSION>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [327 330]
                        ) (Right_DoubleQuote "\"") ("\n") ("\n") ("# Controller-manager related variables.\n") 
                        ("CONTROLLER_MANAGER_TEST_ARGS=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name CONTROLLER_MANAGER_TEST_ARGS>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [337 340]
                        ) (Right_DoubleQuote "\"") ("\n") ("ALLOCATE_NODE_CIDRS=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name ALLOCATE_NODE_CIDRS>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [345 348]
                        ) (Right_DoubleQuote "\"") ("\n") ("CLUSTER_IP_RANGE=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name CLUSTER_IP_RANGE>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [353 356]
                        ) (Right_DoubleQuote "\"") ("\n") ("TERMINATED_POD_GC_THRESHOLD=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name TERMINATED_POD_GC_THRESHOLD>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [361 364]
                        ) (Right_DoubleQuote "\"") ("\n") ("\n") ("# Scheduler related variables.\n") ("SCHEDULER_TEST_ARGS=") 
                        (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name SCHEDULER_TEST_ARGS>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [371 374]
                        ) (Right_DoubleQuote "\"") ("\n") ("\n") ("# Apiserver related variables.\n") ("APISERVER_TEST_ARGS=") 
                        (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name APISERVER_TEST_ARGS>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [381 384]
                        ) (Right_DoubleQuote "\"") ("\n") ("STORAGE_MEDIA_TYPE=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name STORAGE_MEDIA_TYPE>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [389 392]
                        ) (Right_DoubleQuote "\"") ("\n") ("STORAGE_BACKEND=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name STORAGE_BACKEND>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(etcd3)})
                          spids: [397 401]
                        ) (Right_DoubleQuote "\"") ("\n") ("ETCD_QUORUM_READ=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name ETCD_QUORUM_READ>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [406 409]
                        ) (Right_DoubleQuote "\"") ("\n") ("RUNTIME_CONFIG=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name RUNTIME_CONFIG>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [414 417]
                        ) (Right_DoubleQuote "\"") ("\n") ("NUM_NODES=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name NUM_NODES>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [422 425]
                        ) (Right_DoubleQuote "\"") ("\n") ("CUSTOM_ADMISSION_PLUGINS=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name CUSTOM_ADMISSION_PLUGINS>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [430 433]
                        ) (Right_DoubleQuote "\"") ("\n") ("FEATURE_GATES=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name FEATURE_GATES>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [438 441]
                        ) (Right_DoubleQuote "\"") ("\n") ("KUBE_APISERVER_REQUEST_TIMEOUT=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name KUBE_APISERVER_REQUEST_TIMEOUT>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [446 449]
                        ) (Right_DoubleQuote "\"") ("\n") ("ENABLE_APISERVER_ADVANCED_AUDIT=") (Right_DoubleQuote "\"") 
                        (BracedVarSub
                          token: <VSub_Name ENABLE_APISERVER_ADVANCED_AUDIT>
                          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                          spids: [454 457]
                        ) (Right_DoubleQuote "\"") ("\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [294]
                )
              ]
            )
            (C {(echo)} {(DQ ("Created the environment file for master."))})
          ]
          spids: [280]
        )
      spids: [276 279]
    )
    (FuncDef
      name: generate-pki-config
      body: 
        (BraceGroup
          children: [
            (C 
              {(kube) (Lit_Other ":") (Lit_Other ":") (util) (Lit_Other ":") (Lit_Other ":") 
                (ensure-temp-dir)
              }
            )
            (C {(gen-kube-bearertoken)})
            (C {(gen-kube-basicauth)})
            (C {(create-certs)} {(${ VSub_Name MASTER_IP)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBELET_TOKEN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "if=") (/dev/urandom)}
                                      {(Lit_VarLike "bs=") (128)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [518]
                                      )
                                    ]
                                  )
                                  (C {(base64)})
                                  (C {(tr)} {(-d)} {(DQ ("=+/"))})
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "bs=") (32)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [545]
                                      )
                                    ]
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [506 547]
                      )
                    }
                  spids: [505]
                )
              ]
              spids: [505]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBE_PROXY_TOKEN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "if=") (/dev/urandom)}
                                      {(Lit_VarLike "bs=") (128)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [563]
                                      )
                                    ]
                                  )
                                  (C {(base64)})
                                  (C {(tr)} {(-d)} {(DQ ("=+/"))})
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "bs=") (32)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [590]
                                      )
                                    ]
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [551 592]
                      )
                    }
                  spids: [550]
                )
              ]
              spids: [550]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NODE_PROBLEM_DETECTOR_TOKEN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "if=") (/dev/urandom)}
                                      {(Lit_VarLike "bs=") (128)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [608]
                                      )
                                    ]
                                  )
                                  (C {(base64)})
                                  (C {(tr)} {(-d)} {(DQ ("=+/"))})
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "bs=") (32)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [635]
                                      )
                                    ]
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [596 637]
                      )
                    }
                  spids: [595]
                )
              ]
              spids: [595]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:HEAPSTER_TOKEN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "if=") (/dev/urandom)}
                                      {(Lit_VarLike "bs=") (128)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [653]
                                      )
                                    ]
                                  )
                                  (C {(base64)})
                                  (C {(tr)} {(-d)} {(DQ ("=+/"))})
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "bs=") (32)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [680]
                                      )
                                    ]
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [641 682]
                      )
                    }
                  spids: [640]
                )
              ]
              spids: [640]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CLUSTER_AUTOSCALER_TOKEN)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "if=") (/dev/urandom)}
                                      {(Lit_VarLike "bs=") (128)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [698]
                                      )
                                    ]
                                  )
                                  (C {(base64)})
                                  (C {(tr)} {(-d)} {(DQ ("=+/"))})
                                  (SimpleCommand
                                    words: [
                                      {(dd)}
                                      {(Lit_VarLike "bs=") (32)}
                                      {(Lit_VarLike "count=") (1)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [725]
                                      )
                                    ]
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [686 727]
                      )
                    }
                  spids: [685]
                )
              ]
              spids: [685]
            )
            (C {(echo)} {(DQ ("Generated PKI authentication data for kubemark."))})
          ]
          spids: [480]
        )
      spids: [476 479]
    )
    (FuncDef
      name: wait-for-master-reachability
      body: 
        (BraceGroup
          children: [
            (C {(execute-cmd-on-master-with-retries)} {(DQ (":"))} {(10)})
            (C {(echo)} {(DQ ("Checked master reachability for remote command execution."))})
          ]
          spids: [749]
        )
      spids: [745 748]
    )
    (FuncDef
      name: write-pki-config-to-master
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PKI_SETUP_CMD)
                  op: Equal
                  rhs: 
                    {
                      (DQ ("sudo mkdir /home/kubernetes/k8s_auth_data -p && ") ("    sudo bash -c ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") (${ VSub_Name CA_CERT_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/ca.crt") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name MASTER_CERT_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/server.cert") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name MASTER_KEY_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/server.key") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name REQUESTHEADER_CA_CERT_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/aggr_ca.crt") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name PROXY_CLIENT_CERT_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/proxy_client.crt") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name PROXY_CLIENT_KEY_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/proxy_client.key") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name KUBECFG_CERT_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/kubecfg.crt") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name KUBECFG_KEY_BASE64) (" | base64 --decode > /home/kubernetes/k8s_auth_data/kubecfg.key") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (${ VSub_Name KUBE_BEARER_TOKEN) (",admin,admin") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                        (" > /home/kubernetes/k8s_auth_data/known_tokens.csv") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (${ VSub_Name KUBELET_TOKEN) 
                        (",system:node:node-name,uid:kubelet,system:nodes") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                        (" >> /home/kubernetes/k8s_auth_data/known_tokens.csv") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (${ VSub_Name KUBE_PROXY_TOKEN) 
                        (",system:kube-proxy,uid:kube_proxy") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                        (" >> /home/kubernetes/k8s_auth_data/known_tokens.csv") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (${ VSub_Name HEAPSTER_TOKEN) 
                        (",system:heapster,uid:heapster") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                        (" >> /home/kubernetes/k8s_auth_data/known_tokens.csv") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (${ VSub_Name CLUSTER_AUTOSCALER_TOKEN) 
                        (",system:cluster-autoscaler,uid:cluster-autoscaler") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                        (" >> /home/kubernetes/k8s_auth_data/known_tokens.csv") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                        (${ VSub_Name NODE_PROBLEM_DETECTOR_TOKEN) (",system:node-problem-detector,uid:system:node-problem-detector") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" >> /home/kubernetes/k8s_auth_data/known_tokens.csv") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" && ") ("    sudo bash -c ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("echo ") 
                        (${ VSub_Name KUBE_PASSWORD) (",admin,admin > /home/kubernetes/k8s_auth_data/basic_auth.csv") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">)
                      )
                    }
                  spids: [780]
                )
              ]
              spids: [780]
            )
            (C {(execute-cmd-on-master-with-retries)} {(DQ (${ VSub_Name PKI_SETUP_CMD))} {(3)})
            (C {(echo)} {(DQ ("Wrote PKI certs, keys, tokens and admin password to master."))})
          ]
          spids: [777]
        )
      spids: [773 776]
    )
    (FuncDef
      name: write-local-kubeconfig
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LOCAL_KUBECONFIG)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/kubeconfig.kubemark))}
                  spids: [986]
                )
              ]
              spids: [986]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ (${ VSub_Name LOCAL_KUBECONFIG))}
                  spids: [997]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("apiVersion: v1\n") ("kind: Config\n") ("users:\n") ("- name: kubecfg\n") 
                        ("  user:\n") ("    client-certificate-data: ") (Right_DoubleQuote "\"") (${ VSub_Name KUBECFG_CERT_BASE64) 
                        (Right_DoubleQuote "\"") ("\n") ("    client-key-data: ") (Right_DoubleQuote "\"") (${ VSub_Name KUBECFG_KEY_BASE64) 
                        (Right_DoubleQuote "\"") ("\n") ("    username: admin\n") ("    password: admin\n") ("clusters:\n") ("- name: kubemark\n") 
                        ("  cluster:\n") ("    certificate-authority-data: ") (Right_DoubleQuote "\"") (${ VSub_Name CA_CERT_BASE64) 
                        (Right_DoubleQuote "\"") ("\n") ("    server: https://") (${ VSub_Name MASTER_IP) ("\n") ("contexts:\n") ("- context:\n") 
                        ("    cluster: kubemark\n") ("    user: kubecfg\n") ("  name: kubemark-context\n") ("current-context: kubemark-context\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [1005]
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ ("Kubeconfig file for kubemark master written to ") 
                  (${ VSub_Name LOCAL_KUBECONFIG) (.)
                )
              }
            )
          ]
          spids: [983]
        )
      spids: [979 982]
    )
    (FuncDef
      name: copy-resource-files-to-master
      body: 
        (BraceGroup
          children: [
            (C {(copy-files)} {(DQ (${ VSub_Name SERVER_BINARY_TAR))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/kubemark-master-env.sh))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/start-kubemark-master.sh))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/kubeconfig.kubemark))} {(DQ (${ VSub_Name KUBEMARK_DIRECTORY) (/configure-kubectl.sh))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/manifests/etcd.yaml))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/manifests/etcd-events.yaml))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/manifests/kube-apiserver.yaml))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/manifests/kube-scheduler.yaml))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/manifests/kube-controller-manager.yaml))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/manifests/kube-addon-manager.yaml))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/manifests/addons/kubemark-rbac-bindings))} {(DQ ("kubernetes@") (${ VSub_Name MASTER_NAME)) (Lit_Other ":") (/home/kubernetes/)}
            )
            (C {(echo)} 
              {
                (DQ 
                  (
"Copied server binary, master startup scripts, configs and resource manifests to master."
                  )
                )
              }
            )
          ]
          spids: [1072]
        )
      spids: [1068 1071]
    )
    (FuncDef
      name: start-master-components
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ )})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MASTER_STARTUP_CMD)
                  op: Equal
                  rhs: {(DQ ("sudo bash /home/kubernetes/start-kubemark-master.sh"))}
                  spids: [1221]
                )
              ]
              spids: [1221]
            )
            (C {(execute-cmd-on-master-with-retries)} {(DQ (${ VSub_Name MASTER_STARTUP_CMD))})
            (C {(echo)} {(DQ ("The master has started and is now live."))})
          ]
          spids: [1212]
        )
      spids: [1208 1211]
    )
    (FuncDef
      name: create-and-upload-hollow-node-image
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MAKE_DIR)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/images/kubemark))}
                  spids: [1261]
                )
              ]
              spids: [1261]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBEMARK_BIN)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C 
                                  {(kube) (Lit_Other ":") (Lit_Other ":") (util) (Lit_Other ":") 
                                    (Lit_Other ":") (find-binary-for-platform)
                                  } {(kubemark)} {(linux/amd64)}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [1272 1284]
                        )
                      )
                    }
                  spids: [1270]
                )
              ]
              spids: [1270]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_z child:{(DQ (${ VSub_Name KUBEMARK_BIN))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(echo)} {(SQ <"Cannot find cmd/kubemark binary">)}) (C {(exit)} {(1)})]
                  spids: [-1 1303]
                )
              ]
              spids: [-1 1318]
            )
            (C {(echo)} {(DQ ("Copying kubemark binary to ") (${ VSub_Name MAKE_DIR))})
            (C {(cp)} {(DQ (${ VSub_Name KUBEMARK_BIN))} {(DQ (${ VSub_Name MAKE_DIR))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CURR_DIR)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(pwd)})])
                        left_token: <Left_Backtick "`">
                        spids: [1349 1351]
                      )
                    }
                  spids: [1348]
                )
              ]
              spids: [1348]
            )
            (C {(cd)} {(DQ (${ VSub_Name MAKE_DIR))})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:RETRIES) op:Equal rhs:{(3)} spids:[1363])]
              spids: [1363]
            )
            (ForEach
              iter_name: attempt
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(seq)} {(1)} {(${ VSub_Name RETRIES)})])
                    left_token: <Left_CommandSub "$(">
                    spids: [1373 1381]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (SimpleCommand
                                      words: [{(make)} {(DQ (${ VSub_Name KUBEMARK_IMAGE_MAKE_TARGET))}]
                                      more_env: [
                                        (env_pair
                                          name: REGISTRY
                                          val: {(DQ (${ VSub_Name CONTAINER_REGISTRY))}
                                          spids: [1391]
                                        )
                                        (env_pair
                                          name: PROJECT
                                          val: {(DQ (${ VSub_Name PROJECT))}
                                          spids: [1398]
                                        )
                                      ]
                                    )
                                  ]
                                  negated: True
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_eq
                                              left: 
                                                {
                                                  (ArithSubPart
                                                    anode: (ArithVarRef name:attempt)
                                                    spids: [1421 1424]
                                                  )
                                                }
                                              right: {(DQ (${ VSub_Name RETRIES))}
                                            )
                                        )
                                      terminator: <Op_Semi ";">
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ (${ VSub_Name color_red) ("Make failed. Exiting.") 
                                          (${ VSub_Name color_norm)
                                        )
                                      }
                                    )
                                    (C {(exit)} {(1)})
                                  ]
                                  spids: [-1 1437]
                                )
                              ]
                              spids: [-1 1458]
                            )
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {(-e)}
                                {
                                  (DQ (${ VSub_Name color_yellow) ("Make attempt ") 
                                    (ArithSubPart
                                      anode: (ArithWord w:{($ VSub_Name "$attempt")})
                                      spids: [1470 1473]
                                    ) (" failed. Retrying.") (${ VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: -1
                                  arg_word: {(2)}
                                  spids: [1480]
                                )
                              ]
                            )
                            (C {(sleep)} 
                              {
                                (ArithSubPart
                                  anode: 
                                    (ArithBinary
                                      op_id: Arith_Star
                                      left: (ArithWord w:{($ VSub_Name "$attempt")})
                                      right: (ArithWord w:{(Lit_Digits 5)})
                                    )
                                  spids: [1487 1494]
                                )
                              }
                            )
                          ]
                          spids: [-1 1414]
                        )
                      ]
                      else_action: [(ControlFlow token:<ControlFlow_Break break>)]
                      spids: [1497 1503]
                    )
                  ]
                  spids: [1384 1506]
                )
              spids: [1372 1382]
            )
            (C {(rm)} {(kubemark)})
            (C {(cd)} {($ VSub_Name "$CURR_DIR")})
            (C {(echo)} 
              {(DQ ("Created and uploaded the kubemark hollow-node image to docker registry."))}
            )
          ]
          spids: [1258]
        )
      spids: [1254 1257]
    )
    (FuncDef
      name: create-and-upload-hollow-node-image-bazel
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:RETRIES) op:Equal rhs:{(3)} spids:[1541])]
              spids: [1541]
            )
            (ForEach
              iter_name: attempt
              iter_words: [
                {
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(seq)} {(1)} {(${ VSub_Name RETRIES)})])
                    left_token: <Left_CommandSub "$(">
                    spids: [1551 1559]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(bazel)} {(run)} 
                                      {(//cluster/images/kubemark) (Lit_Other ":") (push)} {(--define)} {(Lit_VarLike "PROJECT=") (DQ (${ VSub_Name PROJECT))}
                                    )
                                  ]
                                  negated: True
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolBinary
                                              op_id: BoolBinary_eq
                                              left: 
                                                {
                                                  (ArithSubPart
                                                    anode: (ArithVarRef name:attempt)
                                                    spids: [1594 1597]
                                                  )
                                                }
                                              right: {(DQ (${ VSub_Name RETRIES))}
                                            )
                                        )
                                      terminator: <Op_Semi ";">
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ (${ VSub_Name color_red) ("Image push failed. Exiting.") 
                                          (${ VSub_Name color_norm)
                                        )
                                      }
                                    )
                                    (C {(exit)} {(1)})
                                  ]
                                  spids: [-1 1610]
                                )
                              ]
                              spids: [-1 1631]
                            )
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {(-e)}
                                {
                                  (DQ (${ VSub_Name color_yellow) ("Make attempt ") 
                                    (ArithSubPart
                                      anode: (ArithWord w:{($ VSub_Name "$attempt")})
                                      spids: [1643 1646]
                                    ) (" failed. Retrying.") (${ VSub_Name color_norm)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: -1
                                  arg_word: {(2)}
                                  spids: [1653]
                                )
                              ]
                            )
                            (C {(sleep)} 
                              {
                                (ArithSubPart
                                  anode: 
                                    (ArithBinary
                                      op_id: Arith_Star
                                      left: (ArithWord w:{($ VSub_Name "$attempt")})
                                      right: (ArithWord w:{(Lit_Digits 5)})
                                    )
                                  spids: [1660 1667]
                                )
                              }
                            )
                          ]
                          spids: [-1 1587]
                        )
                      ]
                      else_action: [(ControlFlow token:<ControlFlow_Break break>)]
                      spids: [1670 1676]
                    )
                  ]
                  spids: [1562 1679]
                )
              spids: [1550 1560]
            )
            (C {(echo)} 
              {(DQ ("Created and uploaded the kubemark hollow-node image to docker registry."))}
            )
          ]
          spids: [1538]
        )
      spids: [1534 1537]
    )
    (FuncDef
      name: create-kube-hollow-node-resources
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBELET_KUBECONFIG_CONTENTS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(echo)} 
                                {
                                  (DQ ("apiVersion: v1\n") ("kind: Config\n") ("users:\n") 
                                    ("- name: kubelet\n") ("  user:\n") ("    client-certificate-data: ")
                                  ) (${ VSub_Name KUBELET_CERT_BASE64) (DQ ("\n") ("    client-key-data: ")) 
                                  (${ VSub_Name KUBELET_KEY_BASE64) 
                                  (DQ ("\n") ("clusters:\n") ("- name: kubemark\n") ("  cluster:\n") 
                                    ("    certificate-authority-data: ")
                                  ) (${ VSub_Name CA_CERT_BASE64) 
                                  (DQ ("\n") ("    server: https://") (${ VSub_Name MASTER_IP) ("\n") 
                                    ("contexts:\n") ("- context:\n") ("    cluster: kubemark\n") ("    user: kubelet\n") ("  name: kubemark-context\n") 
                                    ("current-context: kubemark-context")
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1712 1757]
                      )
                    }
                  spids: [1711]
                )
              ]
              spids: [1711]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBEPROXY_KUBECONFIG_CONTENTS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(echo)} 
                                {
                                  (DQ ("apiVersion: v1\n") ("kind: Config\n") ("users:\n") 
                                    ("- name: kube-proxy\n") ("  user:\n") ("    token: ") (${ VSub_Name KUBE_PROXY_TOKEN) ("\n") ("clusters:\n") 
                                    ("- name: kubemark\n") ("  cluster:\n") ("    insecure-skip-tls-verify: true\n") ("    server: https://") 
                                    (${ VSub_Name MASTER_IP) ("\n") ("contexts:\n") ("- context:\n") ("    cluster: kubemark\n") ("    user: kube-proxy\n") 
                                    ("  name: kubemark-context\n") ("current-context: kubemark-context")
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1766 1796]
                      )
                    }
                  spids: [1765]
                )
              ]
              spids: [1765]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:HEAPSTER_KUBECONFIG_CONTENTS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(echo)} 
                                {
                                  (DQ ("apiVersion: v1\n") ("kind: Config\n") ("users:\n") 
                                    ("- name: heapster\n") ("  user:\n") ("    token: ") (${ VSub_Name HEAPSTER_TOKEN) ("\n") ("clusters:\n") ("- name: kubemark\n") 
                                    ("  cluster:\n") ("    insecure-skip-tls-verify: true\n") ("    server: https://") (${ VSub_Name MASTER_IP) ("\n") 
                                    ("contexts:\n") ("- context:\n") ("    cluster: kubemark\n") ("    user: heapster\n") ("  name: kubemark-context\n") 
                                    ("current-context: kubemark-context")
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1805 1835]
                      )
                    }
                  spids: [1804]
                )
              ]
              spids: [1804]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CLUSTER_AUTOSCALER_KUBECONFIG_CONTENTS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(echo)} 
                                {
                                  (DQ ("apiVersion: v1\n") ("kind: Config\n") ("users:\n") 
                                    ("- name: cluster-autoscaler\n") ("  user:\n") ("    token: ") (${ VSub_Name CLUSTER_AUTOSCALER_TOKEN) ("\n") ("clusters:\n") 
                                    ("- name: kubemark\n") ("  cluster:\n") ("    insecure-skip-tls-verify: true\n") ("    server: https://") 
                                    (${ VSub_Name MASTER_IP) ("\n") ("contexts:\n") ("- context:\n") ("    cluster: kubemark\n") ("    user: cluster-autoscaler\n") 
                                    ("  name: kubemark-context\n") ("current-context: kubemark-context")
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1844 1874]
                      )
                    }
                  spids: [1843]
                )
              ]
              spids: [1843]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NPD_KUBECONFIG_CONTENTS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(echo)} 
                                {
                                  (DQ ("apiVersion: v1\n") ("kind: Config\n") ("users:\n") 
                                    ("- name: node-problem-detector\n") ("  user:\n") ("    token: ") (${ VSub_Name NODE_PROBLEM_DETECTOR_TOKEN) ("\n") ("clusters:\n") 
                                    ("- name: kubemark\n") ("  cluster:\n") ("    insecure-skip-tls-verify: true\n") ("    server: https://") 
                                    (${ VSub_Name MASTER_IP) ("\n") ("contexts:\n") ("- context:\n") ("    cluster: kubemark\n") ("    user: node-problem-detector\n") 
                                    ("  name: kubemark-context\n") ("current-context: kubemark-context")
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1883 1913]
                      )
                    }
                  spids: [1882]
                )
              ]
              spids: [1882]
            )
            (C {(DQ (${ VSub_Name KUBECTL))} {(create)} {(-f)} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/kubemark-ns.json))}
            )
            (C {(DQ (${ VSub_Name KUBECTL))} {(create)} {(configmap)} {(DQ (node-configmap))} 
              {(--namespace) (Lit_Other "=") (DQ (kubemark))} 
              {(--from-literal) (Lit_Other "=") (content.type) (Lit_Other "=") 
                (DQ (${ VSub_Name TEST_CLUSTER_API_CONTENT_TYPE))
              } 
              {(--from-file) (Lit_Other "=") (kernel.monitor) (Lit_Other "=") 
                (DQ (${ VSub_Name RESOURCE_DIRECTORY) (/kernel-monitor.json))
              }
            )
            (C {(DQ (${ VSub_Name KUBECTL))} {(create)} {(secret)} {(generic)} {(DQ (kubeconfig))} 
              {(--type) (Lit_Other "=") (Opaque)} {(--namespace) (Lit_Other "=") (DQ (kubemark))} 
              {(--from-literal) (Lit_Other "=") (kubelet.kubeconfig) (Lit_Other "=") 
                (DQ (${ VSub_Name KUBELET_KUBECONFIG_CONTENTS))
              } 
              {(--from-literal) (Lit_Other "=") (kubeproxy.kubeconfig) (Lit_Other "=") 
                (DQ (${ VSub_Name KUBEPROXY_KUBECONFIG_CONTENTS))
              } 
              {(--from-literal) (Lit_Other "=") (heapster.kubeconfig) (Lit_Other "=") 
                (DQ (${ VSub_Name HEAPSTER_KUBECONFIG_CONTENTS))
              } 
              {(--from-literal) (Lit_Other "=") (cluster_autoscaler.kubeconfig) (Lit_Other "=") 
                (DQ (${ VSub_Name CLUSTER_AUTOSCALER_KUBECONFIG_CONTENTS))
              } 
              {(--from-literal) (Lit_Other "=") (npd.kubeconfig) (Lit_Other "=") 
                (DQ (${ VSub_Name NPD_KUBECONFIG_CONTENTS))
              }
            )
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons))})
            (SimpleCommand
              words: [
                {(sed)}
                {(DQ ("s/{{MASTER_IP}}/") (${ VSub_Name MASTER_IP) (/g))}
                {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/heapster_template.json))}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/heapster.json))}
                  spids: [2120]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metrics_mem_per_node)
                  op: Equal
                  rhs: {(4)}
                  spids: [2130]
                )
              ]
              spids: [2130]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metrics_mem)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: (ArithWord w:{(Lit_Digits 200)})
                            right: 
                              (ArithBinary
                                op_id: Arith_Star
                                left: (ArithWord w:{(${ VSub_Name metrics_mem_per_node)})
                                right: (ArithWord w:{(${ VSub_Name NUM_NODES)})
                              )
                          )
                        spids: [2135 2148]
                      )
                    }
                  spids: [2134]
                )
              ]
              spids: [2134]
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} {(DQ ("s/{{METRICS_MEM}}/") (${ VSub_Name metrics_mem) (/g))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/heapster.json))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metrics_cpu_per_node_numerator)
                  op: Equal
                  rhs: {(${ VSub_Name NUM_NODES)}
                  spids: [2175]
                )
              ]
              spids: [2175]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metrics_cpu_per_node_denominator)
                  op: Equal
                  rhs: {(2)}
                  spids: [2181]
                )
              ]
              spids: [2181]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:metrics_cpu)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: (ArithWord w:{(Lit_Digits 80)})
                            right: 
                              (ArithBinary
                                op_id: Arith_Slash
                                left: (ArithVarRef name:metrics_cpu_per_node_numerator)
                                right: (ArithVarRef name:metrics_cpu_per_node_denominator)
                              )
                          )
                        spids: [2186 2197]
                      )
                    }
                  spids: [2185]
                )
              ]
              spids: [2185]
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} {(DQ ("s/{{METRICS_CPU}}/") (${ VSub_Name metrics_cpu) (/g))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/heapster.json))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:eventer_mem_per_node)
                  op: Equal
                  rhs: {(500)}
                  spids: [2224]
                )
              ]
              spids: [2224]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:eventer_mem)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: 
                              (ArithBinary
                                op_id: Arith_Star
                                left: (ArithWord w:{(Lit_Digits 200)})
                                right: (ArithWord w:{(Lit_Digits 1024)})
                              )
                            right: 
                              (ArithBinary
                                op_id: Arith_Star
                                left: (ArithWord w:{(${ VSub_Name eventer_mem_per_node)})
                                right: (ArithWord w:{(${ VSub_Name NUM_NODES)})
                              )
                          )
                        spids: [2229 2246]
                      )
                    }
                  spids: [2228]
                )
              ]
              spids: [2228]
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} {(DQ ("s/{{EVENTER_MEM}}/") (${ VSub_Name eventer_mem) (/g))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/heapster.json))}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name ENABLE_KUBEMARK_CLUSTER_AUTOSCALER))}
                              right: {(DQ (true))}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ("Setting up Cluster Autoscaler"))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBEMARK_AUTOSCALER_MIG_NAME)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name KUBEMARK_AUTOSCALER_MIG_NAME>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VTest_ColonHyphen
                                      arg_word: {(${ VSub_Name NODE_INSTANCE_PREFIX) (-group)}
                                    )
                                  spids: [2309 2316]
                                )
                              )
                            }
                          spids: [2307]
                        )
                      ]
                      spids: [2307]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBEMARK_AUTOSCALER_MIN_NODES)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name KUBEMARK_AUTOSCALER_MIN_NODES>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)})
                                  spids: [2322 2326]
                                )
                              )
                            }
                          spids: [2320]
                        )
                      ]
                      spids: [2320]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBEMARK_AUTOSCALER_MAX_NODES)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name KUBEMARK_AUTOSCALER_MAX_NODES>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(10)})
                                  spids: [2332 2336]
                                )
                              )
                            }
                          spids: [2330]
                        )
                      ]
                      spids: [2330]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NUM_NODES)
                          op: Equal
                          rhs: {(${ VSub_Name KUBEMARK_AUTOSCALER_MAX_NODES)}
                          spids: [2340]
                        )
                      ]
                      spids: [2340]
                    )
                    (C {(echo)} {(DQ ("Setting maximum cluster size to ") (${ VSub_Name NUM_NODES) (.))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBEMARK_MIG_CONFIG)
                          op: Equal
                          rhs: 
                            {
                              (DQ ("autoscaling.k8s.io/nodegroup: ") 
                                (${ VSub_Name KUBEMARK_AUTOSCALER_MIG_NAME)
                              )
                            }
                          spids: [2357]
                        )
                      ]
                      spids: [2357]
                    )
                    (SimpleCommand
                      words: [
                        {(sed)}
                        {(DQ ("s/{{master_ip}}/") (${ VSub_Name MASTER_IP) (/g))}
                        {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/cluster-autoscaler_template.json))}
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: 
                            {
                              (DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/cluster-autoscaler.json))
                            }
                          spids: [2383]
                        )
                      ]
                    )
                    (C {(sed)} {(-i) (SQ )} {(-e)} 
                      {
                        (DQ ("s/{{kubemark_autoscaler_mig_name}}/") 
                          (${ VSub_Name KUBEMARK_AUTOSCALER_MIG_NAME) (/g)
                        )
                      } {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/cluster-autoscaler.json))}
                    )
                    (C {(sed)} {(-i) (SQ )} {(-e)} 
                      {
                        (DQ ("s/{{kubemark_autoscaler_min_nodes}}/") 
                          (${ VSub_Name KUBEMARK_AUTOSCALER_MIN_NODES) (/g)
                        )
                      } {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/cluster-autoscaler.json))}
                    )
                    (C {(sed)} {(-i) (SQ )} {(-e)} 
                      {
                        (DQ ("s/{{kubemark_autoscaler_max_nodes}}/") 
                          (${ VSub_Name KUBEMARK_AUTOSCALER_MAX_NODES) (/g)
                        )
                      } {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons/cluster-autoscaler.json))}
                    )
                  ]
                  spids: [-1 2297]
                )
              ]
              spids: [-1 2465]
            )
            (C {(DQ (${ VSub_Name KUBECTL))} {(create)} {(-f)} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/addons))} {(--namespace) (Lit_Other "=") (DQ (kubemark))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NUM_REPLICAS)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name NUM_REPLICAS>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(${ VSub_Name NUM_NODES)}
                          )
                        spids: [2503 2509]
                      )
                    }
                  spids: [2502]
                )
              ]
              spids: [2502]
            )
            (SimpleCommand
              words: [
                {(sed)}
                {(DQ ("s/{{numreplicas}}/") (${ VSub_Name NUM_REPLICAS) (/g))}
                {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node_template.yaml))}
              ]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
                  spids: [2529]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:proxy_cpu) op:Equal rhs:{(20)} spids:[2539])]
              spids: [2539]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name NUM_NODES))} {(-gt)} {(1000)} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:proxy_cpu)
                          op: Equal
                          rhs: {(50)}
                          spids: [2563]
                        )
                      ]
                      spids: [2563]
                    )
                  ]
                  spids: [-1 2560]
                )
              ]
              spids: [-1 2567]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:proxy_mem_per_node)
                  op: Equal
                  rhs: {(50)}
                  spids: [2570]
                )
              ]
              spids: [2570]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:proxy_mem)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: 
                              (ArithBinary
                                op_id: Arith_Star
                                left: (ArithWord w:{(Lit_Digits 100)})
                                right: (ArithWord w:{(Lit_Digits 1024)})
                              )
                            right: 
                              (ArithBinary
                                op_id: Arith_Star
                                left: (ArithWord w:{(${ VSub_Name proxy_mem_per_node)})
                                right: (ArithWord w:{(${ VSub_Name NUM_NODES)})
                              )
                          )
                        spids: [2575 2592]
                      )
                    }
                  spids: [2574]
                )
              ]
              spids: [2574]
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} 
              {(DQ ("s/{{HOLLOW_PROXY_CPU}}/") (${ VSub_Name proxy_cpu) (/g))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} 
              {(DQ ("s/{{HOLLOW_PROXY_MEM}}/") (${ VSub_Name proxy_mem) (/g))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} 
              {(DQ ("s/{{registry}}/") (${ VSub_Name CONTAINER_REGISTRY) (/g))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} {(DQ ("s/{{project}}/") (${ VSub_Name PROJECT) (/g))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} {(DQ ("s/{{master_ip}}/") (${ VSub_Name MASTER_IP) (/g))} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} 
              {(DQ ("s/{{kubelet_verbosity_level}}/") (${ VSub_Name KUBELET_TEST_LOG_LEVEL) (/g))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} 
              {
                (DQ ("s/{{kubeproxy_verbosity_level}}/") (${ VSub_Name KUBEPROXY_TEST_LOG_LEVEL) (/g))
              } {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} 
              {(DQ ("s/{{use_real_proxier}}/") (${ VSub_Name USE_REAL_PROXIER) (/g))} {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(sed)} {(-i) (SQ )} {(-e)} 
              {
                (DQ ("s'{{kubemark_mig_config}}'") 
                  (BracedVarSub
                    token: <VSub_Name KUBEMARK_MIG_CONFIG>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                    spids: [2797 2800]
                  ) ("'g")
                )
              } {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))}
            )
            (C {(DQ (${ VSub_Name KUBECTL))} {(create)} {(-f)} 
              {(DQ (${ VSub_Name RESOURCE_DIRECTORY) (/hollow-node.yaml))} {(--namespace) (Lit_Other "=") (DQ (kubemark))}
            )
            (C {(echo)} 
              {
                (DQ 
                  (
"Created secrets, configMaps, replication-controllers required for hollow-nodes."
                  )
                )
              }
            )
          ]
          spids: [1704]
        )
      spids: [1700 1703]
    )
    (FuncDef
      name: wait-for-hollow-nodes-to-run-or-timeout
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(-n)} {(DQ ("Waiting for all hollow-nodes to become Running"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:start)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [2866 2872]
                      )
                    }
                  spids: [2865]
                )
              ]
              spids: [2865]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:nodes)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(DQ (${ VSub_Name KUBECTL))}
                                      {(--kubeconfig) (Lit_Other "=") 
                                        (DQ (${ VSub_Name LOCAL_KUBECONFIG))
                                      }
                                      {(get)}
                                      {(node)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [2895]
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2876 2898]
                          )
                        }
                      spids: [2875]
                    )
                  ]
                  spids: [2875]
                )
                (C {(true)})
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ready)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Minus
                            left: 
                              (ArithWord
                                w: 
                                  {
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (Pipeline
                                              children: [
                                                (C {(echo)} {(DQ (${ VSub_Name nodes))})
                                                (C {(grep)} {(-v)} {(DQ (NotReady))})
                                                (C {(wc)} {(-l)})
                                              ]
                                              negated: False
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub "$(">
                                      spids: [2907 2931]
                                    )
                                  }
                              )
                            right: (ArithWord w:{(Lit_Digits 1)})
                          )
                        spids: [2906 2937]
                      )
                    }
                  spids: [2905]
                )
              ]
              spids: [2905]
            )
            (Until
              cond: [
                (Sentence
                  child: 
                    (DBracket
                      expr: 
                        (BoolBinary
                          op_id: BoolBinary_ge
                          left: {(DQ (${ VSub_Name ready))}
                          right: {(DQ (${ VSub_Name NUM_REPLICAS))}
                        )
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {(-n)} {(DQ (.))})
                    (C {(sleep)} {(1)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:now)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(date)} {(Lit_Other "+") (Lit_Other "%") (s)})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [2981 2987]
                              )
                            }
                          spids: [2980]
                        )
                      ]
                      spids: [2980]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other "[")} 
                                  {
                                    (ArithSubPart
                                      anode: 
                                        (ArithBinary
                                          op_id: Arith_Minus
                                          left: (ArithVarRef name:now)
                                          right: (ArithVarRef name:start)
                                        )
                                      spids: [2998 3005]
                                    )
                                  } {(-gt)} {(1800)} {(Lit_Other "]")}
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ )})
                            (C {(echo)} {(-e)} 
                              {
                                (DQ (${ VSub_Name color_red) 
                                  (" Timeout waiting for all hollow-nodes to become Running. ") (${ VSub_Name color_norm)
                                )
                              }
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(DQ (${ VSub_Name KUBECTL))} 
                                          {(--kubeconfig) (Lit_Other "=") 
                                            (DQ (${ VSub_Name LOCAL_KUBECONFIG))
                                          } {(get)} {(node)}
                                        )
                                      terminator: <Op_Amp "&">
                                    )
                                    (Sentence
                                      child: 
                                        (SimpleCommand
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Great
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                              spids: [3063]
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ";">
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ("Found only ") (${ VSub_Name ready) 
                                          (" ready hollow-nodes while waiting for ") (${ VSub_Name NUM_NODES) (.)
                                        )
                                      }
                                    )
                                  ]
                                  spids: [-1 3068]
                                )
                              ]
                              else_action: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (
"Got error while trying to list hollow-nodes. Probably API server is down."
                                      )
                                    )
                                  }
                                )
                              ]
                              spids: [3086 3096]
                            )
                            (AndOr
                              children: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:pods)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (C {(DQ (${ VSub_Name KUBECTL))} {(get)} {(pods)} 
                                                    {(-l)} {(Lit_VarLike "name=") (hollow-node)} {(--namespace) (Lit_Other "=") (kubemark)}
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub "$(">
                                            spids: [3100 3119]
                                          )
                                        }
                                      spids: [3099]
                                    )
                                  ]
                                  spids: [3099]
                                )
                                (C {(true)})
                              ]
                              op_id: Op_DPipe
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:running)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithWord
                                            w: 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (Pipeline
                                                          children: [
                                                            (C {(echo)} {(DQ (${ VSub_Name pods))})
                                                            (C {(grep)} {(DQ (Running))})
                                                            (C {(wc)} {(-l)})
                                                          ]
                                                          negated: False
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub "$(">
                                                  spids: [3128 3150]
                                                )
                                              }
                                          )
                                        spids: [3127 3152]
                                      )
                                    }
                                  spids: [3126]
                                )
                              ]
                              spids: [3126]
                            )
                            (C {(echo)} 
                              {
                                (DQ (${ VSub_Name running) (" hollow-nodes are reported as 'Running'"))
                              }
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:not_running)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Minus
                                            left: 
                                              (ArithWord
                                                w: 
                                                  {
                                                    (CommandSubPart
                                                      command_list: 
                                                        (CommandList
                                                          children: [
                                                            (Pipeline
                                                              children: [
                                                                (C {(echo)} {(DQ (${ VSub_Name pods))})
                                                                (C {(grep)} {(-v)} {(DQ (Running))})
                                                                (C {(wc)} {(-l)})
                                                              ]
                                                              negated: False
                                                            )
                                                          ]
                                                        )
                                                      left_token: <Left_CommandSub "$(">
                                                      spids: [3167 3191]
                                                    )
                                                  }
                                              )
                                            right: (ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [3166 3197]
                                      )
                                    }
                                  spids: [3165]
                                )
                              ]
                              spids: [3165]
                            )
                            (C {(echo)} 
                              {
                                (DQ (${ VSub_Name not_running) 
                                  (" hollow-nodes are reported as NOT 'Running'")
                                )
                              }
                            )
                            (C {(echo)} 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(echo)} {(DQ (${ VSub_Name pods))})
                                            (C {(grep)} {(-v)} {(DQ (Running))})
                                          ]
                                          negated: False
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub "$(">
                                  spids: [3212 3230]
                                )
                              }
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 3014]
                        )
                      ]
                      spids: [-1 3238]
                    )
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:nodes)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (SimpleCommand
                                            words: [
                                              {(DQ (${ VSub_Name KUBECTL))}
                                              {(--kubeconfig) (Lit_Other "=") 
                                                (DQ (${ VSub_Name LOCAL_KUBECONFIG))
                                              }
                                              {(get)}
                                              {(node)}
                                            ]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_Great
                                                fd: 2
                                                arg_word: {(/dev/null)}
                                                spids: [3261]
                                              )
                                            ]
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [3242 3264]
                                  )
                                }
                              spids: [3241]
                            )
                          ]
                          spids: [3241]
                        )
                        (C {(true)})
                      ]
                      op_id: Op_DPipe
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ready)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: 
                                      (ArithWord
                                        w: 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (Pipeline
                                                      children: [
                                                        (C {(echo)} {(DQ (${ VSub_Name nodes))})
                                                        (C {(grep)} {(-v)} {(DQ (NotReady))})
                                                        (C {(wc)} {(-l)})
                                                      ]
                                                      negated: False
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub "$(">
                                              spids: [3273 3297]
                                            )
                                          }
                                      )
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [3272 3303]
                              )
                            }
                          spids: [3271]
                        )
                      ]
                      spids: [3271]
                    )
                  ]
                  spids: [2963 3306]
                )
            )
            (C {(echo)} {(-e)} {(DQ (${ VSub_Name color_green) (" Done!") (${ VSub_Name color_norm))})
          ]
          spids: [2853]
        )
      spids: [2849 2852]
    )
    (Sentence child:(C {(detect-project)}) terminator:<Op_Amp "&">)
    (SimpleCommand
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[3332])]
    )
    (C {(echo)} {(-e)} 
      {(DQ (${ VSub_Name color_yellow) ("STARTING SETUP FOR MASTER") (${ VSub_Name color_norm))}
    )
    (C {(find-release-tars)})
    (C {(create-master-environment-file)})
    (C {(create-master-instance-with-resources)})
    (C {(generate-pki-config)})
    (C {(wait-for-master-reachability)})
    (C {(write-pki-config-to-master)})
    (C {(write-local-kubeconfig)})
    (C {(copy-resource-files-to-master)})
    (C {(start-master-components)})
    (C {(echo)} {(DQ )})
    (C {(echo)} {(-e)} 
      {
        (DQ (${ VSub_Name color_yellow) ("STARTING SETUP FOR HOLLOW-NODES") (${ VSub_Name color_norm))
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_EqualTilde
                      left: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name KUBEMARK_BAZEL_BUILD>
                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                              spids: [3400 3403]
                            )
                          )
                        }
                      right: {(Lit_Other "^") (Lit_Other "[") (yY) (Lit_Other "]") (Lit_Other "$")}
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(create-and-upload-hollow-node-image-bazel)})]
          spids: [-1 3417]
        )
      ]
      else_action: [(C {(create-and-upload-hollow-node-image)})]
      spids: [3422 3427]
    )
    (C {(create-kube-hollow-node-resources)})
    (C {(wait-for-hollow-nodes-to-run-or-timeout)})
    (C {(echo)} {(DQ )})
    (C {(echo)} {(DQ ("Master IP: ") (${ VSub_Name MASTER_IP))})
    (C {(echo)} {(DQ ("Password to kubemark master: ") (${ VSub_Name KUBE_PASSWORD))})
    (C {(echo)} {(DQ ("Kubeconfig for kubemark master is written in ") (${ VSub_Name LOCAL_KUBECONFIG))})
  ]
)