(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOMAINNAME)
          op: assign_op.Equal
          rhs: {(/bin/domainname)}
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOSTNAME)
          op: assign_op.Equal
          rhs: {(/bin/hostname)}
          spids: [21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:YPWHICH)
          op: assign_op.Equal
          rhs: {(/usr/bin/ypwhich)}
          spids: [24]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:YPXFR)
          op: assign_op.Equal
          rhs: {(/usr/libexec/ypxfr)}
          spids: [27]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:YP_DIR)
          op: assign_op.Equal
          rhs: {(/var/yp)}
          spids: [30]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MAKEDBM)
          op: assign_op.Equal
          rhs: {(/usr/sbin/yp_mkdb)}
          spids: [33]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MAPLIST)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ('master.passwd.byname master.passwd.byuid passwd.byname passwd.byuid ') 
                ('\t group.byname group.bygid hosts.byname hosts.byaddr services.byname ') ('\t rpc.byname rpc.bynumber networks.byname networks.byaddr netgroup ') 
                ('\t netgroup.byuser netgroup.byhost netid.byname publickey.byname ') ('\t bootparams ethers.byname ethers.byaddr eui64.byname eui64.byid ') 
                ('\t amd.host mail.aliases ypservers protocols.byname protocols.bynumber ') ('\t netmasks.byaddr')
              )
            }
          spids: [36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ERROR_EXISTS)
          op: assign_op.Equal
          rhs: {(DQ (NO))}
          spids: [54]
        )
      ]
    )
    (C {(umask)} {(077)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ERROR)
          op: assign_op.Equal
          rhs: {(USAGE)}
          spids: [68]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-eq)} {(1)} {(Id.Lit_RBracket ']')})
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Number '$1')} {(Id.Lit_Equals '=')} {(DQ (-m))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOMAIN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:112)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(${ Id.VSub_Name DOMAINNAME)})]
                                  )
                              )
                            }
                          spids: [111]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SERVERTYPE)
                          op: assign_op.Equal
                          rhs: {(MASTER)}
                          spids: [121]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [125]
                        )
                      ]
                    )
                  ]
                  spids: [90 108]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Number '$1')} {(Id.Lit_Equals '=')} {(DQ (-u))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOMAIN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:154)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(${ Id.VSub_Name DOMAINNAME)})]
                                  )
                              )
                            }
                          spids: [153]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SERVERTYPE)
                          op: assign_op.Equal
                          rhs: {(UPDATE)}
                          spids: [163]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [167]
                        )
                      ]
                    )
                  ]
                  spids: [132 150]
                )
              ]
            )
          ]
          spids: [75 87]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-eq)} {(2)} {(Id.Lit_RBracket ']')})
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Number '$1')} {(Id.Lit_Equals '=')} {(DQ (-m))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOMAIN)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Number 2)}
                          spids: [211]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SERVERTYPE)
                          op: assign_op.Equal
                          rhs: {(MASTER)}
                          spids: [217]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [221]
                        )
                      ]
                    )
                  ]
                  spids: [190 208]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Number '$1')} {(Id.Lit_Equals '=')} {(DQ (-s))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOMAIN)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:250)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(${ Id.VSub_Name DOMAINNAME)})]
                                  )
                              )
                            }
                          spids: [249]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SERVERTYPE)
                          op: assign_op.Equal
                          rhs: {(SLAVE)}
                          spids: [259]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MASTER)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Number 2)}
                          spids: [263]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [269]
                        )
                      ]
                    )
                  ]
                  spids: [228 246]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Number '$1')} {(Id.Lit_Equals '=')} {(DQ (-u))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOMAIN)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Number 2)}
                          spids: [297]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SERVERTYPE)
                          op: assign_op.Equal
                          rhs: {(UPDATE)}
                          spids: [303]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [307]
                        )
                      ]
                    )
                  ]
                  spids: [276 294]
                )
              ]
            )
          ]
          spids: [175 187]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-eq)} {(3)} {(Id.Lit_RBracket ']')})
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Number '$1')} {(Id.Lit_Equals '=')} {(DQ (-s))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DOMAIN)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Number 3)}
                          spids: [351]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SERVERTYPE)
                          op: assign_op.Equal
                          rhs: {(SLAVE)}
                          spids: [357]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MASTER)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Number 2)}
                          spids: [361]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [367]
                        )
                      ]
                    )
                  ]
                  spids: [330 348]
                )
              ]
            )
          ]
          spids: [315 327]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ERROR))} {(Id.Lit_Equals '=')} 
                  {(DQ (USAGE))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:392)
            )
          ]
          action: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:399)
                  fd: -1
                  here_begin: 
                    {
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\_' span_id:401)
                      ) (_usage)
                    }
                  here_end_span_id: 415
                  stdin_parts: [
                    ('usage: ypinit -m [domainname]\n')
                    ('       ypinit -s master_server [domainname]\n')
                    ('       ypinit -u [domainname]\n')
                    ('\n')
                    ("The `-m' flag builds a master YP server, and the `-s' flag builds\n")
                    ("a slave YP server.  When building a slave YP server, `master_server'\n")
                    ('must be an existing, reachable YP server.\n')
                    ("The `-u' is for updating the ypservers map on a master server.\n")
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:404)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:418)
              arg_word: {(1)}
            )
          ]
          spids: [375 394]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name DOMAIN))} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:441)
            )
          ]
          action: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:448)
                  fd: -1
                  here_begin: 
                    {
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\_' span_id:450)
                      ) (_no_domain)
                    }
                  here_end_span_id: 458
                  stdin_parts: [
                    ("The local host's YP domain name has not been set.  Please set it with\n")
                    ('the domainname(1) command or pass the domain as an argument to ypinit(8).\n')
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:453)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:461)
              arg_word: {(1)}
            )
          ]
          spids: [428 443]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HOST)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:472)
                command_list: (command.CommandList children:[(C {(${ Id.VSub_Name HOSTNAME)})])
              )
            }
          spids: [471]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name HOST))} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:493)
            )
          ]
          action: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:500)
                  fd: -1
                  here_begin: 
                    {
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\_' span_id:502)
                      ) (_no_hostname)
                    }
                  here_end_span_id: 510
                  stdin_parts: [
                    ("The local host's hostname has not been set.  Please set it with the\n")
                    ('hostname(1) command.\n')
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:505)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:513)
              arg_word: {(1)}
            )
          ]
          spids: [480 495]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} {(Id.Lit_Equals '=')} 
                  {(DQ (SLAVE))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:555)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:COUNT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:561)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    words: [
                                      {(${ Id.VSub_Name YPWHICH)}
                                      {(-d)}
                                      {(${ Id.VSub_Name DOMAIN)}
                                      {(-m)}
                                    ]
                                    redirects: [
                                      (redir.Redir
                                        op: (Token id:Id.Redir_Great val:'2>' span_id:576)
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                  (C {(grep)} {(-i)} {(${ Id.VSub_Name MASTER)})
                                  (C {(wc)} {(-l)})
                                  (C {(tr)} {(-d)} {(DQ (' '))})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [560]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$COUNT'))} 
                      {(Id.Lit_Equals '=')} {(DQ (0))} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ("Can't enumerate maps from ") (${ Id.VSub_Name MASTER) 
                            ('. Please check that it is running.')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:637)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Note: using hardcoded maplist for map transfers.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:647)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:YPMAPLIST)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name MAPLIST)}
                          spids: [651]
                        )
                      ]
                    )
                  ]
                  spids: [607 624]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:YPMAPLIST)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_Backtick val:'`' span_id:661)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(${ Id.VSub_Name YPWHICH)} {(-d)} {(${ Id.VSub_Name DOMAIN)} 
                                        {(-m)}
                                      )
                                      (C {(cut)} 
                                        {(-d) 
                                          (word_part.EscapedLiteral
                                            token: 
                                              (Token
                                                id: Id.Lit_EscapedChar
                                                val: '\\ '
                                                span_id: 683
                                              )
                                          )
                                        } {(-f1)}
                                      )
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [660]
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ )}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:697)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
          ]
          spids: [538 557]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ID)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:707)
                command_list: (command.CommandList children:[(C {(id)} {(-u)})])
              )
            }
          spids: [706]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ID))} 
                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (0))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:733)
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {(DQ ('You have to be the superuser to run this.  Please login as root.'))}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:744)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:748)
              arg_word: {(1)}
            )
          ]
          spids: [715 735]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} {(${ Id.VSub_Name YP_DIR)} {(-o)} {(-f)} 
              {(${ Id.VSub_Name YP_DIR)} {(Id.Lit_RBracket ']')}
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('The directory ') (${ Id.VSub_Name YP_DIR) 
                    (" doesn't exist.  Restore it from the distribution.")
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:794)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:798)
              arg_word: {(1)}
            )
          ]
          spids: [759 781]
        )
      ]
    )
    (C {(echo)} {(-n)} 
      {(DQ ('Server Type: ') (${ Id.VSub_Name SERVERTYPE) (' Domain: ') (${ Id.VSub_Name DOMAIN))}
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} {(Id.Lit_Equals '=')} 
                  {(DQ (SLAVE))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:838)
            )
          ]
          action: [(C {(echo)} {(-n)} {(DQ (' Master: ') (${ Id.VSub_Name MASTER))})]
          spids: [821 840]
        )
      ]
    )
    (C {(echo)} {(DQ )})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} 
                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (UPDATE))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:880)
            )
          ]
          action: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:887)
                  fd: -1
                  here_begin: 
                    {
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\_' span_id:889)
                      ) (_notice1)
                    }
                  here_end_span_id: 896
                  stdin_parts: [
                    ('\n')
                    ('Creating an YP server will require that you answer a few questions.\n')
                    ('Questions will all be asked at the beginning of the procedure.\n')
                    ('\n')
                  ]
                )
              ]
            )
            (C {(echo)} {(-n)} 
              {(DQ ('Do you want this procedure to quit on non-fatal errors? [y/n: n]  '))}
            )
            (C {(read)} {(DOEXIT)})
            (command.Case
              to_match: {(${ Id.VSub_Name DOEXIT)}
              arms: [
                (case_arm
                  pat_list: [{(y) (Id.Lit_Star '*')} {(Y) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR_EXIT)
                          op: assign_op.Equal
                          rhs: {(DQ (YES))}
                          spids: [931]
                        )
                      ]
                    )
                  ]
                  spids: [923 928 937 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR_EXIT)
                          op: assign_op.Equal
                          rhs: {(DQ (NO))}
                          spids: [944]
                        )
                      ]
                    )
                    (C {(echo)} {(DQ )})
                    (C {(echo)} 
                      {(DQ ('Ok, please remember to go back and redo manually whatever fails.'))}
                    )
                    (C {(echo)} {(DQ ("If you don't, something might not work. "))})
                  ]
                  spids: [941 942 970 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-d)} 
                          {(DQ (${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:994)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ )})
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('Can we destroy the existing ') (${ Id.VSub_Name YP_DIR) (/) 
                          (${ Id.VSub_Name DOMAIN) (' and its contents? [y/n: n]  ')
                        )
                      }
                    )
                    (C {(read)} {(KILL)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [1028]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(${ Id.VSub_Name KILL)}
                      arms: [
                        (case_arm
                          pat_list: [{(y) (Id.Lit_Star '*')} {(Y) (Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ERROR)
                                  op: assign_op.Equal
                                  rhs: {(DQ (DELETE))}
                                  spids: [1048]
                                )
                              ]
                            )
                          ]
                          spids: [1040 1045 1054 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ERROR)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [1061]
                                )
                              ]
                            )
                          ]
                          spids: [1058 1059 1064 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ERROR))} 
                                  {(Id.Lit_Equals '=')} {(DQ (DELETE))} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1088)
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {(rm)} {(-rf)} 
                                              {(${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN)}
                                            )
                                          ]
                                          negated: T
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1108)
                                    )
                                  ]
                                  action: [
                                    (command.Simple
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ ("Can't clean up old directory ") 
                                            (${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN) (.)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:1127)
                                          fd: 1
                                          arg_word: {(2)}
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1131)
                                      arg_word: {(1)}
                                    )
                                  ]
                                  spids: [1093 1110]
                                )
                              ]
                            )
                          ]
                          spids: [1071 1090]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(DQ ('OK, please clean it up by hand and start again.  Bye'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Exit val:exit span_id:1149)
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                  spids: [977 996]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C {(mkdir)} {(DQ (${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN))})
                          ]
                          negated: T
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1176)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ("Can't make new directory ") (${ Id.VSub_Name YP_DIR) (/) 
                            (${ Id.VSub_Name DOMAIN) (.)
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:1195)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1199)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [1161 1178]
                )
              ]
            )
          ]
          spids: [862 882]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} {(Id.Lit_Equals '=')} 
                  {(DQ (MASTER))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1226)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} 
                      {(${ Id.VSub_Name YP_DIR) (/Makefile)} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} 
                              {(${ Id.VSub_Name YP_DIR) (/Makefile.dist)} {(Id.Lit_RBracket ']')}
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [
                                {(echo)}
                                {(DQ ("Can't find ") (${ Id.VSub_Name YP_DIR) ('/Makefile.dist. '))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:1280)
                                  fd: 1
                                  arg_word: {(2)}
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Exit val:exit span_id:1284)
                              arg_word: {(1)}
                            )
                          ]
                          spids: [1251 1267]
                        )
                      ]
                    )
                    (C {(cp)} {(${ Id.VSub_Name YP_DIR) (/Makefile.dist)} 
                      {(${ Id.VSub_Name YP_DIR) (/Makefile)}
                    )
                  ]
                  spids: [1232 1248]
                )
              ]
            )
          ]
          spids: [1209 1228]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} {(Id.Lit_Equals '=')} 
                  {(DQ (SLAVE))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1328)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('There will be no further questions. The remainder of the procedure'))})
            (C {(echo)} 
              {
                (DQ ('should take a few minutes, to copy the databases from ') 
                  (${ Id.VSub_Name MASTER) (.)
                )
              }
            )
            (command.ForEach
              iter_name: MAP
              iter_words: [{(${ Id.VSub_Name YPMAPLIST)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} {(DQ ('Transferring ') (${ Id.VSub_Name MAP) (...))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {(${ Id.VSub_Name YPXFR)} {(-p)} {(${ Id.VSub_Name YP_DIR)} {(-h)} 
                                      {(${ Id.VSub_Name MASTER)} {(-c)} {(-d)} {(${ Id.VSub_Name DOMAIN)} {(${ Id.VSub_Name MAP)}
                                    )
                                  ]
                                  negated: T
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1409)
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [{(echo)} {(DQ ("Can't transfer map ") (${ Id.VSub_Name MAP) (.))}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:1424)
                                  fd: 1
                                  arg_word: {(2)}
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:ERROR_EXISTS)
                                  op: assign_op.Equal
                                  rhs: {(DQ (YES))}
                                  spids: [1428]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ERROR_EXIT))} 
                                          {(Id.Lit_Equals '=')} {(DQ (YES))} {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1451)
                                    )
                                  ]
                                  action: [
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1456)
                                      arg_word: {(1)}
                                    )
                                  ]
                                  spids: [1434 1453]
                                )
                              ]
                            )
                          ]
                          spids: [1378 1411]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(echo)} {(DQ )})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ERROR_EXISTS))} 
                          {(Id.Lit_Equals '=')} {(DQ (YES))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1494)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ (${ Id.VSub_Name HOST) 
                            (' has been setup as an YP slave server with errors. ')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:1508)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Please remember fix any problem that occurred.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:1518)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                  ]
                  spids: [1477 1496]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {
                    (DQ (${ Id.VSub_Name HOST) 
                      (' has been setup as an YP slave server without any errors. ')
                    )
                  }
                )
              ]
            )
            (C {(echo)} {(DQ ("Don't forget to update map ypservers on ") (${ Id.VSub_Name MASTER) (.))})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:1550)
              arg_word: {(0)}
            )
          ]
          spids: [1311 1330]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LIST_OK)
          op: assign_op.Equal
          rhs: {(DQ (NO))}
          spids: [1557]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:1563)
      cond: [
        (command.Sentence
          child: 
            (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name LIST_OK))} {(Id.Lit_Equals '=')} {(DQ (NO))} 
              {(Id.Lit_RBracket ']')}
            )
          terminator: (Token id:Id.Op_Semi val:';' span_id:1580)
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} 
                          {(Id.Lit_Equals '=')} {(DQ (MASTER))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1602)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:HOST_LIST)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name HOST))}
                          spids: [1608]
                        )
                      ]
                    )
                    (C {(echo)} {(DQ )})
                    (C {(echo)} 
                      {
                        (DQ 
                          ('At this point, we have to construct a list of this domains YP servers.')
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ Id.VSub_Name HOST) (' is already known as master server.'))})
                    (C {(echo)} 
                      {(DQ ('Please continue to add any slave servers, one per line. When you are'))}
                    )
                    (C {(echo)} {(DQ ('done with the list, type a <control D>.'))})
                    (C {(echo)} {(DQ ('\tmaster server   :  ') (${ Id.VSub_Name HOST))})
                  ]
                  spids: [1585 1605]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} 
                          {(Id.Lit_Equals '=')} {(DQ (UPDATE))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1684)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:HOST_LIST)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name HOST))}
                          spids: [1690]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:NEW_LIST)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1698]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MASTER_NAME)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1703]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SHORT_HOST)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:1709)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {(${ Id.VSub_Name HOST)})
                                          (C {(cut)} {(-d.)} {(-f1)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1708]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-f)} 
                                  {(${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN) (/ypservers)} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1744)
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ForEach
                                  iter_name: srv
                                  iter_words: [
                                    {
                                      (command_sub
                                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1756)
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(${ Id.VSub_Name MAKEDBM)} {(-u)} 
                                                    {(${ Id.VSub_Name YP_DIR) (/) 
                                                      (${ Id.VSub_Name DOMAIN) (/ypservers)
                                                    }
                                                  )
                                                  (C {(grep)} {(-v)} {(DQ ('^YP'))})
                                                  (C {(tr)} {(DQ (Id.Lit_Other '\\') (t))} {(DQ (' '))})
                                                  (C {(cut)} 
                                                    {(-d) 
                                                      (word_part.EscapedLiteral
                                                        token: 
                                                          (Token
                                                            id: Id.Lit_EscapedChar
                                                            val: '\\ '
                                                            span_id: 1806
                                                          )
                                                      )
                                                    } {(-f1)}
                                                  )
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  ]
                                  do_arg_iter: F
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:short_srv)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (command_sub
                                                    left_token: 
                                                      (Token
                                                        id: Id.Left_Backtick
                                                        val: '`'
                                                        span_id: 1817
                                                      )
                                                    command_list: 
                                                      (command.CommandList
                                                        children: [
                                                          (command.Pipeline
                                                            children: [
                                                              (C {(echo)} {(${ Id.VSub_Name srv)})
                                                              (C {(cut)} {(-d.)} {(-f1)})
                                                            ]
                                                            negated: F
                                                          )
                                                        ]
                                                      )
                                                  )
                                                }
                                              spids: [1816]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: [
                                                (C {(Id.Lit_LBracket '[')} 
                                                  {(DQ (${ Id.VSub_Name SHORT_HOST))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (${ Id.VSub_Name short_srv))} {(Id.Lit_RBracket ']')}
                                                )
                                              ]
                                              action: [
                                                (command.If
                                                  arms: [
                                                    (if_arm
                                                      cond: [
                                                        (command.Sentence
                                                          child: 
                                                            (C {(Id.Lit_LBracket '[')} 
                                                              {(DQ (${ Id.VSub_Name NEW_LIST))} {(Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')}
                                                            )
                                                          terminator: 
                                                            (Token
                                                              id: Id.Op_Semi
                                                              val: ';'
                                                              span_id: 1877
                                                            )
                                                        )
                                                      ]
                                                      action: [
                                                        (command.ShAssignment
                                                          pairs: [
                                                            (assign_pair
                                                              lhs: (sh_lhs_expr.Name name:NEW_LIST)
                                                              op: assign_op.Equal
                                                              rhs: {(DQ (${ Id.VSub_Name srv))}
                                                              spids: [1883]
                                                            )
                                                          ]
                                                        )
                                                      ]
                                                      spids: [1861 1880]
                                                    )
                                                  ]
                                                  else_action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:NEW_LIST)
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ (${ Id.VSub_Name NEW_LIST) (' ') 
                                                                (${ Id.VSub_Name srv)
                                                              )
                                                            }
                                                          spids: [1894]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [1836 1858]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:1913)
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:MASTER_NAME)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:1917)
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (command.Pipeline
                                                children: [
                                                  (C {(${ Id.VSub_Name MAKEDBM)} {(-u)} 
                                                    {(${ Id.VSub_Name YP_DIR) (/) 
                                                      (${ Id.VSub_Name DOMAIN) (/ypservers)
                                                    }
                                                  )
                                                  (C {(grep)} {(DQ ('^YP_MASTER_NAME'))})
                                                  (C {(tr)} {(DQ (Id.Lit_Other '\\') (t))} {(DQ (' '))})
                                                  (C {(cut)} 
                                                    {(-d) 
                                                      (word_part.EscapedLiteral
                                                        token: 
                                                          (Token
                                                            id: Id.Lit_EscapedChar
                                                            val: '\\ '
                                                            span_id: 1965
                                                          )
                                                      )
                                                    } {(-f2)}
                                                  )
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [1916]
                                )
                              ]
                            )
                          ]
                          spids: [1728 1747]
                        )
                      ]
                    )
                    (C {(echo)} {(DQ )})
                    (C {(echo)} 
                      {
                        (DQ ('Update the list of hosts running YP servers in domain ') 
                          (${ Id.VSub_Name DOMAIN) (.)
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('Master for this domain is ') (${ Id.VSub_Name MASTER_NAME) (.))})
                    (C {(echo)} {(DQ )})
                    (C {(echo)} 
                      {
                        (DQ ('First verify old servers, type ') 
                          (word_part.EscapedLiteral
                            token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:2012)
                          ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:2013)) 
                          (' to remove a server.')
                        )
                      }
                    )
                    (C {(echo)} 
                      {(DQ ('Then add new servers, one per line. When done type a <control D>.'))}
                    )
                    (C {(echo)} {(DQ )})
                    (C {(echo)} {(DQ ('\tmaster server   :  ') (${ Id.VSub_Name HOST))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name NEW_LIST))} 
                                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2058)
                            )
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ForEach
                                  iter_name: node
                                  iter_words: [{($ Id.VSub_DollarName '$NEW_LIST')}]
                                  do_arg_iter: F
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (C {(echo)} {(-n)} 
                                          {
                                            (DQ ('\tverify host     : [') (${ Id.VSub_Name node) ('] '))
                                          }
                                        )
                                        (C {(read)} {(verify)})
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: [
                                                (command.Sentence
                                                  child: 
                                                    (C {(Id.Lit_LBracket '[')} 
                                                      {(DQ (${ Id.VSub_Name verify))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} 
                                                      {
                                                        (DQ 
                                                          (word_part.EscapedLiteral
                                                            token: 
                                                              (Token
                                                                id: Id.Lit_EscapedChar
                                                                val: '\\\\'
                                                                span_id: 2107
                                                              )
                                                          )
                                                        )
                                                      } {(Id.Lit_RBracket ']')}
                                                    )
                                                  terminator: 
                                                    (Token
                                                      id: Id.Op_Semi
                                                      val: ';'
                                                      span_id: 2111
                                                    )
                                                )
                                              ]
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:HOST_LIST)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ (${ Id.VSub_Name HOST_LIST) (' ') 
                                                            (${ Id.VSub_Name node)
                                                          )
                                                        }
                                                      spids: [2116]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [2093 2113]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2132)
                            )
                          ]
                          spids: [2041 2060]
                        )
                      ]
                    )
                  ]
                  spids: [1667 1687]
                )
              ]
            )
            (C {(echo)} {(-n)} {(DQ ('\tnext host to add:  '))})
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:2152)
              cond: [(C {(read)} {(h)})]
              body: 
                (command.DoGroup
                  children: [
                    (C {(echo)} {(-n)} {(DQ ('\tnext host to add:  '))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:HOST_LIST)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name HOST_LIST) (' ') (${ Id.VSub_Name h))}
                          spids: [2171]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(echo)} {(DQ )})
            (C {(echo)} {(DQ ('The current list of NIS servers looks like this:'))})
            (C {(echo)} {(DQ )})
            (command.ForEach
              iter_name: h
              iter_words: [
                {
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:2213)
                    command_list: 
                      (command.CommandList
                        children: [(C {(echo)} {(${ Id.VSub_Name HOST_LIST)})]
                      )
                  )
                }
              ]
              do_arg_iter: F
              body: (command.DoGroup children:[(C {(echo)} {(${ Id.VSub_Name h)})])
            )
            (C {(echo)} {(DQ )})
            (C {(echo)} {(-n)} {(DQ ('Is this correct?  [y/n: y]  '))})
            (C {(read)} {(hlist_ok)})
            (command.Case
              to_match: {($ Id.VSub_DollarName '$hlist_ok')}
              arms: [
                (case_arm
                  pat_list: [{(n) (Id.Lit_Star '*')}]
                  action: [(C {(echo)} {(DQ ("Let's try the whole thing again..."))})]
                  spids: [2267 2269 2276 -1]
                )
                (case_arm
                  pat_list: [{(N) (Id.Lit_Star '*')}]
                  action: [(C {(echo)} {(DQ ("Let's try the whole thing again..."))})]
                  spids: [2279 2281 2288 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:LIST_OK)
                          op: assign_op.Equal
                          rhs: {(DQ (YES))}
                          spids: [2294]
                        )
                      ]
                    )
                  ]
                  spids: [2291 2292 2298 -1]
                )
              ]
            )
          ]
        )
    )
    (C {(echo)} 
      {(DQ ('Building ') (${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN) (/ypservers...))}
    )
    (C {(rm)} {(-f)} {(${ Id.VSub_Name YP_DIR) (/ypservers)})
    (C {(touch)} {(-f)} {(${ Id.VSub_Name YP_DIR) (/ypservers)})
    (C {(rm)} {(-f)} {(${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN) (/ypservers)})
    (command.Pipeline
      children: [
        (command.ForEach
          iter_name: host
          iter_words: [{(${ Id.VSub_Name HOST_LIST)}]
          do_arg_iter: F
          body: 
            (command.DoGroup
              children: [
                (command.Simple
                  words: [{(echo)} {(DQ (${ Id.VSub_Name host) (' ') (${ Id.VSub_Name host))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:2378)
                      fd: -1
                      arg_word: {(${ Id.VSub_Name YP_DIR) (/ypservers)}
                    )
                  ]
                )
                (C {(echo)} {(DQ (${ Id.VSub_Name host) (' ') (${ Id.VSub_Name host))})
              ]
            )
        )
        (C {(${ Id.VSub_Name MAKEDBM)} {(-)} 
          {(${ Id.VSub_Name YP_DIR) (/) (${ Id.VSub_Name DOMAIN) (/ypservers)}
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:2429)
            )
          ]
          action: [
            (command.Simple
              words: [{(echo)} {(DQ )}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:2439)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ("Couldn't build yp data base ") (${ Id.VSub_Name YP_DIR) (/) 
                    (${ Id.VSub_Name DOMAIN) (/ypservers.)
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:2457)
                  fd: 1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ERROR_EXISTS)
                  op: assign_op.Equal
                  rhs: {(DQ (YES))}
                  spids: [2461]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ERROR_EXIT))} 
                          {(Id.Lit_Equals '=')} {(DQ (YES))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2484)
                    )
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:2489)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [2467 2486]
                )
              ]
            )
          ]
          spids: [2418 2431]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name SERVERTYPE))} {(Id.Lit_Equals '=')} 
                  {(DQ (MASTER))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:2516)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CUR_PWD)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:2522)
                        command_list: (command.CommandList children:[(C {(pwd)})])
                      )
                    }
                  spids: [2521]
                )
              ]
            )
            (C {(cd)} {(${ Id.VSub_Name YP_DIR)})
            (C {(echo)} {(DQ ('Running ') (${ Id.VSub_Name YP_DIR) (/Makefile...))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C {(make)} {(Id.Lit_VarLike 'NOPUSH=') (True)} 
                              {(Id.Lit_VarLike 'UPDATE_DOMAIN=') (${ Id.VSub_Name DOMAIN)} {(Id.Lit_VarLike 'YP_DIR=') (${ Id.VSub_Name YP_DIR)}
                            )
                          ]
                          negated: T
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2565)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ )}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:2575)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Error running Makefile.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:2585)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ERROR_EXISTS)
                          op: assign_op.Equal
                          rhs: {(DQ (YES))}
                          spids: [2589]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ERROR_EXIT))} 
                                  {(Id.Lit_Equals '=')} {(DQ (YES))} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:2612)
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Exit val:exit span_id:2617)
                              arg_word: {(1)}
                            )
                          ]
                          spids: [2595 2614]
                        )
                      ]
                    )
                  ]
                  spids: [2547 2567]
                )
              ]
            )
            (C {(cd)} {(${ Id.VSub_Name CUR_PWD)})
            (C {(echo)} {(DQ )})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name ERROR_EXISTS))} 
                          {(Id.Lit_Equals '=')} {(DQ (YES))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2660)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ (${ Id.VSub_Name HOST) 
                            (' has been setup as an YP master server with errors. ')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:2674)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Please remember fix any problem that occurred.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:2684)
                          fd: 1
                          arg_word: {(2)}
                        )
                      ]
                    )
                  ]
                  spids: [2643 2662]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {
                    (DQ (${ Id.VSub_Name HOST) 
                      (' has been setup as an YP master server without any errors. ')
                    )
                  }
                )
              ]
            )
          ]
          spids: [2499 2518]
        )
      ]
    )
  ]
)