(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (C {<cd>} 
      {
        (DQ 
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            command_list: 
              (command.CommandList
                children: [(C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})]
              )
          )
        ) </..>
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:shashort)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [(C {<git>} {<rev-parse>} {<--short> <Id.Lit_Equals '='> <10>} {<HEAD>})]
                  )
              )
            }
          spids: [37]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tag)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [(C {<git>} {<tag>} {<--points-at>} {($ Id.VSub_DollarName '$shashort')})]
                  )
              )
            }
          spids: [50]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$tag'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'error: this script must be run with a tagged commit checked out'>)}
              ]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [61 74]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:version)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: (command.CommandList children:[(C {<cat>} {<VERSION>})])
              )
            }
          spids: [93]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:majmin)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [(C {<cut>} {<-d.>} {<-f1-2>} {<VERSION>})]
                  )
              )
            }
          spids: [100]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:majminpatch)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: 
                  (command.CommandList
                    children: [(C {<cut>} {<-d->} {<-f1>} {<VERSION>})]
                  )
              )
            }
          spids: [114]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$tag'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <v> ($ Id.VSub_DollarName '$version'))} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'error: tagged commit does not match content of VERSION file'>)}]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [125 144]
        )
      ]
    )
    (C {<git>} {<clone>} {<https> <Id.Lit_Other ':'> <//github.com/JuliaLang/julia>} {<-b>} 
      {($ Id.VSub_DollarName '$tag')} {<julia-> ($ Id.VSub_DollarName '$version')}
    )
    (C {<cd>} {<julia-> ($ Id.VSub_DollarName '$version')})
    (C {<make>} {<full-source-dist>})
    (C {<make>} {<light-source-dist>})
    (C {<mv>} 
      {<julia-> (${ Id.VSub_Name version) <_> ($ Id.VSub_DollarName '$shashort') <-full.tar.gz>} {<../julia-> ($ Id.VSub_DollarName '$version') <-full.tar.gz>}
    )
    (C {<mv>} {<julia-> (${ Id.VSub_Name version) <_> ($ Id.VSub_DollarName '$shashort') <.tar.gz>} 
      {<../julia-> ($ Id.VSub_DollarName '$version') <.tar.gz>}
    )
    (C {<cd>} {<..>})
    (C {<rm>} {<-rf>} {<julia-> ($ Id.VSub_DollarName '$version')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:julianightlies)
          op: assign_op.Equal
          rhs: {(DQ <'https://julialangnightlies-s3.julialang.org/bin'>)}
          spids: [241]
        )
      ]
    )
    (C {<curl>} {<-L>} {<-o>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-x86_64.tar.gz>} 
      {($ Id.VSub_DollarName '$julianightlies') </linux/x64/> ($ Id.VSub_DollarName '$majmin') 
        </julia-> ($ Id.VSub_DollarName '$majminpatch') <-> ($ Id.VSub_DollarName '$shashort') <-linux64.tar.gz>
      }
    )
    (C {<cp>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-x86_64.tar.gz>} 
      {<julia-> ($ Id.VSub_DollarName '$majmin') <-latest-linux-x86_64.tar.gz>}
    )
    (C {<curl>} {<-L>} {<-o>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-i686.tar.gz>} 
      {($ Id.VSub_DollarName '$julianightlies') </linux/x86/> ($ Id.VSub_DollarName '$majmin') 
        </julia-> ($ Id.VSub_DollarName '$majminpatch') <-> ($ Id.VSub_DollarName '$shashort') <-linux32.tar.gz>
      }
    )
    (C {<cp>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-i686.tar.gz>} 
      {<julia-> ($ Id.VSub_DollarName '$majmin') <-latest-linux-i686.tar.gz>}
    )
    (C {<curl>} {<-L>} {<-o>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-arm.tar.gz>} 
      {($ Id.VSub_DollarName '$julianightlies') </linux/arm/> ($ Id.VSub_DollarName '$majmin') 
        </julia-> ($ Id.VSub_DollarName '$majminpatch') <-> ($ Id.VSub_DollarName '$shashort') <-linuxarm.tar.gz>
      }
    )
    (C {<cp>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-arm.tar.gz>} 
      {<julia-> ($ Id.VSub_DollarName '$majmin') <-latest-linux-arm.tar.gz>}
    )
    (C {<curl>} {<-L>} {<-o>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-ppc64le.tar.gz>} 
      {($ Id.VSub_DollarName '$julianightlies') </linux/ppc64le/> ($ Id.VSub_DollarName '$majmin') 
        </julia-> ($ Id.VSub_DollarName '$majminpatch') <-> ($ Id.VSub_DollarName '$shashort') <-linuxppc64.tar.gz>
      }
    )
    (C {<cp>} {<julia-> ($ Id.VSub_DollarName '$version') <-linux-ppc64le.tar.gz>} 
      {<julia-> ($ Id.VSub_DollarName '$majmin') <-latest-linux-ppc64le.tar.gz>}
    )
    (C {<curl>} {<-L>} {<-o>} {(DQ <julia-> ($ Id.VSub_DollarName '$version') <'-osx10.7 .dmg'>)} 
      {($ Id.VSub_DollarName '$julianightlies') </osx/x64/> ($ Id.VSub_DollarName '$majmin') </julia-> 
        ($ Id.VSub_DollarName '$majminpatch') <-> ($ Id.VSub_DollarName '$shashort') <-osx.dmg>
      }
    )
    (C {<cp>} {(DQ <julia-> ($ Id.VSub_DollarName '$version') <'-osx10.7 .dmg'>)} 
      {(DQ <julia-> ($ Id.VSub_DollarName '$majmin') <'-latest-osx10.7 .dmg'>)}
    )
    (C {<curl>} {<-L>} {<-o>} {<julia-> ($ Id.VSub_DollarName '$version') <-win64.exe>} 
      {($ Id.VSub_DollarName '$julianightlies') </winnt/x64/> ($ Id.VSub_DollarName '$majmin') 
        </julia-> ($ Id.VSub_DollarName '$majminpatch') <-> ($ Id.VSub_DollarName '$shashort') <-win64.exe>
      }
    )
    (C {<cp>} {<julia-> ($ Id.VSub_DollarName '$version') <-win64.exe>} 
      {<julia-> ($ Id.VSub_DollarName '$majmin') <-latest-win64.exe>}
    )
    (C {<curl>} {<-L>} {<-o>} {<julia-> ($ Id.VSub_DollarName '$version') <-win32.exe>} 
      {($ Id.VSub_DollarName '$julianightlies') </winnt/x86/> ($ Id.VSub_DollarName '$majmin') 
        </julia-> ($ Id.VSub_DollarName '$majminpatch') <-> ($ Id.VSub_DollarName '$shashort') <-win32.exe>
      }
    )
    (C {<cp>} {<julia-> ($ Id.VSub_DollarName '$version') <-win32.exe>} 
      {<julia-> ($ Id.VSub_DollarName '$majmin') <-latest-win32.exe>}
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<Id.Lit_LBracket '['>} {<-e>} {<codesign.sh>} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<./codesign.sh>})]
          spids: [470 481]
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<shasum>} {<-a>} {<256>} {<julia-> ($ Id.VSub_DollarName '$version') <Id.Lit_Star '*'>})
        (command.Simple
          words: [{<grep>} {<-v>} {<-e>} {<sha256>} {<-e>} {<md5>} {<-e>} {<asc>}]
          redirects: [
            (redir.Redir
              op: <Id.Redir_Great '>'>
              fd: -1
              arg_word: {<julia-> ($ Id.VSub_DollarName '$version') <.sha256>}
            )
          ]
        )
      ]
      negated: F
    )
    (command.Pipeline
      children: [
        (C {<md5sum>} {<julia-> ($ Id.VSub_DollarName '$version') <Id.Lit_Star '*'>})
        (command.Simple
          words: [{<grep>} {<-v>} {<-e>} {<sha256>} {<-e>} {<md5>} {<-e>} {<asc>}]
          redirects: [
            (redir.Redir
              op: <Id.Redir_Great '>'>
              fd: -1
              arg_word: {<julia-> ($ Id.VSub_DollarName '$version') <.md5>}
            )
          ]
        )
      ]
      negated: F
    )
    (C {<gpg>} {<-u>} {<julia>} {<--armor>} {<--detach-sig>} 
      {<julia-> ($ Id.VSub_DollarName '$version') <-full.tar.gz>}
    )
    (C {<gpg>} {<-u>} {<julia>} {<--armor>} {<--detach-sig>} 
      {<julia-> ($ Id.VSub_DollarName '$version') <.tar.gz>}
    )
    (C {<gpg>} {<-u>} {<julia>} {<--armor>} {<--detach-sig>} 
      {<julia-> ($ Id.VSub_DollarName '$version') <-linux-x86_64.tar.gz>}
    )
    (C {<gpg>} {<-u>} {<julia>} {<--armor>} {<--detach-sig>} 
      {<julia-> ($ Id.VSub_DollarName '$version') <-linux-i686.tar.gz>}
    )
    (C {<gpg>} {<-u>} {<julia>} {<--armor>} {<--detach-sig>} 
      {<julia-> ($ Id.VSub_DollarName '$version') <-linux-arm.tar.gz>}
    )
    (C {<gpg>} {<-u>} {<julia>} {<--armor>} {<--detach-sig>} 
      {<julia-> ($ Id.VSub_DollarName '$version') <-linux-ppc64le.tar.gz>}
    )
    (C {<aws>} {<configure>})
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
      {<julia-> ($ Id.VSub_DollarName '$version') <.sha256>} {<s3> <Id.Lit_Other ':'> <//julialang/bin/checksums/>}
    )
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} {<julia-> ($ Id.VSub_DollarName '$version') <.md5>} 
      {<s3> <Id.Lit_Other ':'> <//julialang/bin/checksums/>}
    )
    (command.ForEach
      iter_name: plat
      iter_words: [{<x86_64>} {<i686>} {<arm>} {<ppc64le>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:platshort)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {($ Id.VSub_DollarName '$plat')})
                                  (C {<sed>} {<-e>} {(SQ <s/x86_64/x64/>)} {<-e>} {(SQ <s/i686/x86/>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [705]
                )
              ]
            )
            (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
              {<julia-> ($ Id.VSub_DollarName '$version') <-linux-> ($ Id.VSub_DollarName '$plat') 
                <.tar.gz>
              } 
              {<s3> <Id.Lit_Other ':'> <//julialang/bin/linux/> ($ Id.VSub_DollarName '$platshort') </> 
                ($ Id.VSub_DollarName '$majmin') </>
              }
            )
            (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
              {<julia-> ($ Id.VSub_DollarName '$version') <-linux-> ($ Id.VSub_DollarName '$plat') 
                <.tar.gz.asc>
              } 
              {<s3> <Id.Lit_Other ':'> <//julialang/bin/linux/> ($ Id.VSub_DollarName '$platshort') </> 
                ($ Id.VSub_DollarName '$majmin') </>
              }
            )
            (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
              {<julia-> ($ Id.VSub_DollarName '$majmin') <-latest-linux-> 
                ($ Id.VSub_DollarName '$plat') <.tar.gz>
              } 
              {<s3> <Id.Lit_Other ':'> <//julialang/bin/linux/> ($ Id.VSub_DollarName '$platshort') </> 
                ($ Id.VSub_DollarName '$majmin') </>
              }
            )
            (C {<curl>} {<-X>} {<PURGE>} {<-L>} 
              {
                (DQ <'https://julialang-s3.julialang.org/bin/linux/'> 
                  ($ Id.VSub_DollarName '$platshort') </> ($ Id.VSub_DollarName '$majmin') </julia-> ($ Id.VSub_DollarName '$majmin') <-latest-linux-> 
                  ($ Id.VSub_DollarName '$plat') <.tar.gz>
                )
              }
            )
          ]
        )
    )
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
      {(DQ <julia-> ($ Id.VSub_DollarName '$version') <'-osx10.7 .dmg'>)} {<s3> <Id.Lit_Other ':'> <//julialang/bin/osx/x64/> ($ Id.VSub_DollarName '$majmin') </>}
    )
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
      {(DQ <julia-> ($ Id.VSub_DollarName '$majmin') <'-latest-osx10.7 .dmg'>)} {<s3> <Id.Lit_Other ':'> <//julialang/bin/osx/x64/> ($ Id.VSub_DollarName '$majmin') </>}
    )
    (C {<curl>} {<-X>} {<PURGE>} {<-L>} 
      {
        (DQ <'https://julialang-s3.julialang.org/bin/osx/x64/'> ($ Id.VSub_DollarName '$majmin') 
          </julia-> ($ Id.VSub_DollarName '$majmin') <'-latest-osx10.7 .dmg'>
        )
      }
    )
    (C {<curl>} {<-X>} {<PURGE>} {<-L>} 
      {
        (DQ <'https://julialang-s3.julialang.org/bin/osx/x64/'> ($ Id.VSub_DollarName '$majmin') 
          </julia-> ($ Id.VSub_DollarName '$majmin') <'-latest-osx10.7+.dmg'>
        )
      }
    )
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
      {(DQ <julia-> ($ Id.VSub_DollarName '$version') <-win64.exe>)} {<s3> <Id.Lit_Other ':'> <//julialang/bin/winnt/x64/> ($ Id.VSub_DollarName '$majmin') </>}
    )
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
      {(DQ <julia-> ($ Id.VSub_DollarName '$majmin') <-latest-win64.exe>)} {<s3> <Id.Lit_Other ':'> <//julialang/bin/winnt/x64/> ($ Id.VSub_DollarName '$majmin') </>}
    )
    (C {<curl>} {<-X>} {<PURGE>} {<-L>} 
      {
        (DQ <'https://julialang-s3.julialang.org/bin/winnt/x64/'> ($ Id.VSub_DollarName '$majmin') 
          </julia-> ($ Id.VSub_DollarName '$majmin') <-latest-win64.exe>
        )
      }
    )
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
      {(DQ <julia-> ($ Id.VSub_DollarName '$version') <-win32.exe>)} {<s3> <Id.Lit_Other ':'> <//julialang/bin/winnt/x86/> ($ Id.VSub_DollarName '$majmin') </>}
    )
    (C {<aws>} {<s3>} {<cp>} {<--acl>} {<public-read>} 
      {(DQ <julia-> ($ Id.VSub_DollarName '$majmin') <-latest-win32.exe>)} {<s3> <Id.Lit_Other ':'> <//julialang/bin/winnt/x86/> ($ Id.VSub_DollarName '$majmin') </>}
    )
    (C {<curl>} {<-X>} {<PURGE>} {<-L>} 
      {
        (DQ <'https://julialang-s3.julialang.org/bin/winnt/x86/'> ($ Id.VSub_DollarName '$majmin') 
          </julia-> ($ Id.VSub_DollarName '$majmin') <-latest-win32.exe>
        )
      }
    )
    (C {<echo>} {(DQ <'All files prepared. Attach julia-'> ($ Id.VSub_DollarName '$version') <.tar.gz>)})
    (C {<echo>} 
      {(DQ <'and julia-'> ($ Id.VSub_DollarName '$version') <'-full.tar.gz to github releases.'>)}
    )
  ]
)