(BraceGroup
  children: [
    (C {(.)} {(/DietPi/dietpi/func/dietpi-globals)})
    (C {(G_CHECK_ROOT_USER)})
    (C {(G_CHECK_ROOTFS_RW)})
    (C {(export)} {(Lit_VarLike 'G_PROGRAM_NAME=') (SQ <DietPi-Launcher>)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PROGRAM_NAME)
          op: Equal
          rhs: {(DQ (DietPi-Launcher))}
          spids: [99]
        )
      ]
      spids: [99]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CHOICE) op:Equal rhs:{(0)} spids:[106])]
      spids: [106]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTION) op:Equal rhs:{(0)} spids:[110])]
      spids: [110]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TARGETMENUID) op:Equal rhs:{(0)} spids:[114])]
      spids: [114]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LAST_SELECTED_ITEM)
          op: Equal
          rhs: {(DQ (dietpi-config))}
          spids: [118]
        )
      ]
      spids: [118]
    )
    (FuncDef
      name: Menu_Main
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:option_name)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [138]
                )
              ]
              spids: [136]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ )}
                              {
                                (DQ 
                                  (
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Install Optimized Software\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                                  )
                                )
                              }
                            ]
                          )
                        }
                      spids: [144]
                    )
                  ]
                  spids: [144]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [154 158]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-Software))}
                              {(DQ ('Install optimized software thats ready to run.'))}
                            ]
                          )
                        }
                      spids: [161]
                    )
                  ]
                  spids: [161]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [172 176]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ )}
                              {
                                (DQ 
                                  (
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Configuration\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                                  )
                                )
                              }
                            ]
                          )
                        }
                      spids: [179]
                    )
                  ]
                  spids: [179]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [189 193]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-Config))}
                              {(DQ ('Feature rich config tool for your device.'))}
                            ]
                          )
                        }
                      spids: [196]
                    )
                  ]
                  spids: [196]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [207 211]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithWord
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(dpkg)} {(--get-selections)})
                                              (C {(grep)} {(-ci)} {(-m1)} {(SQ <'^alsa-utils'>)})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [219 235]
                                  )
                                }
                            )
                          spids: [217 238]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:option_name)
                          op: PlusEqual
                          rhs: 
                            {
                              (ArrayLiteralPart
                                words: [
                                  {(DQ (DietPi-JustBoom))}
                                  {(DQ ('Launches EQ and MPD audio options menu'))}
                                ]
                              )
                            }
                          spids: [245]
                        )
                      ]
                      spids: [245]
                    )
                  ]
                  spids: [16777215 241]
                )
              ]
              spids: [16777215 258]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-AutoStart))}
                              {(DQ ('Choose what software runs after boot.'))}
                            ]
                          )
                        }
                      spids: [262]
                    )
                  ]
                  spids: [262]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [273 277]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(-f)} {(/DietPi/dietpi/.installed)} {(Lit_Other ']')})
                            (DParen
                              child: 
                                (ArithWord
                                  w: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(cat)} {(/DietPi/dietpi/.installed)})
                                                  (C {(grep)} {(-ci)} {(-m1)} 
                                                    {(SQ <'aSOFTWARE_INSTALL_STATE\\[62\\]=2'>)}
                                                  )
                                                ]
                                                negated: F
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [299 315]
                                      )
                                    }
                                )
                              spids: [297 318]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:option_name)
                              op: PlusEqual
                              rhs: 
                                {
                                  (ArrayLiteralPart
                                    words: [
                                      {(DQ (DietPi-CloudShell))}
                                      {(DQ ('Adjust update rate, scenes settings and more.'))}
                                    ]
                                  )
                                }
                              spids: [325]
                            )
                          ]
                          spids: [325]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (DParen
                      child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
                      spids: [336 340]
                    )
                  ]
                  spids: [16777215 321]
                )
              ]
              spids: [16777215 344]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [{(DQ (DietPi-Cron))} {(DQ ('Modify the start times of cron jobs.'))}]
                          )
                        }
                      spids: [348]
                    )
                  ]
                  spids: [348]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [359 363]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-Process_Tool))}
                              {(DQ ('Tweak Nice, Affinity, Schedulers for programs.'))}
                            ]
                          )
                        }
                      spids: [366]
                    )
                  ]
                  spids: [366]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [377 381]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-Drive_Manager))}
                              {(DQ ('Setup and control multiple external drives.'))}
                            ]
                          )
                        }
                      spids: [384]
                    )
                  ]
                  spids: [384]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [395 399]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ )}
                              {
                                (DQ 
                                  (
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80DietPi Updates\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                                  )
                                )
                              }
                            ]
                          )
                        }
                      spids: [402]
                    )
                  ]
                  spids: [402]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [412 416]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [{(DQ (DietPi-Update))} {(DQ ('Keep your DietPi system upto date.'))}]
                          )
                        }
                      spids: [419]
                    )
                  ]
                  spids: [419]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [430 434]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ )}
                              {
                                (DQ 
                                  (
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Backups / Sync\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                                  )
                                )
                              }
                            ]
                          )
                        }
                      spids: [437]
                    )
                  ]
                  spids: [437]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [447 451]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-Backup))}
                              {(DQ ('Backup and restore your DietPi system.'))}
                            ]
                          )
                        }
                      spids: [454]
                    )
                  ]
                  spids: [454]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [465 469]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-Sync))}
                              {(DQ ('Duplicate (Sync) one directory to another.'))}
                            ]
                          )
                        }
                      spids: [472]
                    )
                  ]
                  spids: [472]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [483 487]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ )}
                              {
                                (DQ 
                                  (
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Maintenance\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                                  )
                                )
                              }
                            ]
                          )
                        }
                      spids: [490]
                    )
                  ]
                  spids: [490]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [500 504]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-Cleaner))}
                              {(DQ ('Remove unwanted junk from your system.'))}
                            ]
                          )
                        }
                      spids: [507]
                    )
                  ]
                  spids: [507]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [518 522]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ )}
                              {
                                (DQ 
                                  (
'\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Misc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80'
                                  )
                                )
                              }
                            ]
                          )
                        }
                      spids: [525]
                    )
                  ]
                  spids: [525]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [535 539]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [{(DQ (DietPi-BugReport))} {(DQ ('Found a bug? Let us know!'))}]
                          )
                        }
                      spids: [542]
                    )
                  ]
                  spids: [542]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [553 557]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-CpuInfo))}
                              {(DQ ('Displays CPU Temp, frequencies, type etc.'))}
                            ]
                          )
                        }
                      spids: [560]
                    )
                  ]
                  spids: [560]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [571 575]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-LetsEncrypt))}
                              {(DQ ('Frontend for Lets Encrypt, free SSL certs'))}
                            ]
                          )
                        }
                      spids: [578]
                    )
                  ]
                  spids: [578]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [589 593]
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:option_name)
                      op: PlusEqual
                      rhs: 
                        {
                          (ArrayLiteralPart
                            words: [
                              {(DQ (DietPi-MorseCode))}
                              {(DQ ('Converts and outputs a text file to morsecode.'))}
                            ]
                          )
                        }
                      spids: [596]
                    )
                  ]
                  spids: [596]
                )
              terminator: <Op_Semi ';'>
            )
            (DParen
              child: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:index))
              spids: [607 611]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:OPTION)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (SimpleCommand
                                words: [
                                  {(whiptail)}
                                  {(--title)}
                                  {(DQ ($ VSub_Name '$PROGRAM_NAME'))}
                                  {(--menu)}
                                  {(DQ ('Please select a program to run:'))}
                                  {(--cancel-button)}
                                  {(DQ (Exit))}
                                  {(--backtitle)}
                                  {(DQ ($ VSub_Name '$PROGRAM_NAME'))}
                                  {(--default-item)}
                                  {(DQ ($ VSub_Name '$LAST_SELECTED_ITEM'))}
                                  {(18)}
                                  {(76)}
                                  {(10)}
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name option_name>
                                        bracket_op: (WholeArray op_id:Lit_At)
                                        spids: [657 662]
                                      )
                                    )
                                  }
                                ]
                                redirects: [
                                  (Redir
                                    op: <Redir_GreatAnd '3>&'>
                                    fd: 3
                                    arg_word: {(1)}
                                  )
                                  (Redir
                                    op: <Redir_GreatAnd '1>&'>
                                    fd: 1
                                    arg_word: {(2)}
                                  )
                                  (Redir
                                    op: <Redir_GreatAnd '2>&'>
                                    fd: 2
                                    arg_word: {(3)}
                                  )
                                ]
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [617 673]
                      )
                    }
                  spids: [616]
                )
              ]
              spids: [616]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CHOICE)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [676]
                )
              ]
              spids: [676]
            )
            (C {(unset)} {(option_name)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Name '$CHOICE')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                          spids: [693 702]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$OPTION'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:LAST_SELECTED_ITEM)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name '$OPTION'))}
                                  spids: [730]
                                )
                              ]
                              spids: [730]
                            )
                            (Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:command)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(echo)} 
                                                {
                                                  (DQ 
                                                    (BracedVarSub
                                                      token: <VSub_Name OPTION>
                                                      suffix_op: (StringUnary op_id:VOp1_DComma arg_word:{(EmptyPart)})
                                                      spids: [748 751]
                                                    )
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [744 753]
                                      )
                                    }
                                  spids: [743]
                                )
                              ]
                              spids: [741]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-f)} 
                                          {(DQ (/DietPi/dietpi/) ($ VSub_Name '$command'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(C {(/DietPi/dietpi/) (DQ ($ VSub_Name '$command'))})]
                                  spids: [16777215 775]
                                )
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-f)} 
                                          {(DQ (/DietPi/dietpi/misc/) ($ VSub_Name '$command'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(C {(/DietPi/dietpi/misc/) (DQ ($ VSub_Name '$command'))})]
                                  spids: [790 804]
                                )
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {(-f)} 
                                          {(DQ (/DietPi/dietpi/func/) ($ VSub_Name '$command'))} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [(C {(/DietPi/dietpi/func/) (DQ ($ VSub_Name '$command'))})]
                                  spids: [819 833]
                                )
                              ]
                              spids: [16777215 844]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (AndOr
                                          ops: [Op_DPipe Op_DPipe]
                                          children: [
                                            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$command'))} 
                                              {(Lit_Other '=')} {(DQ (dietpi-cpuinfo))} {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$command'))} 
                                              {(Lit_Other '=')} {(DQ (dietpi-update))} {(Lit_Other ']')}
                                            )
                                            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$command'))} 
                                              {(Lit_Other '=')} {(DQ (dietpi-morsecode))} {(Lit_Other ']')}
                                            )
                                          ]
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(-e)} {(DQ )})
                                    (C {(read)} {(-p)} {(DQ (' - Press any key to exit....'))})
                                  ]
                                  spids: [16777215 903]
                                )
                              ]
                              spids: [16777215 925]
                            )
                          ]
                          spids: [16777215 726]
                        )
                      ]
                      spids: [16777215 929]
                    )
                  ]
                  spids: [16777215 705]
                )
              ]
              else_action: [
                (C {(whiptail)} {(--title)} {(DQ ('Exit ') ($ VSub_Name '$PROGRAM_NAME') ('?'))} 
                  {(--yesno)} {(DQ ('Exit ') ($ VSub_Name '$PROGRAM_NAME') ('?'))} {(--backtitle)} {(DQ ($ VSub_Name '$PROGRAM_NAME'))} 
                  {(--yes-button)} {(DQ (Ok))} {(--no-button)} {(DQ (Back))} {(--defaultno)} {(9)} {(55)}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:CHOICE)
                      op: Equal
                      rhs: {($ VSub_QMark '$?')}
                      spids: [984]
                    )
                  ]
                  spids: [984]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_DEqual
                                  left: (ArithWord w:{($ VSub_Name '$CHOICE')})
                                  right: (ArithWord w:{(Lit_Digits 0)})
                                )
                              spids: [990 999]
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:TARGETMENUID)
                              op: Equal
                              rhs: {(-1)}
                              spids: [1006]
                            )
                          ]
                          spids: [1006]
                        )
                      ]
                      spids: [16777215 1002]
                    )
                  ]
                  spids: [16777215 1011]
                )
              ]
              spids: [937 1015]
            )
          ]
          spids: [132]
        )
      spids: [129 132]
    )
    (WhileUntil
      keyword: <KW_While while>
      cond: [
        (Sentence
          child: 
            (DParen
              child: 
                (ArithBinary
                  op_id: Arith_Great
                  left: (ArithWord w:{($ VSub_Name '$TARGETMENUID')})
                  right: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)}))
                )
              spids: [1042 1052]
            )
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (C {(clear)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithWord w:{($ VSub_Name '$TARGETMENUID')})
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                          spids: [1069 1078]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(Menu_Main)})]
                  spids: [16777215 1081]
                )
              ]
              spids: [16777215 1088]
            )
          ]
          spids: [1055 1092]
        )
    )
    (ControlFlow token:<ControlFlow_Exit exit>)
  ]
  spids: [3]
)