fn D dZdZdZddlmZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZ ddlZn #e$rdZYnwxYw ddlZn #e$rdZYnwxYweefZ eefz Zn #e$rYnwxYwgdZdZdZed zZd Zd Zd Zd Zd Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2e2Z3e!e"e#e$e'e(e)e%e&e*e+e,f Z4e!e"e)e,fZ5e*e+e,fZ6dZ7hdZ8e9e9e9e:e:e:d Z;ej<d!krd"Z=nej>Z=d#Z?d$Z@d%ZAd&e3fd'ZBd(ZCdedfd)ZDd*ZEGd+d,eFZGGd-d.eGZHGd/d0eGZIGd1d2eGZJGd3d4eGZKGd5d6eGZLGd7d8eLZMGd9d:eLZNGd;deLZPGd?d@eLZQGdAdBZRGdCdDZSGdEdFeTZUGdGdHeTZVGdIdJejWZXGdKdLeGZYGdMdNeYZZGdOdPeYZ[GdQdReYZ\GdSdTeYZ]GdUdVeYZ^dddXZ_dYZ`dZZad[Zbe`eaebd\ZceTZdGd]d^eTZeGd_d`eTZfdaZgefjZdbZheidckr ehdSdS)ez0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.)openN)TarFileTarInfo is_tarfileTarError ReadErrorCompressionError StreamError ExtractError HeaderErrorENCODING USTAR_FORMAT GNU_FORMAT PAX_FORMATDEFAULT_FORMATrisustar sustar00d01234567LKSxgX)pathlinkpathsizemtimeuidgidunamegname>r&r-r,r')atimectimer)r*r+r(ntutf-8c |td|||}|d||t|z tzzS)Nzmetadata cannot contain None) ValueErrorencodelenNUL)slengthencodingerrorss ./opt/alt/python311/lib64/python3.11/tarfile.pystnr<sPy7888 6""A WfW:#a&&C/ //cz |d}|dkr |d|}|||S)Nr)finddecode)r7r9r:ps r;ntsrCs@ u ABww bqbE 88Hf % %%r=c~ |ddvr]d}tt|dz D]}|dz}|||dzz }|ddkrdt|dz z|z }nT t|dd}t|pd d}n#t $rt d wxYw|S) Nr)r$rFasciistrict0invalid header)ranger5rCintstripr3InvalidHeaderError)r7nis r;ntirSs t~ s1vvz""  A !GA 1q5MAA Q45==#a&&1*%)*A 7Aw))AAGGII$a((AA 7 7 7$%566 6 7 Hs *5B B:rGc |}t|}d|cxkr d|dz zkr$nn!td|dz |fzdtz}n|tkrd|dz z |cxkr d|dz zkrfnnc|dkrt dg}nt dg}d|z|z}t |dz D] }|d|dz|dz}!ntd |S) NrrGr$z%0*orIrHrErFzoverflow in number field)rNbytesr6r bytearrayrMinsertr3)rQdigitsformat original_nr7rRs r;itnr[s8J AAA!!!!fqj!!!!!! &FQJ?*G 4 4s : :  36A:#6"6!"Q"Q"Q"Qcfqj>Q"Q"Q"Q"Q"Q 665'""AA5'""Av !Avz""  A HHQE " " " !GAA 3444 Hr=c dttjd|z}dttjd|z}||fS)NrH 148B8x356B 148b8x356b)sumstruct unpack_from)bufunsigned_chksum signed_chksums r; calc_chksumsresRC 2< E EFFFO#f0sCCDDDM M ))r=c |pd}|dkrdS|tj|||dSt||\}}t|D]J}||}t ||kr |d||K|dkrH||}t ||kr |d||dS)Ni@runexpected end of data)shutil copyfileobjdivmodrMreadr5write) srcdstr8 exceptionbufsizeblocks remainderbrbs r;riris"G {{ ~3W---vw//FI 6]]hhw s88g  )455 5 #A~~hhy!! s88i  )455 5 # Fr=cttjdd}|)||d|}t |ddS)Nr9backslashreplace )end)getattrsysstdoutr4rAprint)r7r9s r; _safe_printr|sVsz:t44H HHX1 2 2 9 9( C C !r=ceZdZ dS)rN__name__ __module__ __qualname__r=r;rrsDr=rceZdZ dS)r Nr~rr=r;r r s/Dr=r ceZdZ dS)rNr~rr=r;rrs0Dr=rceZdZ dS)r Nr~rr=r;r r s8Dr=r ceZdZ dS)r Nr~rr=r;r r sGDr=r ceZdZ dS)r Nr~rr=r;r r s+Dr=r ceZdZ dS)EmptyHeaderErrorNr~rr=r;rr!s&Dr=rceZdZ dS)TruncatedHeaderErrorNr~rr=r;rr$s*Dr=rceZdZ dS)EOFHeaderErrorNr~rr=r;rr's,Dr=rceZdZ dS)rPNr~rr=r;rPrP*s(Dr=rPceZdZ dS)SubsequentHeaderErrorNr~rr=r;rr-s=Dr=rc(eZdZ dZdZdZdZdS) _LowLevelFilectjtjtjztjzd|}t tdr|tjz}tj||d|_dS)NrwO_BINARYi) osO_RDONLYO_WRONLYO_CREATO_TRUNChasattrrrfd)selfnamemodes r;__init__z_LowLevelFile.__init__:sirz)BJ6    2z " " BK D'$e,,r=c8tj|jdSN)rcloserrs r;rz_LowLevelFile.closeCs r=c6tj|j|Sr)rrkrrr(s r;rkz_LowLevelFile.readFswtw%%%r=c:tj|j|dSr)rrlrrr7s r;rlz_LowLevelFile.writeIs !r=N)rrrrrrkrlrr=r;rr4sU ---&&&r=rcZeZdZ dZdZdZdZdZdZdZ dZ dd Z d Z d Z d ZdS)_Streamc d|_|t||}d|_|dkr#t|}|}|pd|_||_||_||_||_d|_ d|_ d|_ |dkr ddl }n#t$rtddwxYw||_ |d|_|d kr"|j|_|dS|dS|d krs ddl}n#t$rtd dwxYw|d kr.d|_||_t2|_dS||_dS|d krs ddl}n#t$rtd dwxYw|d kr.d|_||_|j|_dS||_dS|dkrtd|zdS#|js|jd|_ xYw)NTF*r=rgzzzlib module is not availablerbz2bz2 module is not availablexzlzma module is not availabletarunknown compression type %r) _extfileobjr _StreamProxy getcomptyperrcomptypefileobjrprbposclosedzlib ImportErrorr crc32crcerrorro _init_read_gz_init_write_gzrdbufBZ2DecompressorcmpOSError BZ2CompressorlzmaLZMADecompressor LZMAErrorLZMACompressorr) rrrrrrprrrs r;rz_Stream.__init__Xs  ?#D$//G$D  s??#7++G**,,H        - 4UKKKK"UUU*+IJJPTTU  ::c??3;;%)ZDN&&((((('')))))U""TJJJJ"TTT*+HIItST3;; #DI"2244DH%,DNNN"0022DHHHT!!UKKKK"UUU*+IJJPTTU3;; #DI#4466DH%)^DNNN#2244DHHHU""&'Dx'OPPP#" # % ""$$$DK syH BHB--A H9HHDHD665H-HHFHF//5H&HH*Icdt|dr|js|dSdSdS)Nr)rrrrs r;__del__z_Stream.__del__sB 4 " " 4;  JJLLLLL    r=cB |jd|jj|jj |jjd|_t jdttj }| d|zdz|j dr|j dd|_ tj|j |_ | |j dd t"zdS) N r-1Y-@,@,0I,C,-//Kc$)++&6&677  (94{BCCC 9  e $ $ ' #2#DIG$$TY//  TY%%lI>>DEEEEEr=c |jdkr%|j||j|_|xjt |z c_|jdkr|j|}||dS)Nrr) rrrrrr5rcompressrrs r;rlz _Stream.writesx =D yq$(33DH CFF =E ! !!!!$$A Qr=c* |xj|z c_t|j|jkrd|j|jd|j|j|jd|_t|j|jkbdSdSr)rbr5rprrlrs r;__writez_Stream.__writes  A $(mmdl** L  tx  6 7 7 7x .DH$(mmdl******r=c |jrdSd|_ |jdkr2|jdkr'|xj|jz c_|jdkr|jr|j|jd|_|jdkrg|jtj d|j |jtj d|j dz|j s|j dSdS#|j s|j wwxYw)NTrrr=rrl)rrrrbrflushrrlr`rrrrrrs r;rz _Stream.closes?  ;  F  %yCDMU$:$:DHNN,,,yCDH ""48,,,=D((L&&v{4'B'BCCCL&&v{4J9N'O'OPPP# % ""$$$$$ % %4# % ""$$$$ %s C'D#Ec |j|jj |_d|_|ddkrt d|ddkrtdt|d}|d|d zr]t|dd t|dzz}| ||d zr% |d}|r |tkrn$|d zr% |d}|r |tkrn$|dzr|ddSdS)Nr=r%snot a gzip filer$zunsupported compression methodrHrGT) r decompressobjrrr _Stream__readrr ordrkr6)rflagxlenr7s r;rz_Stream._init_read_gzs 9**DI,?+?@@  ;;q>>[ ( (-.. . ;;q>>W $ $"#CDD D4;;q>>"" A !8 t{{1~~&&s4;;q>>/B/B)BBD IIdOOO !8  KKNNAHH  "9  KKNNAHH  !8  KKNNNNN  r=c |jSr)rrs r;tellz _Stream.tells xr=rc ||jz dkrbt||jz |j\}}t|D]}||j||nt d|jS)Nrz seeking backwards is not allowed)rrjrprMrkr )rrrqrrrRs r;seekz _Stream.seeks  >Q   &sTX~t| D D FI6]] ( ( $,'''' IIi @AA Axr=cl ||}|xjt|z c_|Sr)_readrr5)rr(rbs r;rkz _Stream.read s1Cjj CHH r=c* |jdkr||St|j}|jg}||kr|jr|j}d|_n"|j|j}|snk |j |}n"#|j $r}td|d}~wwxYw| ||t|z }||kd |}||d|_|d|S)Nrr=zinvalid compressed data)rrr5rrbrrkrpr decompressrorappendjoin)rr(ctrbes r;rz _Stream._reads* =E ! !;;t$$ $  NN YK$hhx hl'' 55 Bh))#..> B B B 9::A B HHSMMM SMA$hh HHQKKdeeH $xs=B B7"B22B7cB t|j}|jg}||krO|j|j}|sn-|||t|z }||kOd|}||d|_|d|S)Nr=)r5rbrrkrprr)rr(rrrbs r;__readz_Stream.__read.s  MM XJ$hh,##DL11C  HHSMMM SMA $hh HHQKKTUU8$xr=N)r)rrrrrrrlrrrrrrkrrrr=r;rrLs DDDLFFF ///%%%,>    6r=rc(eZdZ dZdZdZdZdS)rc\||_|jt|_dSr)rrk BLOCKSIZErb)rrs r;rz_StreamProxy.__init__Ds$ <$$Y//r=c2|jj|_|jSr)rrkrbrs r;rkz_StreamProxy.readHsL% xr=c|jdrdS|jdddkr|jdddkrd S|jd rd Sd S) NsrrsBZhr s1AY&SYr)s]s7zXZrr)rb startswithrs r;rz_StreamProxy.getcomptypeLsp 8   / / 4 Xac]f $ $!B$9)D)D5 X !C D D 45r=c8|jdSr)rrrs r;rz_StreamProxy.closeVs r=N)rrrrrkrrrr=r;rr?sU000r=rc^eZdZ d dZdZdZdZdZdZe j fdZ d d Z d Z d ZdS) _FileInFileNc||_||_||_d|_t |dd|_d|_|d|fg}d|_g|_d}|j}|D]T\}}||kr|j d||df|j d|||z|f||z }||z}U||jkr%|j d||jdfdSdS)NrrFT) roffsetr(positionrxrr map_indexmapr)rrr r( blockinfolastposrealposs r;rz_FileInFile.__init__cs    GVT22   T I+% $ $LFD >??? HOOT66D='B C C C tOGtmGG TY   HOOUGTY= > > > > >  r=cdSrrrs r;rz_FileInFile.flush|s r=cdSNTrrs r;readablez_FileInFile.readablestr=cdSNFrrs r;writablez_FileInFile.writablesur=c4|jSr)rseekablers r;rz_FileInFile.seekables|$$&&&r=c |jSr)r rs r;rz_FileInFile.tells }r=c |tjkr)tt|d|j|_n|tjkrG|dkrt|j|zd|_nst|j|z|j|_nP|tjkr1tt|j|z|jd|_ntd|jS)NrzInvalid argument) ioSEEK_SETminmaxr(r SEEK_CURSEEK_ENDr3)rr whences r;rz_FileInFile.seeks R[ Ha 0 0$)< r=r ceZdZfdZxZS) ExFileObjectct|j|j|j|j}t |dSr)r r offset_datar(sparsesuperr)rtarfiletarinfor __class__s r;rzExFileObject.__init__sBgow/B gn.. !!!!!r=rrrr __classcell__r4s@r;r-r-s8"""""""""r=r-ceZdZdS) FilterErrorNr~rr=r;r9r9sDr=r9ceZdZfdZxZS)AbsolutePathErrorcj||_td|jddS)Nzmember z has an absolute pathr3r1rrrr3r4s r;rzAbsolutePathError.__init__s6  H7<HHHIIIIIr=r5r7s@r;r;r;sAJJJJJJJJJr=r;ceZdZfdZxZS)OutsideDestinationErrorc||_||_t|jd|ddzdS)Nz would be extracted to , which is outside the destinationr3_pathr1rrrr3r&r4s r;rz OutsideDestinationError.__init__sT   GLMM4MMM=> ? ? ? ? ?r=r5r7s@r;r@r@8?????????r=r@ceZdZfdZxZS)SpecialFileErrorch||_t|jddS)Nz is a special filer=r>s r;rzSpecialFileError.__init__s3  GL>>>?????r=r5r7s@r;rIrIsA@@@@@@@@@r=rIceZdZfdZxZS)AbsoluteLinkErrorch||_t|jddS)Nz is a link to an absolute pathr=r>s r;rzAbsoluteLinkError.__init__s3  GLJJJKKKKKr=r5r7s@r;rLrLsALLLLLLLLLr=rLceZdZfdZxZS)LinkOutsideDestinationErrorc||_||_t|jd|ddzdS)Nz would link to rBrCrDrFs r;rz$LinkOutsideDestinationError.__init__sT   GLEE4EEE=> ? ? ? ? ?r=r5r7s@r;rOrOrGr=rOTci}|j}tj|}|dtjfr,|jdtjzx}|d<tj|rt|tjtj ||}tj ||g|krt|||j }||dz}|rr| s|r|dzs|dz}|dz}n:|s|rd}nt#|||j kr||d<|r]|jd|d<|jd|d <|jd|d <|jd|d <|s|rtj|jrt/||rDtj |tj||j}n%tj ||j}tj|}tj ||g|krt3|||S) N/ri@irr*r+r,r-)rrr&realpathrseplstripisabsr;r commonpathr@risregislnkisdirissymrIr*r+r,r-linknamerLdirnamerO)member dest_pathfor_data new_attrsr target_pathrs r;_get_filtered_attrsresI ;D  ++I RV}%%D#);#5#5cBFl#C#CCy  w}}T( ''''""27<< 4#@#@AAK w; 233y@@%fk::: ;D e|  /||~~ / /e|#FND  /6<<>> /'v... 6;   $If G : !#Ie  : !#Ie  < #!%Ig  < #!%Ig  <<>> GV\\^^ Gw}}V_-- 0'///||~~ < gll9+-7??4+@+@+1?<< !gll9+1?<< '**;77Kw!!; ":;;yHH1&+FFF r=c|Srr)r`ras r;fully_trusted_filterrg1s Mr=cNt||d}|r|jdi|ddiS|S)NFdeeprrerr`rarcs r; tar_filterrl4sC#FIu==I7v~66 666666 Mr=cNt||d}|r|jdi|ddiS|S)NTriFrrjrks r; data_filterrn:sC#FIt<Zd?Zd@ZdAZ dBZ!dCZ"dDZ#dEZ$dFZ%dGZ&dHZ'dIZ(dJZ)dKZ*dLZ+dMZ,dNZ-dOZ.dPZ/dQZ0dRZ1dSZ2d$S)VrrzName of the archive member.rzPermission bits.r*z6User ID of the user who originally stored this member.r+z7Group ID of the user who originally stored this member.r(zSize in bytes.r)zTime of last modification.chksumzHeader checksum.typezFile type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.r^zcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.r,z User name.r-z Group name.devmajorzDevice major number.devminorzDevice minor number.r zThe tar header starts here.r/zThe file's data starts here. pax_headerszMA dictionary containing key-value pairs of an associated pax extended header.r0zSparse member information.r2N_sparse_structs _link_targetrc ||_d|_d|_d|_d|_d|_d|_t|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_i|_dS)Nirr)rrr*r+r(r)rqREGTYPErrr^r,r-rsrtr r/r0rurrs r;rzTarInfo.__init__ps              r=c |jSrrrs r;r&z TarInfo.paths 2yr=c||_dSrr|rzs r;r&z TarInfo.paths  r=c |jSrr^rs r;r'zTarInfo.linkpaths :}r=c||_dSrr)rr^s r;r'zTarInfo.linkpaths   r=cJd|jj|jt|fzS)Nz<%s %r at %#x>)r4rridrs r;__repr__zTarInfo.__repr__s!4>#:49RXX"NNNr=T) rr)rr^r*r+r,r-ri_KEEPc  | rtj|} ntj|} || ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _ | Sr) copydeepcopyrr)rr^r*r+r,r-) rrr)rr^r*r+r,r-rirresults r;rzTarInfo.replaces  %]4((FFYt__F u  FK    FL u  FK 5 &FO e  FJ e  FJ    FL    FL r=c@ |jd}n |jdz}|j||j|j|j|j|j|j|j|j |j |j |j d }|dtkr+|dds|dxxdz cc<|S)N) rrr*r+r(r)rqrrr^r,r-rsrtrrrrR)rrr*r+r(r)rqrrr^r,r-rsrtDIRTYPEr)rrinfos r;get_infozTarInfo.get_infos 9 DD9v%D             <7 " "4<+@+@+E+E " LLLC LLL r=surrogateescapecp |}|D]\}}|td|z|tkr||||S|t kr||||S|tkr|||Std)Nz%s may not be Nonezinvalid format) ritemsr3rcreate_ustar_headerrcreate_gnu_headerrcreate_pax_header)rrYr9r:rrvalues r;tobufz TarInfo.tobufs }}::<< > >KD%} !5!<=== \ ! !++D(FCC C z ! !))$&AA A z ! !))$99 9-.. .r=c t|d<t|d||tkrt dt|d||t kr&||d||\|d<|d<||t||S)Nmagicr^zlinkname is too longrprefix) POSIX_MAGICr5r4 LENGTH_LINKr3 LENGTH_NAME_posix_split_name_create_headerr)rrr9r:s r;rzTarInfo.create_ustar_headers #W tJ&&x88 9 9K G G344 4 tF|""8V44 5 5 C C+/+A+A$v,PXZ`+a+a (DNDL""4xHHHr=c t|d<d}t|d||tkr&|||dt ||z }t|d||t kr&|||dt||z }|||t||zS)Nrr=r^r) GNU_MAGICr5r4r_create_gnu_long_headerGNUTYPE_LONGLINKrGNUTYPE_LONGNAMErr)rrr9r:rbs r;rzTarInfo.create_gnu_headers !W  tJ&&x88 9 9K G G 4//Z0@BRT\^dee eC tF|""8V44 5 5 C C 4//V >NPXZ`aa aCT((z8VLLLLr=c t|d<|j}ddtfddtfddfD]h\}}}||vr ||dd n#t $r||||<Y@wxYwt|||kr ||||<id D]u\}}d }||} t| t} | rt| n| } d | cxkr d |dz zks nd ||<d}n | r| ||<d}|r||vrt| ||<v|r| |t|} nd} | ||tddzS)Nrrr&r^r')r,r, )r-r-rrIrJ))r*rG)r+rG)r( )r)rFrrGr$Tr=r)rrurrrr4UnicodeEncodeErrorr5 isinstancefloatroundstr_create_pax_generic_headerXHDTYPErr) rrr9rurhnamer8rX needs_paxval val_is_floatval_intrbs r;rzTarInfo.create_pax_headers $W &++-- - J /T&(>$@ 0 0 D% ## T !!'84444%   %)$Z E" 4:''%)$Z E"R - -LD&It*C%c511L$09eCjjjcG3333! "33333T   !%T   -T44$'HH D!  11+wQQCCCT((|WiPPPPsA$$A<;A<c< ||tdS)Nr1)rXGLTYPE)clsrus r;create_pax_global_headerz TarInfo.create_pax_global_header;s --k7GLLLr=c |d}tdt|D]}d|d|}d||d}t|||t kr.t|||t krntd||fS)NrRr$zname is too long)splitrMr5rr4 LENGTH_PREFIXrr3)rrr9r: componentsrRrs r;rzTarInfo._posix_split_nameAs ZZ__ q#j//** 1 1AXXj!n--F88JqrrN++D6==62233}DD Hf5566+EE/00 0t|r=c |dttfv}|rKt|ddd|}t|ddd|}n$t dd||}t dd||}|dt }|t dt |ddd ||t|d dd zd|t|d dd|t|d dd|t|ddd|t|ddd|d|t |ddd |||dtt |ddd||t |ddd||||t |ddd||g}tj dtzd |} t| t dd} | ddtd| zdz| ddz} | S)NrrrsrrGrtrzTarInfo.type must not be Nonerrrrr*r+r(rr)s r^rr,rr-rrz%dsr=iz%06orIi)getCHRTYPEBLKTYPEr[r<ryr3rr`rrrrerU) rrYr9r:has_device_fieldsrsrtfiletypepartsrbrqs r;rzTarInfo._create_headerQs !HHV,,'0BB  4488J22Av>>H488J22Av>>HH2q(F33H2q(F33H88FG,,  <== = $$c8V < < ##f,a 8 8 ""Av . . ""Av . . ##R 0 0 !$$b& 1 1   R((#x @ @ HHWk * * "%%r8V < < "%%r8V < <   2&&Xv > > $k%)+SXXe__==c9*++.//2%4%j5F!2G<<EMPUU UGG'V V 7||V #W !!$ gyII##G,,- -s5 AAc t|dkrtdt|tkrtd|t tkrt dt|dd}|t|vrtd|}t|dd|||_ t|dd |_ t|d d |_ t|d d |_t|d d |_t|d d|_||_|dd |_t|d d|||_t|dd|||_t|dd|||_t|dd|_t|dd|_t|dd||}|jt0kr&|j dr t4|_|jt6krd}g}t9dD]h} t|||dz} t||dz|dz} n#t:$rYn!wxYw|| | f|dz }it?|d} t|dd} || | f|_ |!r|j "d|_ |r |jtFvr|dz|j z|_ |S)Nrz empty headerztruncated headerzend of file headerz bad checksumrlt|ii i)iIiQiYirRirriii)$r5rrrcountr6rrSrerPrCrrr*r+r(r)rqrrr^r,r-rsrtAREGTYPErrGNUTYPE_SPARSErMr3rboolrvr\rstrip GNU_TYPES)rrbr9r:rqobjrrstructsrRr numbytes isextendedorigsizes r;frombufzTarInfo.frombufsI s88q==">22 2 s88y &'9:: : 99S>>Y & & !566 6SS\"" c** * *$^44 4cees1S5z8V44s3s7|$$c#c'l##c#c'l##s3s7|$$CG %%  s3w<3s3w<6:: CG h77 CG h77 3s3w<(( 3s3w<(( SS\8V44 8x  CH$5$5c$:$: CH 8~ % %CG1XX   Sr\!233F"3sRxb'8#9::HH!EE1222r c#hJ3s3w<((H#*J"AC  99;; ,xs++CH  /chi//|ch.CH s7J== K  K c |jt}|||j|j}|jtz |_||Sr) rrkrrr9r:rr  _proc_member)rr2rbrs r; fromtarfilezTarInfo.fromtarfilesf o""9--kk#w/@@_))++i7 (((r=c, |jttfvr||S|jtkr||S|jt ttfvr| |S| |Sr) rrrr _proc_gnulongr _proc_sparserrSOLARIS_XHDTYPE _proc_pax _proc_builtin)rr2s r;rzTarInfo._proc_members  9)+;< < <%%g.. . Y. ( ($$W-- - Y7G_= = =>>'** *%%g.. .r=c |j|_|j}|s|jt vr|||jz }||_| |j |j |j | r|jd|_|SNrR)rrr/rZrrSUPPORTED_TYPES_blockr(r _apply_pax_inforur9r:r\rr)rr2r s r;rzTarInfo._proc_builtin*s #?//11! ::<< -49O;; dkk$),, ,F W0'2BGNSSS ::<< . ((--DI r=c8 |j||j} ||}n/#t $r"}t t|dd}~wwxYw|j|_|j tkr!t||j |j |_n0|j tkr t||j |j |_|r|jd|_|Sr)rrkrr(rr rrr rrrrCr9r:rrr^r\ removesuffix)rr2rbnextrs r;rzTarInfo._proc_gnulong@s o""4;;ty#9#9:: :##G,,DD : : :'A//T 9 : k 9( ( (C!17>BBDII Y* * *W%5w~FFDM ::<< 4 ..s33DI sA A7A22A7c4 |j\}}}|`|r|jt}d}t dD]l} t |||dz}t ||dz|dz} n#t $rYn%wxYw|r| r||| f|dz }mt|d}|||_ |j |_ |j | |j z|_||_ |S)Nrrri)rvrrkrrMrSr3rrr0rr/rr(r ) rr2rrrrbrrRr rs r;rzTarInfo._proc_sparse[sK )-(<%X   (/&&y11CC2YY   Sr\!233F"3sRxb'8#9::HH!EE7h7NNFH#5666r c#hJ ( "?//11)DKK ,B,BB  s7A<< B  B cx |j||j}|jt kr|j}n|j}tj d|}|+| d d|d<| d}|dkr|j }nd}tjd}d} |||}|sn|\} } t#| } | dkrt%d ||d dz|d| zdz } || dd|j} | t.vr#|| ||j |j} n|| dd|j} | || <|| z } ||} n/#t2$r"} t5t7| dd} ~ wwxYwd |vr|| |ned |vr|| ||nI| d dkr0| ddkr|| |||jt>t@fvr~| !||j |j|j"| _"d|vrM| j#}| $s| jtJvr|| | jz }||_"| S)Ns\d+ hdrcharset=([^\n]+)\nr$r1 hdrcharsetBINARYs(\d+) ([^=]+)=rTrLr%GNU.sparse.mapGNU.sparse.sizezGNU.sparse.major1zGNU.sparse.minorrKr()&rrkrr(rrrrurresearchgrouprArr9compilematchgroupsrNrPrwr'_decode_pax_fieldr:PAX_NAME_FIELDSrr rr_proc_gnusparse_01_proc_gnusparse_00_proc_gnusparse_10rrrr r/rZr)rr2rbrurrr9regexrr8rrrrr s r;rzTarInfo._proc_paxws` o""4;;ty#9#9:: 9  !-KK!-2244K 7==  (- A(=(=g(F(FK % !__\22  ! !'HHH  -.. KKS))E #llnnOFG[[F{{()9::: ! q(Q&)@1)DDEE,,WgwN$$G/))..uh@P((..ugw(($)K 6MC9 > :##G,,DD : : :'A//T 9 : { * *  # #D+ 6 6 6 6 + - -  # #D+s ; ; ; ; __/ 0 0C 7 7KOOL^<_<_cf O O O+DK$$)::<<549O#C#Cdkk$)444F!' s"G88 H$HH$c g}tjd|D]7}|t|d8g}tjd|D]7}|t|d8t t |||_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr$s\d+ GNU.sparse.numbytes=(\d+)\n)rfinditerrrNrlistzipr0)rrrurboffsetsrrs r;rzTarInfo._proc_gnusparse_00s [!BCHH 0 0E NN3u{{1~~.. / / / /[!DcJJ 1 1E OOC A// 0 0 0 03w1122 r=c  d|ddD}tt|ddd|ddd|_dS)Nc,g|]}t|Sr)rN).0xs r; z.TarInfo._proc_gnusparse_01..sKKKQ#a&&KKKr=r,r%r$)rr r r0)rrrur0s r;rzTarInfo._proc_gnusparse_01s_ KK+.>"?"E"Ec"J"JKKK3vccc{F14a4L99:: r=c \ d}g}|jt}|dd\}}t |}t ||dzkrwd|vr"||jtz }|dd\}}|t |t ||dzkw|j|_tt|ddd|ddd|_ dS)Nrr$r%) rrkrrrNr5rrr/r r r0)rrrur2fieldsr0rbnumbers r;rzTarInfo._proc_gnusparse_10s o""9--iiq)) V&kkFQJ&&Cw++I666))E1--KFC MM#f++ & & & &kkFQJ&& #?//113vccc{F14a4L99:: r=c |D]\}}|dkrt|d||dkrt|dt|B|dkrt|dt|g|tvr^|tvr) t ||}n#t $rd}YnwxYw|dkr|d}t|||||_dS)NzGNU.sparse.namer&rr(zGNU.sparse.realsizerrR) rsetattrrN PAX_FIELDSPAX_NUMBER_FIELDSr3rrru)rrur9r:rrs r;rzTarInfo._apply_pax_infos4 *//11 . .NGU+++fe,,,,---fc%jj1111111fc%jj1111J&&///" 1' :5 A A%""" !"f$$!LL--Egu---&++--sB&& B54B5c~ ||dS#t$r|||cYSwxYw)NrJ)rAUnicodeDecodeError)rrr9fallback_encodingfallback_errorss r;rzTarInfo._decode_pax_fields[  D<<(33 3! D D D<< 1?CC C C C Ds  <<cV t|t\}}|r|dz }|tzS)Nr$)rjr)rrrqrrs r;rzTarInfo._blocks9 #5)44   aKF !!r=c |jtvSr)rr REGULAR_TYPESrs r;rZz TarInfo.isreg(s>yM))r=c, |Sr)rZrs r;isfilezTarInfo.isfile,s>zz||r=c$ |jtkSr)rrrrs r;r\z TarInfo.isdir0+yG##r=c$ |jtkSr)rrSYMTYPErs r;r]z TarInfo.issym4s/yG##r=c$ |jtkSr)rrLNKTYPErs r;r[z TarInfo.islnk8r#r=c$ |jtkSr)rrrrs r;ischrz TarInfo.ischr<s2yG##r=c$ |jtkSr)rrrrs r;isblkz TarInfo.isblk@s.yG##r=c$ |jtkSr)rrFIFOTYPErs r;isfifozTarInfo.isfifoDs&yH$$r=c|jduSr)r0rs r;issparsezTarInfo.issparseHs{$&&r=c: |jtttfvSr)rrrrr-rs r;isdevz TarInfo.isdevKsMyWgx888r=r)r)3rrrdict __slots__rpropertyr&setterr'rrrrrr rrrr classmethodrr staticmethodrrrrrrrrrrrrrrrrrrZr!r\r]r[r)r+r.r0r2rr=r;rrMsv   ,, !! GF HG     -,  $# >> FF     *) *)! "/.# $54% &99' *.-+ ,$- .$/ 0t1 I60X [[X_!!_!OOO%eeuE88*HEV////" I I I M M M8Q8Q8QtMM[M  ''\'R\**[* 0-0-[0-d<<[<|))[)( / / /,68fffP 3 3 3;;; ;;; ....DDD"""***$$$$$$$$$$$$$$$%%%'''99999r=rceZdZ dZdZdZdZeZe Z dZ e Z eZdZ dd Zed>d Zed?d ZdddddZdZdZdZdZd@dZdAdddZdBdddZ dCdZ!dZ"dDddd d!Z#dEddd d#Z$d$Z%d%Z&d&Z'd'Z(d(Z) dFd)Z*d*Z+d+Z,d,Z-d-Z.d.Z/d/Z0d0Z1d1Z2d2Z3d3Z4dGd4Z5d5Z6dCd6Z7d7Z8d8Z9d9Z:d:Z;d;Z.not_compresseds}X.);;r=)keyrz - method z:  z'file could not be opened successfully: :r$rr|rzmode must be 'r' or 'w'FrAzundiscernible mode)r3sortedrTrxrrr rrrrrrrrS)rrrrrpkwargsrU error_msgsrfunc saved_posrerror_msgs_summaryfilemodestreamrs` r;rz TarFile.opens! F 0G 0.// / <   < < < < <J"3=nEEE  sCM($;<<& ' I4c7==f=====!#34%%&C(&C&Ca&C&CDDD* Y///HHHH  "&:!6!6 [GY[[\\ \ D[[!%C!3!3 Hh3H(5H3=((sCM($;<<&'Dx'OPPP4h::6:: : D[[!%C!3!3 Hh3H(5Hz)) !:;;;T8XwHHF Ch99&99  !AMH _ $ $3;tT7==f== =-...s$+ A88C 2CC" F..Gc @ |dvrtd||||fi|S)Nr>r@)r3)rrrrr[s r;rSzTarFile.taropen9s> + + +@AA As4w11&111r=rc  |dvrtd ddlm}n#t$rt ddwxYw |||dz||}n+#t $r}||dkrt d|d}~wwxYw |j|||fi|}nR#t $r0}||dkrt d|d}~w|xYwd |_ |S) Nrrrmode must be 'r', 'w' or 'x'r)GzipFilezgzip module is not availablersrrF) r3gziprfrr rrrSrr) rrrr compresslevelr[rfrrs r;gzopenzTarFile.gzopenAsX   & &;<< < M % % % % % % % M M M"#ABB L M htTCZHHGG   "ts{{ 1229    D$::6::AA    MMOOOs{{ 1229   MMOOO  s78A A6A11A6:B C+CCc ~ |dvrtd ddlm}n#t$rt ddwxYw||p|||} |j|||fi|}nY#t tf$r0}||dkrtd|d}~w|xYwd |_ |S) Nrdrer)BZ2Filer)rhrznot a bzip2 fileF) r3rrkrr rSrEOFErrorrrr) rrrrrhr[rkrrs r;bz2openzTarFile.bz2openbs   & &;<< < L # # # # # # # L L L"#@AAt K L''/T4}MMM  D$::6::AA"    MMOOOs{{ 233:   MMOOO  s 8 AB3.+BB3c x |dvrtd ddlm}m}n#t$rt ddwxYw||p|||} |j|||fi|}nT#|tf$r0} ||dkrtd| d} ~ w|xYwd |_ |S) Nrdrer)LZMAFilerr)presetrznot an lzma fileF) r3rrorrr rSrlrrr) rrrrrpr[rorrrs r;xzopenzTarFile.xzopen~s   & &;<< < M 0 0 0 0 0 0 0 0 0 M M M"#ABB L M(7?dD@@@  D$::6::AA8$    MMOOOs{{ 233:   MMOOO  s :A B0++BB0rSrirmrq)rrrrc |jrdSd|_ |jdvr|jtt dzz|xjt dzz c_t|jt\}}|dkr*|jtt|z z|j s|j dSdS#|j s|j wwxYw)NTrAr%r) rrrrlr6rr rj RECORDSIZErr)rrqrrs r;rz TarFile.closes  ;  F  %yO++ ""3)a-#8999 A . %+4; $C$C! q==L&&sj9.D'EFFF# % ""$$$$$ % %4# % ""$$$$ %s BC#C2c ||d}|td|z|S)NrRzfilename %r not found) _getmemberrKeyError)rrr3s r; getmemberzTarFile.getmembersD //$++c"2"233 ?2T9:: :r=cp ||js||jSr)_checkrL_loadrKrs r; getmemberszTarFile.getmemberss5  |  JJLLL|r=c@ d|DS)Ncg|] }|j Srr|)rr3s r;rz$TarFile.getnames..s>>> >>>r=)r{rs r;getnameszTarFile.getnamess' ?>DOO,=,=>>>>r=c |d||j}||}tj|\}}|tjd}|d}|}||_ |1|j stj |}n;tj |}n&tj |}d}|j}tj|ri|j|jf} |j s:|jdkr/| |jvr&||j| krt*} |j| }nt,} | dr ||j| <ntj|rt0} ntj|rt4} njtj|rt8} tj|}n:tj|rt>} ntj |rtB} ndS||_||_"|j#|_$|j%|_&| t,kr |j'|_(nd|_(|j)|_*| |_+||_,tZr6 t[j.|j$d|_/n#t`$rYnwxYwtbr6 tcj2|j&d|_3n#t`$rYnwxYw| t>tBfvrftitdrQtitdr$J## J0/J0;$K K-,K-T)rKc |||}|D]}|r|jtdn&ttj|jt|jp|jd|jp|j| s| r"tdd|j |j fzzntd|j z|jtdn1tdtj|jddzt|j|rdnd z|rV|rtd |jz|rtd |jzt-dS) Nz ??????????rRz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02drrz-> zlink to )ryrr|rr`r,r*r-r+r)r+rsrtr(r)r localtimerr\r]r^r[r{)rverboserKr3s r;r z TarFile.list8s ?G  G E<' ---- gl ; ;<<<w}'C 'C'C'.}'C 'CEFFF==??7gmmoo7$(8':J'KK!MNNNN  5666=( 56666 ="&."?"?"C!DEEE  w}}(FBG H H H ?==??:(8 8999==??? W-= =>>> GGGG5  r=filterc |d||}|jCtj||jkr|dd|zdS|d||||}||dd|zdS|(||}||dd|zdS|rAt|d5}| ||ddddS#1swxYwYdS| r| ||ryttj |D]Y}| tj||tj||||XdSdS| |dS) Nrr%ztarfile: Skipped %rr$ztarfile: Unsupported type %rtarfile: Excluded %rr;r)ryrrr&rE_dbgrrZrDaddfiler\rZlistdiraddr)rrr recursiverr3fs r;rz TarFile.add^sI  E ?G 9 RW__T%:%:di%G%G IIa.5 6 6 6 F !T//$00 ? IIa7$> ? ? ? F  fWooG !3d:;;; ==?? "4&& )! Wa((( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )]]__ " LL ! ! ! 6 4 0 01166AHHRW\\$22BGLL!4L4L%f6666 6 666 LL ! ! ! ! !s<D  D$'D$ch |dtj|}||j|j|j}|j||xjt|z c_|j }|t||j|j |t|j t\}}|dkr/|jtt|z z|dz }|xj|tzz c_|j|dS)Nr)rprr$)ryrrrYr9r:rrlr r5rJrir(rjrr6rKr)rr3rrbrprqrrs r;rzTarFile.addfiles E)G$$mmDK DD 3 s3xx     w|W M M M M &w|Y ? ? FI1}} ""3)i*?#@AAA!  KK6I- -KK G$$$$$r=c|6|j}|tSt|trt d|St |r|S t |S#t$rtd|ddwxYw)NzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.zfilter z not found) extraction_filterrgrr TypeErrorcallable_NAMED_FILTERSrvr3)rrs r;_get_filter_functionzTarFile._get_filter_functions >+F~++&#&& 76777M F   M G!&) ) G G G;v;;;<<$ F Gs AA7.) numeric_ownerrc g}||}||}|D]q}||||}||r|||||| |r|dd|D]}t j||j } | || || || | || m#t$r} || Yd} ~ d} ~ wwxYwdS)N set_attrsrc|jSrr|)r?s r;z$TarFile.extractall..sqvr=T)rVreverse)r)r_get_extract_tarinfor\r _extract_onesortrr&rrchownutimechmodr _handle_nonfatal_error) rr&rKrr directoriesfilter_functionr`r3dirpathrs r; extractallzTarFile.extractalls  33F;; ?G ; ;F//NNG}} ,""7+++   gt7==??7J,9  ; ; ; ; --t<<<# / /Ggll466G / 7G= III 7G,,, 7G,,,, / / /++A........ /  / /sAD E"D<<Erc ||}||||}||||||dSdSr)rrr)rr`r&rrrrr3s r;extractzTarFile.extractsa 33F;;++FOTJJ     gtY F F F F F  r=c t|tr||}n|}|} |||}nZ#ttf$r}||Yd}~n/d}~wt $r}||Yd}~nd}~wwxYw| |dd|j zdS| r>tj |}tj ||j|_|S)Nr%r)rrrwrr9_handle_fatal_errorr rrrr[rrr&rr^rw)rr`rr&r3 unfilteredrs r;rzTarFile._get_extract_tarinfos2N fc " " nnV,,GGG  +%ogt44GG% ( ( (  $ $Q ' ' ' ' ' ' ' ' + + +  ' ' * * * * * * * * + ? IIa/*/A B B B4 ==?? Hi((G#%7<<g6F#G#GG s! ?BA** B7BBcV |d ||tj||j||dS#t $r }||Yd}~dSd}~wt$r }| |Yd}~dSd}~wwxYw)Nrr) ry_extract_memberrr&rrrrr r)rr3r&rrrs r;rzTarFile._extract_one s3 C +  "',,tW\*J*J+4/< ! > > > > > ( ( (  $ $Q ' ' ' ' ' ' ' ' ' + + +  ' ' * * * * * * * * * +s#(>w(G(GHHH4r=c |d}|dtj}tj|}|r3tj|stj||s| r&| d|j d|j n| d|j | r|||n|r|||n|r|||n|s|r|||nz|s| r|||n;|jt0vr|||n||||rY||||| s0||||||dSdSdS)NrRr$z -> )rrrrVr&r_rCmakedirsr[r]rrr^rZmakefiler\makedirr.makefifor)r+makedevmakelinkrrr makeunknownrrr)rr3 targetpathrr upperdirss r;rzTarFile._extract_memberS sa  &&s++ ''RV44 GOOJ//  #RW^^I66 # K " " " ==?? 'gmmoo ' IIaw|||W5E5EF G G G G IIa & & & ==?? / MM': . . . . ]]__ / LL* - - - - ^^   / MM': . . . . ]]__ /  / LL* - - - - ]]__ /  / MM': . . . . \ 0 0   Wj 1 1 1 1 MM': . . .  0 JJw M : : :==?? 0 7J/// 7J/////  0 0 0 0r=c |jtj|dStj|ddS#t$r$tj|sYdSwxYw)Ni)rrmkdirFileExistsErrorr&r\rr3rs r;rzTarFile.makedir s  |#$$$$$U+++++   7==,,     s77*A%$A%c  |j}||j|j}t |d5}|ji|jD]2\}}||t |||t|3||j| nt |||jt|ddddS#1swxYwYdS)Nr<) rrr/rJrDr0rirr(truncate)rr3rsourcerptargetr r(s r;rzTarFile.makefile s8  G'(((" z4 ( ( NF~)$+NJJLFDKK'''iIIII GL)))!!!!FFGL)WMMM N N N N N N N N N N N N N N N N N NsBCCCcp ||||dd|jzdS)Nr$z9tarfile: Unknown file type %r, extracted as regular file.)rrrrrs r;rzTarFile.makeunknown sT  gz*** !24;LA B B B B Br=cx ttdrtj|dStd)Nmkfifozfifo not supported by system)rrrr rs r;rzTarFile.makefifo s> 2x  ? Ij ! ! ! ! !=>> >r=c\ ttdrttdstd|j}|d}|r|t jz}n|t jz}tj||tj |j |j dS)Nmknodrz'special devices not supported by systemrT) rrr rr+rS_IFBLKS_IFCHRrrrsrt)rr3rrs r;rzTarFile.makedev s r7## J72y+A+A JHII I| <D ==?? ! DL DD DL D TG,g.>?? A A A A Ar=cT |rOtj|rtj|tj|j|dStj|jrtj |j|dS| | ||dS#t$rL | | ||YdS#t$rtddwxYwwxYw)Nz%unable to resolve link inside archive)r]rr&lexistsunlinksymlinkr^rCrwlinkrrsymlink_exceptionrvr rs r;rzTarFile.makelink sW  V}} 57??:..*Ij))) 7+Z888887>>'"6775GG0*=====(()?)?)H)H)355555  V V V V$$T%;%;G%D%D%/111111 V V V"#JKKQUU V  Vs*A!C&>C&)C D')DD##D'c ttdr*tjdkr|j}|j}|s~ t r&|jrt j|jd}n#t$rYnwxYw tr&|j rtj |j d}n#t$rYnwxYw|d}|d} | r-ttdrtj |||dStj|||dS#t$r}t!d|d}~wwxYwdSdS)Ngeteuidrr%r?lchownzcould not change owner)rrrr+r*rr-getgrnamrvrr,getpwnamr]rrrr )rr3rrgurs r;rz TarFile.chown s 2y ! ! Dbjlla&7&7 A A ;w};L77:D;w};L77:Dyy D==??/wr8'<'</Ij!Q/////HZA..... D D D"#;< ?s( AAAc |j}|dSttdsdS tj|||fdS#t$r}t d|d}~wwxYw)Nrz"could not change modification time)r)rrrrr )rr3rr)rs r;rz TarFile.utime s   = Fr7##  F L HZ% 0 0 0 0 0 L L LCDD! K Ls> AAAc2 |d|j|j}d|_|S|j|jkrX|jdkrdS|j|jdz |jdstdd} |j |}n#t$rL}|j r:| dd|j|fz|xjtz c_Yd}~iYd}~nYd}~wt$rs}|j r:| dd|j|fz|xjtz c_Yd}~|jdkrtt|dYd}~nd}~wt $r|jdkrtddYnt"$r2}|jdkrtt|dYd}~n~d}~wt$$r"}tt|dd}~wt&$rD} ddl}t+||jrtd |d|#t.$r|wxYwd}~wwxYw ||j|nd|_|S) Nrarr$rgTr%z0x%X: %sz empty filez zlib error: )ryrNr rrrrkrr3rrrGrrrPrrrr ExceptionrrrrrKrrL)rmr3rrs r;rz TarFile.next s6  D   ' A#D H ;$,++-- - -{at L  dkAo . . .<$$Q'' : 8999  ,22488!   $IIat{A.>!>???KK9,KKHHHH& 6 6 6$6IIat{A.>!>???KK9,KKHHHH[A%%#CFF++5&%%%%# < < <;!###L11t;$#' 6 6 6;!###CFF++5$####( 2 2 2A''T1   KKK!!TZ00 '(:q(:(:;;E"G     L   ( ( ( (DLs`,C I/ I/(G44 I/H I/,.I I''I**I/c |}d}|3 ||}|d|}n#t$rd}YnwxYw|rtj|}t |D]O}|r|j|jkrd}|r%tj|j}n|j}||kr|cSP|rt|dS)NFT) r{indexr3rr&normpathreversedr r) rrr3 normalizerKskippingrr` member_names r;ruzTarFile._getmemberX s, //##   * g.."&5&/        *7##D))Dw''  F >V]22$H * g..v{;; $k {"" #  &W%% % & &s; A  A cH |}|nd|_dSr)rrL)rr3s r;rzz TarFile._load s3  iikkG  r=c |jrtd|jjz| |j|vrtd|jzdSdS)Nz %s is closedzbad operation for mode %r)rrr4rr)rrs r;ryzTarFile._check sb  ; D.4>+BBCC C    5 55 ABB B   5 5r=c8 |rOdtdtj|j|jf}d}n |j}|}|||d}|td|z|S)NrRT)r3r zlinkname %r not found) r]rrrr&r_rr^rurv)rr3r^limitr`s r;rzTarFile._find_link_target s  ==?? xxtbgoogl.K.KWM]-^ _ _``HEE'HE5DII >2X=>> > r=c#4K |jr|jEd{VdSd}|j|}|dz }|V |t |jkr|j|}n)|js |}|s d|_dSndS|dz }|VY)Nrr$T)rLrKrNrr5)rrr3s r;__iter__zTarFile.__iter__ s < | # # # # # # # F   'iikkG QJEMMM s4<((((,u-\ ))++#'DLF QJEMMM r=cX ||jkrt|tjdSdS)Nfile)rHr{rystderr)rlevelmsgs r;rz TarFile._dbg s7 DJ   #CJ ' ' ' ' ' '  r=c.||Sr)ryrs r; __enter__zTarFile.__enter__ s  r=c||dS|js|jd|_dSr)rrrr)rrrr tracebacks r;__exit__zTarFile.__exit__ sD < JJLLLLL# % ""$$$DKKKr=) NrNNNNNNrNNNN)rN)rNr)rNN)NNNTrr)rN)rT)TFr)=rrrrHrFrGrIrrYr r9r:rr3r-rrrr7rsrrSrirmrqrTrrwr{r~rr rrrrrrrrrrrrrrrrrrrrrrurzryrrrrrrr=r;rrPs EKLJFH FGJAEHL>B)-bbbb^#tZ[/[/[/[[/z222[2[@[6[: I%%%*   ??? aaaaF$D$$$$$L1"1"1"1"1"1"f%%%%2GGG$+/%+/+/+/+/+/ZGGGGGG&. + + +,,, C C C@>B&+*0*0*0*0b   NNN BBB???AAA$VVV2DDDB??? L L L<<<B&&&&&&&&PCCCC&>((( r=rc t|dr:|}t|}||nt|}|dS#t $rYdSwxYw)Nrk)rTF)rrrrrr)rrrs r;rr s  4  ))++CT"""A IIcNNNNT A  t uusA-A22 B?Bc z ddl}d}||}|ddddd |d d td |d}|dddd|ddddd|ddddd|dd dd!|}|jr|j|d"d#|j |j }t|rt|d$5}| t| tj%dddn #1swxYwY|jr$td&|dSdS|d"d'|dS|j|j}t|rQt& |d(5}||j)ddddS#1swxYwYdS|d"d'|dS|jRt)|jd"kr|jd}t*j}nKt)|jd*kr |j\}}n(|d"|t|rt& |d(5}|||j+dddn #1swxYwY|jrC|d,krd-|} nd.||} t| dSdS|d"d'|dS|j|jd} t*j| \} } d/d/d0d0d1d1d1d1d2} | | vr d3| | znd4}|j}t& | |5}|D]}|| dddn #1swxYwY|jr&td5| dSdSdS)6Nrz3A simple command-line interface for tarfile module.) descriptionz-vz --verbose store_trueFzVerbose output)actiondefaulthelpz--filterz zFilter for extraction)metavarchoicesr%T)requiredz-lz--list zShow listing of a tarfile)r&r%z-ez --extract+)r)z zExtract tarfile into target dir)nargsr&r%z-cz--create)zzzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr$z&--filter is only valid for extraction rrz{!r} is a tar archive.z{!r} is not a tar archive. rQ)rr%)r&rrz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rrr)rz.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:rz{!r} file created.)argparseArgumentParser add_argumentradd_mutually_exclusive_group parse_argsrrexittestrrr{r{ryrrrYr rr5rcurdir format_helprcreatepopr&splitextr)r,r!parserrargsrmrtfr3rtar_name_ext compressionstar_mode tar_files file_names r;mainrB s$OOOGK  $ $ $ = =F k,-///  N .4666  / / / > >E tX{7999 t[<=??? tZs39;;; tX{8:::     D {Bt|+ A@AAA yi c?? Gc3 93   cnn&&SZ8888 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9| <.55c::;;;;; < < KK9@@EE F F F F F  i c?? Gc5)) .R --- . . . . . . . . . . . . . . . . . . KK9@@EE F F F F F  ! t|   ! !,q/CYFF   ! # #,KC KK6--// 0 0 0 c?? Gc5)) ?R 6$+ >>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| S==3::3??CC2396#v3F3Fc    KK9@@EE F F F F F  ;??1%%!!(++3   03l/B/B4,s+++K \\(H - - "& " " y!!!! " " " " " " " " " " " " " " " " < 9 &--h77 8 8 8 8 81 ! . 9 9sI6AFF FII I /MMMRR R__main__r)jversion __author__ __credits__builtinsrrDryrrrhrrr`rrwarningsrrrAttributeErrorNotImplementedErrorrr NameError__all__r6rrsrrrrrryrr'r%rrrr-CONTTYPErrrrrrrrrrrrrrrrrNrrr getfilesystemencodingr<rCrSr[rerir|rrr rr r r rrrrPrrrobjectrr BufferedReaderr-r9r;r@rIrLrOrergrlrnrrrrrrBrrr=r;rQs:6 H '&&&&& JJJJ CCCJJJJ CCC$%89 '#   D  % % %   ^                    HgGXWg#%5! #(>+ /   . 988       7d??HH(s(**H 000&&&   (N    < * * *"&$    2     y        8                x        (        (        {        ;        [                K   0ppppppppf6