(BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:AVAILABLE_OPTIONS) op: assign_op.Equal rhs: { (SQ <'\n'> <' - start/stop/restart/status (all services, known to DietPi)\n'> <' - start/stop/restart servicename (single service, SystemD)\n'> <' - systemd_controlled/dietpi_controlled (all services, known to DietPi)\n'> <' - enable/disable servicename (single service, SystemD)\n'> <' - enable/disable all (all services, known to DietPi)\n'> <' - mask/unmask servicename (single service, SystemD)'> ) } spids: [58] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INPUT_MODE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [75] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INPUT_S2) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [81] ) ] ) (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Services>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aSERVICE_NAME) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <cron>)} {(SQ <transmission-daemon>)} {(SQ <proftpd>)} {(SQ <smbd>)} {(SQ <nmbd>)} {(SQ <nfs-kernel-server>)} {(SQ <vsftpd>)} {(SQ <apache2>)} {(SQ <nginx>)} {(SQ <lighttpd>)} {(SQ <php5-fpm>)} {(SQ <php7.0-fpm>)} {(SQ <mysql>)} {(SQ <mpd>)} {(SQ <ympd>)} {(SQ <minidlna>)} {(SQ <noip2>)} {(SQ <grasshopper>)} {(SQ <dnsmasq>)} {(SQ <pihole-FTL>)} {(SQ <subsonic>)} {(SQ <webiopi>)} {(SQ <haproxy>)} {(SQ <fail2ban>)} {(SQ <openvpn>)} {(SQ <isc-dhcp-server>)} {(SQ <hostapd>)} {(SQ <avahi-daemon>)} {(SQ <shairport-sync>)} {(SQ <squeezelite>)} {(SQ <mopidy>)} {(SQ <redis-server>)} {(SQ <emonhub>)} {(SQ <netdata>)} {(SQ <mumble-server>)} {(SQ <emby-server>)} {(SQ <plexmediaserver>)} {(SQ <cuberite>)} {(SQ <supervisor>)} {(SQ <gogs>)} {(SQ <qbittorrent>)} {(SQ <syncthing>)} {(SQ <syncthing-inotify>)} {(SQ <rtorrent>)} {(SQ <urbackupsrv>)} {(SQ <sickrage>)} {(SQ <roonbridge>)} {(SQ <mosquitto>)} {(SQ <networkaudiod>)} {(SQ <node-red>)} {(SQ <tomcat8>)} {(SQ <rpimonitor>)} {(SQ <openmediavault-engined>)} {(SQ <blynkserver>)} {(SQ <aria2>)} {(SQ <yacy>)} {(SQ <tonido>)} {(SQ <icecast2>)} {(SQ <darkice>)} {(SQ <motioneye>)} {(SQ <cups>)} {(SQ <cloudprintd>)} {(SQ <virtualhere>)} {(SQ <sabnzbd>)} {(SQ <spotify-connect-web>)} {(SQ <couchpotato>)} {(SQ <koel>)} {(SQ <sonarr>)} {(SQ <radarr>)} {(SQ <plexpy>)} {(SQ <jackett>)} {(SQ <nzbget>)} {(SQ <octoprint>)} {(SQ <roonserver>)} {(SQ <htpc-manager>)} {(SQ <home-assistant>)} {(SQ <openbazaar>)} {(SQ <docker>)} {(SQ <bdd>)} {(SQ <minio>)} {(SQ <gmrender>)} {(SQ <nukkit>)} {(SQ <gitea>)} {(SQ <pi-spc>)} {(SQ <raspotify>)} {(SQ <voice-recognizer>)} {(SQ <alsa-init>)} ] ) } spids: [113] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_INCLUDE_SERVICES) op: assign_op.Equal rhs: {(SQ <'/DietPi/dietpi/.dietpi-services_include'>)} spids: [572] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_SERVICES'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } spids: [606] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aSERVICE_NAME index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$line'))} spids: [616] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_SERVICES'))} ) ] ) ] spids: [578 591] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aSERVICE_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [645] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<0>} spids: [677] ) ] ) ] ) ) (command.ShFunction name: Populate_Available_Array body: (BraceGroup children: [ (command.Pipeline children: [ (C {<dpkg>} {<--get-selections>}) (command.Simple words: [{<awk>} {(SQ <'{print $1}'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))} ) ] do_fork: T ) ] negated: F ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/systemd/system/'> (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <.service> } {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-f>} {<'/lib/systemd/system/'> (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <.service> } {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<1>} spids: [796] ) ] ) ] spids: [756 792] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/init.d/'> (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<1>} spids: [826] ) ] ) ] spids: [805 822] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<grep>} {<-ci>} {<-m1>} { (DQ <'^'> (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_Dollar '$'> ) } {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))} ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<1>} spids: [874] ) ] ) ] spids: [839 870] ) ] ) ] ) ) ] ) ) (command.ShFunction name: Print_Status 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_DPipe left: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Number '$3')} right: {<Id.Lit_Digits 0>} ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Number '$3')} right: {<Id.Lit_Digits 5>} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ ($ Id.VSub_Number '$1') <' : '> ($ Id.VSub_Number '$2'))} ) ] spids: [926 948] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ ($ Id.VSub_Number '$1') <' : '> ($ Id.VSub_Number '$2'))} ) ] ) ] ) ) (command.ShFunction name: Set_Running_State body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'target_state='> (DQ ($ Id.VSub_Number '$1'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<0>} spids: [1028] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_FP) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [1032] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_NAME) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [1037] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <BruteFIR>)} spids: [1042] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/brutefir.service'>)} spids: [1051] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike index> ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <JackD>)} spids: [1068] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/jackd.service'>)} spids: [1077] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike index> ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <Jconvolver>)} spids: [1094] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/jconvolver.service'>)} spids: [1103] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike index> ) ) terminator: <Id.Op_Semi _> ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_FP> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) (command.Simple words: [ { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_FP> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {($ Id.VSub_DollarName '$target_state')} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName '$target_state')} { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {($ Id.VSub_QMark '$?')} ) ] spids: [1150 1166] ) ] ) ] ) ) (C {<unset>} {<aDIETPISERVICE_NAME>}) (C {<unset>} {<aDIETPISERVICE_FP>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aALLO_EXCLUDED_SERVICES_DURING_STOP) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <apache2>)} {(SQ <nginx>)} {(SQ <lighttpd>)} {(SQ <php5-fpm>)} {(SQ <php7.0-fpm>)} {(SQ <mysql>)} {(SQ <avahi-daemon>)} ] ) } spids: [1241] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-d>} {<'/var/www/allo'>} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$target_state'))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike j> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike j> right: { (braced_var_sub token: <Id.VSub_Name aALLO_EXCLUDED_SERVICES_DURING_STOP> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike j> ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } {<Id.Lit_Equals '='>} { (DQ (braced_var_sub token: <Id.VSub_Name aALLO_EXCLUDED_SERVICES_DURING_STOP > bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$j')} ) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aSERVICE_AVAILABLE index: {($ Id.VSub_DollarName '$i')} ) op: assign_op.Equal rhs: {<0>} spids: [1420] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [1389 1416] ) ] ) ] ) ) ] spids: [1329 1356] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub token: <Id.VSub_Name aSERVICE_AVAILABLE> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) (command.Simple words: [ {<systemctl>} {($ Id.VSub_DollarName '$target_state')} { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName '$target_state')} { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {($ Id.VSub_QMark '$?')} ) ] spids: [1452 1471] ) ] ) ] ) ) (C {<unset>} {<aALLO_EXCLUDED_SERVICES_DURING_STOP>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:index) op: assign_op.Equal rhs: {<0>} spids: [1552] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_FP) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [1556] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_NAME) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [1561] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <RaspimJpeg>)} spids: [1566] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/raspimjpeg.service'>)} spids: [1575] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike index> ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <Deluge>)} spids: [1592] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/deluge.service'>)} spids: [1601] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike index> ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_NAME index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <'SqueezeBox Server'>)} spids: [1618] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: aDIETPISERVICE_FP index: {($ Id.VSub_DollarName '$index')} ) op: assign_op.Equal rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/squeezeboxserver.service'>)} spids: [1627] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike index> ) ) terminator: <Id.Op_Semi _> ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_FP> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) (command.Simple words: [ { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_FP> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {($ Id.VSub_DollarName '$target_state')} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName '$target_state')} { (braced_var_sub token: <Id.VSub_Name aDIETPISERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {($ Id.VSub_QMark '$?')} ) ] spids: [1674 1690] ) ] ) ] ) ) (C {<unset>} {<aDIETPISERVICE_NAME>}) (C {<unset>} {<aDIETPISERVICE_FP>}) (C {<echo>} {<-e>} {(DQ )}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$target_state'))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$target_state'))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-process_tool'>} {<1>})] spids: [1774 1808] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.dietpi-services_installed'>)} spids: [1826] ) ] ) (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Services>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))}) (C {<Populate_Available_Array>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(SQ <dietpi_controlled>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(SQ <systemd_controlled>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD) op: assign_op.Equal rhs: {(SQ <disable>)} spids: [1915] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <systemd_controlled>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD) op: assign_op.Equal rhs: {(SQ <enable>)} spids: [1943] ) ] ) ] spids: [1922 1939] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup 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: { (braced_var_sub token: <Id.VSub_Name aSERVICE_AVAILABLE> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<-2>} { (DQ (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) (command.Simple words: [ {<systemctl>} {($ Id.VSub_DollarName '$SYSTEMD_CMD')} { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<Print_Status>} {($ Id.VSub_DollarName '$INPUT_MODE')} { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } {($ Id.VSub_QMark '$?')} ) ] spids: [1987 2006] ) ] ) ] ) ) (command.Simple words: [{<systemctl>} {<daemon-reload>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [1877 1911] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <mask>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD) op: assign_op.Equal rhs: {(SQ <mask>)} spids: [2168] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD) op: assign_op.Equal rhs: {(SQ <unmask>)} spids: [2212] ) ] ) ] spids: [2174 2208] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_S2'))} {<Id.Lit_Equals '='>} {(SQ <all>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <mask>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {<-e>} {(DQ )}) (C {<Set_Running_State>} {<stop>})] spids: [2248 2282] ) ] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub token: <Id.VSub_Name aSERVICE_AVAILABLE> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> ($ Id.VSub_DollarName '$INPUT_S2') <': '> (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) (C {<systemctl>} {($ Id.VSub_DollarName '$SYSTEMD_CMD')} { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) ] spids: [2333 2348] ) ] ) ] ) ) ] spids: [2227 2244] ) ] else_action: [ (C {<systemctl>} {<stop>} {($ Id.VSub_DollarName '$INPUT_S2')}) (C {<systemctl>} {($ Id.VSub_DollarName '$SYSTEMD_CMD')} {($ Id.VSub_DollarName '$INPUT_S2')} ) (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: [ (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> ($ Id.VSub_DollarName '$INPUT_S2') ) } ) ] spids: [2416 2430] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<1>} { (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> ($ Id.VSub_DollarName '$INPUT_S2') ) } ) ] ) ] ) (command.Simple words: [{<systemctl>} {<daemon-reload>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {<-e>} {(DQ )}) (C {<Set_Running_State>} {<start>})] spids: [2480 2514] ) ] ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [2092 2160] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <status>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup 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: { (braced_var_sub token: <Id.VSub_Name aSERVICE_AVAILABLE> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STATUS) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <Id.Lit_BadBackslash '\\'> <t> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<systemctl>} {<status>} { (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) (C {<grep>} {<-m1>} {(SQ <Active>)}) (C {<cut>} {<-c12->}) ] negated: F ) ) ) } spids: [2630] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$STATUS'))} right: {<Id.Lit_Other .> <Id.Lit_Other '*'> (SQ <failed>) <Id.Lit_Other .> <Id.Lit_Other '*'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ ($ Id.VSub_DollarName '$STATUS'))}) (C {<systemctl>} {<status>} { (DQ (braced_var_sub token: <Id.VSub_Name aSERVICE_NAME> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } {<-l>} {<--no-pager>} ) ] spids: [2672 2693] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {(DQ ($ Id.VSub_DollarName '$STATUS'))} right: {<Id.Lit_Other .> <Id.Lit_Other '*'> (SQ <inactive>) <Id.Lit_Other .> <Id.Lit_Other '*'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ ($ Id.VSub_DollarName '$STATUS'))}) ] spids: [2725 2746] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ ($ Id.VSub_DollarName '$STATUS'))}) ] ) ] spids: [2607 2626] ) ] ) ] ) ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [2553 2570] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$INPUT_S2'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<systemctl>} {($ Id.VSub_DollarName '$INPUT_MODE')} {($ Id.VSub_DollarName '$INPUT_S2')} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (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: [ (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> ($ Id.VSub_DollarName '$INPUT_S2') ) } ) ] spids: [2890 2904] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<1>} { (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> ($ Id.VSub_DollarName '$INPUT_S2') ) } ) ] ) (C {<echo>} {<-e>} {(DQ )}) ] spids: [2862 2875] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => false,'>)} {<'/var/www/owncloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<G_RUN_CMD>} {<occ>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--on>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => false,'>)} {<'/var/www/nextcloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<G_RUN_CMD>} {<ncc>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--on>}) ] ) ] spids: [2961 2994] ) ] ) (C {<Set_Running_State>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => true,'>)} {<'/var/www/owncloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<G_RUN_CMD>} {<occ>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--off>}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<grep>} {<-q>} {(DQ <'\'maintenance\' => true,'>)} {<'/var/www/nextcloud/config/config.php'>} ] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<G_RUN_CMD>} {<ncc>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--off>}) ] ) ] spids: [3069 3102] ) ] ) ] ) ] spids: [2803 2854] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Invalid command'> <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'nAvailable commands:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$AVAILABLE_OPTIONS') <Id.Lit_BadBackslash '\\'> <n> ) } ) ] ) (C {<rm>} {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))}) (C {<unset>} {<aSERVICE_NAME>}) (C {<unset>} {<aSERVICE_AVAILABLE>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] )