(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {<node-sodium>}
          spids: [6]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_pkgname)
          op: assign_op.Equal
          rhs: {<sodium>}
          spids: [9]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {<1.2.3>}
          spids: [12]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: {(DQ <'Port of the lib sodium encryption library to Node.js'>)}
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(DQ <'https://github.com/paixaop/node-sodium'>)}
          spids: [23]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ <'x86 x86_64'>)}
          spids: [28]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <MIT>)}
          spids: [33]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:depends)
          op: assign_op.Equal
          rhs: {(DQ <nodejs>)}
          spids: [38]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:makedepends)
          op: assign_op.Equal
          rhs: {(DQ <'libsodium-dev=1.0.11-r0 python2 nodejs-npm'>)}
          spids: [43]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$pkgname') <-> ($ Id.VSub_DollarName '$pkgver') 
                <'.tar.gz::https://github.com/paixaop/'> ($ Id.VSub_DollarName '$pkgname') <'/archive/'> ($ Id.VSub_DollarName '$pkgver') <'.tar.gz\n'> 
                <'fix-gyp-binding.patch\n'> <'remove-preinstall.patch\n'>
              )
            }
          spids: [48]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:builddir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$pkgname') <-> 
                ($ Id.VSub_DollarName '$pkgver')
              )
            }
          spids: [62]
        )
      ]
    )
    (command.ShFunction
      name: prepare
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<default_prepare>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<update_config_guess>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: build
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<npm>} {<install>})
                (C {<npm>} {<test>})
                (C {<npm>} {<prune>} {<--production>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:moduledir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$pkgdir') <'/usr/lib/node_modules/'> 
                        ($ Id.VSub_DollarName '$_pkgname')
                      )
                    }
                  spids: [141]
                )
              ]
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$moduledir'))})
            (C {<cp>} {(DQ ($ Id.VSub_DollarName '$builddir') <'/index.js'>)} 
              {(DQ ($ Id.VSub_DollarName '$moduledir') <'/index.js'>)}
            )
            (C {<cp>} {(DQ ($ Id.VSub_DollarName '$builddir') <'/package.json'>)} 
              {(DQ ($ Id.VSub_DollarName '$moduledir') <'/package.json'>)}
            )
            (C {<cp>} {<-r>} {(DQ ($ Id.VSub_DollarName '$builddir') <'/node_modules'>)} 
              {(DQ ($ Id.VSub_DollarName '$moduledir') <'/node_modules'>)}
            )
            (C {<cp>} {<-r>} {(DQ ($ Id.VSub_DollarName '$builddir') <'/build'>)} 
              {(DQ ($ Id.VSub_DollarName '$moduledir') <'/build'>)}
            )
            (C {<cp>} {<-r>} {(DQ ($ Id.VSub_DollarName '$builddir') <'/lib'>)} 
              {(DQ ($ Id.VSub_DollarName '$moduledir') <'/lib'>)}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:md5sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'78e091e1dddc608d337d430b635b12ad  node-sodium-1.2.3.tar.gz\n'> 
                <'fb3a540514a13bc7038bf477a1388d6c  fix-gyp-binding.patch\n'> <'e973e94eaed192b294ac73386c1c5296  remove-preinstall.patch'>
              )
            }
          spids: [232]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha256sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'b9f370542a66fc3bdd0c588adbbef38ff517a386cdcfee7178d8c3ac153efca7  node-sodium-1.2.3.tar.gz\n'
                > <'0f7170ecd9ccf3fd3a22c58d1238b2b6ccadf9bcb87b0b8009c1d78a9f5e208b  fix-gyp-binding.patch\n'> 
                <
'6be7fd58c2298de8266e47bf8861d387300a3a79f54c31436ea770bb5e1588fe  remove-preinstall.patch'
                >
              )
            }
          spids: [239]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'60dd7e5bf07a87d22d25099caa3814a59175281a352c03cd7d589ba2163013e946e9853609f77be9d4115a0c2fd7a9463afaa1f42f954f6e89a6b6f2fbb238a8  node-sodium-1.2.3.tar.gz\n'
                > 
                <
'95b18085d8d2143987dd011dfbd9b3386dae3254f936290f77565788cafb9c98ceb757354cba5a4866d0c6d3d4b95fa9dc9e1de985544358d6446cf0cbf29372  fix-gyp-binding.patch\n'
                > 
                <
'f3b90002182d0f1f01fea450469e9d04cd4312479cf57a9742523bc60289704d70ae1e3356d9dee69e291bc86a0d091eee6ce41c288b30b5cbbcd20c44727f83  remove-preinstall.patch'
                >
              )
            }
          spids: [246]
        )
      ]
    )
  ]
)