‰PNG  IHDRÛ¤;œˆ®IDATxÚíÜ»n¤0€á¼ÿK¡• Š)(¦pAá‚Â… –±Ç7†LeG{ý§ §㻢|¬ïذaÆ 6lذaÆ 6lذaÆ 6lomûó$^þy¿úÝØ°ag“5bÆ 6lذaÆ 6lذa{‘í¼ 6lذaÆ ›`›µçã´}HÏFkm,›m¶Ðû¬ÓªñÑêôÒô!Ý ‹xÛ|'ܢ˟;·E:—Ôõ9­&á¶’¶}®{žv]™n&Ñ6ç íhíÕ_õ÷t¨Ú Íµ-Ò«¯šºZ;ú´Z$Û.žPÔÄøkíž)º!§o¡¡ˆ>}l³eQfJÕT±—u Ñ–µò•›åÚ†ª×\âÝX=8ÝîRÙ†4`Vwòl¾>ëÃ×ún•Gþ^›ìi¾s©Ì"msÙ$×uñÝi»ˆ?w¡bs[m©6³K4áãçO†‰¹.£4›Þ%ºÐ×/õÀßÏbëC%Šçt û‰MŸ×–– ú-lîG6±mrz2–ô¶s%»9À•s@˜¹ì-âk»9 =ìæî)ÎÝõÌåâk»B5ÕËÂ×\Ãñš+Í‚çZsÙ² åµòRnÚÂ~G§…ÉR¦¯•CŸŠí¨É ›wIcIïén7jJ°åèhÛ›NCS|ìâÓj0æªò8y½iHKÛ›Ö¶ÐkòɈ+;Sz°¶ú¨áL/µ­FÐ*\çÆÔ”Ë#"5¯Âmë2Üï[SÅ­«»Íú‹£=©g¯În‹aóP…eÚÒ“ûLÛÿ lذaÆ 6lØ^kãï̱aÆ 6lذaÆ 6lذa;ÿŠ ¶_ÚÎذaÆ 6lذaÆ 6lذaÆ ¶á¨ëœR¢ÇÆIEND®B` U ¡ê,aõnã@sfdZdZdZddlmZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZz ddlZWnek r„dZYnXz ddlZWnek rªdZYnXeefZzeef7ZWnek rÖYnXdddd d d d d dddddddgZdZdZedZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.dZ/d*Z0d+Z1e1Z2e e!e"e#e&e'e(e$e%e)e*e+f Z3e e!e(e+fZ4e)e*e+fZ5d,Z6d-d.d/d0hZ7e8e8e8e9e9e9d1œZ:ej;d2krÐd3Zd6d7„Z?d8d9„Z@d:e2fd;d<„ZAd=d>„ZBdedfd?d@„ZCdAdB„ZDGdCd „d eEƒZFGdDd „d eFƒZGGdEd „d eFƒZHGdFd „d eFƒZIGdGd „d eFƒZJGdHd„deFƒZKGdIdJ„dJeKƒZLGdKdL„dLeKƒZMGdMdN„dNeKƒZNGdOdP„dPeKƒZOGdQdR„dReKƒZPGdSdT„dTƒZQGdUdV„dVƒZRGdWdX„dXeSƒZTGdYdZ„dZeSƒZUGd[d\„d\ejVƒZWGd]d„deSƒZXGd^d„deSƒZYd_d„ZZeYjZd`da„Z[e\dbkrbe[ƒdS)cz0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.é)ÚopenNÚTarFileÚTarInfoÚ is_tarfileÚTarErrorÚ ReadErrorÚCompressionErrorÚ StreamErrorÚ ExtractErrorÚ HeaderErrorÚENCODINGÚ USTAR_FORMATÚ GNU_FORMATÚ PAX_FORMATÚDEFAULT_FORMATróiésustar sustar00édé›ó0ó1ó2ó3ó4ó5ó6ó7óLóKóSóxógóXéé)ÚpathÚlinkpathÚsizeÚmtimeÚuidÚgidÚunameÚgnamer%r&r+r,)ZatimeÚctimer(r)r*r'Úntúutf-8cCs(| ||¡}|d|…|t|ƒtS©N)ÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrors©r8ú,/opt/alt/python38/lib64/python3.8/tarfile.pyÚstnžs r:cCs*| d¡}|dkr|d|…}| ||¡S)Nréÿÿÿÿ)ÚfindÚdecode)r4r6r7Úpr8r8r9Únts¤s  r?cCs¦|ddkrbd}tt|ƒdƒD]}|dK}|||d7}q |ddkr¢dt|ƒd| }n@z"t|ddƒ}t| ¡p|d dƒ}Wntk r td ƒ‚YnX|S) Nr)é€éÿr#érAéÚasciiÚstrictÚ0úinvalid header)Úranger2r?ÚintÚstripÚ ValueErrorÚInvalidHeaderError)r4ÚnÚir8r8r9Únti¬s   rOrBcCsØt|ƒ}d|kr$d|dkrDnntd|d|fdƒt}n|tkrÌd|d |krrd|dkrÌnnV|dkrŠtdgƒ}ntdgƒ}d||}t|dƒD]}| d|d@¡|dL}q¬ntd ƒ‚|S) NrrBr#z%0*orDrCr@rAzoverflow in number field)rIÚbytesr3rÚ bytearrayrHÚinsertrK)rMÚdigitsÚformatr4rNr8r8r9ÚitnÀs  2    rUcCs0dtt d|¡ƒ}dtt d|¡ƒ}||fS)NrCZ 148B8x356BZ 148b8x356b)ÚsumÚstructZ unpack_from)ÚbufZunsigned_chksumZ signed_chksumr8r8r9Ú calc_chksumsÝs rYc Cs¦|pd}|dkrdS|dkr.t |||¡dSt||ƒ\}}t|ƒD],}| |¡}t|ƒ|krf|dƒ‚| |¡qD|dkr¢| |¡}t|ƒ|kr˜|dƒ‚| |¡dS)Ni@rúunexpected end of data)ÚshutilÚ copyfileobjÚdivmodrHÚreadr2Úwrite) ÚsrcZdstr5Ú exceptionÚbufsizeÚblocksÚ remainderÚbrXr8r8r9r\ês$       r\cCs8ttjddƒ}|dk r(| |d¡ |¡}t|dddS)Nr6Úbackslashreplaceú )Úend)ÚgetattrÚsysÚstdoutr1r=Úprint)r4r6r8r8r9Ú _safe_printsrmc@s eZdZdS)rN©Ú__name__Ú __module__Ú __qualname__r8r8r8r9r sc@s eZdZdS)r Nrnr8r8r8r9r sc@s eZdZdS)rNrnr8r8r8r9rsc@s eZdZdS)rNrnr8r8r8r9rsc@s eZdZdS)r Nrnr8r8r8r9r sc@s eZdZdS)r Nrnr8r8r8r9r sc@s eZdZdS)ÚEmptyHeaderErrorNrnr8r8r8r9rrsrrc@s eZdZdS)ÚTruncatedHeaderErrorNrnr8r8r8r9rssrsc@s eZdZdS)ÚEOFHeaderErrorNrnr8r8r8r9rt"srtc@s eZdZdS)rLNrnr8r8r8r9rL%srLc@s eZdZdS)ÚSubsequentHeaderErrorNrnr8r8r8r9ru(sruc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú _LowLevelFilecCsFtjtjtjBtjBdœ|}ttdƒr2|tjO}t ||d¡|_dS)N©ÚrÚwÚO_BINARYi¶) ÚosÚO_RDONLYÚO_WRONLYÚO_CREATÚO_TRUNCÚhasattrrzrÚfd)ÚselfÚnameÚmoder8r8r9Ú__init__5sþý  z_LowLevelFile.__init__cCst |j¡dSr0)r{Úcloser©r‚r8r8r9r†>sz_LowLevelFile.closecCst |j|¡Sr0)r{r^r©r‚r'r8r8r9r^Asz_LowLevelFile.readcCst |j|¡dSr0)r{r_r©r‚r4r8r8r9r_Dsz_LowLevelFile.writeN)rorprqr…r†r^r_r8r8r8r9rv/s rvc@sneZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z ddd„Z dd„Z dd„Z dd„ZdS)Ú_Streamc Csäd|_|dkrt||ƒ}d|_|dkr6t|ƒ}| ¡}|psz_StreamProxy.__init__cCs|jj|_|jSr0)r™r^rXrˆr8r8r9r^Bs z_StreamProxy.readcCsP|j d¡rdS|jdd…dkr8|jdd…dkr8d S|j d ¡rHd Sd SdS) Ns‹rŽrésBZhr¹é s1AY&SYr)s]€sý7zXZr‘r“)rXÚ startswithr‡r8r8r9r—Fs $ z_StreamProxy.getcomptypecCs|j ¡dSr0)r™r†r‡r8r8r9r†Psz_StreamProxy.closeN)rorprqr…r^r—r†r8r8r8r9r–9s r–c@sfeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Ze j fdd„Z ddd„Z dd„Z dd„ZdS)Ú _FileInFileNcCsÊ||_||_||_d|_t|ddƒ|_d|_|dkr>d|fg}d|_g|_d}|j}|D]L\}}||kr||j  d||df¡|j  d||||f¡||7}||}qX||jkrÆ|j  d||jdf¡dS)NrrƒFT) r™Úoffsetr'Úpositionrirƒr›Ú map_indexÚmaprÂ)r‚r™rÌr'Z blockinfoZlastposZrealposr8r8r9r…]s(    z_FileInFile.__init__cCsdSr0r8r‡r8r8r9rµvsz_FileInFile.flushcCsdS©NTr8r‡r8r8r9Úreadableysz_FileInFile.readablecCsdS)NFr8r‡r8r8r9Úwritable|sz_FileInFile.writablecCs |j ¡Sr0)r™Úseekabler‡r8r8r9rÓsz_FileInFile.seekablecCs|jSr0)rÍr‡r8r8r9r¾‚sz_FileInFile.tellcCs|tjkr tt|dƒ|jƒ|_nj|tjkr\|dkrFt|j|dƒ|_qŠt|j||jƒ|_n.|tjkr‚tt|j||jƒdƒ|_ntdƒ‚|jS)NrzInvalid argument) ÚioÚSEEK_SETÚminÚmaxr'rÍÚSEEK_CURÚSEEK_ENDrK)r‚rÍÚwhencer8r8r9r¿‡s   z_FileInFile.seekc Cs |dkr|j|j}nt||j|jƒ}d}|dkr|j|j\}}}}||jkr`|krhqŽnqŽq6|jd7_|jt|jƒkr6d|_q6t|||jƒ}|râ|j ||j|¡|j |¡}t|ƒ|krØt dƒ‚||7}n |t |7}||8}|j|7_q,|S)Nrrr#rZ) r'rÍrÖrÏrÎr2r™r¿r^rr3) r‚r'rXÚdataÚstartÚstoprÌr5rer8r8r9r^—s,     z_FileInFile.readcCs&| t|ƒ¡}||dt|ƒ…<t|ƒSr0)r^r2)r‚rerXr8r8r9Úreadinto¶sz_FileInFile.readintocCs d|_dSrÐ)r›r‡r8r8r9r†»sz_FileInFile.close)N)N)rorprqr…rµrÑrÒrÓr¾rÔrÕr¿r^rÞr†r8r8r8r9rËWs  rËcseZdZ‡fdd„Z‡ZS)Ú ExFileObjectcs&t|j|j|j|jƒ}tƒ |¡dSr0)rËr™Ú offset_datar'ÚsparseÚsuperr…)r‚ÚtarfileÚtarinfor™©Ú __class__r8r9r…Ás  ÿzExFileObject.__init__)rorprqr…Ú __classcell__r8r8rår9rß¿srßc@s¶eZdZeddddddddd d d d d ddddddddZdddd„Zedd„ƒZejdd„ƒZedd„ƒZ e jdd„ƒZ dd„Z dd „Z e e d!fd"d#„Zd$d%„Zd&d'„Zd(d)„Zed*d+„ƒZd,d-„Zed.d/„ƒZed0d1„ƒZed2d3„ƒZed4d5„ƒZed6d7„ƒZed8d9„ƒZd:d;„Zdd?„Zd@dA„ZdBdC„Z dDdE„Z!dFdG„Z"dHdI„Z#dJdK„Z$dLdM„Z%dNdO„Z&dPdQ„Z'dRdS„Z(dTdU„Z)dVdW„Z*dXdY„Z+dZd[„Z,d\d]„Z-d^d_„Z.d`da„Z/dbdc„Z0dS)erzName of the archive member.zPermission bits.z6User ID of the user who originally stored this member.z7Group ID of the user who originally stored this member.zSize in bytes.zTime of last modification.zHeader checksum.z–File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.zcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.z User name.z Group name.zDevice major number.zDevice minor number.zThe tar header starts here.zThe file's data starts here.zMA dictionary containing key-value pairs of an associated pax extended header.zSparse member information.N)rƒr„r)r*r'r(ÚchksumÚtypeÚlinknamer+r,ÚdevmajorÚdevminorrÌràÚ pax_headersrárãÚ_sparse_structsÚ _link_targetrŒcCsj||_d|_d|_d|_d|_d|_d|_t|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_i|_dS)Ni¤rrŒ)rƒr„r)r*r'r(rèÚREGTYPErérêr+r,rërìrÌràrárí©r‚rƒr8r8r9r…ís"zTarInfo.__init__cCs|jSr0©rƒr‡r8r8r9r%sz TarInfo.pathcCs ||_dSr0ròrñr8r8r9r% scCs|jSr0©rêr‡r8r8r9r&szTarInfo.linkpathcCs ||_dSr0ró)r‚rêr8r8r9r&scCsd|jj|jt|ƒfS)Nz<%s %r at %#x>)rærorƒÚidr‡r8r8r9Ú__repr__szTarInfo.__repr__cCsl|j|jd@|j|j|j|j|j|j|j|j |j |j |j dœ }|dt krh|d d¡sh|dd7<|S)Néÿ) rƒr„r)r*r'r(rèrérêr+r,rërìrérƒú/)rƒr„r)r*r'r(rèrérêr+r,rërìÚDIRTYPEr²)r‚Úinfor8r8r9Úget_infos"ózTarInfo.get_infoÚsurrogateescapecCsT| ¡}|tkr| |||¡S|tkr4| |||¡S|tkrH| ||¡Stdƒ‚dS)Nzinvalid format)rúr Úcreate_ustar_headerrÚcreate_gnu_headerrÚcreate_pax_headerrK)r‚rTr6r7rùr8r8r9Útobuf2s z TarInfo.tobufcCsnt|d<t|d ||¡ƒtkr(tdƒ‚t|d ||¡ƒtkr^| |d||¡\|d<|d<| |t||¡S)NÚmagicrêzlinkname is too longrƒÚprefix) Ú POSIX_MAGICr2r1Ú LENGTH_LINKrKÚ LENGTH_NAMEÚ_posix_split_nameÚ_create_headerr )r‚rùr6r7r8r8r9rü@s zTarInfo.create_ustar_headercCs€t|d<d}t|d ||¡ƒtkr<|| |dt||¡7}t|d ||¡ƒtkrl|| |dt||¡7}|| |t ||¡S)Nrrrêrƒ) Ú GNU_MAGICr2r1rÚ_create_gnu_long_headerÚGNUTYPE_LONGLINKrÚGNUTYPE_LONGNAMErr)r‚rùr6r7rXr8r8r9rýMszTarInfo.create_gnu_headerc Cs*t|d<|j ¡}ddtfddtfddfD]j\}}}||kr>q*z|| dd ¡Wn$tk rv||||<Yq*YnXt||ƒ|kr*||||<q*d D]`\}}||kr´d ||<qš||}d |krØd |d krænn t|t ƒršt |ƒ||<d ||<qš|r|  |t |¡} nd} | |  |tdd¡S)Nrrƒr%rêr&)r+r+é )r,r,r rDrE))r)rB)r*rB)r'é )r(r rrBr#rr­)rríÚcopyrrr1ÚUnicodeEncodeErrorr2Ú isinstanceÚfloatÚstrÚ_create_pax_generic_headerÚXHDTYPErr ) r‚rùr6rírƒZhnamer5rSÚvalrXr8r8r9rþ[s8 þ   *  zTarInfo.create_pax_headercCs| |td¡S)Nr/)rÚXGLTYPE)Úclsrír8r8r9Úcreate_pax_global_headerŒsz TarInfo.create_pax_global_headercCs~| d¡}tdt|ƒƒD]T}d |d|…¡}d ||d…¡}t| ||¡ƒtkrt| ||¡ƒtkrqvqtdƒ‚||fS)Nr÷r#zname is too long)ÚsplitrHr2rÃr1Ú LENGTH_PREFIXrrK)r‚rƒr6r7Z componentsrNrr8r8r9r’s ÿzTarInfo._posix_split_namecCsVt| dd¡d||ƒt| dd¡d@d|ƒt| dd¡d|ƒt| d d¡d|ƒt| d d¡d |ƒt| d d¡d |ƒd | dt¡t| dd¡d||ƒ| dt¡t| dd¡d||ƒt| dd¡d||ƒt| dd¡d|ƒt| dd¡d|ƒt| dd¡d||ƒg}t dtd |¡¡}t |t d…ƒd}|dd…t d|dƒ|dd…}|S)NrƒrŒrr„rrörBr)r*r'r r(s rérêrr+r r,rërìrrz%dsri”þÿÿz%06orDi›þÿÿ) r:ÚgetrUrðrrWr¯rÇrÃrYrP)rùrTr6r7ÚpartsrXrèr8r8r9r¢s(  ñ&zTarInfo._create_headercCs.tt|ƒtƒ\}}|dkr*|t|t7}|S)Nr)r]r2rÇr3)Zpayloadrcrdr8r8r9Ú_create_payload¾szTarInfo._create_payloadcCsR| ||¡t}i}d|d<||d<t|ƒ|d<t|d<| |t||¡| |¡S)Nz ././@LongLinkrƒrér'r)r1r3r2rrr r)rrƒrér6r7rùr8r8r9rÈs ÿzTarInfo._create_gnu_long_headerc Cs2d}| ¡D]8\}}z| dd¡Wq tk rBd}YqFYq Xq d}|rV|d7}| ¡D]\}}| d¡}|r‚| |d¡}n | d¡}t|ƒt|ƒd}d } } |tt| ƒƒ} | | krÂqÈ| } q¨|tt| ƒd ƒd |d |d 7}q^i} d| d<|| d<t|ƒ| d<t| d<| | td d¡|  |¡S)NFr/rETrs21 hdrcharset=BINARY rûrÈrrDó ó=ó z././@PaxHeaderrƒrér'rr­) Úitemsr1rr2rrPrrr r) rrírér6ZbinaryÚkeywordÚvalueZrecordsÚlrMr>rùr8r8r9rÙs<  ( ÿz"TarInfo._create_pax_generic_headerc Csvt|ƒdkrtdƒ‚t|ƒtkr(tdƒ‚| t¡tkr>tdƒ‚t|dd…ƒ}|t|ƒkrbt dƒ‚|ƒ}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…||ƒ}|jtkr†|j  d¡r†t|_|jtkr8d}g}tdƒD]l} z0t|||d…ƒ} t||d|d…ƒ} Wntk rôYqYnX| | | f¡|d7}q¢t|dƒ} t|dd…ƒ} || | f|_ | !¡rP|j  "d¡|_ |rr|jt#krr|d|j |_ |S)Nrz empty headerztruncated headerzend of file headeré”éœz bad checksumrélété|éˆéii i)iIiQiYiôr÷i‚r¹r éiâiãiï)$r2rrrÇrsÚcountr3rtrOrYrLr?rƒr„r)r*r'r(rèrérêr+r,rërìÚAREGTYPEr²røÚGNUTYPE_SPARSErHrKrÂÚboolrîÚisdirÚrstripÚ GNU_TYPES)rrXr6r7rèÚobjrršÚstructsrNrÌÚnumbytesÚ isextendedÚorigsizer8r8r9Úfrombuf sZ         zTarInfo.frombufcCs8|j t¡}| ||j|j¡}|j ¡t|_| |¡Sr0) r™r^rÇr8r6r7r¾rÌÚ _proc_member)rrãrXr3r8r8r9Ú fromtarfileKs zTarInfo.fromtarfilecCsT|jttfkr| |¡S|jtkr,| |¡S|jtttfkrF|  |¡S|  |¡SdSr0) rér r Ú _proc_gnulongr.Ú _proc_sparserrÚSOLARIS_XHDTYPEÚ _proc_paxÚ _proc_builtin)r‚rãr8r8r9r9`s    zTarInfo._proc_membercCsR|j ¡|_|j}| ¡s$|jtkr4|| |j¡7}||_|  |j |j |j ¡|Sr0) r™r¾ràÚisregréÚSUPPORTED_TYPESÚ_blockr'rÌÚ_apply_pax_inforír6r7)r‚rãrÌr8r8r9r?ms zTarInfo._proc_builtincCs†|j | |j¡¡}z| |¡}Wntk r>tdƒ‚YnX|j|_|jt krft ||j |j ƒ|_ n|jtkr‚t ||j |j ƒ|_|S)Nú missing or bad subsequent header)r™r^rBr'r:r rurÌrér r?r6r7rƒr rê)r‚rãrXÚnextr8r8r9r;~s  zTarInfo._proc_gnulongc CsÚ|j\}}}|`|rª|j t¡}d}tdƒD]n}z0t|||d…ƒ}t||d|d…ƒ} Wntk rzYqœYnX|r’| r’| || f¡|d7}q,t|dƒ}q||_ |j  ¡|_ |j |  |j ¡|_||_ |S)Nrér r+iø)rîr™r^rÇrHrOrKrÂr/rár¾ràrBr'rÌ) r‚rãr4r6r7rXršrNrÌr5r8r8r9r<”s(      zTarInfo._proc_sparsecCs.|j | |j¡¡}|jtkr&|j}n |j ¡}t  d|¡}|dk rX|  d¡  d¡|d<|  d¡}|dkrr|j }nd}t d¡}d}| ||¡}|s˜q6| ¡\} } t| ƒ} | dkr¼tdƒ‚|| d ¡d| d¡| d…} | | dd|j¡} | tkr| | ||j |j¡} n| | dd|j¡} | || <|| 7}q„z| |¡} Wntk rbtd ƒ‚YnXd |kr|| | |¡nHd |kr–| | ||¡n.|  d ¡dkrÄ|  d¡dkrÄ| | ||¡|jttfkr*|   ||j |j¡|j!| _!d|kr*| j"} |  #¡s| jt$kr$| |  | j¡7} | |_!| S)Ns\d+ hdrcharset=([^\n]+)\nr#r/Ú hdrcharsetZBINARYs(\d+) ([^=]+)=rrGr$rDúGNU.sparse.mapúGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorrFr')%r™r^rBr'rérrír ÚreÚsearchÚgroupr=rr6ÚcompileÚmatchÚgroupsrIrLrhrÜÚ_decode_pax_fieldr7ÚPAX_NAME_FIELDSr:r ruÚ_proc_gnusparse_01Ú_proc_gnusparse_00Ú_proc_gnusparse_10rr=rCrÌràr@rA)r‚rãrXrírOrGr6Zregexršr5r!r"rErÌr8r8r9r>°sh       $ ÿ  ÿ ÿ     zTarInfo._proc_paxcCshg}t d|¡D]}| t| d¡ƒ¡qg}t d|¡D]}| t| d¡ƒ¡q:tt||ƒƒ|_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr#s\d+ GNU.sparse.numbytes=(\d+)\n)rKÚfinditerrÂrIrMÚlistÚziprá)r‚rErírXZoffsetsrOr5r8r8r9rTszTarInfo._proc_gnusparse_00cCs@dd„|d d¡Dƒ}tt|ddd…|ddd…ƒƒ|_dS)NcSsg|] }t|ƒ‘qSr8)rI)Ú.0Úxr8r8r9Ú &sz.TarInfo._proc_gnusparse_01..rHú,r$r#)rrWrXrá)r‚rErírár8r8r9rS#szTarInfo._proc_gnusparse_01cCs¨d}g}|j t¡}| dd¡\}}t|ƒ}t|ƒ|dkrtd|krT||j t¡7}| dd¡\}}| t|ƒ¡q,|j ¡|_t t |ddd…|ddd…ƒƒ|_ dS)Nrr#r$) r™r^rÇrrIr2rÂr¾ràrWrXrá)r‚rErírãZfieldsrárXZnumberr8r8r9rU)s  zTarInfo._proc_gnusparse_10c CsÂ| ¡D]ª\}}|dkr&t|d|ƒq|dkr@t|dt|ƒƒq|dkrZt|dt|ƒƒq|tkr|tkr”zt||ƒ}Wntk r’d}YnX|dkr¦| d¡}t|||ƒq| ¡|_dS)NzGNU.sparse.namer%rIr'zGNU.sparse.realsizerr÷) r ÚsetattrrIÚ PAX_FIELDSÚPAX_NUMBER_FIELDSrKr1r rí)r‚rír6r7r!r"r8r8r9rC9s"  zTarInfo._apply_pax_infocCs4z| |d¡WStk r.| ||¡YSXdS)NrE)r=ÚUnicodeDecodeError)r‚r"r6Zfallback_encodingZfallback_errorsr8r8r9rQPszTarInfo._decode_pax_fieldcCs"t|tƒ\}}|r|d7}|tS)Nr#)r]rÇ)r‚r,rcrdr8r8r9rBXszTarInfo._blockcCs |jtkSr0)réÚ REGULAR_TYPESr‡r8r8r9r@asz TarInfo.isregcCs| ¡Sr0)r@r‡r8r8r9ÚisfileeszTarInfo.isfilecCs |jtkSr0)rérør‡r8r8r9r0isz TarInfo.isdircCs |jtkSr0)réÚSYMTYPEr‡r8r8r9Úissymmsz TarInfo.issymcCs |jtkSr0)réÚLNKTYPEr‡r8r8r9Úislnkqsz TarInfo.islnkcCs |jtkSr0)réÚCHRTYPEr‡r8r8r9Úischrusz TarInfo.ischrcCs |jtkSr0)réÚBLKTYPEr‡r8r8r9Úisblkysz TarInfo.isblkcCs |jtkSr0)réÚFIFOTYPEr‡r8r8r9Úisfifo}szTarInfo.isfifocCs |jdk Sr0)rár‡r8r8r9ÚissparseszTarInfo.issparsecCs|jtttfkSr0)rérgrirkr‡r8r8r9Úisdev„sz TarInfo.isdev)rŒ)1rorprqÚdictÚ __slots__r…Úpropertyr%Úsetterr&rõrúrr rÿrürýrþÚ classmethodrrÚ staticmethodrrrrr8r:r9r?r;r<r>rTrSrUrCrQrBr@rbr0rdrfrhrjrlrmrnr8r8r8r9rÊs’è      1     2 >  h  c @s°eZdZdZdZdZdZeZe Z dZ e Z eZd[dd„Zedddefd d „ƒZed\d d „ƒZed]dd„ƒZed^dd„ƒZed_dd„ƒZdddddœZdd„Zdd„Zdd„Zdd „Zd`d!d"„Zdadd$œd%d&„Zdbdd'œd(d)„Zdcd*d+„Z dddd-œd.d/„Z!dedd-œd1d2„Z"d3d4„Z#dfd5d6„Z$d7d8„Z%d9d:„Z&d;d<„Z'd=d>„Z(d?d@„Z)dAdB„Z*dCdD„Z+dEdF„Z,dGdH„Z-dIdJ„Z.dgdKdL„Z/dMdN„Z0dhdOdP„Z1dQdR„Z2dSdT„Z3dUdV„Z4dWdX„Z5dYdZ„Z6dS)irrFr#Nrxrûc Csªdddddœ}||krtdƒ‚||_|||_|sh|jdkrTtj |¡sTd|_d|_t||jƒ}d |_n@|dkrt|d ƒrt |j t t fƒr|j }t|d ƒr¢|j|_d |_|r¸tj  |¡nd|_ ||_|dk rÒ||_|dk rà||_|dk rî||_|dk rü||_|dk r ||_| |_| dk r0|jtkr0| |_ni|_| dk rF| |_| dk rV| |_| |_d |_g|_d |_|j ¡|_i|_zþ|jd kržd|_ | !¡|_ |jdkr2|j "|j¡z|j #|¡}|j $|¡WnXt%k rþ|j "|j¡Yq2Yn0t&k r,}zt't |ƒƒ‚W5d}~XYnXqª|jdkr|d |_|jr||j (|j )¡¡}|j *|¡|jt+|ƒ7_Wn&|js˜|j ,¡d |_‚YnXdS)NÚrbzr+bÚwbZxb©rxÚaryrZú!mode must be 'r', 'a', 'w' or 'x'rxryFrƒr„Trx©rxryrZ)-rKr„Ú_moder{r%ÚexistsÚ bltn_openr•r€rrƒrrPÚabspathr™rTräÚ dereferenceÚ ignore_zerosr6r7rríÚdebugÚ errorlevelÚ copybufsizer›ÚmembersÚ_loadedr¾rÌÚinodesÚ firstmemberrEr¿r:rÂrtr rrr r_r2r†)r‚rƒr„r™rTrärr€r6r7rírr‚rƒZmodesÚerXr8r8r9r…£sŠ   ÿ          "   zTarFile.__init__c sº|s|stdƒ‚|dkrª‡fdd„}tˆj|dD]j}tˆˆj|ƒ}|dk rV| ¡} z||d|f|ŽWSttfk rš|dk r’| | ¡Yq2Yq2Xq2tdƒ‚nd|kr | dd ¡\} }| pÊd} |pÒd }|ˆjkrðtˆˆj|ƒ}n td |ƒ‚||| |f|ŽSd |kr’| d d ¡\} }| p.d} |p8d }| d krLtdƒ‚t || |||ƒ} zˆ|| | f|Ž} Wn|   ¡‚YnXd| _ | S|dkr®ˆj |||f|ŽStdƒ‚dS)Nznothing to open)rxúr:*csˆj|dkS)NÚtaropen)Ú OPEN_METH)r˜©rr8r9Únot_compressed<sz$TarFile.open..not_compressed©Úkeyrxz%file could not be opened successfullyú:r#r“r”ú|rwzmode must be 'r' or 'w'Frzzundiscernible mode) rKÚsortedr‹rir¾rrr¿rrŠr†r•rŠ) rrƒr„r™rbÚkwargsrr˜ÚfuncZ saved_posÚfilemodeÚstreamrÆr8rŒr9rsP%            z TarFile.opencKs |dkrtdƒ‚||||f|ŽS)Nrwry)rK)rrƒr„r™r“r8r8r9rŠmszTarFile.taropenr©cKsè|dkrtdƒ‚zddlm}Wntk r<tdƒ‚YnXz|||d||ƒ}Wn.tk r‚|dk r||dkr|tdƒ‚‚YnXz|j|||f|Ž}WnBtk rÈ| ¡|dkrÂtdƒ‚‚Yn| ¡‚YnXd |_ |S) N©rxryrZúmode must be 'r', 'w' or 'x'r)ÚGzipFilezgzip module is not availablererxr¶F) rKZgzipr™rrr¥rrŠr†r•)rrƒr„r™Ú compresslevelr“r™rÆr8r8r9Úgzopenus0zTarFile.gzopenc Ks¸|dkrtdƒ‚zddlm}Wntk r<tdƒ‚YnX||pF|||d}z|j|||f|Ž}WnFttfk r˜| ¡|dkr’t dƒ‚‚Yn| ¡‚YnXd |_ |S) Nr—r˜r)ÚBZ2Filer)ršrxznot a bzip2 fileF) rKrrœrrrŠr¥ÚEOFErrorr†rr•)rrƒr„r™ršr“rœrÆr8r8r9Úbz2open–s&zTarFile.bz2openc Ks¼|dkrtdƒ‚zddlm}m}Wntk r@tdƒ‚YnX||pJ|||d}z|j|||f|Ž}WnF|tfk rœ| ¡|dkr–t dƒ‚‚Yn| ¡‚YnXd |_ |S) Nr—r˜r)ÚLZMAFiler§r’)Úpresetrxznot an lzma fileF) rKr¦rŸr§rrrŠrr†rr•) rrƒr„r™r r“rŸr§rÆr8r8r9Úxzopen²s&zTarFile.xzopenrŠr›ržr¡)r“rŽrr‘cCsˆ|jr dSd|_z`|jdkrn|j ttd¡|jtd7_t |jt ƒ\}}|dkrn|j tt |¡W5|js‚|j ¡XdS)NTrzr$r) r›r•r™r†r„r_r3rÇrÌr]Ú RECORDSIZE)r‚rcrdr8r8r9r†Ùs z TarFile.closecCs"| |¡}|dkrtd|ƒ‚|S)Nzfilename %r not found)Ú _getmemberÚKeyError)r‚rƒrär8r8r9Ú getmemberîs  zTarFile.getmembercCs| ¡|js| ¡|jSr0)Ú_checkr…Ú_loadr„r‡r8r8r9Ú getmembersùszTarFile.getmemberscCsdd„| ¡DƒS)NcSsg|] }|j‘qSr8rò)rYrär8r8r9r[sz$TarFile.getnames..)r¨r‡r8r8r9ÚgetnamesszTarFile.getnamesc Cs^| d¡|dk r|j}|dkr$|}tj |¡\}}| tjd¡}| d¡}| ¡}||_ |dkr€|j stt  |¡}qŽt  |¡}nt  | ¡¡}d}|j}t  |¡rþ|j|jf} |j sæ|jdkræ| |jkræ||j| kræt} |j| }nt} | drü||j| <nht  |¡rt} nVt  |¡r"t} nDt  |¡r>t} t |¡}n(t  |¡rPt} nt   |¡rbt!} ndS||_||_"|j#|_$|j%|_&| tkr–|j'|_(nd|_(|j)|_*| |_+||_,t-räzt- .|j$¡d|_/Wnt0k râYnXt1rzt1 2|j&¡d|_3Wnt0k rYnX| tt!fkrZt4tdƒrZt4tdƒrZt 5|j6¡|_7t 8|j6¡|_9|S)NÚawxr÷rŒr#rÚmajorÚminor):r¦rƒr{r%Ú splitdriver­ÚsepÚlstriprärãrÚlstatÚstatÚfstatÚfilenoÚst_modeÚS_ISREGÚst_inoÚst_devÚst_nlinkr†rerðÚS_ISDIRrøÚS_ISFIFOrkÚS_ISLNKrcÚreadlinkÚS_ISCHRrgÚS_ISBLKrir„Úst_uidr)Úst_gidr*Úst_sizer'Úst_mtimer(rérêÚpwdÚgetpwuidr+r¤ÚgrpZgetgrgidr,r€r«Úst_rdevrër¬rì) r‚rƒÚarcnamer™ZdrvräZstatresrêZstmdÚinoderér8r8r9Ú gettarinfo s„      ÿ ÿ          zTarFile.gettarinfoT)r„cCsú| ¡|dkr|}|D]Ü}|r¤tt |j¡ƒtd|jp>|j|jpH|jfƒ|  ¡s`|  ¡rztdd|j |j fƒntd|j ƒtdt |j¡dd…ƒt|j| ¡r¶dndƒ|rî| ¡rØtd |jƒ| ¡rîtd |jƒtƒqdS) Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02dr¸r÷rŒz-> zlink to )r¦rmr±r•r„r+r)r,r*rhrjrërìr'r°Ú localtimer(rƒr0rdrêrfrl)r‚Úverboser„rär8r8r9rWls0 ÿÿÿz TarFile.list©Úfilterc Cs6| d¡|dkr|}|jdk rFtj |¡|jkrF| dd|¡dS| d|¡| ||¡}|dkrz| dd|¡dS|dk r¦||ƒ}|dkr¦| dd|¡dS| ¡rÒt|dƒ}|  ||¡W5QRXn`|  ¡r(|  |¡|r2t t  |¡ƒD]*}|j tj ||¡tj ||¡||dqún |  |¡dS) Nrªr$ztarfile: Skipped %rr#ztarfile: Unsupported type %rztarfile: Excluded %rrurÌ)r¦rƒr{r%r~Ú_dbgrÉr@r}Úaddfiler0r’ÚlistdirÚaddrÃ)r‚rƒrÇÚ recursiverÍräÚfr8r8r9rÑŒs8      ÿ z TarFile.addcCs¾| d¡t |¡}| |j|j|j¡}|j |¡|jt |ƒ7_|j }|dk r®t ||j|j |dt |j tƒ\}}|dkrœ|j tt|¡|d7}|j|t7_|j |¡dS)Nrª)rbrr#)r¦r rÿrTr6r7r™r_rÌr2rƒr\r'r]rÇr3r„rÂ)r‚rär™rXrbrcrdr8r8r9rÏ¿s   zTarFile.addfileÚ.©Ú numeric_ownerc Csøg}|dkr|}|D]>}| ¡r:| |¡t |¡}d|_|j||| ¡ |dq|jdd„d| ¡|D]‚}tj  ||j ¡}z,|j |||d|  ||¡|  ||¡Wqptk rð}z"|jdkrЂn| dd|¡W5d}~XYqpXqpdS) NéÀ©Ú set_attrsrÖcSs|jSr0rò)rxr8r8r9Úðrz$TarFile.extractall..rŽrÕr#ú tarfile: %s)r0rÂr r„ÚextractÚsortÚreverser{r%rÃrƒÚchownÚutimeÚchmodr r‚rÎ)r‚r%r„rÖZ directoriesräÚdirpathrˆr8r8r9Ú extractallØs.  ÿ  zTarFile.extractallrŒc Cs | d¡t|tƒr | |¡}n|}| ¡r>tj ||j¡|_ z"|j |tj ||j ¡||dWn¦t k rÆ}zH|j dkr€‚n6|jdkrž| dd|j¡n| dd|j|jf¡W5d}~XYnBtk r}z"|j dkræ‚n| dd|¡W5d}~XYnXdS)NrxrØrr#rÛztarfile: %s %r)r¦rrr¥rfr{r%rÃrêrïÚ_extract_memberrƒr¥r‚ÚfilenamerÎÚstrerrorr )r‚Úmemberr%rÙrÖrärˆr8r8r9rÜs*   þ   ( zTarFile.extractcCs‚| d¡t|tƒr | |¡}n|}| ¡s6|jtkrB| ||¡S| ¡sR|  ¡rzt|j t ƒrht dƒ‚q~|  | |¡¡SndSdS)Nrxz'cannot extract (sym)link as file object)r¦rrr¥r@rérAÚ fileobjectrfrdr™rŠr Ú extractfileÚ_find_link_target)r‚rçrär8r8r9ré&s      zTarFile.extractfilecCsT| d¡}| dtj¡}tj |¡}|r>tj |¡s>t |¡| ¡sN|  ¡rh|  dd|j |j f¡n|  d|j ¡|  ¡rŒ| ||¡nŽ| ¡r¢| ||¡nx| ¡r¸| ||¡nb| ¡sÈ| ¡rÖ| ||¡nD| ¡sæ|  ¡rô| ||¡n&|jtkr| ||¡n | ||¡|rP| |||¡|  ¡sP| ||¡| ||¡dS)Nr÷r#z%s -> %s)r1r­r{r®r%Údirnamer|ÚmakedirsrfrdrÎrƒrêr@Úmakefiler0ÚmakedirrlÚmakefiforhrjÚmakedevÚmakelinkrérAÚ makeunknownrßrárà)r‚räÚ targetpathrÙrÖZ upperdirsr8r8r9räEs4       zTarFile._extract_membercCs*zt |d¡Wntk r$YnXdS)Nr×)r{ÚmkdirÚFileExistsError©r‚rärór8r8r9rîvszTarFile.makedirc CsŽ|j}| |j¡|j}t|dƒb}|jdk rn|jD]"\}}| |¡t|||t|ƒq4| |j¡|  ¡nt|||jt|ƒW5QRXdS)Nrv) r™r¿ràrƒr}rár\rr'Útruncate)r‚räróÚsourcerbÚtargetrÌr'r8r8r9rí€s      zTarFile.makefilecCs"| ||¡| dd|j¡dS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rírÎrérör8r8r9ròs ÿzTarFile.makeunknowncCs"ttdƒrt |¡ntdƒ‚dS)NÚmkfifozfifo not supported by system)r€r{rúr rör8r8r9rï˜s  zTarFile.makefifocCs^ttdƒrttdƒstdƒ‚|j}| ¡r6|tjO}n |tjO}t ||t  |j |j ¡¡dS)NÚmknodrðz'special devices not supported by system) r€r{r r„rjr±ÚS_IFBLKÚS_IFCHRrûrðrërì)r‚rärór„r8r8r9rð s  ÿzTarFile.makedevc Cs°zb| ¡r0tj |¡r t |¡t |j|¡n0tj |j¡rNt  |j|¡n|  |  |¡|¡WnHt k rªz|  |  |¡|¡Wnt k r¤tdƒ‚YnXYnXdS)Nz%unable to resolve link inside archive)rdr{r%ÚlexistsÚunlinkÚsymlinkrêr|rïÚlinkrärêÚsymlink_exceptionr¤r rör8r8r9rñ¯s"   ÿ ÿzTarFile.makelinkcCsØttdƒrÔt ¡dkrÔ|j}|j}|s‚ztrzShow listing of a tarfile)Úmetavarrz-ez --extractú+)rz zExtract tarfile into target dir)Únargsrrz-cz--create)zzzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validrxrz{!r} is a tar archive.r#z{!r} is not a tar archive. r‰)rËr$)r%rÔz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rŽr‘r)r«z.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:ryz{!r} file created.)ÚargparseÚArgumentParserÚ add_argumentZadd_mutually_exclusive_groupÚ parse_argsZtestrrr¨rlrjrrËrTÚexitrWrrÜr2r{ÚcurdirZ format_helprãZcreateÚpopr%ÚsplitextrÑ)r!rÚparserrMÚargsr`r“Ztfr&rZtar_nameÚ_ZextZ compressionsZtar_modeZ tar_filesÚ file_namer8r8r9Úmain° s–  ÿ  ÿ þ þ ÿ          ÿ   õ r-Ú__main__)]ÚversionÚ __author__Ú __credits__Úbuiltinsrr}rjr{rÔr[r±r°rWr rKrÃrrÅÚAttributeErrorÚNotImplementedErrorrr¥Ú NameErrorÚ__all__r3rÇr¢rrrrrrðr-rercrgrirørkZCONTTYPEr r r.rrr=r rrrrArar2r^rRrrIr_rƒr Úgetfilesystemencodingr:r?rOrUrYr\rmÚ Exceptionrr rrr r rrrsrtrLrurvrŠÚobjectr–rËÚBufferedReaderrßrrrr-ror8r8r8r9Ú s      ýüÿÿ ú  sh D! W