(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<hash>} {<pacstrap>}]
          redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (BraceGroup
          children: [
            (C {<echo>} {(DQ <'Could not find pacstrap. Run pacman -S arch-install-scripts'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<hash>} {<expect>}]
          redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (BraceGroup
          children: [
            (C {<echo>} {(DQ <'Could not find expect. Run pacman -S expect'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'LANG='> (DQ <C.UTF-8>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ROOTFS)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<mktemp>} {<-d>} 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name TMPDIR>
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VTest_ColonHyphen
                            arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <tmp>}
                          )
                      ) <'/rootfs-archlinux-XXXXXXXXXX'>
                    }
                  )
              )
            }
          spids: [78]
        )
      ]
    )
    (C {<chmod>} {<755>} {($ Id.VSub_DollarName '$ROOTFS')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PKGIGNORE)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {<cryptsetup>}
                  {<device-mapper>}
                  {<dhcpcd>}
                  {<iproute2>}
                  {<jfsutils>}
                  {<linux>}
                  {<lvm2>}
                  {<man-db>}
                  {<man-pages>}
                  {<mdadm>}
                  {<nano>}
                  {<netctl>}
                  {<openresolv>}
                  {<pciutils>}
                  {<pcmciautils>}
                  {<reiserfsprogs>}
                  {<s-nail>}
                  {<systemd-sysvcompat>}
                  {<usbutils>}
                  {<vi>}
                  {<xfsprogs>}
                ]
              )
            }
          spids: [105]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:IFS)
          op: assign_op.Equal
          rhs: {(SQ <','>)}
          spids: [173]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PKGIGNORE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (braced_var_sub
                  token: <Id.VSub_Name PKGIGNORE>
                  bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star)
                )
              )
            }
          spids: [178]
        )
      ]
    )
    (C {<unset>} {<IFS>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-m>})))}
          spids: [193]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$arch'))}
      arms: [
        (case_arm
          pat_list: [{<armv> <Id.Lit_Star '*'>}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{<pacman>} {<-Q>} {<archlinuxarm-keyring>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<pacman-key>} {<--init>})
                    (C {<pacman-key>} {<--populate>} {<archlinuxarm>})
                  ]
                  spids: [216 231]
                )
              ]
              else_action: [
                (C {<echo>} 
                  {
                    (DQ 
                      <
'Could not find archlinuxarm-keyring. Please, install it and run pacman-key --populate archlinuxarm'
                      >
                    )
                  }
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PACMAN_CONF)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<mktemp>} 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name TMPDIR>
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VTest_ColonHyphen
                                    arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <tmp>}
                                  )
                              ) <'/pacman-conf-archlinux-XXXXXXXXX'>
                            }
                          )
                      )
                    }
                  spids: [264]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:version)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_DollarName '$arch')})
                                (C {<cut>} {<-c>} {<5>})
                              ]
                              negated: F
                            )
                        )
                      )
                    }
                  spids: [280]
                )
              ]
            )
            (command.Simple
              words: [
                {<sed>}
                {(DQ <'s/Architecture = armv/Architecture = armv'> (${ Id.VSub_Name version) <'h/g'>)}
                {(SQ <'./mkimage-archarm-pacman.conf'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name PACMAN_CONF))}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PACMAN_MIRRORLIST)
                  op: assign_op.Equal
                  rhs: {(SQ <'Server = http://mirror.archlinuxarm.org/$arch/$repo'>)}
                  spids: [321]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PACMAN_EXTRA_PKGS)
                  op: assign_op.Equal
                  rhs: {(SQ <archlinuxarm-keyring>)}
                  spids: [327]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:EXPECT_TIMEOUT)
                  op: assign_op.Equal
                  rhs: {<1800>}
                  spids: [333]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ARCH_KEYRING)
                  op: assign_op.Equal
                  rhs: {<archlinuxarm>}
                  spids: [340]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOCKER_IMAGE_NAME)
                  op: assign_op.Equal
                  rhs: {(DQ <armv> (${ Id.VSub_Name version) <'h/archlinux'>)}
                  spids: [344]
                )
              ]
            )
          ]
          spids: [211 213 354 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PACMAN_CONF)
                  op: assign_op.Equal
                  rhs: {(SQ <'./mkimage-arch-pacman.conf'>)}
                  spids: [361]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PACMAN_MIRRORLIST)
                  op: assign_op.Equal
                  rhs: {(SQ <'Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch'>)}
                  spids: [367]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PACMAN_EXTRA_PKGS)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                  spids: [373]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:EXPECT_TIMEOUT)
                  op: assign_op.Equal
                  rhs: {<60>}
                  spids: [378]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ARCH_KEYRING)
                  op: assign_op.Equal
                  rhs: {<archlinux>}
                  spids: [382]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DOCKER_IMAGE_NAME)
                  op: assign_op.Equal
                  rhs: {<archlinux>}
                  spids: [386]
                )
              ]
            )
          ]
          spids: [357 358 390 -1]
        )
      ]
    )
    (C {<export>} {<PACMAN_MIRRORLIST>})
    (command.Simple
      words: [{<expect>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {<EOF>}
              here_end_span_id: 483
              stdin_parts: [
                <'\tset send_slow {1 .1}\n'>
                <'\tproc send {ignore arg} {\n'>
                <'\t\tsleep .1\n'>
                <'\t\texp_send -s -- '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'arg\n'>
                <'\t}\n'>
                <'\tset timeout '>
                ($ Id.VSub_DollarName '$EXPECT_TIMEOUT')
                <'\n'>
                <'\n'>
                <'\tspawn pacstrap -C '>
                ($ Id.VSub_DollarName '$PACMAN_CONF')
                <' -c -d -G -i '>
                ($ Id.VSub_DollarName '$ROOTFS')
                <' base haveged '>
                ($ Id.VSub_DollarName '$PACMAN_EXTRA_PKGS')
                <' --ignore '>
                ($ Id.VSub_DollarName '$PKGIGNORE')
                <'\n'>
                <'\texpect {\n'>
                <'\t\t-exact '>
                <Id.Right_DoubleQuote '"'>
                <'anyway? '>
                <Id.Lit_Other '\\'>
                <'[Y/n'>
                <Id.Lit_Other '\\'>
                <'] '>
                <Id.Right_DoubleQuote '"'>
                <' { send -- '>
                <Id.Right_DoubleQuote '"'>
                <n>
                <Id.Lit_Other '\\'>
                <r>
                <Id.Right_DoubleQuote '"'>
                <'; exp_continue }\n'>
                <'\t\t-exact '>
                <Id.Right_DoubleQuote '"'>
                <'(default=all): '>
                <Id.Right_DoubleQuote '"'>
                <' { send -- '>
                <Id.Right_DoubleQuote '"'>
                <Id.Lit_Other '\\'>
                <r>
                <Id.Right_DoubleQuote '"'>
                <'; exp_continue }\n'>
                <'\t\t-exact '>
                <Id.Right_DoubleQuote '"'>
                <'installation? '>
                <Id.Lit_Other '\\'>
                <'[Y/n'>
                <Id.Lit_Other '\\'>
                <']'>
                <Id.Right_DoubleQuote '"'>
                <' { send -- '>
                <Id.Right_DoubleQuote '"'>
                <y>
                <Id.Lit_Other '\\'>
                <r>
                <Id.Right_DoubleQuote '"'>
                <'; exp_continue }\n'>
                <'\t\t-exact '>
                <Id.Right_DoubleQuote '"'>
                <'delete it? '>
                <Id.Lit_Other '\\'>
                <'[Y/n'>
                <Id.Lit_Other '\\'>
                <']'>
                <Id.Right_DoubleQuote '"'>
                <' { send -- '>
                <Id.Right_DoubleQuote '"'>
                <y>
                <Id.Lit_Other '\\'>
                <r>
                <Id.Right_DoubleQuote '"'>
                <'; exp_continue }\n'>
                <'\t}\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<arch-chroot>} {($ Id.VSub_DollarName '$ROOTFS')} {<'/bin/sh'>} {<-c>} 
      {(SQ <'rm -r /usr/share/man/*'>)}
    )
    (C {<arch-chroot>} {($ Id.VSub_DollarName '$ROOTFS')} {<'/bin/sh'>} {<-c>} 
      {
        (DQ 
          <
'haveged -w 1024; pacman-key --init; pkill haveged; pacman -Rs --noconfirm haveged; pacman-key --populate '
          > ($ Id.VSub_DollarName '$ARCH_KEYRING') <'; pkill gpg-agent'>
        )
      }
    )
    (C {<arch-chroot>} {($ Id.VSub_DollarName '$ROOTFS')} {<'/bin/sh'>} {<-c>} 
      {(DQ <'ln -s /usr/share/zoneinfo/UTC /etc/localtime'>)}
    )
    (command.Simple
      words: [{<echo>} {(SQ <'en_US.UTF-8 UTF-8'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$ROOTFS') <'/etc/locale.gen'>}
        )
      ]
      do_fork: T
    )
    (C {<arch-chroot>} {($ Id.VSub_DollarName '$ROOTFS')} {<locale-gen>})
    (C {<arch-chroot>} {($ Id.VSub_DollarName '$ROOTFS')} {<'/bin/sh'>} {<-c>} 
      {(SQ <'echo $PACMAN_MIRRORLIST > /etc/pacman.d/mirrorlist'>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DEV)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$ROOTFS') <'/dev'>}
          spids: [556]
        )
      ]
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$DEV')})
    (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$DEV')})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/null'>} {<c>} {<1>} {<3>})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/zero'>} {<c>} {<1>} {<5>})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/random'>} {<c>} {<1>} {<8>})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/urandom'>} {<c>} {<1>} {<9>})
    (C {<mkdir>} {<-m>} {<755>} {($ Id.VSub_DollarName '$DEV') <'/pts'>})
    (C {<mkdir>} {<-m>} {<1777>} {($ Id.VSub_DollarName '$DEV') <'/shm'>})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/tty'>} {<c>} {<5>} {<0>})
    (C {<mknod>} {<-m>} {<600>} {($ Id.VSub_DollarName '$DEV') <'/console'>} {<c>} {<5>} {<1>})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/tty0'>} {<c>} {<4>} {<0>})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/full'>} {<c>} {<1>} {<7>})
    (C {<mknod>} {<-m>} {<600>} {($ Id.VSub_DollarName '$DEV') <'/initctl'>} {<p>})
    (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName '$DEV') <'/ptmx'>} {<c>} {<5>} {<2>})
    (C {<ln>} {<-sf>} {<'/proc/self/fd'>} {($ Id.VSub_DollarName '$DEV') <'/fd'>})
    (command.Pipeline
      children: [
        (C {<tar>} {<--numeric-owner>} {<--xattrs>} {<--acls>} {<-C>} {($ Id.VSub_DollarName '$ROOTFS')} 
          {<-c>} {<.>}
        )
        (C {<docker>} {<import>} {<->} {($ Id.VSub_DollarName '$DOCKER_IMAGE_NAME')})
      ]
      negated: F
    )
    (C {<docker>} {<run>} {<--rm>} {<-t>} {($ Id.VSub_DollarName '$DOCKER_IMAGE_NAME')} {<echo>} 
      {<Success.>}
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$ROOTFS')})
  ]
)