a h @sddlZddlmZmZmZmZmZmZmZddddZ e ee eee e fddd Z ee e feee ee fee eee e fd d d Z deee ee feee e fe d ddZdS)N)DictIterableListOptionalSequenceSetTuplez import sys import traceback try: ... except SystemExit: raise except BaseException: command('beiboot.exc', traceback.format_exc()) sys.exit(37) z import contextlib import os def try_exec(argv): with contextlib.suppress(OSError): os.execvp(argv[0], argv) a import lzma import sys def boot_xz(filename, size, args=[], send_end=False): command('beiboot.provide', size) src_xz = sys.stdin.buffer.read(size) src = lzma.decompress(src_xz) sys.argv = [filename, *args] if send_end: end() exec(src, { '__name__': '__main__', '__self_source__': src_xz, '__file__': filename}) sys.exit() )_frameZtry_execZboot_xz)codeimportsreturnccsnt|D]Z}|d}|dr2||q|rt|t|}|ddksVJd|d|fVqdS)N zimport r )textwrapdedent splitlineslstrip startswithaddlen)r r linetextspacesrB/usr/lib/python3.9/site-packages/cockpit/_vendor/bei/bootloader.py split_code;s   r) user_gadgetsstepsr r ccspttfi|}t|}dd|D}||BD]}t|||EdHq.|D]\}}d|tt|fVqLdS)NcSsh|] \}}|qSrr).0name_argsrrr Pzyield_body..)dictGADGETSsetrreprtuple)rrr gadgetsZprovided_gadgetsZ step_gadgetsr argsrrr yield_bodyFs  r,)rr*r cCst}g}ttd|D]L\}}|dkrVt|p0i||D]\}}||||q8q|||qdddg||DdS)Nr z...r$css|]}|dVqdS) Nr)rrrrr er#z"make_bootloader..r-)r'rr&r,appendjoin)rr*r linesZ frame_spacesZ frame_textrrrrrmake_bootloaderYsr2)N)rtypingrrrrrrrr&strrobjectr,r2rrrrs$ &"