(BraceGroup
  children: [
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:INPUT) op:assign_op.Equal rhs:{<0>} spids:[75])]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {($ Id.VSub_Number '$1')}
                          right: 
                            {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> 
                              <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'>
                            }
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INPUT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [102]
                )
              ]
            )
          ]
          spids: [79 99]
        )
      ]
    )
    (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>})
    (C {<G_CHECK_ROOT_USER>})
    (C {<G_CHECK_ROOTFS_RW>})
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Sync>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_BACKTITLE)
          op: assign_op.Equal
          rhs: {(SQ <DietPi-Sync>)}
          spids: [150]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [156]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CHOICE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [161]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPTION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [165]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TARGETMENUID)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [169]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [174]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <'Not available'>)}
          spids: [178]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [184]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <'Not available'>)}
          spids: [188]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [195]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <Disabled>)}
          spids: [200]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <Disabled>)}
          spids: [206]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT)
          op: assign_op.Equal
          rhs: {(SQ <Disabled>)}
          spids: [212]
        )
      ]
    )
    (command.ShFunction
      name: Menu_Main
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT)
                  op: assign_op.Equal
                  rhs: {(SQ <Disabled>)}
                  spids: [230]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$SYNC_DELETE_MODE')}
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT)
                          op: assign_op.Equal
                          rhs: {(SQ <Enabled>)}
                          spids: [254]
                        )
                      ]
                    )
                  ]
                  spids: [236 250]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT)
                  op: assign_op.Equal
                  rhs: {(SQ <Disabled>)}
                  spids: [265]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$SYNC_COMPRESSION')}
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT)
                          op: assign_op.Equal
                          rhs: {(SQ <Enabled>)}
                          spids: [289]
                        )
                      ]
                    )
                  ]
                  spids: [271 285]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT)
                  op: assign_op.Equal
                  rhs: {(SQ <Disabled>)}
                  spids: [300]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$SYNC_CRONDAILY')}
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT)
                          op: assign_op.Equal
                          rhs: {(SQ <Enabled>)}
                          spids: [324]
                        )
                      ]
                    )
                  ]
                  spids: [306 320]
                )
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'sync_last_completed='> 
                (SQ <'No previous sync found in target directory.'>)
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$FP_TARGET') <'/'> 
                                  ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:sync_last_completed)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<grep>} {(SQ <'^Sync completed'>)} 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$FP_TARGET') <'/'> 
                                            ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                                          )
                                        }
                                      )
                                      (C {<tail>} {<-1>})
                                      (C {<awk>} {(SQ <'{print $3}'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [362]
                        )
                      ]
                    )
                  ]
                  spids: [343 358]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <DietPi-Sync>)}
                  spids: [397]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--title>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                              {<--menu>}
                              {
                                (DQ <'Source location:'> <Id.Lit_BadBackslash '\\'> <'n  '> 
                                  ($ Id.VSub_DollarName '$FP_SOURCE') <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nTarget location:'> 
                                  <Id.Lit_BadBackslash '\\'> <'n  '> ($ Id.VSub_DollarName '$FP_TARGET') <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                                  <'nMost recent successful sync date:'> <Id.Lit_BadBackslash '\\'> <'n  '> ($ Id.VSub_DollarName '$sync_last_completed')
                                )
                              }
                              {<--cancel-button>}
                              {(DQ <Exit>)}
                              {<--backtitle>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                              {<23>}
                              {<73>}
                              {<8>}
                              {(DQ <Help>)}
                              {(DQ <'What does DietPi-Sync do?'>)}
                              {(DQ <'Source Location'>)}
                              {(DQ <'Change the Source directory.'>)}
                              {(DQ <'Target Location'>)}
                              {(DQ <'Change the Target directory.'>)}
                              {(DQ <'Delete Mode'>)}
                              {(DQ ($ Id.VSub_DollarName '$SYNC_MODE_TEXT'))}
                              {(DQ <Compression>)}
                              {(DQ ($ Id.VSub_DollarName '$SYNC_COMPRESSION_TEXT'))}
                              {(DQ <'Sync: Daily'>)}
                              {(DQ ($ Id.VSub_DollarName '$SYNC_CRONDAILY_TEXT'))}
                              {(DQ <'Sync: Dry Run'>)}
                              {(DQ <'Run a test Sync without modifying any data.'>)}
                              {(DQ <'Sync: Now'>)}
                              {(DQ <'Sync the Source location to the Target location.'>)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [403]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [546]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ <'Source Location'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<2>}
                                  spids: [584]
                                )
                              ]
                            )
                          ]
                          spids: [577 580 589 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Target Location'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [600]
                                )
                              ]
                            )
                          ]
                          spids: [593 596 605 -1]
                        )
                        (case_arm
                          pat_list: [{<Help>}]
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <'DietPi-Sync Help'>)} {<--msgbox>} 
                              {
                                (DQ 
                                  <
'DietPi-Sync is a program that allows you to duplicate a directory from one location (Source) to another (Target).'
                                  > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                                  <
'nFor example: If we want to duplicate (sync) the data on our external USB HDD to another location, we simply select the USB HDD as the source, then, select a target location. The target location can be anything from a networked samba fileserver, or even a FTP server.'
                                  > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                                  <
'nIf you would like to test a sync without modifiying any data, simply select Dry Run.'
                                  > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nMore information:'> 
                                  <Id.Lit_BadBackslash '\\'> <'n - http://dietpi.com/phpbb/viewtopic.php?f=8&t=5&p=256#p256'>
                                )
                              } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<19>} {<75>}
                            )
                          ]
                          spids: [609 610 654 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Delete Mode'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<3>}
                                  spids: [665]
                                )
                              ]
                            )
                          ]
                          spids: [658 661 670 -1]
                        )
                        (case_arm
                          pat_list: [{<Compression>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<4>}
                                  spids: [679]
                                )
                              ]
                            )
                          ]
                          spids: [674 675 684 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Sync: Daily'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                                  op: assign_op.Equal
                                  rhs: {<5>}
                                  spids: [695]
                                )
                              ]
                            )
                          ]
                          spids: [688 691 700 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Sync: Dry Run'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                                  op: assign_op.Equal
                                  rhs: {(SQ <' Test Dry Run Sync? '>)}
                                  spids: [711]
                                )
                              ]
                            )
                            (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} 
                              {<--yesno>} 
                              {
                                (DQ <'Source location:'> <Id.Lit_BadBackslash '\\'> <n> 
                                  ($ Id.VSub_DollarName '$FP_SOURCE') <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nTarget location:'> 
                                  <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$FP_TARGET') <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                                  <'nThis is a Dry Run for testing. No data will be modified.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'>
                                )
                              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<16>} {<72>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CHOICE)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [776]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                                  right: {<Id.Lit_Digits 0>}
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [798]
                                        )
                                      ]
                                    )
                                    (C {<Run_Sync>})
                                  ]
                                  spids: [780 794]
                                )
                              ]
                            )
                          ]
                          spids: [704 707 810 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Sync: Now'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                                  op: assign_op.Equal
                                  rhs: {(SQ <' Start Sync? '>)}
                                  spids: [821]
                                )
                              ]
                            )
                            (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} 
                              {<--yesno>} 
                              {
                                (DQ <'Source location:'> <Id.Lit_BadBackslash '\\'> <n> 
                                  ($ Id.VSub_DollarName '$FP_SOURCE') <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nTarget location:'> 
                                  <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$FP_TARGET') <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                                  <
'nA copy of all the files and folders inside your Source location, will be created at the Target location.'
                                  > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'>
                                )
                              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<16>} {<72>}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CHOICE)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [886]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                                  right: {<Id.Lit_Digits 0>}
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN)
                                          op: assign_op.Equal
                                          rhs: {<0>}
                                          spids: [908]
                                        )
                                      ]
                                    )
                                    (C {<Run_Sync>})
                                  ]
                                  spids: [890 904]
                                )
                              ]
                            )
                          ]
                          spids: [814 817 920 -1]
                        )
                      ]
                    )
                  ]
                  spids: [550 564]
                )
              ]
              else_action: [(C {<Menu_Exit>})]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Exit
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Exit DietPi-Sync? '>)}
                  spids: [951]
                )
              ]
            )
            (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--yesno>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<10>} {<50>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [996]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                          op: assign_op.Equal
                          rhs: {<-1>}
                          spids: [1023]
                        )
                      ]
                    )
                  ]
                  spids: [1005 1019]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_Directories
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'current_directory='> (DQ ($ Id.VSub_DollarName '$FP_TARGET'))}
            )
            (C {<local>} {<Id.Lit_VarLike 'current_mode_text='> (DQ <Target>)})
            (C {<local>} 
              {<Id.Lit_VarLike 'whip_description_text='> 
                (DQ <'Please select the '> ($ Id.VSub_DollarName '$current_mode_text') <' location.'> 
                  <Id.Lit_BadBackslash '\\'> <'nA copy of all the files and folders in the Source location will be created here.'> 
                  <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nCurrent Target location:'> <Id.Lit_BadBackslash '\\'> <n> 
                  ($ Id.VSub_DollarName '$FP_TARGET')
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <'Select your Sync Target location'>)}
                  spids: [1091]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                  right: {<Id.Lit_Digits 2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:current_directory)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$FP_SOURCE'))}
                          spids: [1115]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:current_mode_text)
                          op: assign_op.Equal
                          rhs: {(DQ <Source>)}
                          spids: [1121]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:whip_description_text)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Please select the '> ($ Id.VSub_DollarName '$current_mode_text') 
                                <' location.'> <Id.Lit_BadBackslash '\\'> 
                                <
'nA copy of all the files and folder in this Source location, will be created at the Target location.'
                                > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nCurrent Source location:'> 
                                <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$FP_SOURCE')
                              )
                            }
                          spids: [1127]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                          op: assign_op.Equal
                          rhs: {(SQ <'Select your Sync Source location'>)}
                          spids: [1144]
                        )
                      ]
                    )
                  ]
                  spids: [1097 1111]
                )
              ]
            )
            (C {<Check_Available_DietPi_Mounts>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--title>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                              {<--menu>}
                              {(DQ ($ Id.VSub_DollarName '$whip_description_text'))}
                              {<--cancel-button>}
                              {(DQ <Back>)}
                              {<--backtitle>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                              {<17>}
                              {<75>}
                              {<4>}
                              {(DQ <Manual>)}
                              {
                                (DQ <'Manually type your '> 
                                  ($ Id.VSub_DollarName '$current_mode_text') <' directory.'>
                                )
                              }
                              {(DQ <List>)}
                              {(DQ <'Select from a list of available mounts/drives'>)}
                              {(DQ <'Samba Client'>)}
                              {(DQ ($ Id.VSub_DollarName '$SAMBA_MOUNT_TEXT'))}
                              {(DQ <'FTP Client'>)}
                              {(DQ ($ Id.VSub_DollarName '$FTP_MOUNT_TEXT'))}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [1159]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1246]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<List>}]
                          action: [
                            (C {<'/DietPi/dietpi/dietpi-drive_manager'>} {<1>})
                            (C {<local>} 
                              {<Id.Lit_VarLike 'return_value='> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<cat>} {<'/tmp/dietpi-drive_manager_selmnt'>})
                                )
                              }
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName '$return_value'))} {<Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:return_value)
                                          op: assign_op.Equal
                                          rhs: {(SQ <'/mnt'>)}
                                          spids: [1321]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1300 1317]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                  right: {<Id.Lit_Digits 2>}
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$return_value'))}
                                          spids: [1350]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1332 1346]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                      op: assign_op.Equal
                                      rhs: 
                                        {(DQ ($ Id.VSub_DollarName '$return_value') <'/dietpi-sync'>)}
                                      spids: [1361]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1279 1280 1373 -1]
                        )
                        (case_arm
                          pat_list: [{<Manual>}]
                          action: [(C {<Input_User_Directory>})]
                          spids: [1377 1378 1384 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'Samba Client'>)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: 
                                                    {($ Id.VSub_DollarName '$SAMBA_MOUNT_AVAILABLE')}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DParen
                                                      child: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_DEqual
                                                          left: 
                                                            {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                          right: {<Id.Lit_Digits 2>}
                                                        )
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT'))}
                                                  spids: [1429]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1411 1425]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT') 
                                                    <'/dietpi-sync'>
                                                  )
                                                }
                                              spids: [1440]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1393 1407]
                                )
                              ]
                              else_action: [
                                (C {<Prompt_Setup_Samba_Mount>})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.DParen
                                                  child: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_DEqual
                                                      left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                      right: {<Id.Lit_Digits 2>}
                                                    )
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                              spids: [1477]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1459 1473]
                                    )
                                  ]
                                  else_action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                          spids: [1488]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1387 1390 1503 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'FTP Client'>)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: 
                                                    {($ Id.VSub_DollarName '$FTP_MOUNT_AVAILABLE')}
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.DParen
                                                      child: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_DEqual
                                                          left: 
                                                            {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                          right: {<Id.Lit_Digits 2>}
                                                        )
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName '$FP_FTP_MOUNT'))}
                                                  spids: [1549]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1531 1545]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName '$FP_FTP_MOUNT') 
                                                    <'/dietpi-sync'>
                                                  )
                                                }
                                              spids: [1560]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1513 1527]
                                )
                              ]
                              else_action: [
                                (C {<Prompt_Setup_FTP_Mount>})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.DParen
                                                  child: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_DEqual
                                                      left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                                      right: {<Id.Lit_Digits 2>}
                                                    )
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                              spids: [1597]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1579 1593]
                                    )
                                  ]
                                  else_action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))}
                                          spids: [1608]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1507 1510 1623 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1251 1265]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [1639]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_Sync_Delete_Mode
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Sync Delete Mode '>)}
                  spids: [1663]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--title>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                              {<--menu>}
                              {
                                (DQ <'Please select the Sync delete mode.'> <Id.Lit_BadBackslash '\\'> 
                                  <n> <Id.Lit_BadBackslash '\\'> <'nDisabled: (safe)'> <Id.Lit_BadBackslash '\\'> 
                                  <
'nIf files and folders exist in the Target location, that are not in the Source, they will be left alone.'
                                  > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                                  <'nEnabled: (WARNING, if in doubt, DO NOT enable)'> <Id.Lit_BadBackslash '\\'> 
                                  <
'nAn exact copy of the Source location will be created at the Target location. If files are in the Target location that dont exist in the Source, they will be DELETED.'
                                  >
                                )
                              }
                              {<--cancel-button>}
                              {(DQ <Back>)}
                              {<--default-item>}
                              {(DQ ($ Id.VSub_DollarName '$SYNC_MODE_TEXT'))}
                              {<--backtitle>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                              {<19>}
                              {<75>}
                              {<2>}
                              {(DQ <Disabled>)}
                              {(DQ <'Ignores data that exists at Target Location and not Source.'>)}
                              {(DQ <Enabled>)}
                              {(DQ <'Deletes data at Target location if not in Source Location.'>)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [1669]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1752]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<Disabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [1790]
                                )
                              ]
                            )
                          ]
                          spids: [1785 1786 1795 -1]
                        )
                        (case_arm
                          pat_list: [{<Enabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [1804]
                                )
                              ]
                            )
                          ]
                          spids: [1799 1800 1809 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1757 1771]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1825]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_Compression
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Sync Compression Mode '>)}
                  spids: [1845]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--title>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                              {<--menu>}
                              {
                                (DQ <'Please select the compression mode.'> <Id.Lit_BadBackslash '\\'> 
                                  <n> <Id.Lit_BadBackslash '\\'> <'nDisabled:'> <Id.Lit_BadBackslash '\\'> 
                                  <'nNo compression will be used during data transfer.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nEnabled:'> <Id.Lit_BadBackslash '\\'> 
                                  <
'nData will be compressed when its being transfered. Useful for slow connections, however, its CPU intensive.'
                                  >
                                )
                              }
                              {<--cancel-button>}
                              {(DQ <Back>)}
                              {<--default-item>}
                              {(DQ ($ Id.VSub_DollarName '$SYNC_COMPRESSION_TEXT'))}
                              {<--backtitle>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                              {<17>}
                              {<75>}
                              {<2>}
                              {(DQ <Disabled>)}
                              {(DQ <'Transfer data in its original state.'>)}
                              {(DQ <Enabled>)}
                              {(DQ <'Compress the data during transfer.'>)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [1851]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1934]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<Disabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [1972]
                                )
                              ]
                            )
                          ]
                          spids: [1967 1968 1977 -1]
                        )
                        (case_arm
                          pat_list: [{<Enabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [1986]
                                )
                              ]
                            )
                          ]
                          spids: [1981 1982 1991 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1939 1953]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [2007]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Menu_Set_CronDaily
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
                  op: assign_op.Equal
                  rhs: {(SQ <' Sync Cron Daily '>)}
                  spids: [2027]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--title>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                              {<--menu>}
                              {
                                (DQ <'Disabled:'> <Id.Lit_BadBackslash '\\'> 
                                  <'nThe user must manually sync using dietpi-sync.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nEnabled:'> <Id.Lit_BadBackslash '\\'> 
                                  <
'nA cron job will be created that automatically runs dietpi-sync, once a day.'
                                  > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'n(NOTICE):'> <Id.Lit_BadBackslash '\\'> 
                                  <
'nBefore enabling this feature, please run a test sync (Dry Run) to verify what will happen.'
                                  >
                                )
                              }
                              {<--cancel-button>}
                              {(DQ <Back>)}
                              {<--default-item>}
                              {(DQ ($ Id.VSub_DollarName '$SYNC_CRONDAILY_TEXT'))}
                              {<--backtitle>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                              {<19>}
                              {<75>}
                              {<2>}
                              {(DQ <Disabled>)}
                              {(DQ <'Manual sync.'>)}
                              {(DQ <Enabled>)}
                              {(DQ <'Automatically sync once a day.'>)}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [2033]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [2118]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                      arms: [
                        (case_arm
                          pat_list: [{<Disabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [2156]
                                )
                              ]
                            )
                          ]
                          spids: [2151 2152 2161 -1]
                        )
                        (case_arm
                          pat_list: [{<Enabled>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [2170]
                                )
                              ]
                            )
                          ]
                          spids: [2165 2166 2175 -1]
                        )
                      ]
                    )
                  ]
                  spids: [2123 2137]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [2191]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Input_User_Directory
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OPTION)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    words: [
                                      {<whiptail>}
                                      {<--inputbox>}
                                      {
                                        (DQ <'Please enter the filepath to your Target directory. '> 
                                          <Id.Lit_BadBackslash '\\'> <'neg: /mnt/target'>
                                        )
                                      }
                                      {<8>}
                                      {<70>}
                                      {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))}
                                      {<--title>}
                                      {(DQ <'Manual sync directory'>)}
                                      {<--backtitle>}
                                      {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_GreatAnd '3>&'>
                                        loc: (redir_loc.Fd fd:3)
                                        arg: {<1>}
                                      )
                                      (redir
                                        op: <Id.Redir_GreatAnd '1>&'>
                                        loc: (redir_loc.Fd fd:1)
                                        arg: {<2>}
                                      )
                                      (redir
                                        op: <Id.Redir_GreatAnd '2>&'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<3>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [2238]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CHOICE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [2281]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName '$CHOICE')}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FP_TARGET)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                                  spids: [2303]
                                )
                              ]
                            )
                          ]
                          spids: [2285 2299]
                        )
                      ]
                    )
                  ]
                  spids: [2220 2234]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                  right: {<Id.Lit_Digits 2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OPTION)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    words: [
                                      {<whiptail>}
                                      {<--inputbox>}
                                      {
                                        (DQ <'Please enter the filepath to your Source directory. '> 
                                          <Id.Lit_BadBackslash '\\'> <'neg: /mnt/source'>
                                        )
                                      }
                                      {<8>}
                                      {<70>}
                                      {(DQ ($ Id.VSub_DollarName '$FP_SOURCE'))}
                                      {<--title>}
                                      {(DQ <'Manual sync directory'>)}
                                      {<--backtitle>}
                                      {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_GreatAnd '3>&'>
                                        loc: (redir_loc.Fd fd:3)
                                        arg: {<1>}
                                      )
                                      (redir
                                        op: <Id.Redir_GreatAnd '1>&'>
                                        loc: (redir_loc.Fd fd:1)
                                        arg: {<2>}
                                      )
                                      (redir
                                        op: <Id.Redir_GreatAnd '2>&'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<3>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [2336]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:CHOICE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [2379]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName '$CHOICE')}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$OPTION'))}
                                  spids: [2401]
                                )
                              ]
                            )
                          ]
                          spids: [2383 2397]
                        )
                      ]
                    )
                  ]
                  spids: [2318 2332]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Prompt_Setup_Samba_Mount
      body: 
        (BraceGroup
          children: [
            (C {<whiptail>} {<--title>} {(DQ <'Not available. Setup Now?'>)} {<--yesno>} 
              {
                (DQ ($ Id.VSub_DollarName '$SAMBA_MOUNT_TEXT') <Id.Lit_BadBackslash '\\'> <n> 
                  <Id.Lit_BadBackslash '\\'> <'nWould you like to run DietPi-Config and setup your Samba Client Mount now?'>
                )
              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<11>} {<70>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [2470]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<'/DietPi/dietpi/dietpi-config'>} {<16>} {<1>})]
                  spids: [2474 2488]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Prompt_Setup_FTP_Mount
      body: 
        (BraceGroup
          children: [
            (C {<whiptail>} {<--title>} {(DQ <'Not available. Setup Now?'>)} {<--yesno>} 
              {
                (DQ ($ Id.VSub_DollarName '$FTP_MOUNT_TEXT') <Id.Lit_BadBackslash '\\'> <n> 
                  <Id.Lit_BadBackslash '\\'> <'nWould you like to run DietPi-Config and setup your FTP Client Mount now?'>
                )
              } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} 
              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<11>} {<70>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [2562]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$CHOICE')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<'/DietPi/dietpi/dietpi-config'>} {<16>} {<1>})]
                  spids: [2566 2580]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LOGFILE)
          op: assign_op.Equal
          rhs: {(SQ <'/var/log/dietpi-sync.log'>)}
          spids: [2620]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_SOURCE)
          op: assign_op.Equal
          rhs: {(SQ <'/mnt/Source'>)}
          spids: [2631]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_TARGET)
          op: assign_op.Equal
          rhs: {(SQ <'/mnt/Target'>)}
          spids: [2637]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_FTP_MOUNT)
          op: assign_op.Equal
          rhs: {(SQ <'/mnt/ftp_client'>)}
          spids: [2648]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_SAMBA_MOUNT)
          op: assign_op.Equal
          rhs: {(SQ <'/mnt/samba'>)}
          spids: [2654]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_STATS_FILENAME)
          op: assign_op.Equal
          rhs: {(SQ <.dietpi-sync_stats>)}
          spids: [2665]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_EXCLUDE_GLOBAL)
          op: assign_op.Equal
          rhs: {(SQ <'/tmp/.dietpi-sync_exclude'>)}
          spids: [2676]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_INCLUDE_GLOBAL)
          op: assign_op.Equal
          rhs: {(SQ <'/tmp/.dietpi-sync_include'>)}
          spids: [2682]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_EXCLUDE_USER)
          op: assign_op.Equal
          rhs: {(SQ <'/DietPi/dietpi/.dietpi-sync_exclude'>)}
          spids: [2688]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_INCLUDE_USER)
          op: assign_op.Equal
          rhs: {(SQ <'/DietPi/dietpi/.dietpi-sync_include'>)}
          spids: [2694]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [2705]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [2709]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [2713]
        )
      ]
    )
    (command.ShFunction
      name: Create_Exclude_File
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/boot/dietpi/*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/DietPi/*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/dev/*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/proc/*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/sys/*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/tmp/*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/run/*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$LOGFILE'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_USER'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_USER'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'/var/swap'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'*.tmp'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <Thumbs.db>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <desktop.ini>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'SyncToy*'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'System Volume Information'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_USER'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_USER'))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [3051 3064]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Create_Include_File
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ )}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_USER'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<cat>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_USER'))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [3141 3154]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Services_Stop
      body: (BraceGroup children:[(C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})])
    )
    (command.ShFunction
      name: Services_Start
      body: (BraceGroup children:[(C {<'/DietPi/dietpi/dietpi-services'>} {<start>})])
    )
    (command.ShFunction
      name: Banner_Start
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'mode='> (SQ <Sync>)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_DollarName '$SYNC_DRY_RUN')}
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:mode)
                          op: assign_op.Equal
                          rhs: {(SQ <'Dry Run'>)}
                          spids: [3247]
                        )
                      ]
                    )
                  ]
                  spids: [3229 3243]
                )
              ]
            )
            (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Sync>} {(DQ ($ Id.VSub_DollarName '$mode'))})
          ]
        )
    )
    (command.ShFunction
      name: Run_Sync
      body: 
        (BraceGroup
          children: [
            (C {<Banner_Start>})
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} 
                              {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <'Sync failed.'>)} {<--msgbox>} 
                              {
                                (DQ <'Unable to create Target directory '> 
                                  ($ Id.VSub_DollarName '$FP_TARGET')
                                )
                              } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<10>} {<60>}
                            )
                          ]
                          spids: [3323 3333]
                        )
                      ]
                    )
                  ]
                  spids: [3304 3319]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<ps>} {<aux>})
                                              (C {<grep>} {<-ci>} {<-m1>} {(DQ <'[r]sync'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ <'Sync failed: '> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)})
                            ) <'. Rsync is already running.'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: 
                            {
                              (DQ ($ Id.VSub_DollarName '$FP_TARGET') <'/'> 
                                ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                              )
                            }
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<whiptail>} {<--title>} {(DQ <'Sync Error'>)} {<--msgbox>} 
                              {(DQ <'A sync job could not be started as rsync is already running.'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                            )
                          ]
                          spids: [3437 3447]
                        )
                      ]
                    )
                  ]
                  spids: [3372 3402]
                )
              ]
              else_action: [
                (C {<Create_Exclude_File>})
                (C {<Create_Include_File>})
                (C {<local>} {<Id.Lit_VarLike 'rync_options='> (DQ <-a>)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:rync_options)
                      op: assign_op.PlusEqual
                      rhs: {(DQ <v>)}
                      spids: [3516]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:rync_options)
                      op: assign_op.PlusEqual
                      rhs: {(DQ <P>)}
                      spids: [3526]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:rync_options)
                      op: assign_op.PlusEqual
                      rhs: {(DQ <4>)}
                      spids: [3536]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName '$SYNC_COMPRESSION')}
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rync_options)
                              op: assign_op.PlusEqual
                              rhs: {(DQ <z>)}
                              spids: [3565]
                            )
                          ]
                        )
                      ]
                      spids: [3547 3561]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName '$SYNC_DRY_RUN')}
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rync_options)
                              op: assign_op.PlusEqual
                              rhs: {(DQ <n>)}
                              spids: [3598]
                            )
                          ]
                        )
                      ]
                      spids: [3580 3594]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName '$SYNC_DELETE_MODE')}
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rync_options)
                              op: assign_op.PlusEqual
                              rhs: {(DQ <' --delete'>)}
                              spids: [3631]
                            )
                          ]
                        )
                      ]
                      spids: [3613 3627]
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {<echo>}
                    {<-e>}
                    {
                      (DQ <'DietPi-Sync Log File.'> <Id.Lit_BadBackslash '\\'> <n> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<date>} 
                              {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <d-> <Id.Lit_Other '%'> <m-> 
                                <Id.Lit_Other '%'> <Y_> <Id.Lit_Other '%'> <H> <Id.Lit_Other '%'> <M>
                              }
                            )
                        ) <Id.Lit_BadBackslash '\\'> <'nSYNC_DRY_RUN='> ($ Id.VSub_DollarName '$SYNC_DRY_RUN') 
                        <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>
                      )
                    }
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$LOGFILE'))}
                    )
                  ]
                  do_fork: T
                )
                (C {<rsync>} {($ Id.VSub_DollarName '$rync_options')} 
                  {<--log-file> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$LOGFILE')} {<--exclude-from> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))} 
                  {<--include-from> <Id.Lit_Equals '='> 
                    (DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))
                  } {(DQ ($ Id.VSub_DollarName '$FP_SOURCE')) <'/'>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET')) <'/'>}
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_QMark '$?')}
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.Simple
                          words: [
                            {<echo>}
                            {<-e>}
                            {
                              (DQ <'Sync completed: '> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)})
                                )
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$FP_TARGET') <'/'> 
                                    ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                                  )
                                }
                            )
                          ]
                          do_fork: T
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.DParen
                                                  child: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_DEqual
                                                      left: {($ Id.VSub_DollarName '$SYNC_DRY_RUN')}
                                                      right: {<Id.Lit_Digits 0>}
                                                    )
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<whiptail>} {<--title>} {(DQ <'Sync completed'>)} 
                                          {<--msgbox>} 
                                          {
                                            (DQ ($ Id.VSub_DollarName '$FP_SOURCE') 
                                              <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nHas been synced to:'> <Id.Lit_BadBackslash '\\'> <n> 
                                              ($ Id.VSub_DollarName '$FP_TARGET') <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nLog file: '> 
                                              ($ Id.VSub_DollarName '$LOGFILE')
                                            )
                                          } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                        )
                                      ]
                                      spids: [3798 3812]
                                    )
                                  ]
                                  else_action: [
                                    (C {<whiptail>} {<--title>} {(DQ <'Dry Run Sync completed'>)} 
                                      {<--msgbox>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$FP_SOURCE') 
                                          <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nHas been synced with a Dry Run (NO modifications) to:'> 
                                          <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$FP_TARGET') <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> 
                                          <'nLog file: '> ($ Id.VSub_DollarName '$LOGFILE')
                                        )
                                      } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                    )
                                  ]
                                )
                              ]
                              spids: [3784 3794]
                            )
                          ]
                        )
                      ]
                      spids: [3736 3750]
                    )
                  ]
                  else_action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {<-e>}
                        {
                          (DQ <'Sync failed: '> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)})
                            )
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: 
                            {
                              (DQ ($ Id.VSub_DollarName '$FP_TARGET') <'/'> 
                                ($ Id.VSub_DollarName '$SYNC_STATS_FILENAME')
                              )
                            }
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: {($ Id.VSub_DollarName '$G_USER_INPUTS')}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_DEqual
                                                  left: {($ Id.VSub_DollarName '$SYNC_DRY_RUN')}
                                                  right: {<Id.Lit_Digits 0>}
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<whiptail>} {<--title>} {(DQ <'Sync failed'>)} {<--msgbox>} 
                                      {
                                        (DQ 
                                          <
'Your sync has failed. Please see the Log file for more information:'
                                          > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$LOGFILE')
                                        )
                                      } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                    )
                                  ]
                                  spids: [3956 3970]
                                )
                              ]
                              else_action: [
                                (C {<whiptail>} {<--title>} {(DQ <'Dry Run Sync failed'>)} {<--msgbox>} 
                                  {
                                    (DQ 
                                      <
'Your sync has failed. Please see the Log file for more information:'
                                      > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$LOGFILE')
                                    )
                                  } {<--backtitle>} {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))} {<13>} {<60>}
                                )
                              ]
                            )
                          ]
                          spids: [3942 3952]
                        )
                      ]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TARGETMENUID)
                      op: assign_op.Equal
                      rhs: {<0>}
                      spids: [4055]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Check_Install_PreReqs
      body: (BraceGroup children:[(C {<G_AG_CHECK_INSTALL_PREREQ>} {<rsync>})])
    )
    (command.ShFunction
      name: Check_Available_DietPi_Mounts
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'temp_file_mounts='> (DQ <'/tmp/.dietpi-sync_dietpi_mounts'>)})
            (command.Simple
              words: [{<df>} {<-h>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4116]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'Not mounted ('> ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT') 
                        <'). Select to setup.'>
                      )
                    }
                  spids: [4120]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<cat>} 
                                                {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))}
                                              )
                                              (C {<grep>} {<-ci>} {<-m1>} {(DQ <'/mnt/samba'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [4164]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Size: '> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<df>} {<-h>})
                                        (C {<grep>} {<'/mnt/samba'>})
                                        (C {<awk>} {(SQ <'{print $2}'>)})
                                      ]
                                      negated: F
                                    )
                                ) <'B | Available: '> 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<df>} {<-h>})
                                        (C {<grep>} {<'/mnt/samba'>})
                                        (C {<awk>} {(SQ <'{print $4}'>)})
                                      ]
                                      negated: F
                                    )
                                ) <B>
                              )
                            }
                          spids: [4168]
                        )
                      ]
                    )
                  ]
                  spids: [4128 4160]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4223]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'Not mounted ('> ($ Id.VSub_DollarName '$FP_FTP_MOUNT') 
                        <'). Select to setup.'>
                      )
                    }
                  spids: [4227]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<cat>} 
                                                {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))}
                                              )
                                              (C {<grep>} {<-ci>} {<-m1>} {(DQ <'/mnt/ftp_client'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [4271]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT)
                          op: assign_op.Equal
                          rhs: {(DQ <'Mounted and online.'>)}
                          spids: [4275]
                        )
                      ]
                    )
                  ]
                  spids: [4235 4267]
                )
              ]
            )
            (C {<rm>} {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_DIETPISYNC_SETTINGS)
          op: assign_op.Equal
          rhs: {(DQ <'/DietPi/dietpi/.dietpi-sync_settings'>)}
          spids: [4314]
        )
      ]
    )
    (command.ShFunction
      name: Write_Settings_File
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_SOURCE'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$FP_TARGET'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_DELETE_MODE'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_COMPRESSION'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$SYNC_CRONDAILY'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: Read_Settings_File
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-f>} 
                              {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'sed_index='> <1>})
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:FP_SOURCE)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} 
                                        {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                      )
                                  )
                                }
                              spids: [4450]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike sed_index>
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:FP_TARGET)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} 
                                        {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                      )
                                  )
                                }
                              spids: [4473]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike sed_index>
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} 
                                        {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                      )
                                  )
                                }
                              spids: [4496]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike sed_index>
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} 
                                        {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                      )
                                  )
                                }
                              spids: [4519]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike sed_index>
                        )
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName '$sed_index')) <p>} 
                                        {(DQ ($ Id.VSub_DollarName '$FP_DIETPISYNC_SETTINGS'))}
                                      )
                                  )
                                }
                              spids: [4542]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike sed_index>
                        )
                    )
                  ]
                  spids: [4427 4440]
                )
              ]
            )
          ]
        )
    )
    (C {<Check_Install_PreReqs>})
    (C {<Read_Settings_File>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$INPUT')}
                          right: {<Id.Lit_Digits 1>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<Run_Sync>})]
          spids: [4611 4625]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$INPUT')}
                          right: {<Id.Lit_Digits 0>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Great
                              left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                              right: 
                                (arith_expr.Unary
                                  op_id: Id.Node_UnaryMinus
                                  child: {<Id.Lit_Digits 1>}
                                )
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<clear>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<Menu_Main>})]
                          spids: [4682 4696]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                              right: {<Id.Lit_Digits 1>}
                                            )
                                        )
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DEqual
                                              left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                              right: {<Id.Lit_Digits 2>}
                                            )
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<Menu_Set_Directories>})]
                          spids: [4704 4732]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                          right: {<Id.Lit_Digits 3>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<Menu_Set_Sync_Delete_Mode>})]
                          spids: [4740 4754]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                          right: {<Id.Lit_Digits 4>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<Menu_Set_Compression>})]
                          spids: [4762 4776]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_DollarName '$TARGETMENUID')}
                                          right: {<Id.Lit_Digits 5>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<Menu_Set_CronDaily>})]
                          spids: [4784 4798]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<Write_Settings_File>})
          ]
          spids: [4641 4655]
        )
      ]
    )
    (command.Simple
      words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_GLOBAL'))}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {(DQ ($ Id.VSub_DollarName '$FP_EXCLUDE_GLOBAL'))}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)