(CommandList children: [ (AndOr ops: [Op_DPipe] children: [ (C {(source)} {(DQ (${ VSub_Name PORTAGE_BIN_PATH) (/eapi.sh))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) (C {(shopt)} {(-s)} {(expand_aliases)}) (C {(alias)} {(Lit_VarLike 'save_IFS=') (SQ <'[ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}"'>)}) (C {(alias)} {(Lit_VarLike 'restore_IFS=') (SQ < 'if [ "${old_IFS:-unset}" != "unset" ]; then IFS="${old_IFS}"; unset old_IFS; else unset IFS; fi' > ) } ) (FuncDef name: assert body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:x) op:Equal spids:[62]) (assign_pair lhs: (LhsName name:pipestatus) op: Equal rhs: { (BracedVarSub token: <VSub_Name PIPESTATUS> bracket_op: (WholeArray op_id:Arith_Star) spids: [65 70] ) } spids: [64] ) ] spids: [60] ) (ForEach iter_name: x iter_words: [{($ VSub_Name '$pipestatus')}] do_arg_iter: F body: (DoGroup children: [ (AndOr ops: [Op_DPipe] children: [ (DBracket expr: (BoolBinary op_id:BoolBinary_eq left:{($ VSub_Name '$x')} right:{(0)}) ) (C {(die)} {(DQ ($ VSub_At '$@'))}) ] ) ] spids: [83 105] ) spids: [78 81] ) ] spids: [57] ) spids: [53 56] ) (FuncDef name: __assert_sigpipe_ok body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:x) op:Equal spids:[176]) (assign_pair lhs: (LhsName name:pipestatus) op: Equal rhs: { (BracedVarSub token: <VSub_Name PIPESTATUS> bracket_op: (WholeArray op_id:Arith_Star) spids: [179 184] ) } spids: [178] ) ] spids: [174] ) (ForEach iter_name: x iter_words: [{($ VSub_Name '$pipestatus')}] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_ne left: {($ VSub_Name '$x')} right: {(0)} ) right: (BoolBinary op_id: BoolBinary_ne left: {($ VSub_Name '$x')} right: { (BracedVarSub token: <VSub_Name PORTAGE_SIGPIPE_STATUS> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(141)} ) spids: [220 224] ) } ) ) ) ] action: [ (C {(__helpers_die)} {(DQ ($ VSub_At '$@'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 229] ) ] spids: [16777215 244] ) ] spids: [197 247] ) spids: [192 195] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_ne left:{($ VSub_Name '$x')} right:{(0)}) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(__helpers_die)} {(DQ ($ VSub_At '$@'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 268] ) ] spids: [16777215 283] ) ] spids: [114] ) spids: [110 113] ) (C {(shopt)} {(-s)} {(extdebug)}) (FuncDef name: __dump_trace body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:funcname) op: Equal rhs: {(DQ )} spids: [313] ) (assign_pair lhs: (LhsName name:sourcefile) op: Equal rhs: {(DQ )} spids: [317] ) (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: {(DQ )} spids: [321] ) (assign_pair lhs: (LhsName name:s) op: Equal rhs: {(DQ (yes))} spids: [325] ) (assign_pair lhs:(LhsName name:n) op:Equal spids:[330]) (assign_pair lhs:(LhsName name:p) op:Equal spids:[332]) ] spids: [311] ) (Assignment keyword: Assign_Declare flags: [-i] pairs: [ (assign_pair lhs: (LhsName name:strip) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)}) spids: [340 344] ) } spids: [339] ) ] spids: [335] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:filespacing) op: Equal rhs: {($ VSub_Number '$2')} spids: [349] ) (assign_pair lhs: (LhsName name:linespacing) op: Equal rhs: {($ VSub_Number '$3')} spids: [352] ) ] spids: [347] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:n) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [375 381] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:p) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGV> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [397 403] ) } ) ) ) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:n) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name FUNCNAME> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)})) spids: [430 437] ) ) } {(Lit_Other '=') (Lit_Other '=')} {(DQ (__qa_call))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Break break>) ] ) (DParen child: (BinaryAssign op_id: Arith_MinusEqual left: (LhsName name:p) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)})) spids: [460 467] ) } ) ) ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n)) ) ] spids: [424 482] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:n) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:n) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [509 515] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:p) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGV> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [531 537] ) } ) ) ) ] spids: [16777215 500] ) ] spids: [16777215 543] ) (C {(eerror)} {(DQ ('Call stack:'))}) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:n) right: (ArithWord w:{(${ VSub_Name strip)}) ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:funcname) op: Equal rhs: { (BracedVarSub token: <VSub_Name FUNCNAME> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{(${ VSub_Name n)}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [575 586] ) } spids: [574] ) ] spids: [574] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sourcefile) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(basename)} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr: (ArithWord w:{(${ VSub_Name n)}) ) spids: [594 601] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [590 603] ) } spids: [589] ) ] spids: [589] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{(${ VSub_Name n)}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [607 618] ) } spids: [606] ) ] spids: [606] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:args) op: Equal rhs: {(EmptyPart)} spids: [625] ) ] spids: [625] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_n child: { (DQ (BracedVarSub token: <VSub_Name BASH_ARGV> bracket_op: (WholeArray op_id:Lit_At) spids: [635 640] ) ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:j) right: (ArithWord w:{(Lit_Digits 1)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:j) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{(${ VSub_Name n)}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [665 676] ) } ) ) update: (UnaryAssign op_id:Arith_DPlus child:(LhsName name:j)) body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:newarg) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_ARGV> bracket_op: (ArrayIndex expr: (ArithWord w: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:p) right: (ArithVarRef name:j) ) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [694 707] ) } ) ) spids: [691 709] ) } spids: [690] ) ] spids: [690] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:args) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name args> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {(${ VSub_Name args) (' ')} ) spids: [714 721] ) ("'") (${ VSub_Name newarg) ("'") ) } spids: [712] ) ] spids: [712] ) ] spids: [687 730] ) ) (DParen child: (BinaryAssign op_id: Arith_MinusEqual left: (LhsName name:p) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{(${ VSub_Name n)}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [739 750] ) } ) ) ) ] spids: [16777215 646] ) ] spids: [16777215 756] ) (C {(eerror)} { (DQ (' ') (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ('%') (${ VSub_Name filespacing) (s))} {(DQ (${ VSub_Name sourcefile))} ) ] ) left_token: <Left_CommandSub '$('> spids: [763 779] ) (', line ') (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ('%') (${ VSub_Name linespacing) (s))} {(DQ (${ VSub_Name lineno))} ) ] ) left_token: <Left_CommandSub '$('> spids: [781 797] ) (': Called ') (${ VSub_Name funcname) (BracedVarSub token: <VSub_Name args> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {(' ') (${ VSub_Name args)} ) spids: [802 809] ) ) } ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n)) ) ] spids: [571 822] ) ) ] spids: [308] ) spids: [304 307] ) (FuncDef name: nonfatal body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children:[(C {(___eapi_has_nonfatal)})] negated:T) terminator: <Op_Semi ';'> ) ] action: [ (C {(die)} {(DQ ($ VSub_Name '$FUNCNAME') ('() not supported in this EAPI'))}) ] spids: [16777215 841] ) ] spids: [16777215 852] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_lt left:{($ VSub_Pound '$#')} right:{(1)}) ) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ($ VSub_Name '$FUNCNAME') ('(): Missing argument'))})] spids: [16777215 868] ) ] spids: [16777215 879] ) (SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] more_env: [(env_pair name:PORTAGE_NONFATAL val:{(1)} spids:[883])] ) ] spids: [831] ) spids: [827 830] ) (FuncDef name: __bashpid body: (BraceGroup children:[(C {(sh)} {(-c)} {(SQ <'echo ${PPID}'>)})] spids:[897]) spids: [893 896] ) (FuncDef name: __helpers_die body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(___eapi_helpers_can_die)}) (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name PORTAGE_NONFATAL)} right: {(1)} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ($ VSub_At '$@'))})] spids: [16777215 949] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[970])] ) ] spids: [959 974] ) ] spids: [927] ) spids: [923 926] ) (FuncDef name: die body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name _PORTAGE_ORIG_PATH)}) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(${ VSub_Name _PORTAGE_ORIG_PATH)} spids: [1006] ) ] spids: [1006] ) ] ) (C {(set)} {(Lit_Other '+') (x)}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_Literals ' '> <Char_OneChar '\\t'> <Char_OneChar '\\n'>] ) } spids: [1024] ) ] spids: [1022] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(___eapi_die_can_respect_nonfatal)}) (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(BoolUnary_n -n)} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name PORTAGE_NONFATAL)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: {($ VSub_Pound '$#')} right: {(0)} ) ) (C {(eerror)} {(DQ ($ VSub_Star '$*'))}) ] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 1071] ) ] spids: [16777215 1098] ) ] spids: [16777215 1050] ) ] spids: [16777215 1101] ) (C {(set)} {(Lit_Other '+') (e)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name QA_INTERCEPTORS))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(unset)} {(-f)} {(${ VSub_Name QA_INTERCEPTORS)}) (C {(unset)} {(QA_INTERCEPTORS)}) ] spids: [16777215 1127] ) ] spids: [16777215 1152] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:n) op:Equal spids:[1157]) (assign_pair lhs: (LhsName name:filespacing) op: Equal rhs: {(0)} spids: [1159] ) (assign_pair lhs: (LhsName name:linespacing) op: Equal rhs: {(0)} spids: [1162] ) ] spids: [1155] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:n) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1176 1182] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:n) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name FUNCNAME> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)})) spids: [1213 1220] ) ) } {(Lit_Other '=') (Lit_Other '=')} {(DQ (__qa_call))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Break break>) ] ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n)) ) ] spids: [1207 1246] ) ) (AndOr ops: [Op_DAmp] children: [ (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:n) right: (ArithWord w:{(Lit_Digits 0)}) ) ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:n) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1268 1274] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ] ) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:n) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sourcefile) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)})) spids: [1302 1309] ) } spids: [1301] ) (assign_pair lhs: (LhsName name:sourcefile) op: Equal rhs: { (BracedVarSub token: <VSub_Name sourcefile> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {('*') (Lit_Slash /)} ) spids: [1312 1317] ) } spids: [1311] ) ] spids: [1301] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name n)})) spids: [1321 1328] ) } spids: [1320] ) ] spids: [1320] ) (AndOr ops: [Op_DAmp] children: [ (DParen child: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:filespacing) right: (ArithWord w: { (BracedVarSub token: <VSub_Name sourcefile> prefix_op: VSub_Pound spids: [1336 1339] ) } ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filespacing) op: Equal rhs: { (BracedVarSub token: <VSub_Name sourcefile> prefix_op: VSub_Pound spids: [1346 1349] ) } spids: [1345] ) ] spids: [1345] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DParen child: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:linespacing) right: (ArithWord w: { (BracedVarSub token: <VSub_Name lineno> prefix_op: VSub_Pound spids: [1357 1360] ) } ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:linespacing) op: Equal rhs: { (BracedVarSub token: <VSub_Name lineno> prefix_op: VSub_Pound spids: [1367 1370] ) } spids: [1366] ) ] spids: [1366] ) ] ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n)) ) ] spids: [1298 1382] ) ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:phase_str) op: Equal rhs: {(EmptyPart)} spids: [1396] ) ] spids: [1394] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$EBUILD_PHASE')}) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:phase_str) op: Equal rhs: {(DQ (' (') ($ VSub_Name '$EBUILD_PHASE') (' phase)'))} spids: [1409] ) ] spids: [1409] ) ] ) (C {(eerror)} { (DQ ('ERROR: ') (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF) ('::') (${ VSub_Name PORTAGE_REPO_NAME) (' failed') (${ VSub_Name phase_str) (':') ) } ) (C {(eerror)} { (DQ (' ') (BracedVarSub token: <VSub_Star '*'> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{('(no error message)')}) spids: [1444 1448] ) ) } ) (C {(eerror)}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:main_index) op:Equal spids:[1461])] spids: [1459] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:main_index) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_SOURCE> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1470 1476] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(has)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$main_index')})) suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)}) spids: [1490 1498] ) } {(ebuild.sh)} {(misc-functions.sh)} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(__dump_trace)} {(2)} {(${ VSub_Name filespacing)} {(${ VSub_Name linespacing)}) (C {(eerror)} { (DQ (' ') (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ('%') (${ VSub_Name filespacing) (s))} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {('*') (Lit_Slash /)} ) spids: [1538 1546] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1526 1548] ) (', line ') (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(DQ ('%') (${ VSub_Name linespacing) (s))} { (DQ (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [1562 1567] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1550 1569] ) (': Called die') ) } ) (C {(eerror)} {(DQ ('The specific snippet of code:'))}) (Pipeline children: [ (C {(sed)} {(-n)} {(-e)} { (DQ ('# When we get to the line that failed, append it to the\n') ('\t\t # hold space, move the hold space to the pattern space,\n') ('\t\t # then print out the pattern space and quit immediately\n') ('\t\t ') (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [1618 1623] ) ('{H;g;p;q}') ) } {(-e)} { (SQ <'# If this line ends with a line continuation, append it\n'> <'\t\t # to the hold space\n'> <'\t\t /\\\\$/H'> ) } {(-e)} { (SQ <'# If this line does not end with a line continuation,\n'> <'\t\t # erase the line and set the hold buffer to it (thus\n'> <'\t\t # erasing the hold buffer in the process)\n'> <'\t\t /[^\\]$/{s:^.*$::;h}'> ) } { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1651 1656] ) ) } ) (C {(sed)} {(-e)} {(SQ <1d>)} {(-e)} {(SQ <'s:^:RETAIN-LEADING-SPACE:'>)}) (While cond: [(Sentence child:(C {(read)} {(-r)} {(n)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Sentence child: (C {(eerror)} { (DQ (' ') (BracedVarSub token: <VSub_Name n> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {(RETAIN-LEADING-SPACE)} ) spids: [1697 1701] ) ) } ) terminator: <Op_Semi ';'> ) ] spids: [1691 1706] ) ) ] negated: F ) (C {(eerror)}) ] spids: [16777215 1506] ) ] spids: [16777215 1712] ) (C {(eerror)} { (DQ ('If you need support, post the output of ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ("emerge --info '=") (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF) ('::') (${ VSub_Name PORTAGE_REPO_NAME) ("'") (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (',') ) } ) (C {(eerror)} { (DQ ('the complete build log and the output of ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ("emerge -pqv '=") (${ VSub_Name CATEGORY) (/) (${ VSub_Name PF) ('::') (${ VSub_Name PORTAGE_REPO_NAME) ("'") (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (.) ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(has)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$main_index')}) ) suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {('*') (Lit_Slash /)} ) spids: [1782 1790] ) } {(ebuild.sh)} {(misc-functions.sh)} ) (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name EBUILD_PHASE)} right: {(depend)} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[1819])] spids: [1817] ) (ForEach iter_name: x iter_words: [{($ VSub_Name '$EBUILD_DEATH_HOOKS')}] do_arg_iter: F body: (DoGroup children: [ (SimpleCommand words: [{(${ VSub_Name x)} {(DQ ($ VSub_At '$@'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [1842] ) (Redir op_id: Redir_GreatAnd fd: 1 arg_word: {(2)} spids: [1845] ) ] ) ] spids: [1831 1849] ) spids: [1827 1829] ) (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Name '$PORTAGE_BUILDDIR') (/.die_hooks))} spids: [1852] ) ] ) ] spids: [16777215 1814] ) ] spids: [16777215 1860] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name PORTAGE_LOG_FILE)}) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(eerror)} { (DQ ("The complete build log is located at '") (${ VSub_Name PORTAGE_LOG_FILE) ("'.") ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name PORTAGE_LOG_FILE)} right: {(${ VSub_Name T) (/) (Lit_Other '*')} ) ) (Pipeline children: [(C {(has)} {(fail-clean)} {(${ VSub_Name FEATURES)})] negated: T ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:log_ext) op: Equal rhs: {(log)} spids: [1935] ) ] spids: [1933] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name PORTAGE_LOG_FILE)} right: {(Lit_Other '*') (.log)} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:log_ext) op: PlusEqual rhs: {(.) (BracedVarSub token: <VSub_Name PORTAGE_LOG_FILE> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {('*.')} ) spids: [1956 1960] ) } spids: [1954] ) ] spids: [1954] ) ] ) (C {(eerror)} { (DQ ("For convenience, a symlink to the build log is located at '") (${ VSub_Name T) (/build.) (${ VSub_Name log_ext) ("'.") ) } ) ] spids: [16777215 1926] ) ] spids: [16777215 1978] ) ] spids: [16777215 1878] ) ] spids: [16777215 1981] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} {(DQ (${ VSub_Name T) (/environment))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(eerror)} { (DQ ("The ebuild environment file is located at '") (${ VSub_Name T) ("/environment'.") ) } ) ] spids: [16777215 2001] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name T))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (BraceGroup children: [(C {(set)}) (C {(export)})] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ (${ VSub_Name T) (/die.env))} spids: [2045] ) ] spids: [2034] ) (C {(eerror)} { (DQ ("The ebuild environment file is located at '") (${ VSub_Name T) ("/die.env'.") ) } ) ] spids: [2015 2031] ) ] spids: [16777215 2066] ) (C {(eerror)} { (DQ ("Working directory: '") (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [2073 2075] ) ("'") ) } ) (C {(eerror)} {(DQ ("S: '") (${ VSub_Name S) ("'"))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$PORTAGE_EBUILD_EXIT_FILE')}) ) (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Name '$PORTAGE_EBUILD_EXIT_FILE'))} spids: [2102] ) ] ) ] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$PORTAGE_IPC_DAEMON')}) ) (C {(DQ ($ VSub_Name '$PORTAGE_BIN_PATH')) (/ebuild-ipc)} {(ControlFlow_Exit exit)} {(1)} ) ] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name BASHPID> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: { (CommandSubPart command_list: (CommandList children:[(C {(__bashpid)})]) left_token: <Left_CommandSub '$('> spids: [2139 2141] ) } ) spids: [2136 2142] ) } right: {(${ VSub_Name EBUILD_MASTER_PID)} ) ) (C {(kill)} {(-s)} {(SIGTERM)} {(${ VSub_Name EBUILD_MASTER_PID)}) ] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [983] ) spids: [979 982] ) (FuncDef name: __quiet_mode body: (BraceGroup children: [ (DBracket expr: (BoolBinary op_id:BoolBinary_eq left:{(${ VSub_Name PORTAGE_QUIET)} right:{(1)}) ) ] spids: [2176] ) spids: [2172 2175] ) (FuncDef name: __vecho body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [(C {(__quiet_mode)}) (C {(echo)} {(DQ ($ VSub_At '$@'))})] ) ] spids: [2198] ) spids: [2194 2197] ) (FuncDef name: __elog_base body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:messagetype) op:Equal spids:[2226])] spids: [2224] ) (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Number 1))} {(-o)} {(-z)} {(DQ (${ VSub_Name T))} {(-o)} {(KW_Bang '!')} {(-d)} {(DQ (${ VSub_Name T) (/logging))} {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (Case to_match: {(DQ (${ VSub_Number 1))} arms: [ (case_arm pat_list: [{(INFO)} {(WARN)} {(ERROR)} {(LOG)} {(QA)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:messagetype) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [2294] ) ] spids: [2294] ) (C {(shift)}) ] spids: [2282 2291 2305 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(__vecho)} {(-e)} { (DQ (' ') (${ VSub_Name BAD) ('*') (${ VSub_Name NORMAL) ( ' Invalid use of internal function __elog_base(), next message will not be logged' ) ) } ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [2308 2309 2334 16777215] ) ] spids: [2271 2279 2337] ) (Pipeline children: [ (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}) (While cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (SimpleCommand words: [ {(echo)} {(DQ ($ VSub_Name '$messagetype') (' ') ($ VSub_Name '$REPLY'))} ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: { (DQ (${ VSub_Name T) (/logging/) (BracedVarSub token: <VSub_Name EBUILD_PHASE> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(other)} ) spids: [2378 2382] ) ) } spids: [2369] ) ] ) ] spids: [2358 2386] ) ) ] negated: F ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2221] ) spids: [2217 2220] ) (FuncDef name: eqawarn body: (BraceGroup children: [ (C {(__elog_base)} {(QA)} {(DQ ($ VSub_Star '$*'))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name LAST_E_CMD)} right: {(DQ (ebegin))} ) ) ) (C {(echo)}) ] ) (Pipeline children: [ (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}) (While cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (SimpleCommand words: [ {(__vecho)} { (DQ (' ') ($ VSub_Name '$WARN') ('*') ($ VSub_Name '$NORMAL') (' ') ($ VSub_Name '$REPLY') ) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [2475] ) ] ) ] spids: [2461 2479] ) ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (eqawarn))} spids: [2482] ) ] spids: [2482] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2400] ) spids: [2396 2399] ) (FuncDef name: elog body: (BraceGroup children: [ (C {(__elog_base)} {(LOG)} {(DQ ($ VSub_Star '$*'))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name LAST_E_CMD)} right: {(DQ (ebegin))} ) ) ) (C {(echo)}) ] ) (Pipeline children: [ (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}) (While cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(echo)} { (DQ (' ') ($ VSub_Name '$GOOD') ('*') ($ VSub_Name '$NORMAL') (' ') ($ VSub_Name '$REPLY') ) } ) ] spids: [2560 2575] ) ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (elog))} spids: [2578] ) ] spids: [2578] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2499] ) spids: [2495 2498] ) (FuncDef name: einfo body: (BraceGroup children: [ (C {(__elog_base)} {(INFO)} {(DQ ($ VSub_Star '$*'))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name LAST_E_CMD)} right: {(DQ (ebegin))} ) ) ) (C {(echo)}) ] ) (Pipeline children: [ (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}) (While cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(echo)} { (DQ (' ') ($ VSub_Name '$GOOD') ('*') ($ VSub_Name '$NORMAL') (' ') ($ VSub_Name '$REPLY') ) } ) ] spids: [2656 2671] ) ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (einfo))} spids: [2674] ) ] spids: [2674] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2595] ) spids: [2591 2594] ) (FuncDef name: einfon body: (BraceGroup children: [ (C {(__elog_base)} {(INFO)} {(DQ ($ VSub_Star '$*'))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name LAST_E_CMD)} right: {(DQ (ebegin))} ) ) ) (C {(echo)}) ] ) (C {(echo)} {(-ne)} {(DQ (' ') (${ VSub_Name GOOD) ('*') (${ VSub_Name NORMAL) (' ') ($ VSub_Star '$*'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (einfon))} spids: [2752] ) ] spids: [2752] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2691] ) spids: [2687 2690] ) (FuncDef name: ewarn body: (BraceGroup children: [ (C {(__elog_base)} {(WARN)} {(DQ ($ VSub_Star '$*'))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name LAST_E_CMD)} right: {(DQ (ebegin))} ) ) ) (C {(echo)}) ] ) (Pipeline children: [ (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}) (While cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (SimpleCommand words: [ {(echo)} { (DQ (' ') ($ VSub_Name '$WARN') ('*') ($ VSub_Name '$NORMAL') (' ') ($ VSub_Name '$RC_INDENTATION') ($ VSub_Name '$REPLY') ) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [2845] ) ] ) ] spids: [2830 2849] ) ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (ewarn))} spids: [2852] ) ] spids: [2852] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2769] ) spids: [2765 2768] ) (FuncDef name: eerror body: (BraceGroup children: [ (C {(__elog_base)} {(ERROR)} {(DQ ($ VSub_Star '$*'))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name LAST_E_CMD)} right: {(DQ (ebegin))} ) ) ) (C {(echo)}) ] ) (Pipeline children: [ (C {(echo)} {(-e)} {(DQ ($ VSub_At '$@'))}) (While cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (SimpleCommand words: [ {(echo)} { (DQ (' ') ($ VSub_Name '$BAD') ('*') ($ VSub_Name '$NORMAL') (' ') ($ VSub_Name '$RC_INDENTATION') ($ VSub_Name '$REPLY') ) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [2945] ) ] ) ] spids: [2930 2949] ) ) ] negated: F ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (eerror))} spids: [2952] ) ] spids: [2952] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2869] ) spids: [2865 2868] ) (FuncDef name: ebegin body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:msg) op: Equal rhs: {(DQ ($ VSub_Star '$*'))} spids: [2974] ) (assign_pair lhs:(LhsName name:dots) op:Equal spids:[2979]) (assign_pair lhs: (LhsName name:spaces) op: Equal rhs: { (BracedVarSub token: <VSub_Name RC_DOT_PATTERN> suffix_op: (PatSub pat: {('?')} replace: {(' ')} do_all: T do_prefix: F do_suffix: F ) spids: [2982 2989] ) } spids: [2981] ) ] spids: [2972] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name RC_DOT_PATTERN)}) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dots) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(printf)} { (DQ ('%') (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:COLS) right: (ArithWord w:{(Lit_Digits 3)}) ) right: (ArithWord w: { (BracedVarSub token: <VSub_Name RC_INDENTATION> prefix_op: VSub_Pound spids: [3025 3028] ) } ) ) right: (ArithWord w: { (BracedVarSub token: <VSub_Name msg> prefix_op: VSub_Pound spids: [3032 3035] ) } ) ) right: (ArithWord w:{(Lit_Digits 7)}) ) spids: [3015 3042] ) (s) ) } {(SQ )} ) ] ) left_token: <Left_CommandSub '$('> spids: [3010 3048] ) } spids: [3009] ) ] spids: [3009] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dots) op: Equal rhs: { (BracedVarSub token: <VSub_Name dots> suffix_op: (PatSub pat: {(${ VSub_Name spaces)} replace: {(${ VSub_Name RC_DOT_PATTERN)} do_all: T do_prefix: F do_suffix: F ) spids: [3052 3063] ) } spids: [3051] ) ] spids: [3051] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msg) op: Equal rhs: {(DQ (${ VSub_Name msg) (${ VSub_Name dots))} spids: [3066] ) ] spids: [3066] ) ] spids: [16777215 3006] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msg) op: Equal rhs: {(DQ (${ VSub_Name msg) (' ...'))} spids: [3080] ) ] spids: [3080] ) ] spids: [3077 3089] ) (C {(einfon)} {(DQ (${ VSub_Name msg))}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) ) (C {(echo)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_LEN) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(Lit_Digits 3)}) right: (ArithWord w: { (BracedVarSub token: <VSub_Name RC_INDENTATION> prefix_op: VSub_Pound spids: [3127 3130] ) } ) ) right: (ArithWord w: { (BracedVarSub token: <VSub_Name msg> prefix_op: VSub_Pound spids: [3134 3137] ) } ) ) spids: [3121 3140] ) } spids: [3120] ) ] spids: [3120] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (ebegin))} spids: [3143] ) ] spids: [3143] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2969] ) spids: [2965 2968] ) (FuncDef name: __eend body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:retval) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)}) spids: [3166 3170] ) } spids: [3165] ) (assign_pair lhs: (LhsName name:efunc) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(eerror)}) spids: [3173 3177] ) } spids: [3172] ) (assign_pair lhs:(LhsName name:msg) op:Equal spids:[3179]) ] spids: [3163] ) (C {(shift)} {(2)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name retval)} right: {(DQ (0))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msg) op: Equal rhs: { (DQ (${ VSub_Name BRACKET) ('[ ') (${ VSub_Name GOOD) (ok) (${ VSub_Name BRACKET) (' ]') (${ VSub_Name NORMAL) ) } spids: [3209] ) ] spids: [3209] ) ] spids: [16777215 3206] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Star '$*')}) ) terminator: <Op_Semi ';'> ) ] action: [(C {(${ VSub_Name efunc)} {(DQ ($ VSub_Star '$*'))})] spids: [16777215 3244] ) ] spids: [16777215 3256] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msg) op: Equal rhs: { (DQ (${ VSub_Name BRACKET) ('[ ') (${ VSub_Name BAD) ('!!') (${ VSub_Name BRACKET) (' ]') (${ VSub_Name NORMAL) ) } spids: [3259] ) ] spids: [3259] ) ] spids: [3229 3279] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name RC_ENDCOL)} right: {(DQ (yes))} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(-e)} {(DQ (${ VSub_Name ENDCOL) (' ') (${ VSub_Name msg))})] spids: [16777215 3301] ) ] else_action: [ (AndOr ops: [Op_DPipe] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name LAST_E_CMD)} right: {(ebegin)} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_LEN) op: Equal rhs: {(0)} spids: [3336] ) ] spids: [3336] ) ] ) (C {(printf)} { (DQ ('%') (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:COLS) right: (ArithVarRef name:LAST_E_LEN) ) right: (ArithWord w:{(Lit_Digits 7)}) ) spids: [3344 3357] ) ('s%b') (Lit_Other '\\') (n) ) } {(SQ )} {(DQ (${ VSub_Name msg))} ) ] spids: [3319 3373] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(${ VSub_Name retval)} ) ] spids: [3160] ) spids: [3156 3159] ) (FuncDef name: eend body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:retval) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)}) spids: [3396 3400] ) } spids: [3395] ) ] spids: [3393] ) (C {(shift)}) (C {(__eend)} {(${ VSub_Name retval)} {(eerror)} {(DQ ($ VSub_Star '$*'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LAST_E_CMD) op: Equal rhs: {(DQ (eend))} spids: [3421] ) ] spids: [3421] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(${ VSub_Name retval)} ) ] spids: [3390] ) spids: [3386 3389] ) (FuncDef name: __unset_colors body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:COLS) op:Equal rhs:{(80)} spids:[3443])] spids: [3443] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ENDCOL) op:Equal rhs:{(EmptyPart)} spids:[3447])] spids: [3447] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:GOOD) op:Equal rhs:{(EmptyPart)} spids:[3451])] spids: [3451] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WARN) op:Equal rhs:{(EmptyPart)} spids:[3454])] spids: [3454] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BAD) op:Equal rhs:{(EmptyPart)} spids:[3457])] spids: [3457] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:NORMAL) op:Equal rhs:{(EmptyPart)} spids:[3460])] spids: [3460] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:HILITE) op:Equal rhs:{(EmptyPart)} spids:[3463])] spids: [3463] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BRACKET) op: Equal rhs: {(EmptyPart)} spids: [3466] ) ] spids: [3466] ) ] spids: [3440] ) spids: [3436 3439] ) (FuncDef name: __set_colors body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COLS) op: Equal rhs: { (BracedVarSub token: <VSub_Name COLUMNS> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)}) spids: [3479 3483] ) } spids: [3478] ) ] spids: [3478] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$COLS')} right: {(0)} ) right: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$EBUILD_PHASE')} right: {(depend)} ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COLS) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (C {(set)} {(--)} { (CommandSubPart command_list: (CommandList children: [ (AndOr ops: [Op_DPipe] children: [ (Subshell child: (SimpleCommand words: [{(stty)} {(size)}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(/dev/tty)} spids: [3545] ) ] ) redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [3550] ) ] spids: [3539 3548] ) (C {(echo)} {(24)} {(80)}) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [3537 3561] ) } ) terminator: <Op_Semi ';'> ) (C {(echo)} {($ VSub_Number '$2')}) ] ) left_token: <Left_CommandSub '$('> spids: [3532 3568] ) } spids: [3531] ) ] spids: [3531] ) ] ) (AndOr ops: [Op_DPipe] children: [ (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:COLS) right: (ArithWord w:{(Lit_Digits 0)}) ) ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:COLS) right: (ArithWord w:{(Lit_Digits 80)}) ) ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ENDCOL) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [ <Char_OneChar '\\e'> <Char_Literals '[A'> <Char_OneChar '\\e'> <Char_Literals '['> ] ) (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:COLS) right: (ArithWord w:{(Lit_Digits 8)}) ) spids: [3612 3621] ) (SQ <C>) } spids: [3605] ) ] spids: [3605] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name PORTAGE_COLORMAP))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(eval)} {(${ VSub_Name PORTAGE_COLORMAP)})] spids: [16777215 3643] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GOOD) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\e'> <Char_Literals '[32;01m'>] ) } spids: [3656] ) ] spids: [3656] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WARN) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\e'> <Char_Literals '[33;01m'>] ) } spids: [3663] ) ] spids: [3663] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BAD) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\e'> <Char_Literals '[31;01m'>] ) } spids: [3670] ) ] spids: [3670] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HILITE) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\e'> <Char_Literals '[36;01m'>] ) } spids: [3677] ) ] spids: [3677] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BRACKET) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\e'> <Char_Literals '[34;01m'>] ) } spids: [3684] ) ] spids: [3684] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NORMAL) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\e'> <Char_Literals '[0m'>] ) } spids: [3691] ) ] spids: [3691] ) ] spids: [3653 3698] ) ] spids: [3475] ) spids: [3471 3474] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RC_ENDCOL) op:Equal rhs:{(DQ (yes))} spids:[3703])] spids: [3703] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RC_INDENTATION) op:Equal rhs:{(SQ )} spids:[3708])] spids: [3708] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RC_DEFAULT_INDENT) op:Equal rhs:{(2)} spids:[3712])] spids: [3712] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RC_DOT_PATTERN) op:Equal rhs:{(SQ )} spids:[3715])] spids: [3715] ) (Case to_match: { (DQ (BracedVarSub token: <VSub_Name NOCOLOR> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)}) spids: [3723 3727] ) ) } arms: [ (case_arm pat_list: [{(yes)} {(true)}] action: [(C {(__unset_colors)})] spids: [3733 3736 3742 16777215] ) (case_arm pat_list: [{(no)} {(false)}] action: [(C {(__set_colors)})] spids: [3745 3748 3754 16777215] ) ] spids: [3720 3730 3756] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name USERLAND)})) terminator: <Op_Semi ';'> ) ] action: [ (Case to_match: { (CommandSubPart command_list: (CommandList children:[(C {(uname)} {(-s)})]) left_token: <Left_CommandSub '$('> spids: [3778 3782] ) } arms: [ (case_arm pat_list: [{(Lit_Other '*') (BSD)} {(DragonFly)}] action: [(C {(export)} {(Lit_VarLike 'USERLAND=') (DQ (BSD))})] spids: [3787 3791 3802 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(export)} {(Lit_VarLike 'USERLAND=') (DQ (GNU))})] spids: [3805 3806 3817 16777215] ) ] spids: [3776 3784 3820] ) ] spids: [16777215 3773] ) ] spids: [16777215 3822] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name XARGS)})) terminator: <Op_Semi ';'> ) ] action: [ (Case to_match: {(${ VSub_Name USERLAND)} arms: [ (case_arm pat_list: [{(BSD)}] action: [(C {(export)} {(Lit_VarLike 'XARGS=') (DQ (xargs))})] spids: [3851 3852 3863 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(export)} {(Lit_VarLike 'XARGS=') (DQ ('xargs -r'))})] spids: [3866 3867 3878 16777215] ) ] spids: [3842 3848 3881] ) ] spids: [16777215 3839] ) ] spids: [16777215 3883] ) (FuncDef name: hasq body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(has)} {($ VSub_Name '$EBUILD_PHASE')} {(prerm)} {(postrm)}) (C {(eqawarn)} {(DQ ("QA Notice: The 'hasq' function is deprecated (replaced by 'has')"))} ) ] ) (C {(has)} {(DQ ($ VSub_At '$@'))}) ] spids: [3890] ) spids: [3886 3889] ) (FuncDef name: hasv body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(Sentence child:(C {(has)} {(DQ ($ VSub_At '$@'))}) terminator:<Op_Semi ';'>)] action: [ (C {(echo)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [16777215 3938] ) ] spids: [16777215 3953] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3925] ) spids: [3921 3924] ) (FuncDef name: has body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:needle) op: Equal rhs: {($ VSub_Number '$1')} spids: [3972] ) ] spids: [3970] ) (C {(shift)}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:x) op:Equal spids:[3982])] spids: [3980] ) (ForEach iter_name: x iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (DoGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {(DQ (${ VSub_Name x))} {(Lit_Other '=')} {(DQ (${ VSub_Name needle))} {(Lit_Other ']')} ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] spids: [3996 4024] ) spids: [3990 3994] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3967] ) spids: [3963 3966] ) (FuncDef name: __repo_attr body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:appropriate_section) op: Equal rhs: {(0)} spids: [4043] ) (assign_pair lhs: (LhsName name:exit_status) op: Equal rhs: {(1)} spids: [4046] ) (assign_pair lhs:(LhsName name:line) op:Equal spids:[4049]) (assign_pair lhs: (LhsName name:saved_extglob_shopt) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(shopt)} {(-p)} {(extglob)})]) left_token: <Left_CommandSub '$('> spids: [4052 4058] ) } spids: [4051] ) ] spids: [4041] ) (C {(shopt)} {(-s)} {(extglob)}) (While cond: [(Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name appropriate_section)} right: {(0)} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name line)} right: {(DQ ('[') ($ VSub_Number '$1') (']'))} ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:appropriate_section) op: Equal rhs: {(1)} spids: [4106] ) ] spids: [4106] ) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name appropriate_section)} right: {(1)} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name line)} right: {(DQ ('[')) (Lit_Other '*') (DQ (']'))} ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:appropriate_section) op: Equal rhs: {(0)} spids: [4144] ) ] spids: [4144] ) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name appropriate_section)} right: {(1)} ) right: (BoolBinary op_id: BoolBinary_EqualTilde left: {(${ VSub_Name line)} right: {(Lit_Other '^') (${ VSub_Number 2) (Lit_Other '[') (Lit_Other '[') (Lit_Other ':') (space) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') (Lit_Other '*') (Lit_Other '=') } ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ (BracedVarSub token: <VSub_Name line> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {($ VSub_Number '$2') ('*( )=*( )')} ) spids: [4211 4216] ) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exit_status) op: Equal rhs: {(0)} spids: [4220] ) ] spids: [4220] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [16777215 4205] ) ] spids: [16777215 4227] ) ] spids: [4075 4230] ) redirects: [ (Redir op_id: Redir_TLess fd: 16777215 arg_word: {(DQ (${ VSub_Name PORTAGE_REPOSITORIES))} spids: [4232] ) ] ) (C {(eval)} {(DQ (${ VSub_Name saved_extglob_shopt))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(${ VSub_Name exit_status)} ) ] spids: [4038] ) spids: [4034 4037] ) (FuncDef name: __eqaquote body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:v) op: Equal rhs: {(${ VSub_Number 1)} spids: [4277] ) (assign_pair lhs: (LhsName name:esc) op: Equal rhs: {(SQ )} spids: [4282] ) ] spids: [4275] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:v) op: Equal rhs: { (BracedVarSub token: <VSub_Name v> suffix_op: (PatSub pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>)} replace: {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) } do_all: T do_prefix: F do_suffix: F ) spids: [4293 4301] ) } spids: [4292] ) ] spids: [4292] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:v) op: Equal rhs: { (BracedVarSub token: <VSub_Name v> suffix_op: (PatSub pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)} replace: {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) } do_all: T do_prefix: F do_suffix: F ) spids: [4309 4317] ) } spids: [4308] ) ] spids: [4308] ) (While cond: [(Sentence child:(C {(read)} {(-r)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(echo)} {(-n)} {(DQ (${ VSub_Name esc) (${ VSub_Name REPLY))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:esc) op: Equal rhs: {(SQ <'\\n'>)} spids: [4348] ) ] spids: [4348] ) ] spids: [4331 4354] ) redirects: [ (Redir op_id: Redir_TLess fd: 16777215 arg_word: {(DQ (${ VSub_Name v))} spids: [4356] ) ] ) ] spids: [4272] ) spids: [4268 4271] ) (FuncDef name: __eqatag body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:tag) op:Equal spids:[4405]) (assign_pair lhs:(LhsName name:i) op:Equal spids:[4407]) (assign_pair lhs: (LhsName name:filenames) op: Equal rhs: {(ArrayLiteralPart)} spids: [4409] ) (assign_pair lhs: (LhsName name:data) op: Equal rhs: {(ArrayLiteralPart)} spids: [4413] ) (assign_pair lhs: (LhsName name:verbose) op: Equal rhs: {(EmptyPart)} spids: [4417] ) ] spids: [4403] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Number 1)} right: {(BoolUnary_v -v)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose) op: Equal rhs: {(1)} spids: [4439] ) ] spids: [4439] ) (C {(shift)}) ] spids: [16777215 4436] ) ] spids: [16777215 4446] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tag) op: Equal rhs: {(${ VSub_Number 1)} spids: [4450] ) ] spids: [4450] ) (C {(shift)}) (AndOr ops: [Op_DPipe] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name tag)})) (C {(die)} {(DQ (${ VSub_Name FUNCNAME) (': no tag specified'))}) ] ) (ForEach iter_name: i do_arg_iter: T body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name i)} right: {(/) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filenames) op: PlusEqual rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name i))}])} spids: [4513] ) ] spids: [4513] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{(${ VSub_Name verbose)}) ) (C {(eqawarn)} {(DQ (' ') (${ VSub_Name i))}) ] ) ] spids: [16777215 4510] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name i)} right: {(Lit_Other '*') (BoolBinary_GlobEqual '=') (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:data) op: PlusEqual rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name i))}])} spids: [4567] ) ] spids: [4567] ) ] spids: [4547 4564] ) ] else_action: [ (C {(die)} {(DQ (${ VSub_Name FUNCNAME) (': invalid parameter: ') (${ VSub_Name i))} ) ] spids: [4579 4595] ) ] spids: [4491 4598] ) spids: [16777215 16777215] ) (Subshell child: (CommandList children: [ (C {(echo)} {(DQ ('- tag: ') (${ VSub_Name tag))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (WordTest w: { (BracedVarSub token: <VSub_Name data> bracket_op: (WholeArray op_id:Lit_At) spids: [4619 4624] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ (' data:'))}) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name data> bracket_op: (WholeArray op_id:Lit_At) spids: [4646 4651] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (C {(echo)} { (DQ (' ') (BracedVarSub token: <VSub_Name i> suffix_op: (StringUnary op_id: VOp1_DPercent arg_word: {('=*')} ) spids: [4662 4666] ) (': ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (CommandSubPart command_list: (CommandList children: [ (C {(__eqaquote)} { (DQ (BracedVarSub token: <VSub_Name i> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {('*=')} ) spids: [4673 4677] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [4669 4679] ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ) ] spids: [4655 4684] ) spids: [4644 4653] ) ] spids: [16777215 4629] ) ] spids: [16777215 4687] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (WordTest w: { (BracedVarSub token: <VSub_Name filenames> bracket_op: (WholeArray op_id:Lit_At) spids: [4694 4699] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ (' files:'))}) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name filenames> bracket_op: (WholeArray op_id:Lit_At) spids: [4721 4726] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (C {(echo)} { (DQ (' - ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) (CommandSubPart command_list: (CommandList children: [(C {(__eqaquote)} {(DQ (${ VSub_Name i))})] ) left_token: <Left_CommandSub '$('> spids: [4738 4746] ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ) ] spids: [4730 4751] ) spids: [4719 4728] ) ] spids: [16777215 4704] ) ] spids: [16777215 4754] ) ] ) redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {(DQ (${ VSub_Name T)) (/qa.log)} spids: [4759] ) ] spids: [4602 4757] ) ] spids: [4400] ) spids: [4396 4399] ) (C {(true)}) ] )