(BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {<0>} spids: [75] ) ] redirects: [] ) (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 '$'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [102] ) ] redirects: [] ) ] spids: [79 99] ) ] else_action: [] redirects: [] ) (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Cloudshell>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_CLOUDSHELL_VERSION='> name: DIETPI_CLOUDSHELL_VERSION ) op: assign_op.Equal rhs: {<9>} spids: [139] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/dietpi-cloudshell'>)} spids: [148] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRAM_NAME='> name:PROGRAM_NAME) op: assign_op.Equal rhs: {(DQ <DietPi-Cloudshell>)} spids: [155] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_ACTIVE='> name: BLANK_SCREEN_ACTIVE ) op: assign_op.Equal rhs: {<0>} spids: [162] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED='> name: BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED ) op: assign_op.Equal rhs: {<0>} spids: [166] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_TIME_HOUR_START='> name: BLANK_SCREEN_TIME_HOUR_START ) op: assign_op.Equal rhs: {<0>} spids: [170] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_TIME_HOUR_END='> name: BLANK_SCREEN_TIME_HOUR_END ) op: assign_op.Equal rhs: {<0>} spids: [174] ) ] redirects: [] ) (command.ShFunction name: RUN_BLANK_SCREEN_AT_SPECIFIC_TIME body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'current_hour='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <-H>}) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: {($ Id.VSub_DollarName BLANK_SCREEN_ACTIVE)} ) redirects: [] ) 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 BLANK_SCREEN_TIME_HOUR_START)} right: {($ Id.VSub_DollarName current_hour)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<clear>}) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nScreen will be powered down in under 1 minute'> <Id.Lit_BadBackslash '\\'> <n> ) } ) (command.Simple words: [{<setterm>} {<--blank>} {<1>} {<--powersave>} {<on>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_ACTIVE='> name: BLANK_SCREEN_ACTIVE ) op: assign_op.Equal rhs: {<1>} spids: [275] ) ] redirects: [] ) ] spids: [223 237] ) ] else_action: [] redirects: [] ) ] spids: [207 219] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_END)} right: {($ Id.VSub_DollarName current_hour)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<setterm>} {<--blank>} {<poke>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<setterm>} {<--reset>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<setterm>} {<--blank>} {<0>} {<--powersave>} {<off>}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/tty1'>} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_ACTIVE='> name: BLANK_SCREEN_ACTIVE ) op: assign_op.Equal rhs: {<0>} spids: [339] ) ] redirects: [] ) ] spids: [287 301] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: BC_ADD_LEADING_ZERO body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'return_value='> ($ Id.VSub_Number 1)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name return_value> var_name: return_value suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } {<Id.Lit_Equals '='>} {(DQ <.>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'return_value='> name: return_value ) op: assign_op.Equal rhs: {(DQ <0> ($ Id.VSub_DollarName return_value))} spids: [408] ) ] redirects: [] ) ] spids: [382 405] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name return_value> var_name: return_value suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) right: <Id.Arith_RBrace _> ) ) } {<Id.Lit_Equals '='>} {(DQ <-.>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'return_value='> name: return_value ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName return_value))}) (C {<sed>} {(SQ <'s/^-./-0./'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [446] ) ] redirects: [] ) ] spids: [420 443] ) ] else_action: [] redirects: [] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName return_value))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: BYTE_PRINT_CONVERSION body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'return_value='> <0>}) (C {<local>} {<Id.Lit_VarLike 'decimal_count='> <1>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Digits 1048576>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'return_value='> name: return_value ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName decimal_count) <'; '> ($ Id.VSub_Number 1) <' / 1024'> ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' KB'> ) } spids: [536] ) ] redirects: [] ) ] spids: [515 529] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Digits 1073741824>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'return_value='> name: return_value ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName decimal_count) <'; '> ($ Id.VSub_Number 1) <' / 1024 / 1024'> ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' MB'> ) } spids: [586] ) ] redirects: [] ) ] spids: [565 579] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'return_value='> name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName decimal_count) <'; '> ($ Id.VSub_Number 1) <' / 1024 / 1024 / 1024'> ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' GB'> ) } spids: [622] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'return_value='> name:return_value) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BC_ADD_LEADING_ZERO>} {(DQ ($ Id.VSub_DollarName return_value))}) right: <Id.Eof_RParen _> ) } spids: [655] ) ] redirects: [] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName return_value))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: BIT_PRINT_CONVERSION body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'return_value='> <0>}) (C {<local>} {<Id.Lit_VarLike 'decimal_count='> <1>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Digits 1000000>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'return_value='> name: return_value ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName decimal_count) <'; '> ($ Id.VSub_Number 1) <' * 8 / 1000'> ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' Kbit'> ) } spids: [740] ) ] redirects: [] ) ] spids: [719 733] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Digits 1000000000>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'return_value='> name: return_value ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName decimal_count) <'; '> ($ Id.VSub_Number 1) <' * 8 / 1000 / 1000'> ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' Mbit'> ) } spids: [789] ) ] redirects: [] ) ] spids: [768 782] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'return_value='> name:return_value) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale='> ($ Id.VSub_DollarName decimal_count) <'; '> ($ Id.VSub_Number 1) <' * 8 / 1000 / 1000 / 1000'> ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' Gbit'> ) } spids: [824] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'return_value='> name:return_value) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BC_ADD_LEADING_ZERO>} {(DQ ($ Id.VSub_DollarName return_value))}) right: <Id.Eof_RParen _> ) } spids: [856] ) ] redirects: [] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName return_value))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Enable_Term_Options body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<setfont>} {<'/usr/share/consolefonts/Uni3-TerminusBold32x16'>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<tput>} {<lines>}) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 10>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<setfont>} {<'/usr/share/consolefonts/Uni3-TerminusBold24x12.psf'>})] spids: [904 922] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'C_RESET='> name:C_RESET) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'e[0m'>)} spids: [952] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'C_REVERSE='> name:C_REVERSE) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'e[7m'>)} spids: [959] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'C_BOLD='> name:C_BOLD) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'e[1m'>)} spids: [971] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aCOLOUR='> name:aCOLOUR) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Id.Lit_BadBackslash '\\'> <'e[39m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[31m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[32m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[33m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[34m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[35m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[36m'>)} {(DQ <Id.Lit_BadBackslash '\\'> <'e[93m'>)} ] ) } spids: [1015] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USER_COLOUR_INDEX='> name:USER_COLOUR_INDEX) op: assign_op.Equal rhs: {<3>} spids: [1075] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'C_PERCENT_GRAPH='> name:C_PERCENT_GRAPH) op: assign_op.Equal rhs: {<0>} spids: [1080] ) ] redirects: [] ) (command.ShFunction name: Percent_To_Graph body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'input_value='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<echo>} {($ Id.VSub_Number 1)}) (C {<cut>} {<-d.>} {<-f1>})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 100>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'input_value='> name: input_value ) op: assign_op.Equal rhs: {<100>} spids: [1144] ) ] redirects: [] ) ] spids: [1127 1141] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'input_value='> name: input_value ) op: assign_op.Equal rhs: {<0>} spids: [1165] ) ] redirects: [] ) ] spids: [1148 1162] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 95>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) <------WARNING-----> ($ Id.VSub_DollarName C_RESET) <']'> ) } spids: [1198] ) ] redirects: [] ) ] spids: [1181 1195] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 90>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) <-----------------> ($ Id.VSub_DollarName C_RESET) <'-]'> ) } spids: [1233] ) ] redirects: [] ) ] spids: [1216 1230] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 88>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) <----------------> ($ Id.VSub_DollarName C_RESET) <'--]'> ) } spids: [1268] ) ] redirects: [] ) ] spids: [1251 1265] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 82>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) <---------------> ($ Id.VSub_DollarName C_RESET) <'---]'> ) } spids: [1303] ) ] redirects: [] ) ] spids: [1286 1300] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 76>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <--------------> ($ Id.VSub_DollarName C_RESET) <'----]'> ) } spids: [1338] ) ] redirects: [] ) ] spids: [1321 1335] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 70>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <-------------> ($ Id.VSub_DollarName C_RESET) <'-----]'> ) } spids: [1373] ) ] redirects: [] ) ] spids: [1356 1370] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 64>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <------------> ($ Id.VSub_DollarName C_RESET) <'------]'> ) } spids: [1408] ) ] redirects: [] ) ] spids: [1391 1405] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 56>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <-----------> ($ Id.VSub_DollarName C_RESET) <'-------]'> ) } spids: [1443] ) ] redirects: [] ) ] spids: [1426 1440] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 50>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <----------> ($ Id.VSub_DollarName C_RESET) <'--------]'> ) } spids: [1478] ) ] redirects: [] ) ] spids: [1461 1475] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 44>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) <---------> ($ Id.VSub_DollarName C_RESET) <'---------]'> ) } spids: [1513] ) ] redirects: [] ) ] spids: [1496 1510] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 38>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <--------> ($ Id.VSub_DollarName C_RESET) <'----------]'> ) } spids: [1548] ) ] redirects: [] ) ] spids: [1531 1545] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 32>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <-------> ($ Id.VSub_DollarName C_RESET) <'-----------]'> ) } spids: [1583] ) ] redirects: [] ) ] spids: [1566 1580] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 26>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <------> ($ Id.VSub_DollarName C_RESET) <'------------]'> ) } spids: [1618] ) ] redirects: [] ) ] spids: [1601 1615] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 20>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <-----> ($ Id.VSub_DollarName C_RESET) <'-------------]'> ) } spids: [1653] ) ] redirects: [] ) ] spids: [1636 1650] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 15>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <----> ($ Id.VSub_DollarName C_RESET) <'--------------]'> ) } spids: [1688] ) ] redirects: [] ) ] spids: [1671 1685] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 10>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <---> ($ Id.VSub_DollarName C_RESET) <'---------------]'> ) } spids: [1723] ) ] redirects: [] ) ] spids: [1706 1720] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName input_value)} right: {<Id.Lit_Digits 5>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <--> ($ Id.VSub_DollarName C_RESET) <'----------------]'> ) } spids: [1758] ) ] redirects: [] ) ] spids: [1741 1755] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_PERCENT_GRAPH='> name: C_PERCENT_GRAPH ) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName input_value) <'% ['> ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <-> ($ Id.VSub_DollarName C_RESET) <'-----------------]'> ) } spids: [1779] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPERATURE_CONVERSION_VALUE='> name: TEMPERATURE_CONVERSION_VALUE ) op: assign_op.Equal rhs: {<0>} spids: [1817] ) ] redirects: [] ) (command.ShFunction name: Obtain_Temperature_Conversion body: (BraceGroup left: <Id.Lit_LBrace '{'> 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 TEMPERATURE_OUTPUT_TYPE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPERATURE_CONVERSION_VALUE='> name: TEMPERATURE_CONVERSION_VALUE ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<awk>} { (DQ <'BEGIN {printf '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'%.0f'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <','> ($ Id.VSub_DollarName TEMPERATURE_CONVERSION_VALUE) <' * 1.8 + 32'> ) <Id.Lit_RBrace '}'> } ) right: <Id.Eof_RParen _> ) } spids: [1845] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPERATURE_CONVERSION_VALUE+='> name: TEMPERATURE_CONVERSION_VALUE ) op: assign_op.PlusEqual rhs: {(DQ <'\'f'>)} spids: [1862] ) ] redirects: [] ) ] spids: [1828 1842] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPERATURE_CONVERSION_VALUE+='> name: TEMPERATURE_CONVERSION_VALUE ) op: assign_op.PlusEqual rhs: {(DQ <'\'c'>)} spids: [1871] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DATE_TIME='> name:DATE_TIME) op: assign_op.Equal rhs: {<0>} spids: [1885] ) ] redirects: [] ) (command.ShFunction name: Obtain_DATE_TIME body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DATE_TIME='> name:DATE_TIME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%a %x - %R'>)}) right: <Id.Eof_RParen _> ) } spids: [1896] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UPTIME='> name:UPTIME) op: assign_op.Equal rhs: {<0>} spids: [1912] ) ] redirects: [] ) (command.ShFunction name: Obtain_UPTIME body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'fSeconds='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<cat>} {<'/proc/uptime'>}) (C {<awk>} {(SQ <'{print $1}'>)})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'seconds='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name fSeconds> var_name: fSeconds suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) (C {<local>} {<Id.Lit_VarLike 'minutes='> <0>}) (C {<local>} {<Id.Lit_VarLike 'hours='> <0>}) (C {<local>} {<Id.Lit_VarLike 'days='> <0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName seconds)} right: {<Id.Lit_Digits 60>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike minutes) ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'seconds='> name:seconds) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName seconds)} right: {<Id.Lit_Digits 60>} ) ) } spids: [1996] ) ] redirects: [] ) ] ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName minutes)} right: {<Id.Lit_Digits 60>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike hours) ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'minutes='> name:minutes) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName minutes)} right: {<Id.Lit_Digits 60>} ) ) } spids: [2037] ) ] redirects: [] ) ] ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName hours)} right: {<Id.Lit_Digits 24>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike days) ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hours='> name:hours) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName hours)} right: {<Id.Lit_Digits 24>} ) ) } spids: [2078] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UPTIME='> name:UPTIME) op: assign_op.Equal rhs: { (DQ <'Uptime: '> ($ Id.VSub_DollarName days) <' Day, '> ($ Id.VSub_DollarName hours) <' Hour'> ) } spids: [2095] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_GOV='> name:CPU_GOV) op: assign_op.Equal rhs: {<0>} spids: [2114] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_TEMP='> name:CPU_TEMP) op: assign_op.Equal rhs: {<0>} spids: [2118] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'C_CPUTEMP='> name:C_CPUTEMP) op: assign_op.Equal rhs: {<0>} spids: [2122] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_FREQ_1='> name:CPU_FREQ_1) op: assign_op.Equal rhs: {<0>} spids: [2126] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_FREQ_2='> name:CPU_FREQ_2) op: assign_op.Equal rhs: {<0>} spids: [2130] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_USAGE='> name:CPU_USAGE) op: assign_op.Equal rhs: {<0>} spids: [2134] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_TOTALPROCESSES='> name:CPU_TOTALPROCESSES) op: assign_op.Equal rhs: {<0>} spids: [2138] ) ] redirects: [] ) (command.ShFunction name: Obtain_CPU body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CPU_TOTALPROCESSES='> name: CPU_TOTALPROCESSES ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<ps>} {<--ppid>} {<2>} {<-p>} {<2>} {<--deselect>}) (C {<wc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 2>} ) ) } spids: [2149] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_GOV='> name:CPU_GOV) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'>}) right: <Id.Eof_RParen _> ) } spids: [2183] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_TEMP='> name:CPU_TEMP) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<G_OBTAIN_CPU_TEMP>}) right: <Id.Eof_RParen _> ) } spids: [2191] ) ] redirects: [] ) (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_DollarName CPU_TEMP)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) 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_GreatEqual left: {($ Id.VSub_DollarName CPU_TEMP)} right: {<Id.Lit_Digits 65>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_CPUTEMP='> name: C_CPUTEMP ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) } spids: [2244] ) ] redirects: [] ) ] spids: [2226 2240] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName CPU_TEMP)} right: {<Id.Lit_Digits 50>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_CPUTEMP='> name: C_CPUTEMP ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 3>}) right: <Id.Right_DollarBrace '}'> ) } spids: [2272] ) ] redirects: [] ) ] spids: [2254 2268] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName CPU_TEMP)} right: {<Id.Lit_Digits 35>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_CPUTEMP='> name: C_CPUTEMP ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) } spids: [2300] ) ] redirects: [] ) ] spids: [2282 2296] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'C_CPUTEMP='> name: C_CPUTEMP ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 4>}) right: <Id.Right_DollarBrace '}'> ) } spids: [2314] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPERATURE_CONVERSION_VALUE='> name: TEMPERATURE_CONVERSION_VALUE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName CPU_TEMP)} spids: [2332] ) ] redirects: [] ) (C {<Obtain_Temperature_Conversion>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_TEMP='> name:CPU_TEMP) op: assign_op.Equal rhs: {($ Id.VSub_DollarName TEMPERATURE_CONVERSION_VALUE)} spids: [2339] ) ] redirects: [] ) ] spids: [2198 2218] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_FREQ_1='> name:CPU_FREQ_1) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq'>} ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1000>} ) ) } spids: [2348] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_FREQ_2='> name:CPU_FREQ_2) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [2365] ) ] redirects: [] ) (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 G_HW_MODEL)} right: {<Id.Lit_Digits 11>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_FREQ_2='> name:CPU_FREQ_2) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} { < '/sys/devices/system/cpu/cpu4/cpufreq/scaling_cur_freq' > } ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1000>} ) ) } spids: [2394] ) ] redirects: [] ) ] spids: [2376 2390] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_USAGE='> name:CPU_USAGE) op: assign_op.Equal rhs: {<0>} spids: [2416] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.cpu_usage'>)} spids: [2420] ) ] redirects: [] ) (command.Pipeline children: [ (C {<ps>} {<-axo>} {<Id.Lit_Other '%'> <cpu>}) (C {<sed>} {(SQ <1d>)}) (command.Simple words: [{<sed>} {(SQ <'s/ //'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_USAGE='> name:CPU_USAGE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale=1;'> ($ Id.VSub_DollarName CPU_USAGE) <' + '> ($ Id.VSub_DollarName line) ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [2474] ) ] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName FP_TEMP)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_USAGE='> name:CPU_USAGE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ <'scale=0;'> ($ Id.VSub_DollarName CPU_USAGE) <' / '> ($ Id.VSub_DollarName G_HW_CPU_CORES) ) } ) (C {<bc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [2508] ) ] redirects: [] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName CPU_USAGE)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CPU_USAGE='> name:CPU_USAGE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName C_PERCENT_GRAPH)} spids: [2551] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAX_STORAGE='> name:MAX_STORAGE) op: assign_op.Equal rhs: {<6>} spids: [2568] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STORAGE_TOTAL='> name:STORAGE_TOTAL) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [2572] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STORAGE_USED='> name:STORAGE_USED) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [2577] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STORAGE_FREE='> name:STORAGE_FREE) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [2582] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STORAGE_PERCENT='> name:STORAGE_PERCENT) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [2587] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STORAGE_PATH='> name:STORAGE_PATH) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [2592] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'STORAGE_NAME='> name:STORAGE_NAME) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [2597] ) ] redirects: [] ) (command.ShFunction name: Init_STORAGE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (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: {($ Id.VSub_DollarName MAX_STORAGE)} ) 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 left: <Id.Lit_ArrayLhsOpen 'STORAGE_TOTAL['> name: STORAGE_TOTAL index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'N/A'>)} spids: [2632] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_USED['> name: STORAGE_USED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'N/A'>)} spids: [2642] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_FREE['> name: STORAGE_FREE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'N/A'>)} spids: [2652] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_PERCENT['> name: STORAGE_PERCENT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <' Not installed'>)} spids: [2662] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_NAME['> name: STORAGE_NAME index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [2672] ) ] redirects: [] ) (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 i)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_PATH['> name: STORAGE_PATH index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'/'>)} spids: [2703] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_NAME['> name: STORAGE_NAME index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'Flash/RootFS Storage: '>)} spids: [2713] ) ] redirects: [] ) ] spids: [2685 2699] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_PATH['> name: STORAGE_PATH index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(DQ <'/mnt/usb_'> ($ Id.VSub_DollarName i))} spids: [2728] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_NAME['> name: STORAGE_NAME index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(DQ <'Storage '> ($ Id.VSub_DollarName i) <': '>)} spids: [2739] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Destroy_STORAGE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<unset>} {<STORAGE_TOTAL>}) (C {<unset>} {<STORAGE_USED>}) (C {<unset>} {<STORAGE_FREE>}) (C {<unset>} {<STORAGE_PERCENT>}) (C {<unset>} {<STORAGE_PATH>}) (C {<unset>} {<STORAGE_NAME>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Obtain_STORAGE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'index_start='> ($ Id.VSub_Number 1)}) (C {<local>} {<Id.Lit_VarLike 'index_end='> ($ Id.VSub_Number 2)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.df'>)} spids: [2830] ) ] redirects: [] ) (C {<rm>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}) (C {<local>} {<Id.Lit_VarLike 'df_failed='> <0>}) (command.Sentence child: (command.Simple words: [{<df>} {<-Ph>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName FP_TEMP)} ) ] more_env: [] do_fork: T ) terminator: <Id.Op_Amp _> ) (C {<local>} {<Id.Lit_VarLike 'pid='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<echo>} {($ Id.VSub_Bang '!')}) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'max_seconds='> <4>}) (C {<local>} {<Id.Lit_VarLike 'current_seconds='> <0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<ps>} {<aux>}) (C {<awk>} {(SQ <'{print $2}'>)}) (C {<grep>} {<-ci>} {<-m1>} {(DQ ($ Id.VSub_DollarName pid) <Id.Lit_Dollar '$'>)} ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) ] ) 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_GreatEqual left: {($ Id.VSub_DollarName current_seconds)} right: {($ Id.VSub_DollarName max_seconds)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ <'DF failed, unable to obtain drive data'>)} ) (C {<sleep>} {<2>}) (C {<kill>} {($ Id.VSub_DollarName pid)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'df_failed='> name: df_failed ) op: assign_op.Equal rhs: {<1>} spids: [2982] ) ] redirects: [] ) (command.Simple words: [ {<echo>} {<-e>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>}) right: <Id.Eof_RParen _> ) <' | df failed to respond'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [2938 2952] ) ] else_action: [ (C {<sleep>} {<1>}) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike current_seconds) ) redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName df_failed)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName index_start)} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName index_end)} ) 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 left: <Id.Lit_ArrayLhsOpen 'STORAGE_PERCENT['> name: STORAGE_PERCENT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [3070] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_FREE['> name: STORAGE_FREE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'DF failed'>)} spids: [3085] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [3033 3043] ) ] else_action: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName index_start)} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName index_end)} ) 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: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-ci>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_TOTAL['> name: STORAGE_TOTAL index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [3163] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_TOTAL['> name: STORAGE_TOTAL index: {($ Id.VSub_DollarName i)} ) op: assign_op.PlusEqual rhs: {(SQ <B>)} spids: [3199] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_USED['> name: STORAGE_USED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [3209] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_USED['> name: STORAGE_USED index: {($ Id.VSub_DollarName i)} ) op: assign_op.PlusEqual rhs: {(SQ <B>)} spids: [3245] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_FREE['> name: STORAGE_FREE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [3255] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_FREE['> name: STORAGE_FREE index: {($ Id.VSub_DollarName i)} ) op: assign_op.PlusEqual rhs: {(SQ <B>)} spids: [3291] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_PERCENT['> name: STORAGE_PERCENT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $5}'>)}) (C {<sed>} {(SQ <'s/%//g'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [3301] ) ] redirects: [] ) (C {<Percent_To_Graph>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PERCENT> var_name: STORAGE_PERCENT bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_PERCENT['> name: STORAGE_PERCENT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName C_PERCENT_GRAPH)} spids: [3356] ) ] redirects: [] ) (command.Simple words: [ {<echo>} {<-e>} {(DQ <'Results success:'> <Id.Lit_BadBackslash '\\'> <n>)} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <' - Index = '> ($ Id.VSub_DollarName i))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <' - Path = '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <' - Total = '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_TOTAL> var_name: STORAGE_TOTAL bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) ] spids: [3127 3159] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_PERCENT['> name: STORAGE_PERCENT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [3441] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_FREE['> name: STORAGE_FREE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'Mount not active'>)} spids: [3456] ) ] redirects: [] ) (command.Simple words: [ {<echo>} {<-e>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>}) right: <Id.Eof_RParen _> ) <' | Mount not found:'> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <' - Index = '> ($ Id.VSub_DollarName i))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <' - Path = '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<cat>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <Id.Lit_BadBackslash '\\'> <n>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<'/var/log/dietpi-cloudshell.log'>} ) ] more_env: [] do_fork: T ) ] redirects: [] ) ] ) redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_VERSION_CURRENT='> name: DIETPI_VERSION_CURRENT ) op: assign_op.Equal rhs: {<0>} spids: [3570] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_UPDATE_AVAILABLE='> name: DIETPI_UPDATE_AVAILABLE ) op: assign_op.Equal rhs: {<0>} spids: [3574] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIETPI_WEBSITE='> name:DIETPI_WEBSITE) op: assign_op.Equal rhs: {(SQ <dietpi.com>)} spids: [3578] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIETPI_TWITTER='> name:DIETPI_TWITTER) op: assign_op.Equal rhs: {(DQ <'@dietpi_'>)} spids: [3584] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_HW_DESCRIPTION='> name: DIETPI_HW_DESCRIPTION ) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [3590] ) ] redirects: [] ) (command.ShFunction name: Obtain_DIETPIINFO body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_VERSION_CURRENT='> name: DIETPI_VERSION_CURRENT ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<1p>} {<'/DietPi/dietpi/.version'>}) right: <Id.Eof_RParen _> ) <.> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.version'>}) right: <Id.Eof_RParen _> ) ($ Id.VSub_DollarName C_RESET) ) } spids: [3607] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_HW_DESCRIPTION='> name: DIETPI_HW_DESCRIPTION ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.hw_model'>}) right: <Id.Eof_RParen _> ) } spids: [3643] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_UPDATE_AVAILABLE='> name: DIETPI_UPDATE_AVAILABLE ) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [3660] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/DietPi/dietpi/.update_available'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_VERSION_CURRENT='> name: DIETPI_VERSION_CURRENT ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>}) right: <Id.Right_DollarBrace '}'> ) (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<1p>} {<'/DietPi/dietpi/.version'>}) right: <Id.Eof_RParen _> ) <.> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.version'>}) right: <Id.Eof_RParen _> ) ($ Id.VSub_DollarName C_RESET) ) } spids: [3685] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'update_version='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/DietPi/dietpi/.update_available'>}) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName update_version))} {<Id.Lit_Equals '='>} {(SQ <-1>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_UPDATE_AVAILABLE='> name: DIETPI_UPDATE_AVAILABLE ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) <'New Image'> ($ Id.VSub_DollarName C_RESET) ) } spids: [3748] ) ] redirects: [] ) ] spids: [3727 3744] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DIETPI_UPDATE_AVAILABLE='> name: DIETPI_UPDATE_AVAILABLE ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName update_version) ($ Id.VSub_DollarName C_RESET) ) } spids: [3766] ) ] redirects: [] ) ] redirects: [] ) ] spids: [3666 3677] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_ADAPTER='> name: NETWORK_DETAILS_ADAPTER ) op: assign_op.Equal rhs: {(SQ <eth0>)} spids: [3796] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_IP_INT='> name: NETWORK_DETAILS_IP_INT ) op: assign_op.Equal rhs: {<0>} spids: [3802] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_MAC_ADDRESS='> name: NETWORK_DETAILS_MAC_ADDRESS ) op: assign_op.Equal rhs: {<0>} spids: [3806] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_SIGNAL_STRENGTH='> name: NETWORK_DETAILS_SIGNAL_STRENGTH ) op: assign_op.Equal rhs: {<0>} spids: [3810] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_DUPLEXSPEED='> name: NETWORK_DETAILS_DUPLEXSPEED ) op: assign_op.Equal rhs: {<0>} spids: [3814] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_HOSTNAME='> name: NETWORK_DETAILS_HOSTNAME ) op: assign_op.Equal rhs: {<0>} spids: [3818] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_MODE='> name: NETWORK_DETAILS_MODE ) op: assign_op.Equal rhs: {<0>} spids: [3822] ) ] redirects: [] ) (command.ShFunction name: Obtain_NETWORK_DETAILS body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.ifconfig'>)} spids: [3836] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_HOSTNAME='> name: NETWORK_DETAILS_HOSTNAME ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<hostname>}) right: <Id.Eof_RParen _> ) } spids: [3847] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_ADAPTER='> name: NETWORK_DETAILS_ADAPTER ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<3p>} {<'/DietPi/dietpi/.network'>}) right: <Id.Eof_RParen _> ) } spids: [3858] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {<'/etc/network/interfaces'>}) (C {<grep>} {<-ci>} {<-m1>} { (DQ <'iface '> ($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER) <' inet dhcp'> ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_MODE='> name: NETWORK_DETAILS_MODE ) op: assign_op.Equal rhs: {(DQ <Dhcp>)} spids: [3906] ) ] redirects: [] ) ] spids: [3875 3903] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_MODE='> name: NETWORK_DETAILS_MODE ) op: assign_op.Equal rhs: {(DQ <Static>)} spids: [3915] ) ] redirects: [] ) ] redirects: [] ) (command.Simple words: [{<ifconfig>} {($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName FP_TEMP)} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_IP_INT='> name: NETWORK_DETAILS_IP_INT ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}) (C {<grep>} {<-m1>} {(SQ <'inet '>)}) (C {<cut>} {<-d> <Id.Lit_Colon ':'>} {<-f2>}) (C {<awk>} {(SQ <'{ print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [3943] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_MAC_ADDRESS='> name: NETWORK_DETAILS_MAC_ADDRESS ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/class/net/'> ($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER) <'/address'> } ) right: <Id.Eof_RParen _> ) } spids: [3979] ) ] redirects: [] ) (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 {<echo>} {($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER)} ) (C {<grep>} {<-ci>} {<-m1>} {(SQ <wlan>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_SIGNAL_STRENGTH='> name: NETWORK_DETAILS_SIGNAL_STRENGTH ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<iwconfig>} {($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER)} ) (C {<grep>} {<-m1>} {(SQ <'Signal level='>)}) (C {<awk>} {(SQ <'{ print $4 }'>)}) (C {<sed>} {(SQ <'s/level=//g'>)}) (C {<cut>} {<-f1>} {<-d>} {(DQ <'/'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <'%'> ) } spids: [4031] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_DUPLEXSPEED='> name: NETWORK_DETAILS_DUPLEXSPEED ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<iwconfig>} {($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER)} ) (C {<grep>} {<-m1>} {(SQ <'Bit Rate:'>)}) (C {<awk>} {(SQ <'{ print $2 }'>)}) (C {<sed>} {(SQ <'s/Rate://g'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <Mbit> ) } spids: [4080] ) ] redirects: [] ) ] spids: [3998 4028] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_DUPLEXSPEED='> name: NETWORK_DETAILS_DUPLEXSPEED ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/sys/class/net/'> ($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER) <'/speed'> } ) right: <Id.Eof_RParen _> ) <' Mbit'> ) } spids: [4124] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_DETAILS_SIGNAL_STRENGTH='> name: NETWORK_DETAILS_SIGNAL_STRENGTH ) op: assign_op.Equal rhs: {(DQ <'N/A'>)} spids: [4141] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_TOTAL_CURRENT_SENT='> name: NETWORK_USAGE_TOTAL_CURRENT_SENT ) op: assign_op.Equal rhs: {<0>} spids: [4159] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_TOTAL_CURRENT_RECIEVED='> name: NETWORK_USAGE_TOTAL_CURRENT_RECIEVED ) op: assign_op.Equal rhs: {<0>} spids: [4163] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_CURRENT_SENT='> name: NETWORK_USAGE_NOW_CURRENT_SENT ) op: assign_op.Equal rhs: {<0>} spids: [4168] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_CURRENT_RECIEVED='> name: NETWORK_USAGE_NOW_CURRENT_RECIEVED ) op: assign_op.Equal rhs: {<0>} spids: [4172] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_INIT='> name: NETWORK_USAGE_NOW_INIT ) op: assign_op.Equal rhs: {<0>} spids: [4176] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE='> name: NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE ) op: assign_op.Equal rhs: {<0>} spids: [4180] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_CURRENT_SENT='> name: NETWORK_USAGE_DAY_CURRENT_SENT ) op: assign_op.Equal rhs: {<0>} spids: [4185] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_CURRENT_RECIEVED='> name: NETWORK_USAGE_DAY_CURRENT_RECIEVED ) op: assign_op.Equal rhs: {<0>} spids: [4189] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_PREVIOUS_SENT='> name: NETWORK_USAGE_DAY_PREVIOUS_SENT ) op: assign_op.Equal rhs: {<0>} spids: [4193] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_PREVIOUS_RECIEVED='> name: NETWORK_USAGE_DAY_PREVIOUS_RECIEVED ) op: assign_op.Equal rhs: {<0>} spids: [4197] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_OF_MONTH='> name: NETWORK_USAGE_DAY_OF_MONTH ) op: assign_op.Equal rhs: {<-1>} spids: [4201] ) ] redirects: [] ) (command.ShFunction name: Obtain_NETWORK_USAGE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'run_update='> <1>}) (C {<local>} {<Id.Lit_VarLike 'mtu_size='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<netstat>} {<-N>} {<-i>}) (C {<grep>} {(DQ ($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER))}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName mtu_size)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'run_update='> name:run_update) op: assign_op.Equal rhs: {<0>} spids: [4277] ) ] redirects: [] ) ] spids: [4252 4274] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'network_usage_current_recieved='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<netstat>} {<-N>} {<-i>}) (C {<grep>} {(DQ ($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER))}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName network_usage_current_recieved)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'run_update='> name:run_update) op: assign_op.Equal rhs: {<0>} spids: [4338] ) ] redirects: [] ) ] spids: [4313 4335] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'network_usage_current_sent='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<netstat>} {<-N>} {<-i>}) (C {<grep>} {(DQ ($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER))}) (C {<awk>} {(SQ <'{print $8}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName network_usage_current_sent)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'run_update='> name:run_update) op: assign_op.Equal rhs: {<0>} spids: [4399] ) ] redirects: [] ) ] spids: [4374 4396] ) ] else_action: [] redirects: [] ) (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 run_update)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'total_previous_sent='> ($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_SENT) } ) (C {<local>} {<Id.Lit_VarLike 'total_previous_recieved='> ($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_RECIEVED) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_TOTAL_CURRENT_RECIEVED='> name: NETWORK_USAGE_TOTAL_CURRENT_RECIEVED ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName network_usage_current_recieved)} right: {($ Id.VSub_DollarName mtu_size)} ) ) } spids: [4447] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_TOTAL_CURRENT_SENT='> name: NETWORK_USAGE_TOTAL_CURRENT_SENT ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Star left: {($ Id.VSub_DollarName network_usage_current_sent)} right: {($ Id.VSub_DollarName mtu_size)} ) ) } spids: [4460] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'seconds_since_last_update='> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE)} ) ) } ) (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 NETWORK_USAGE_NOW_INIT)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_CURRENT_SENT='> name: NETWORK_USAGE_NOW_CURRENT_SENT ) op: assign_op.Equal rhs: {<0>} spids: [4525] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_CURRENT_RECIEVED='> name: NETWORK_USAGE_NOW_CURRENT_RECIEVED ) op: assign_op.Equal rhs: {<0>} spids: [4529] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_INIT='> name: NETWORK_USAGE_NOW_INIT ) op: assign_op.Equal rhs: {<1>} spids: [4534] ) ] redirects: [] ) ] spids: [4508 4522] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_CURRENT_SENT='> name: NETWORK_USAGE_NOW_CURRENT_SENT ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Minus left: { ($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_SENT ) } right: {($ Id.VSub_DollarName total_previous_sent)} ) right: {($ Id.VSub_DollarName seconds_since_last_update)} ) ) } spids: [4546] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_NOW_CURRENT_RECIEVED='> name: NETWORK_USAGE_NOW_CURRENT_RECIEVED ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Slash left: (arith_expr.Binary op_id: Id.Arith_Minus left: { ($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_RECIEVED ) } right: {($ Id.VSub_DollarName total_previous_recieved)} ) right: {($ Id.VSub_DollarName seconds_since_last_update)} ) ) } spids: [4567] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE='> name: NETWORK_USAGE_SECONDS_SINCE_LAST_UPDATE ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <s>}) right: <Id.Eof_RParen _> ) } spids: [4596] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'dayofmonth='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d'>)}) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName NETWORK_USAGE_DAY_OF_MONTH))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName dayofmonth))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_PREVIOUS_SENT='> name: NETWORK_USAGE_DAY_PREVIOUS_SENT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_SENT)} spids: [4678] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_PREVIOUS_RECIEVED='> name: NETWORK_USAGE_DAY_PREVIOUS_RECIEVED ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_RECIEVED)} spids: [4682] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_OF_MONTH='> name: NETWORK_USAGE_DAY_OF_MONTH ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dayofmonth)} spids: [4686] ) ] redirects: [] ) ] spids: [4653 4671] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_CURRENT_SENT='> name: NETWORK_USAGE_DAY_CURRENT_SENT ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_SENT)} right: {($ Id.VSub_DollarName NETWORK_USAGE_DAY_PREVIOUS_SENT)} ) ) } spids: [4699] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_DAY_CURRENT_RECIEVED='> name: NETWORK_USAGE_DAY_CURRENT_RECIEVED ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_RECIEVED)} right: {($ Id.VSub_DollarName NETWORK_USAGE_DAY_PREVIOUS_RECIEVED)} ) ) } spids: [4712] ) ] redirects: [] ) ] spids: [4408 4422] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_TOTAL='> name:MEMORY_TOTAL) op: assign_op.Equal rhs: {<0>} spids: [4738] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_FREE='> name:MEMORY_FREE) op: assign_op.Equal rhs: {<0>} spids: [4742] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_USED='> name:MEMORY_USED) op: assign_op.Equal rhs: {<0>} spids: [4746] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_CACHED='> name:MEMORY_CACHED) op: assign_op.Equal rhs: {<0>} spids: [4750] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_PERCENT='> name:MEMORY_PERCENT) op: assign_op.Equal rhs: {<0>} spids: [4754] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_SWAPTOTAL='> name:MEMORY_SWAPTOTAL) op: assign_op.Equal rhs: {<0>} spids: [4758] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_SWAPUSED='> name:MEMORY_SWAPUSED) op: assign_op.Equal rhs: {<0>} spids: [4762] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_SWAPFREE='> name:MEMORY_SWAPFREE) op: assign_op.Equal rhs: {<0>} spids: [4766] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_SWAPERCENT='> name:MEMORY_SWAPERCENT) op: assign_op.Equal rhs: {<0>} spids: [4770] ) ] redirects: [] ) (command.ShFunction name: Obtain_MEMORY body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.mem'>)} spids: [4785] ) ] redirects: [] ) (command.Simple words: [{<free>} {<-m>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName FP_TEMP)} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_TOTAL='> name:MEMORY_TOTAL) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [4805] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_CACHED='> name:MEMORY_CACHED) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $7}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [4835] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_USED='> name:MEMORY_USED) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName MEMORY_CACHED)} ) ) } spids: [4861] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_FREE='> name:MEMORY_FREE) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} {(SQ <'Mem: '>)}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {($ Id.VSub_DollarName MEMORY_CACHED)} ) ) } spids: [4896] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_PERCENT='> name:MEMORY_PERCENT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>}) (C {<awk>} { (DQ <'{print '> ($ Id.VSub_DollarName MEMORY_USED) <' / '> ($ Id.VSub_DollarName MEMORY_TOTAL) <' * 100}'> ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [4931] ) ] redirects: [] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName MEMORY_PERCENT)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MEMORY_PERCENT='> name:MEMORY_PERCENT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName C_PERCENT_GRAPH)} spids: [4959] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MEMORY_SWAPTOTAL='> name: MEMORY_SWAPTOTAL ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} {(SQ <'Swap: '>)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [4968] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName MEMORY_SWAPTOTAL)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MEMORY_SWAPUSED='> name: MEMORY_SWAPUSED ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} {(SQ <'Swap: '>)}) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5015] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MEMORY_SWAPFREE='> name: MEMORY_SWAPFREE ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName FP_TEMP)}) (C {<grep>} {<-m1>} {(SQ <'Swap: '>)}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5041] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MEMORY_SWAPERCENT='> name: MEMORY_SWAPERCENT ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>}) (C {<awk>} { (DQ <'{print '> ($ Id.VSub_DollarName MEMORY_SWAPUSED) <' / '> ($ Id.VSub_DollarName MEMORY_SWAPTOTAL) <' * 100}'> ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5067] ) ] redirects: [] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName MEMORY_SWAPERCENT)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MEMORY_SWAPERCENT='> name: MEMORY_SWAPERCENT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName C_PERCENT_GRAPH)} spids: [5096] ) ] redirects: [] ) ] spids: [4998 5012] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MEMORY_SWAPERCENT='> name: MEMORY_SWAPERCENT ) op: assign_op.Equal rhs: {(DQ <' Disabled'>)} spids: [5103] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PIHOLE_QUERY_COUNT='> name:PIHOLE_QUERY_COUNT) op: assign_op.Equal rhs: {<0>} spids: [5123] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PIHOLE_TOTAL_ADS='> name:PIHOLE_TOTAL_ADS) op: assign_op.Equal rhs: {<0>} spids: [5127] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PIHOLE_PERCENT_ADS='> name:PIHOLE_PERCENT_ADS) op: assign_op.Equal rhs: {<0>} spids: [5131] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_TOTAL_DOMAINS='> name: PIHOLE_TOTAL_DOMAINS ) op: assign_op.Equal rhs: {<0>} spids: [5135] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_LAST_DOMAIN_BLOCKED='> name: PIHOLE_LAST_DOMAIN_BLOCKED ) op: assign_op.Equal rhs: {<0>} spids: [5139] ) ] redirects: [] ) (command.ShFunction name: Obtain_PIHOLE body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'pihole_log_file='> (DQ <'/var/log/pihole.log'>)}) (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 PIHOLE_TOTAL_DOMAINS)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/pihole/gravity.list'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_TOTAL_DOMAINS='> name: PIHOLE_TOTAL_DOMAINS ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<wc>} {<-l>} {<'/etc/pihole/gravity.list'>}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5194] ) ] redirects: [] ) ] spids: [5180 5191] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_TOTAL_DOMAINS='> name: PIHOLE_TOTAL_DOMAINS ) op: assign_op.Equal rhs: {(DQ <'Not Installed'>)} spids: [5215] ) ] redirects: [] ) ] redirects: [] ) ] spids: [5163 5177] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'today='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (SQ <'%b %e'>)}) right: <Id.Eof_RParen _> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_QUERY_COUNT='> name: PIHOLE_QUERY_COUNT ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName pihole_log_file))}) (C {<grep>} {(DQ ($ Id.VSub_DollarName today))}) (C {<awk>} {(SQ <'/query/ {print $7}'>)}) (C {<wc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5243] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_DollarName PIHOLE_QUERY_COUNT)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_QUERY_COUNT='> name: PIHOLE_QUERY_COUNT ) op: assign_op.Equal rhs: {<1>} spids: [5296] ) ] redirects: [] ) ] spids: [5279 5293] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_TOTAL_ADS='> name: PIHOLE_TOTAL_ADS ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName pihole_log_file))}) (C {<grep>} {(DQ ($ Id.VSub_DollarName today))}) (C {<awk>} {(SQ <'/\\/etc\\/pihole\\/gravity.list/ {print $7}'>)}) (C {<wc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5304] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_PERCENT_ADS='> name: PIHOLE_PERCENT_ADS ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>}) (C {<awk>} { (DQ <'{print '> ($ Id.VSub_DollarName PIHOLE_TOTAL_ADS) <' / '> ($ Id.VSub_DollarName PIHOLE_QUERY_COUNT) <' * 100}'> ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5336] ) ] redirects: [] ) (C {<Percent_To_Graph>} {($ Id.VSub_DollarName PIHOLE_PERCENT_ADS)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_PERCENT_ADS='> name: PIHOLE_PERCENT_ADS ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName C_PERCENT_GRAPH)} spids: [5364] ) ] redirects: [] ) (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 PIHOLE_TOTAL_ADS)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_LAST_DOMAIN_BLOCKED='> name: PIHOLE_LAST_DOMAIN_BLOCKED ) op: assign_op.Equal rhs: {(DQ <None>)} spids: [5390] ) ] redirects: [] ) ] spids: [5373 5387] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PIHOLE_LAST_DOMAIN_BLOCKED='> name: PIHOLE_LAST_DOMAIN_BLOCKED ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<tac>} {<'/var/log/pihole.log'>}) (C {<grep>} {<-m1>} {(SQ <gravity.list>)}) (C {<awk>} {(SQ <'{print $6}'>)}) (C {<cut>} {<-c>} {<1-24>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [5399] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RUN_INTRO='> name:RUN_INTRO) op: assign_op.Equal rhs: {<0>} spids: [5454] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RUN_INTRO='> name:RUN_INTRO) op: assign_op.Equal rhs: {<1>} spids: [5475] ) ] redirects: [] ) ] spids: [5458 5472] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SCENE_CURRENT='> name:SCENE_CURRENT) op: assign_op.Equal rhs: {<2>} spids: [5487] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAX_SCENES='> name:MAX_SCENES) op: assign_op.Equal rhs: {<9>} spids: [5491] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REFRESH_RATE='> name:REFRESH_RATE) op: assign_op.Equal rhs: {<5>} spids: [5500] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPERATURE_OUTPUT_TYPE='> name: TEMPERATURE_OUTPUT_TYPE ) op: assign_op.Equal rhs: {<1>} spids: [5509] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_CURRENT_OUTPUT_TYPE='> name: NETWORK_USAGE_CURRENT_OUTPUT_TYPE ) op: assign_op.Equal rhs: {<0>} spids: [5518] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aEnabledScenes='> name:aEnabledScenes) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [5527] ) ] redirects: [] ) (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: {($ Id.VSub_DollarName MAX_SCENES)} ) 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 left: <Id.Lit_ArrayLhsOpen 'aEnabledScenes['> name: aEnabledScenes index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [5554] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShFunction name: Run_Intro body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<clear>}) (C {<local>} {<Id.Lit_VarLike 'aAnimation='> (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <' '>)} {(SQ <'i - c'>)} {(SQ <'P i - c l'>)} {(SQ <'t P i - c l o'>)} {(SQ <'e t P i- c l o u'>)} {(SQ <'i e t Pi- c l o u d s'>)} {(SQ <'D i etPi- c l o u d s h'>)} {(SQ <' D ietPi-c l o u d s h e'>)} {(SQ <' DietPi-cl o u d s h e '>)} {(SQ <' DietPi-clou d s h e l '>)} {(SQ <' DietPi-clouds h e l l '>)} {(SQ <' DietPi-cloudshe l l '>)} {(SQ <' DietPi-cloudshell '>)} ] ) } ) (C {<local>} {<Id.Lit_VarLike 'aBar='> (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} {(SQ <' '>)} ] ) } ) (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 left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aAnimation> var_name: aAnimation prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET))}) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aAnimation> var_name: aAnimation bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) <' v'> ($ Id.VSub_DollarName DIETPI_CLOUDSHELL_VERSION) ) } ) (C {<echo>} {<-e>} {(DQ )}) (C {<echo>} {<-e>} {(DQ <' Loading...'>)}) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aBar> var_name: aBar bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<sleep>} {<0.2>}) ] ) redirects: [] ) (C {<unset>} {<aAnimation>}) (C {<unset>} {<aBar>}) (C {<sleep>} {<0.1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BANNER_PRINT='> name:BANNER_PRINT) op: assign_op.Equal rhs: {<0>} spids: [5920] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BANNER_MODE='> name:BANNER_MODE) op: assign_op.Equal rhs: {<0>} spids: [5924] ) ] redirects: [] ) (command.ShFunction name: Update_Banner body: (BraceGroup left: <Id.Lit_LBrace '{'> 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 BANNER_MODE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BANNER_PRINT='> name: BANNER_PRINT ) op: assign_op.Equal rhs: { (DQ <'DietPi - Cloudshell v'> ($ Id.VSub_DollarName DIETPI_CLOUDSHELL_VERSION) ) } spids: [5956] ) ] redirects: [] ) ] spids: [5939 5953] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName BANNER_MODE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Obtain_DATE_TIME>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BANNER_PRINT='> name: BANNER_PRINT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName DATE_TIME)} spids: [5983] ) ] redirects: [] ) ] spids: [5963 5977] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName BANNER_MODE)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Obtain_UPTIME>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BANNER_PRINT='> name: BANNER_PRINT ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName UPTIME)} spids: [6007] ) ] redirects: [] ) ] spids: [5987 6001] ) ] else_action: [] redirects: [] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike BANNER_MODE) ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName BANNER_MODE)} right: {<Id.Lit_Digits 3>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BANNER_MODE='> name: BANNER_MODE ) op: assign_op.Equal rhs: {<0>} spids: [6048] ) ] redirects: [] ) ] spids: [6031 6045] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Update_Scene_0 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Obtain_CPU>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName BANNER_PRINT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' CPU Usage: '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName CPU_USAGE))}) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' CPU Stats: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Temp '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName C_CPUTEMP) ($ Id.VSub_DollarName CPU_TEMP) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Processes '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName CPU_TOTALPROCESSES) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Governor '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName CPU_GOV) ) } ) (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 G_HW_MODEL)} right: {<Id.Lit_Digits 11>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) <' Freq 0-3 '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName CPU_FREQ_1) <' mhz'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) <' Freq 4-7 '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName CPU_FREQ_2) <' mhz'> ) } ) ] spids: [6234 6248] ) ] else_action: [ (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) <' Freq '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName USER_COLOUR_INDEX)} ) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName CPU_FREQ_1) <' mhz'> ) } ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Update_Scene_1 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'index_1='> ($ Id.VSub_Number 1)}) (C {<local>} {<Id.Lit_VarLike 'index_2='> ($ Id.VSub_Number 2)}) (C {<Obtain_STORAGE>} {($ Id.VSub_DollarName index_1)} {($ Id.VSub_DollarName index_2)}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName BANNER_PRINT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_NAME> var_name: STORAGE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PERCENT> var_name: STORAGE_PERCENT bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Used: '> ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_USED> var_name: STORAGE_USED bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_1)}) right: <Id.Right_DollarBrace '}'> ) <' / '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_TOTAL> var_name: STORAGE_TOTAL bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Free: '> ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_FREE> var_name: STORAGE_FREE bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_1)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_NAME> var_name: STORAGE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_2)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PERCENT> var_name: STORAGE_PERCENT bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_2)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Used: '> ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_USED> var_name: STORAGE_USED bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_2)}) right: <Id.Right_DollarBrace '}'> ) <' / '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_TOTAL> var_name: STORAGE_TOTAL bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_2)}) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Free: '> ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_FREE> var_name: STORAGE_FREE bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index_2)}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Update_Scene_4 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Obtain_DIETPIINFO>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName BANNER_PRINT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' DietPi: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Version '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName DIETPI_VERSION_CURRENT) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Updates '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName DIETPI_UPDATE_AVAILABLE) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Web '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName DIETPI_WEBSITE) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Twitter '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <':'> ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName DIETPI_TWITTER) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Device: '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName DIETPI_HW_DESCRIPTION))} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Update_Scene_5 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Obtain_NETWORK_DETAILS>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName BANNER_PRINT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Network Details: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' IP : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName NETWORK_DETAILS_IP_INT) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Mode : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName NETWORK_DETAILS_MODE) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Adapter : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName NETWORK_DETAILS_ADAPTER) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Duplex : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName NETWORK_DETAILS_DUPLEXSPEED) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Signal : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName NETWORK_DETAILS_SIGNAL_STRENGTH) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Hostname: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName NETWORK_DETAILS_HOSTNAME) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' MAC: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName NETWORK_DETAILS_MAC_ADDRESS) ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Update_Scene_6 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Obtain_NETWORK_USAGE>}) (C {<local>} {<Id.Lit_VarLike 'total_sent_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_SENT)} ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'total_recieved_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_TOTAL_CURRENT_RECIEVED)} ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'today_sent_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_DAY_CURRENT_SENT)} ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'today_recieved_output='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_DAY_CURRENT_RECIEVED)} ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'now_sent_output='> <0>}) (C {<local>} {<now_recieved_output0>}) (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 NETWORK_USAGE_CURRENT_OUTPUT_TYPE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'now_sent_output='> name: now_sent_output ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BIT_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_NOW_CURRENT_SENT)} ) right: <Id.Eof_RParen _> ) } spids: [7093] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'now_recieved_output='> name: now_recieved_output ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BIT_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_NOW_CURRENT_RECIEVED)} ) right: <Id.Eof_RParen _> ) } spids: [7103] ) ] redirects: [] ) ] spids: [7076 7090] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'now_sent_output='> name: now_sent_output ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_NOW_CURRENT_SENT)} ) right: <Id.Eof_RParen _> ) } spids: [7116] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'now_recieved_output='> name: now_recieved_output ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<BYTE_PRINT_CONVERSION>} {($ Id.VSub_DollarName NETWORK_USAGE_NOW_CURRENT_RECIEVED)} ) right: <Id.Eof_RParen _> ) } spids: [7126] ) ] redirects: [] ) ] redirects: [] ) (C {<clear>}) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Network Usage (TOTAL): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Sent : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName total_sent_output) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Recieved : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName total_recieved_output) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Network Usage (TODAY): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Sent : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName today_sent_output) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Recieved : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName today_recieved_output) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Network Usage (CURRENT): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Sent : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName now_sent_output) <'/s'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Recieved : '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName now_recieved_output) <'/s'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Update_Scene_7 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Obtain_MEMORY>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName BANNER_PRINT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Memory Usage (RAM): '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName MEMORY_PERCENT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Used: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName MEMORY_USED) <' MB / '> ($ Id.VSub_DollarName MEMORY_TOTAL) <' MB'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Free: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName MEMORY_FREE) <' MB'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Memory Usage (SWAP): '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName MEMORY_SWAPERCENT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Used: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName MEMORY_SWAPUSED) <' MB / '> ($ Id.VSub_DollarName MEMORY_SWAPTOTAL) <' MB'> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Free: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName MEMORY_SWAPFREE) <' MB'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Update_Scene_8 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Obtain_PIHOLE>}) (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName BANNER_PRINT))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Pi-hole stats (TODAY): '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Ads Blocked: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName PIHOLE_TOTAL_ADS) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' DNS Queries: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName PIHOLE_QUERY_COUNT) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) <' Blocked Domains: '> ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName PIHOLE_TOTAL_DOMAINS) ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' % of traffic = Ads: '> ) } ) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET) ($ Id.VSub_DollarName PIHOLE_PERCENT_ADS))} ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCOLOUR> var_name: aCOLOUR bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName USER_COLOUR_INDEX)}) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName C_REVERSE) <' Last domain blocked: '> ) } ) (C {<echo>} {<-e>} { (DQ ($ Id.VSub_DollarName C_RESET) <' '> ($ Id.VSub_DollarName PIHOLE_LAST_DOMAIN_BLOCKED) ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILEPATH_SETTINGS='> name:FILEPATH_SETTINGS) op: assign_op.Equal rhs: {(DQ <'/DietPi/dietpi/.dietpi-cloudshell'>)} spids: [7713] ) ] redirects: [] ) (command.ShFunction name: Read_Settings_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName FILEPATH_SETTINGS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<.>} {(DQ ($ Id.VSub_DollarName FILEPATH_SETTINGS))})] spids: [7727 7740] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Write_Settings_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<_EOF_>} here_end_span_id: 7807 stdin_parts: [ <'REFRESH_RATE='> ($ Id.VSub_DollarName REFRESH_RATE) <'\n'> <'USER_COLOUR_INDEX='> ($ Id.VSub_DollarName USER_COLOUR_INDEX) <'\n'> <'TEMPERATURE_OUTPUT_TYPE='> ($ Id.VSub_DollarName TEMPERATURE_OUTPUT_TYPE) <'\n'> <'OUTPUT_DISPLAY_INDEX='> ($ Id.VSub_DollarName OUTPUT_DISPLAY_INDEX) <'\n'> <'\n'> <'NETWORK_USAGE_CURRENT_OUTPUT_TYPE='> ($ Id.VSub_DollarName NETWORK_USAGE_CURRENT_OUTPUT_TYPE) <'\n'> <'\n'> <'BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED='> ($ Id.VSub_DollarName BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED) <'\n'> <'BLANK_SCREEN_TIME_HOUR_START='> ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_START) <'\n'> <'BLANK_SCREEN_TIME_HOUR_END='> ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_END) <'\n'> <'\n'> ] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FILEPATH_SETTINGS))} ) ] more_env: [] do_fork: T ) (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: {($ Id.VSub_DollarName MAX_SCENES)} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <'aEnabledScenes['> ($ Id.VSub_DollarName i) <']='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledScenes> var_name: aEnabledScenes bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName FILEPATH_SETTINGS)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) (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: {($ Id.VSub_DollarName MAX_STORAGE)} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <'STORAGE_PATH['> ($ Id.VSub_DollarName i) <']=\''> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) <'\''> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName FILEPATH_SETTINGS)} ) ] more_env: [] do_fork: T ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <'STORAGE_NAME['> ($ Id.VSub_DollarName i) <']=\''> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_NAME> var_name: STORAGE_NAME bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) <'\''> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName FILEPATH_SETTINGS)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Init body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Init_STORAGE>}) (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 G_HW_MODEL)} right: {<Id.Lit_Digits 20>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aEnabledScenes['> name: aEnabledScenes index: {<Id.Lit_Digits 0>} ) op: assign_op.Equal rhs: {<0>} spids: [8011] ) ] redirects: [] ) ] spids: [7994 8008] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {<'/etc/pihole/gravity.list'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aEnabledScenes['> name: aEnabledScenes index: {<Id.Lit_Digits 8>} ) op: assign_op.Equal rhs: {<0>} spids: [8052] ) ] redirects: [] ) ] spids: [8035 8048] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'enabled_scene='> <0>}) (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: {($ Id.VSub_DollarName MAX_SCENES)} ) 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 left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledScenes> var_name: aEnabledScenes bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'enabled_scene='> name: enabled_scene ) op: assign_op.Equal rhs: {<1>} spids: [8119] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [8101 8116] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (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 enabled_scene)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aEnabledScenes['> name: aEnabledScenes index: {<Id.Lit_Digits 4>} ) op: assign_op.Equal rhs: {<1>} spids: [8155] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCENE_CURRENT='> name: SCENE_CURRENT ) op: assign_op.Equal rhs: {<4>} spids: [8163] ) ] redirects: [] ) ] spids: [8137 8151] ) ] else_action: [] redirects: [] ) (C {<'/DietPi/dietpi/func/obtain_network_details'>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'OUTPUT_DISPLAY_INDEX='> name: OUTPUT_DISPLAY_INDEX ) op: assign_op.Equal rhs: {<0>} spids: [8203] ) ] redirects: [] ) (command.ShFunction name: Stop body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<systemctl>} {<stop>} {<dietpi-cloudshell>}) (command.Pipeline children: [ (C {<ps>} {<ax>}) (C {<grep>} {(SQ <'[d]ietpi-cloudshell [1-9]'>)}) (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))} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.Simple words: [{<kill>} {($ Id.VSub_DollarName line)}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName FP_TEMP)} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Start body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'output_current_screen='> <0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<tty>}) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_Equals '='>} {(DQ <'/dev/tty1'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'output_current_screen='> name: output_current_screen ) op: assign_op.Equal rhs: {<1>} spids: [8330] ) ] redirects: [] ) ] spids: [8308 8327] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName OUTPUT_DISPLAY_INDEX)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'output_current_screen='> name: output_current_screen ) op: assign_op.Equal rhs: {<1>} spids: [8351] ) ] redirects: [] ) ] spids: [8334 8348] ) ] else_action: [] redirects: [] ) (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 output_current_screen)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<clear>}) (C {<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName C_RESET))}) (C {<read>} {<-p>} { (DQ <'Use CTRL+C to exit. Press any key to launch '> ($ Id.VSub_DollarName PROGRAM_NAME) <...> ) } ) ] spids: [8363 8377] ) ] else_action: [] redirects: [] ) (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 output_current_screen)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-cloudshell'>} {<1>})] spids: [8411 8425] ) ] else_action: [(C {<systemctl>} {<start>} {<dietpi-cloudshell>})] redirects: [] ) (C {<sleep>} {<0.1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_BACKTITLE='> name:WHIP_BACKTITLE) op: assign_op.Equal rhs: {<0>} spids: [8477] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {<0>} spids: [8481] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: {<0>} spids: [8485] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {<0>} spids: [8489] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [8493] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LASTSELECTED_ITEM='> name:LASTSELECTED_ITEM) op: assign_op.Equal rhs: {(DQ )} spids: [8497] ) ] redirects: [] ) (command.ShFunction name: Menu_Exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME))} spids: [8510] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME) <' configuration tool?'>)} spids: [8517] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<9>} {<55>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [8564] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Write_Settings_File>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<-1>} spids: [8598] ) ] redirects: [] ) ] spids: [8568 8582] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [8611] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Main body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [8635] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_BACKTITLE='> name:WHIP_BACKTITLE) op: assign_op.Equal rhs: { (DQ <'- '> ($ Id.VSub_DollarName PROGRAM_NAME) <' v'> ($ Id.VSub_DollarName DIETPI_CLOUDSHELL_VERSION) <' -'> ) } spids: [8639] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ <'- '> ($ Id.VSub_DollarName PROGRAM_NAME) <' -'>)} spids: [8649] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'temp_output_text='> (DQ <Fahrenheit>)}) (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 TEMPERATURE_OUTPUT_TYPE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'temp_output_text='> name: temp_output_text ) op: assign_op.Equal rhs: {(DQ <Celsius>)} spids: [8683] ) ] redirects: [] ) ] spids: [8666 8680] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'target_output_text='> (DQ <'Main Screen (tty1)'>)}) (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 OUTPUT_DISPLAY_INDEX)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'target_output_text='> name: target_output_text ) op: assign_op.Equal rhs: {(DQ <'Current screen or terminal'>)} spids: [8718] ) ] redirects: [] ) ] spids: [8701 8715] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'bitbyte_output_text='> (DQ <'Bit (Kbit, Mbit, Gbit)'>)}) (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 NETWORK_USAGE_CURRENT_OUTPUT_TYPE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'bitbyte_output_text='> name: bitbyte_output_text ) op: assign_op.Equal rhs: {(DQ <'Byte (KB, MB, GB)'>)} spids: [8753] ) ] redirects: [] ) ] spids: [8736 8750] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'autoscreenoff='> (DQ <Disabled>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'autoscreenoff='> name: autoscreenoff ) op: assign_op.Equal rhs: {(DQ <Enabled>)} spids: [8784] ) ] redirects: [] ) ] spids: [8771 8781] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> 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))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--menu>} {(DQ )} {<--cancel-button>} {(DQ <Exit>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName LASTSELECTED_ITEM))} {<17>} {<75>} {<10>} {(DQ <Colour>)} {(DQ <'Setting: Change the colour scheme.'>)} {(DQ <'Update Rate'>)} {(DQ <'Setting: Control the time between screen updates.'>)} {(DQ <Scenes>)} {(DQ <'Setting: Toggle which scenes are shown.'>)} {(DQ <Storage>)} {(DQ <'Setting: Set mount locations used for storage stats'>)} {(DQ <Temperature>)} {(DQ <'Setting: Output = '> ($ Id.VSub_DollarName temp_output_text))} {(DQ <'Net Usage Current'>)} {(DQ <'Setting: Output = '> ($ Id.VSub_DollarName bitbyte_output_text))} {(DQ <'Output Display'>)} {(DQ <'Setting: '> ($ Id.VSub_DollarName target_output_text) <.>)} {(DQ <'Auto screen off'>)} { (DQ <'Setting: '> ($ Id.VSub_DollarName autoscreenoff) <' | Start '> ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_START) <' h | End '> ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_END) <' h'> ) } {(DQ <'Start / Restart'>)} { (DQ <'Apply settings. Launch on '> ($ Id.VSub_DollarName target_output_text) <.> ) } {(DQ <Stop>)} {(DQ <'Stops '> ($ Id.VSub_DollarName PROGRAM_NAME) <.>)} ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [8794] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [8959] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'LASTSELECTED_ITEM='> name: LASTSELECTED_ITEM ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OPTION))} spids: [8981] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{(DQ <Storage>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<5>} spids: [9004] ) ] redirects: [] ) ] spids: [8998 9001 9008 -1] ) (case_arm pat_list: [{(DQ <'Auto screen off'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<4>} spids: [9017] ) ] redirects: [] ) ] spids: [9011 9014 9021 -1] ) (case_arm pat_list: [{(DQ <'Net Usage Current'>)}] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike NETWORK_USAGE_CURRENT_OUTPUT_TYPE) ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: { ($ Id.VSub_DollarName NETWORK_USAGE_CURRENT_OUTPUT_TYPE ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NETWORK_USAGE_CURRENT_OUTPUT_TYPE='> name: NETWORK_USAGE_CURRENT_OUTPUT_TYPE ) op: assign_op.Equal rhs: {<0>} spids: [9054] ) ] redirects: [] ) ] spids: [9037 9051] ) ] else_action: [] redirects: [] ) ] spids: [9024 9027 9061 -1] ) (case_arm pat_list: [{<Temperature>}] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike TEMPERATURE_OUTPUT_TYPE) ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName TEMPERATURE_OUTPUT_TYPE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TEMPERATURE_OUTPUT_TYPE='> name: TEMPERATURE_OUTPUT_TYPE ) op: assign_op.Equal rhs: {<0>} spids: [9092] ) ] redirects: [] ) ] spids: [9075 9089] ) ] else_action: [] redirects: [] ) ] spids: [9064 9065 9099 -1] ) (case_arm pat_list: [{(DQ <'Output Display'>)}] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike OUTPUT_DISPLAY_INDEX) ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName OUTPUT_DISPLAY_INDEX)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'OUTPUT_DISPLAY_INDEX='> name: OUTPUT_DISPLAY_INDEX ) op: assign_op.Equal rhs: {<0>} spids: [9132] ) ] redirects: [] ) ] spids: [9115 9129] ) ] else_action: [] redirects: [] ) ] spids: [9102 9105 9139 -1] ) (case_arm pat_list: [{(DQ <'Start / Restart'>)}] action: [(C {<Write_Settings_File>}) (C {<Stop>}) (C {<Start>})] spids: [9142 9145 9157 -1] ) (case_arm pat_list: [{(DQ <Stop>)}] action: [(C {<Stop>})] spids: [9160 9163 9169 -1] ) (case_arm pat_list: [{<Colour>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<1>} spids: [9176] ) ] redirects: [] ) ] spids: [9172 9173 9180 -1] ) (case_arm pat_list: [{(DQ <'Update Rate'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<2>} spids: [9189] ) ] redirects: [] ) ] spids: [9183 9186 9193 -1] ) (case_arm pat_list: [{<Scenes>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<3>} spids: [9200] ) ] redirects: [] ) ] spids: [9196 9197 9204 -1] ) ] redirects: [] ) ] spids: [8963 8977] ) ] else_action: [(C {<Menu_Exit>})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Colour body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [9239] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Colour -'>)} spids: [9276] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: {(SQ <'Select your colour scheme.'>)} spids: [9282] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> 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))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--menu>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName USER_COLOUR_INDEX))} {<15>} {<45>} {<7>} {(DQ <0>)} {(DQ <White>)} {(DQ <1>)} {(DQ <Red>)} {(DQ <2>)} {(DQ <Green>)} {(DQ <3>)} {(DQ <'Yellow (Default)'>)} {(DQ <4>)} {(DQ <Blue>)} {(DQ <5>)} {(DQ <Purple>)} {(DQ <6>)} {(DQ <Cyan>)} ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [9288] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [9410] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_COLOUR_INDEX='> name: USER_COLOUR_INDEX ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [9432] ) ] redirects: [] ) ] spids: [9414 9428] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_UpdateRate body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [9460] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Update Rate -'>)} spids: [9465] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: {(SQ <'Change the delay between scene changes and updates.'>)} spids: [9471] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> 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))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--menu>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName REFRESH_RATE))} {<15>} {<55>} {<7>} {(DQ <1>)} {(DQ <Second>)} {(DQ <3>)} {(DQ <Seconds>)} {(DQ <5>)} {(DQ <'Seconds (Default)'>)} {(DQ <10>)} {(DQ <Seconds>)} {(DQ <15>)} {(DQ <Seconds>)} {(DQ <20>)} {(DQ <Seconds>)} {(DQ <30>)} {(DQ <Seconds>)} {(DQ <45>)} {(DQ <Seconds>)} {(DQ <60>)} {(DQ <Seconds>)} ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [9477] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [9619] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'REFRESH_RATE='> name: REFRESH_RATE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [9641] ) ] redirects: [] ) ] spids: [9623 9637] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_SceneSelection body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [9669] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.dietpi-cloudshell_scenelist'>)} spids: [9674] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'aWhiptailArray='> (sh_array_literal left:<Id.Op_LParen _> words:[])} ) (C {<local>} {<Id.Lit_VarLike 'aWhip_OnOff_Status='> (sh_array_literal left:<Id.Op_LParen _> words:[]) } ) (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: {($ Id.VSub_DollarName MAX_SCENES)} ) 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 left: <Id.Lit_ArrayLhsOpen 'aWhip_OnOff_Status['> name: aWhip_OnOff_Status index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <on>)} spids: [9725] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledScenes> var_name: aEnabledScenes bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aWhip_OnOff_Status['> name: aWhip_OnOff_Status index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <off>)} spids: [9756] ) ] redirects: [] ) ] spids: [9735 9752] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'index='> <0>}) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<0>} spids: [9785] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <'CPU: Temperatures, Usage, frequency and more.'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9788] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<1>} spids: [9809] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <'Storage: Usage information for Flash and USB drives'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9812] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<2>} spids: [9833] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <' - Additional Storage (USB_2/3)'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9836] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<3>} spids: [9857] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <' - Additional Storage (USB_4/5)'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9860] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<4>} spids: [9881] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <'DietPi: Information, stats and updates for DietPi.'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9884] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<5>} spids: [9905] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <'Network Details: Ip address, Speeds, Signal and more.'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9908] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<6>} spids: [9929] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <'Network Usage: Bandwidth usage (sent / recieved).'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9932] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<7>} spids: [9953] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <'Memory: Stats for RAM and Swapfile usage.'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9956] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<8>} spids: [9977] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName index))} {(DQ <'Pi-hole: Stats for Pi-hole. Total Ads blocked etc.'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhip_OnOff_Status> var_name: aWhip_OnOff_Status bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName index)}) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [9980] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Scene Selection -'>)} spids: [10002] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: {(SQ <'Please use the spacebar to toggle which scenes are active.'>)} spids: [10008] ) ] redirects: [] ) (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--checklist>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--separate-output>} {<16>} {<75>} {<9>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhiptailArray> var_name: aWhiptailArray bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [10058] ) ] redirects: [] ) (C {<unset>} {<aWhiptailArray>}) (C {<unset>} {<aWhip_OnOff_Status>}) (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>} ) redirects: [] ) 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: {($ Id.VSub_DollarName MAX_SCENES)} ) 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 left: <Id.Lit_ArrayLhsOpen 'aEnabledScenes['> name: aEnabledScenes index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [10122] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [10082 10096] ) ] else_action: [] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aEnabledScenes['> name: aEnabledScenes index: {($ Id.VSub_DollarName line)} ) op: assign_op.Equal rhs: {<1>} spids: [10156] ) ] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_BlankScreenAtTime body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [10194] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'aWhipHour='> (sh_array_literal left:<Id.Op_LParen _> words:[])} ) (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: {<Id.Lit_Digits 24>} ) 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.Name left:<Id.Lit_VarLike 'aWhipHour+='> name:aWhipHour) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ ($ Id.VSub_DollarName i))} {(DQ <Hour>)}] ) } spids: [10232] ) ] redirects: [] ) ] ) redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'blank_screen_at_specific_time_enabled_text='> (SQ <Disabled>)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'blank_screen_at_specific_time_enabled_text='> name: blank_screen_at_specific_time_enabled_text ) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [10270] ) ] redirects: [] ) ] spids: [10257 10267] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Auto screen off -'>)} spids: [10280] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: { (SQ < 'Automatically power down the screen and disable DietPi-Cloudshell processing during a specific time.\\n\\nNB: This feature will only work if DietPi-Cloudshell was launched with the DietPi-Autostart option, or, launched from the main screen (tty1).' > ) } spids: [10286] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> 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))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--menu>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName REFRESH_RATE))} {<16>} {<60>} {<3>} {(DQ <Toggle>)} {(DQ ($ Id.VSub_DollarName blank_screen_at_specific_time_enabled_text))} {(DQ <'Start time'>)} { (DQ <'Set which hour to power off screen ('> ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_START) <').'> ) } {(DQ <'End time'>)} { (DQ <'Set which hour to power on screen ('> ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_END) <').'> ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [10292] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [10378] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <Toggle>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED) ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: { ($ Id.VSub_DollarName BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED=' > name: BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED ) op: assign_op.Equal rhs: {<0>} spids: [10444] ) ] redirects: [] ) ] spids: [10427 10441] ) ] else_action: [] redirects: [] ) ] spids: [10400 10416] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'Start time'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WHIP_QUESTION='> name: WHIP_QUESTION ) op: assign_op.Equal rhs: { (SQ < 'Please select which hour (24h) you would like the screen to power off.' > ) } spids: [10472] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> 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_QUESTION))} {<--default-item>} { (DQ ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_START) ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<16>} {<55>} {<7>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhipHour> var_name: aWhipHour bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [10478] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [10532] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_TIME_HOUR_START='> name: BLANK_SCREEN_TIME_HOUR_START ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [10553] ) ] redirects: [] ) ] spids: [10536 10550] ) ] else_action: [] redirects: [] ) ] spids: [10452 10468] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'End time'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WHIP_QUESTION='> name: WHIP_QUESTION ) op: assign_op.Equal rhs: { (SQ < 'Please select which hour (24h) you would like the screen to power on.' > ) } spids: [10581] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> 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_QUESTION))} {<--default-item>} {(DQ ($ Id.VSub_DollarName BLANK_SCREEN_TIME_HOUR_END))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<16>} {<55>} {<7>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhipHour> var_name: aWhipHour bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [10587] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [10641] ) ] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BLANK_SCREEN_TIME_HOUR_END='> name: BLANK_SCREEN_TIME_HOUR_END ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [10662] ) ] redirects: [] ) ] spids: [10645 10659] ) ] else_action: [] redirects: [] ) ] spids: [10561 10577] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<4>} spids: [10674] ) ] redirects: [] ) ] spids: [10382 10396] ) ] else_action: [] redirects: [] ) (C {<unset>} {<aWhipHour>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Storage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [10708] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'aWhiptailArray='> (sh_array_literal left:<Id.Op_LParen _> words:[])} ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_STORAGE)} ) 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.Name left: <Id.Lit_VarLike 'aWhiptailArray+='> name: aWhiptailArray ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName i))} { (DQ <': Drive '> ($ Id.VSub_DollarName i) <' | '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name STORAGE_PATH> var_name: STORAGE_PATH bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [10748] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'- Options : Storage Device Mount Location -'>)} spids: [10773] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: { (SQ < 'DietPi-Cloudshell pulls the storage stats from the drive mount location. If you have custom drives/mounts, please set them here to be displayed during storage scene updates.\\n\\n - Drive 1 = Displayed during main storage scene\\n - Drive 2/3 = Displayed during additional storage scene\\n - Drive 4/5 = Displayed during additional storage scene' > ) } spids: [10779] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> 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))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--menu>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--cancel-button>} {(DQ <Back>)} {<19>} {<75>} {<5>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhiptailArray> var_name: aWhiptailArray bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [10785] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [10840] ) ] redirects: [] ) (C {<unset>} {<aWhiptailArray>}) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'index='> ($ Id.VSub_DollarName OPTION)}) (C {<'/DietPi/dietpi/dietpi-drive_manager'>} {<1>}) (C {<local>} {<Id.Lit_VarLike 'return_string='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/tmp/dietpi-drive_manager_selmnt'>}) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName return_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'STORAGE_PATH['> name: STORAGE_PATH index: {($ Id.VSub_DollarName index)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName return_string))} spids: [10910] ) ] redirects: [] ) ] spids: [10893 10906] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<5>} spids: [10925] ) ] redirects: [] ) ] spids: [10851 10865] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<Init>}) (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 0>} ) redirects: [] ) 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_GreatEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) 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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Main>})] spids: [11014 11028] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Colour>})] spids: [11034 11048] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_UpdateRate>})] spids: [11054 11068] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_SceneSelection>})] spids: [11074 11088] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_BlankScreenAtTime>})] spids: [11094 11108] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Storage>})] spids: [11114 11128] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] spids: [10970 10984] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Enable_Term_Options>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName RUN_INTRO)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Run_Intro>})] spids: [11176 11186] ) ] else_action: [] redirects: [] ) (command.Simple words: [{<renice>} {<-n>} {<10>} {($ Id.VSub_Dollar '$')}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<true>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { ($ Id.VSub_DollarName BLANK_SCREEN_AT_SPECIFIC_TIME_ENABLED) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<RUN_BLANK_SCREEN_AT_SPECIFIC_TIME>})] spids: [11227 11237] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName BLANK_SCREEN_ACTIVE)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<sleep>} {<60>})] spids: [11253 11263] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledScenes> var_name: aEnabledScenes bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName SCENE_CURRENT)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Update_Banner>}) (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 SCENE_CURRENT)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Update_Scene_1>} {<0>} {<1>})] spids: [11308 11322] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SCENE_CURRENT)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Update_Scene_1>} {<2>} {<3>})] spids: [11338 11352] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SCENE_CURRENT)} right: {<Id.Lit_Digits 3>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Update_Scene_1>} {<4>} {<5>})] spids: [11368 11382] ) ] else_action: [ (C {<Update_Scene_> ($ Id.VSub_DollarName SCENE_CURRENT)}) ] redirects: [] ) (C {<sleep>} {($ Id.VSub_DollarName REFRESH_RATE)}) ] spids: [11281 11296] ) ] else_action: [] redirects: [] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike SCENE_CURRENT) ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_GreatEqual left: {($ Id.VSub_DollarName SCENE_CURRENT)} right: {($ Id.VSub_DollarName MAX_SCENES)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SCENE_CURRENT='> name: SCENE_CURRENT ) op: assign_op.Equal rhs: {<0>} spids: [11458] ) ] redirects: [] ) ] spids: [11441 11455] ) ] else_action: [] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [11150 11164] ) ] else_action: [] redirects: [] ) (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}] redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) (C {<unset>} {<aCOLOUR>}) (C {<unset>} {<aEnabledScenes>}) (C {<Destroy_STORAGE>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] redirects: [] right: <Id.Lit_RBrace '}'> )