§
    )uyc°K  ã                   ó:  — d Z ddlZddlZddlZddlZddlZddlmZ 	 ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZ n# e$ r
 dZesd„ ZY nw xY wddlmZmZmZ dd	lmZ dd
lm Z  dZ!dZ"g d¢Z#dZ$g d¢Z%dZ&dZ'dZ(dZ) G d„ de¦  «        Z* G d„ de+¦  «        Z, G d„ de,¦  «        Z- G d„ de,¦  «        Z. G d„ de¦  «        Z/e0dk    rP e/ej1        d         ¬ ¦  «        Z2e2j3         4                    ¦   «         Z4 e5e4 6                    d¦  «        ¦  «         dS dS )!zX Representation of Debian binary package (.deb) files


Debfile Classes
===============
é    N)ÚPath)ÚAnyÚBinaryIOÚDictÚIOÚIteratorÚListÚOptionalÚTextÚTypeVarÚUnionÚoverloadÚTYPE_CHECKING)ÚLiteralFc                 ó   — d S ©N© )Úfs    ú0/usr/lib/python3/dist-packages/debian/debfile.pyú<lambda>r   9   s   € ˜T€ ó    )ÚArFileÚArErrorÚArMember)Ú	Changelog)ÚDeb822zdata.tarzcontrol.tar)ÚgzÚbz2ÚxzÚlzmaÚzstzdebian-binary)ÚpreinstÚpostinstÚprermÚpostrmÚconfigÚcontrolzusr/share/doc/%s/changelog.gzz$usr/share/doc/%s/changelog.Debian.gzÚmd5sumsc                   ó   — e Zd ZdS )ÚDebErrorN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r*   r*   M   s   € € € € € Ø€Dr   r*   c                   óÚ   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zd„ Zdd„Z	e
dd	„¦   «         Ze
dd
„¦   «         Zdd„Ze
	 	 	 dd„¦   «         Ze
	 	 dd„¦   «         Z	 	 	 dd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚDebParta   'Part' of a .deb binary package.

    A .deb package is considered as made of 2 parts: a 'data' part
    (corresponding to the possibly compressed 'data.tar' archive embedded
    in a .deb) and a 'control' part (the 'control.tar.gz' archive). Each of
    them is represented by an instance of this class. Each archive should
    be a compressed tar archive although an uncompressed data.tar is permitted;
    supported compression formats are: .tar.gz, .tar.bz2, .tar.xz .

    When referring to file members of the underlying .tar.gz archive, file
    names can be specified in one of 3 formats "file", "./file", "/file". In
    all cases the file is considered relative to the root of the archive. For
    the control part the preferred mechanism is the first one (as in
    deb.control.get_content('control') ); for the data part the preferred
    mechanism is the third one (as in deb.data.get_file('/etc/vim/vimrc') ).
    c                 ó"   — || _         d | _        d S r   )Ú_DebPart__memberÚ_DebPart__tgz)ÚselfÚmembers     r   Ú__init__zDebPart.__init__c   s   € àˆŒØˆŒ
ˆ
ˆ
r   c                 óØ  ‡ — ˆ fd„}‰ j         €×‰ j        j        }t          j                             |¦  «        d         dd…         }|t          v s|t          k    s|t          k    rm|dk    r |ddg¦  «        }n‰ j        }	 t          j
        |d¬¦  «        ‰ _         nG# t          j        t          j        f$ r}t          d	|z  ¦  «        ‚d}~ww xY wt          d
|z  ¦  «        ‚‰ j         S )zÕReturn a TarFile object corresponding to this part of a .deb
        package.

        Despite the name, this method gives access to various kind of
        compressed tar archives, not only gzipped ones.
        c                 óê  •‡— 	 dd l }dd lŠ|                     | |j        |j        dˆfd„¬¦  «        }nB# t          t
          f$ r.}t          dd                     | ¦  «        ›d|›d�¦  «        ‚d }~ww xY w|                     ‰j	         
                    ¦   «         ¦  «        d         }|j        dk    r.t          d	d                     | ¦  «        ›d
|j        ›d�¦  «        ‚t          j        |¦  «        S )Nr   Fc                  óD   •— ‰                       ‰ j        ‰ j        ¦  «        S r   )ÚsignalÚSIGPIPEÚSIG_DFL)r:   s   €r   r   z9DebPart.tgz.<locals>._custom_decompress.<locals>.<lambda>}   s   ø€ Ø—M’M &¤.°&´.ÑAÔAð r   )ÚstdinÚstdoutÚuniversal_newlinesÚ
preexec_fnzerror while running command 'ú z' as subprocess: 'ú'z	command 'z' has failed with code ')Ú
subprocessr:   ÚPopenÚPIPEÚOSErrorÚ
ValueErrorr*   ÚjoinÚcommunicater2   ÚreadÚ
returncodeÚioÚBytesIO)Úcommand_listrC   ÚprocÚeÚdatar:   r4   s        @€r   Ú_custom_decompressz'DebPart.tgz.<locals>._custom_decompressq   s>  øø€ ð<à!Ð!Ð!Ð!Ø���ð "×'Ò'Ø Ø$œ/°*´/Ø',ð Bð  Bð  Bð  Bð	 (ñ ô ��øõ �ZÐ(ð <ð <ð <Ý�hØ #§¢¨Ñ 6Ô 6Ð 6Ð 6¸¸¸ð ;ñ <ô <ð <øøøøð<øøøð ×#Ò# D¤M×$6Ò$6Ñ$8Ô$8Ñ9Ô9¸!Ô<ˆDØŒ !Ò#Ð#Ý�hØ #§¢¨Ñ 6Ô 6Ð 6Ð 6¸¼¸¸ð Iñ Jô Jð Jõ ”:˜dÑ#Ô#Ð#s   „/4 ´A3Á)A.Á.A3Né   r!   Úunzstdz--stdoutzr:*)ÚfileobjÚmodez#tarfile has returned an error: '%s'z"part '%s' has unexpected extension)r3   r2   ÚnameÚosÚpathÚsplitextÚ	PART_EXTSÚ	DATA_PARTÚ	CTRL_PARTÚtarfileÚopenÚ	ReadErrorÚCompressionErrorr*   )r4   rR   rW   Ú	extensionÚbufferrP   s   `     r   ÚtgzzDebPart.tgzh   s  ø€ ð	$ð 	$ð 	$ð 	$ð 	$ð4 Œ:ÐØ”=Ô%ˆDÝœ×(Ò(¨Ñ.Ô.¨qÔ1°!°"°"Ô5ˆIØ�IÐ%Ð%¨µÒ):Ð):¸dÅiÒ>OÐ>Oð  Ò%Ð%Ø/Ð/°¸:Ð0FÑGÔG�F�Fà!œ]�FðNÝ!(¤°fÀ5Ð!IÑ!IÔ!I�D”J�JøÝÔ)­7Ô+CÐDð Nð Nð NÝ"Ð#HÈ1Ñ#LÑMÔMÐMøøøøðNøøøõ ÐCÀdÑJÑKÔKÐKØŒzÐs   ÂB ÂCÂ9CÃCc                 ó´   — t          | ¦  «                             dd¦  «        } |                      d¦  «        r| S |                      d¦  «        rd| z   S d| z   S )zw try (not so hard) to obtain a member file name in a form that is
        stored in the .tar.gz, i.e. starting with ./ ú\ú/z./ú.)ÚstrÚreplaceÚ
startswith)Úfnames    r   Ú__normalize_memberzDebPart.__normalize_memberž   sd   € õ �E‘
”
×"Ò" 4¨Ñ-Ô-ˆà×Ò˜DÑ!Ô!ð 	ØˆLà×Ò˜CÑ Ô ð 	Ø˜‘;ÐØ�e‰|Ðr   c                 óž  — 	 g }|                      d¦  «        dd…         D ]ä}|                     |¦  «         t          j                             d                     |¦  «        ¦  «        }t                               |¦  «        }|                      ¦   «          	                    |¦  «        }| 
                    ¦   «         rF|j                             d¦  «        r"|j                              d¦  «        }|j        }ŒÚ|j        |d<   Œån# t          $ r Y dS w xY wt                               t          j                             |¦  «        ¦  «        S )zÏ walk the path following symlinks

        returns:
            resolved_path, info

        if the path is not found even after following symlinks within the
        archive, then None is returned.
        rg   rS   Néÿÿÿÿ)ÚsplitÚappendrX   rY   ÚnormpathrH   r0   Ú_DebPart__normalize_memberrd   Ú	getmemberÚissymÚlinknamerk   ÚKeyError)r4   rY   Úresolved_path_partsÚpathpartÚcurrpathÚtinfos         r   Ú__resolve_symlinkszDebPart.__resolve_symlinks®   s@  € ð	Ø"$ÐØ ŸJšJ s™OœO¨A¨B¨BÔ/ð Að A�Ø#×*Ò*¨8Ñ4Ô4Ð4Ýœ7×+Ò+¨C¯HªHÐ5HÑ,IÔ,IÑJÔJ�Ý"×5Ò5°hÑ?Ô?�ØŸš™
œ
×,Ò,¨XÑ6Ô6�ð —;’;‘=”=ð AØ”~×0Ò0°Ñ5Ô5ð 
Aà.3¬n×.BÒ.BÀ3Ñ.GÔ.GÐ+Ø#(¤>˜˜ð 38´.Ð+¨BÑ/øð%Aøõ( ð 	ð 	ð 	à�4�4ð	øøøõ ×)Ò)­"¬'×*:Ò*:¸8Ñ*DÔ*DÑEÔEÐEs   ‚DD Ä
DÄDFc                 óÌ   — t                                |¦  «        }|                      ¦   «                              ¦   «         }||v rdS |r|                      |¦  «        }|duS ||v S )zmCheck if this part contains a given file name.

        Symlinks within the archive can be followed.
        TN)r0   rs   rd   ÚgetnamesÚ_DebPart__resolve_symlinks)r4   rl   Úfollow_symlinksÚnamesÚ
fname_reals        r   Úhas_filezDebPart.has_fileÔ   sn   € õ ×*Ò*¨5Ñ1Ô1ˆà—’‘
”
×#Ò#Ñ%Ô%ˆØ�Eˆ>ˆ>Ø�4àð 	*Ø×0Ò0°Ñ7Ô7ˆJØ TÐ)Ð)à˜ˆ~Ðr   Nc                 ó   — d S r   r   ©r4   rl   ÚencodingÚerrorsr€   s        r   Úget_filezDebPart.get_fileæ   ó	   € ð 	ˆr   c                 ó   — d S r   r   r…   s        r   rˆ   zDebPart.get_fileë   r‰   r   c                 ón  — t                                |¦  «        }|r(|                      |¦  «        }|€t          d¦  «        ‚|}	 |                      ¦   «                              |¦  «        }n# t          $ r t          d¦  «        ‚w xY w|€t          d¦  «        ‚|�t          j        |||¬¦  «        S |S )a  Return a file object corresponding to a given file name.

        If encoding is given, then the file object will return Unicode data;
        otherwise, it will return binary data.

        If follow_symlinks is True, then symlinks within the archive will be
        followed.
        NzFile not found inside package©r†   r‡   )	r0   rs   r   r*   rd   Úextractfilerw   rL   ÚTextIOWrapper)r4   rl   r†   r‡   r€   r‚   Úfobjs          r   rˆ   zDebPart.get_fileð   sÑ   € õ ×*Ò*¨5Ñ1Ô1ˆàð 	Ø×0Ò0°Ñ7Ô7ˆJØÐ!ÝÐ>Ñ?Ô?Ð?ØˆEð	<Ø—8’8‘:”:×)Ò)¨%Ñ0Ô0ˆDˆDøÝð 	<ð 	<ð 	<ÝÐ:Ñ;Ô;Ð;ð	<øøøð ˆ<ÝÐ:Ñ;Ô;Ð;àÐÝÔ# D°8ÀFÐKÑKÔKÐKàˆs   Á'A. Á.Bc                 ó   — d S r   r   r…   s        r   Úget_contentzDebPart.get_content  ó	   € ð 	ˆr   c                 ó   — d S r   r   r…   s        r   r‘   zDebPart.get_content  r’   r   c                 óª   — |                       t          |¦  «        |||¬¦  «        }d}|r(|                     ¦   «         }|                     ¦   «          |S )a5  Return the string content of a given file, or None (e.g. for
        directories).

        If encoding is given, then the content will be a Unicode object;
        otherwise, it will contain binary data.

        If follow_symlinks is True, then symlinks within the archive will be
        followed.
        )r†   r‡   r€   N)rˆ   ri   rJ   Úclose)r4   rl   r†   r‡   r€   r   Úcontents          r   r‘   zDebPart.get_content$  s[   € ð  �MŠMÝ�‰JŒJØ fØ+ð ñ 
ô 
ˆð
 ˆØð 	Ø—f’f‘h”hˆGØ�GŠG‰IŒIˆIØˆr   c                 óh   — t          |                      ¦   «                              ¦   «         ¦  «        S r   )Úiterrd   r~   ©r4   s    r   Ú__iter__zDebPart.__iter__A  s$   € å�D—H’H‘J”J×'Ò'Ñ)Ô)Ñ*Ô*Ð*r   c                 ó,   — |                       |¦  «        S r   )rƒ   ©r4   rl   s     r   Ú__contains__zDebPart.__contains__E  s   € à�}Š}˜UÑ#Ô#Ð#r   c                 ó,   — |                       |¦  «        S r   )r‘   rœ   s     r   Ú__getitem__zDebPart.__getitem__I  s   € à×Ò Ñ&Ô&Ð&r   c                 ó8   — | j                              ¦   «          d S r   )r2   r•   r™   s    r   r•   zDebPart.closeM  s   € àŒ×ÒÑÔÐÐÐr   )F)NNF)NF)r,   r-   r.   Ú__doc__r6   rd   Ústaticmethodrs   r   rƒ   r   rˆ   r‘   rš   r�   rŸ   r•   r   r   r   r0   r0   Q   s‚  € € € € € ðð ð"ð ð ð
4ð 4ð 4ðl ðð ñ „\ðð$Fð $Fð $FðLð ð ð ð$ ðð ð ñ „Xðð ðð ð ñ „Xððð ð ð ð@ ð "ØØ$)ð	ð ð ñ „Xðð ð  Ø$)ð	ð ð ñ „Xðð "ØØ$)ð	ð ð ð ð:+ð +ð +ð$ð $ð $ð'ð 'ð 'ðð ð ð ð r   r0   c                   ó   — e Zd ZdS )ÚDebDataNr+   r   r   r   r¤   r¤   R  s   € € € € € à€Dr   r¤   c                   óR   — e Zd Zd„ Zd„ Zedd„¦   «         Zedd„¦   «         Zdd„ZdS )	Ú
DebControlc                 ó€   — i }t           D ]3}|                      |¦  «        r|                      |¦  «        }|�|||<   Œ4|S )zo Return a dictionary of maintainer scripts (postinst, prerm, ...)
        mapping script names to script text. )ÚMAINT_SCRIPTSrƒ   r‘   )r4   Úscriptsrl   rQ   s       r   r©   zDebControl.scriptsY  sT   € ð
 ˆÝ"ð 	*ð 	*ˆEØ�}Š}˜UÑ#Ô#ð *Ø×'Ò'¨Ñ.Ô.�ØÐ#Ø%)�G˜E‘Nøàˆr   c                 óP   — t          |                      t          ¦  «        ¦  «        S )z¶ Return the debian/control as a Deb822 (a Debian-specific dict-like
        class) object.

        For a string representation of debian/control try
        .get_content('control') )r   r‘   ÚCONTROL_FILEr™   s    r   Ú
debcontrolzDebControl.debcontrolg  s    € õ �d×&Ò&¥|Ñ4Ô4Ñ5Ô5Ð5r   Nc                 ó   — d S r   r   ©r4   r†   r‡   s      r   r(   zDebControl.md5sumsq  r‰   r   c                 ó   — d S r   r   r®   s      r   r(   zDebControl.md5sumsv  r‰   r   c                 óÄ  — |                       t          ¦  «        st          dt          z  ¦  «        ‚|                      t          ||¬¦  «        }i }d}|€d}|                     ¦   «         D ]`}|                     |¦  «                             dd¦  «        \  }}t          |t          ¦  «        r| 	                    ¦   «         ||<   Œ[|||<   Œa| 
                    ¦   «          |S )aó   Return a dictionary mapping filenames (of the data part) to
        md5sums. Fails if the control part does not contain a 'md5sum' file.

        Keys of the returned dictionary are the left-hand side values of lines
        in the md5sums member of control.tar.gz, usually file names relative to
        the file system root (without heading '/' or './').

        The returned keys are Unicode objects if an encoding is specified,
        otherwise binary. The returned values are always Unicode.z('%s' file not found, can't list MD5 sumsrŒ   z
Ns   
rS   )rƒ   ÚMD5_FILEr*   rˆ   Ú	readlinesÚrstriprp   Ú
isinstanceÚbytesÚdecoder•   )	r4   r†   r‡   Úmd5_fileÚsumsÚnewlineÚlineÚmd5rl   s	            r   r(   zDebControl.md5sums{  sé   € ð �}Š}�XÑ&Ô&ð 	GÝØ:½XÑEñGô Gð Gð —=’=¥°HÀV�=ÑLÔLˆØˆàˆØÐØˆGà×&Ò&Ñ(Ô(ð 	"ð 	"ˆDàŸš WÑ-Ô-×3Ò3°D¸!Ñ<Ô<‰JˆC�Ý˜#�uÑ%Ô%ð "Ø!Ÿjšj™lœl��U‘�à!��U‘�Ø�ŠÑÔÐØˆr   ©NNr   )r,   r-   r.   r©   r¬   r   r(   r   r   r   r¦   r¦   W  s†   € € € € € ðð ð ð6ð 6ð 6ð ðð ð ñ „Xðð ðð ð ñ „Xððð ð ð ð ð r   r¦   c                   ó¾   — e Zd ZdZdd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d	„ Z
d
„ Zedd„¦   «         Zedd„¦   «         Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚDebFileaÚ  Representation of a .deb file (a Debian binary package)

    DebFile objects have the following (read-only) properties:
        - version       debian .deb file format version (not related with the
                        contained package version), 2.0 at the time of writing
                        for all .deb packages in the Debian archive
        - data          DebPart object corresponding to the data.tar.gz (or
                        other compressed or uncompressed tar) archive contained
                        in the .deb file
        - control       DebPart object corresponding to the control.tar.gz (or
                        other compressed tar) archive contained in the .deb
                        file
    NÚrc                 ó„  ‡— t          j        | |||¦  «         t          |                      ¦   «         ¦  «        Šˆfd„}t          ‰vrt          dt          z  ¦  «        ‚i | _        t          |                       |t          ¦  «        ¦  «        ¦  «        | j        t          <   t          |                       |t          ¦  «        ¦  «        ¦  «        | j        t          <   d | _        |                      t          ¦  «        }|                     ¦   «                              ¦   «         | _        |                     ¦   «          d S )Nc                 óV  •‡ — ˆ fd„t           D ¦   «         }‰ t          t          fv r|                     ‰ ¦  «         ‰                     t          |¦  «        ¦  «        }|st          d|z  ¦  «        ‚t          |¦  «        dk    rt          d|z  ¦  «        ‚t          |¦  «        d         S )Nc                 ó   •— g | ]	}‰›d |›�‘Œ
S )rh   r   )Ú.0ÚextÚbasenames     €r   ú
<listcomp>zBDebFile.__init__.<locals>.compressed_part_name.<locals>.<listcomp>´  s$   ø€ ÐIÐIÐI¸ X X X¨s¨sÐ3ÐIÐIÐIr   z9missing required part in given .deb (expected one of: %s)rS   z>too many parts in given .deb (was looking for only one of: %s)r   )	r[   r\   r]   rq   ÚintersectionÚsetr*   ÚlenÚlist)rÅ   Ú
candidatesÚpartsÚactual_namess   `  €r   Úcompressed_part_namez.DebFile.__init__.<locals>.compressed_part_name²  sÇ   øø€ àIÐIÐIÐI½yÐIÑIÔIˆJà�I¥yÐ1Ð1Ð1Ø×!Ò! (Ñ+Ô+Ð+Ø ×-Ò-­c°*©o¬oÑ>Ô>ˆEØð ;Ýð-Ø/9ñ:ñ;ô ;ð ;õ �5‰zŒz˜AŠ~ˆ~Ýð9Ø;EñFñGô Gð Gõ ˜‘;”;˜q”>Ð!r   z4missing required part in given .deb (expected: '%s'))r   r6   rÈ   r~   Ú	INFO_PARTr*   Ú_DebFile__partsr¦   rt   r]   r¤   r\   Ú_DebFile__pkgnamerJ   ÚstripÚ_DebFile__versionr•   )r4   ÚfilenamerV   rU   rÎ   r   rÍ   s         @r   r6   zDebFile.__init__­  s&  ø€ åŒ˜˜h¨¨gÑ6Ô6Ð6Ý˜4Ÿ=š=™?œ?Ñ+Ô+ˆð	"ð 	"ð 	"ð 	"ð 	"õ& ˜LÐ(Ð(Ýð$Ý&/ñ0ñ1ô 1ð 1ð ˆŒÝ",¨T¯^ª^Ø Ð ¥Ñ+Ô+ñ.-ô .-ñ #.ô #.ˆŒ•YÑå")¨$¯.ª.Ø Ð ¥Ñ+Ô+ñ+-ô +-ñ #.ô #.ˆŒ•YÑàˆŒà�NŠN�9Ñ%Ô%ˆØŸš™œŸšÑ)Ô)ˆŒØ	�Š‰	Œ	ˆ	ˆ	ˆ	r   c                 óD   — |                       ¦   «         d         | _        d S )NÚpackage)r¬   rÑ   r™   s    r   Ú__updatePkgNamezDebFile.__updatePkgNameÕ  s   € àŸšÑ*Ô*¨9Ô5ˆŒˆˆr   c                 ó   — | j         S r   )rÓ   r™   s    r   ÚversionzDebFile.versionÙ  s   € ð Œ~Ðr   c                 ó&   — | j         t                   S r   )rÐ   r\   r™   s    r   rQ   zDebFile.dataÞ  ó   € ð Œ|�IÔ&Ð&r   c                 ó&   — | j         t                   S r   )rÐ   r]   r™   s    r   r'   zDebFile.controlã  rÛ   r   c                 ó4   — | j                              ¦   «         S )z See .control.debcontrol() )r'   r¬   r™   s    r   r¬   zDebFile.debcontrolê  s   € ð Œ|×&Ò&Ñ(Ô(Ð(r   c                 ó4   — | j                              ¦   «         S )z See .control.scripts() )r'   r©   r™   s    r   r©   zDebFile.scriptsï  s   € ð Œ|×#Ò#Ñ%Ô%Ð%r   c                 ó   — d S r   r   r®   s      r   r(   zDebFile.md5sumsô  r‰   r   c                 ó   — d S r   r   r®   s      r   r(   zDebFile.md5sumsù  r‰   r   c                 ó:   — | j                              ||¬¦  «        S )z See .control.md5sums() rŒ   )r'   r(   r®   s      r   r(   zDebFile.md5sumsþ  s   € ð Œ|×#Ò#¨X¸fÐ#ÑEÔEÐEr   c                 ó|  — | j         €|                      ¦   «          t          | j         z  t          | j         z  fD ]�}	 | j                             |d¬¦  «        }n# t          $ r Y Œ,w xY wt          j        |¬¦  «        5 }| 	                    ¦   «         }ddd¦  «         n# 1 swxY w Y   t          |¦  «        c S dS )z† Return a Changelog object for the changelog.Debian.gz of the
        present .deb package. Return None if no changelog can be found. NT)r€   )rU   )rÑ   Ú_DebFile__updatePkgNameÚCHANGELOG_DEBIANÚCHANGELOG_NATIVErQ   rˆ   r*   ÚgzipÚGzipFilerJ   r   )r4   rl   Úfhr   Úraw_changelogs        r   Ú	changelogzDebFile.changelog  s  € ð
 Œ>Ð!Ø× Ò Ñ"Ô"Ð"å&¨¬Ñ7Ý&¨¬Ñ7ð9ð 		,ð 		,ˆEðØ”Y×'Ò'¨¸tÐ'ÑDÔD��øÝð ð ð Ø�ðøøøõ ” rÐ*Ñ*Ô*ð *¨bØ "§¢¡	¤	�ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *å˜]Ñ+Ô+Ð+Ð+Ð+àˆts#   ½AÁ
A'Á&A'Á?B Â B$	Â'B$	c                 ój   — | j                              ¦   «          | j                             ¦   «          d S r   )r'   r•   rQ   r™   s    r   r•   zDebFile.close  s.   € àŒ×ÒÑÔÐØŒ	�ŠÑÔÐÐÐr   c                 ó   — | S r   r   r™   s    r   Ú	__enter__zDebFile.__enter__  s   € àˆr   c                 ó.   — |                       ¦   «          d S r   )r•   )r4   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__zDebFile.__exit__!  s   € à�
Š
‰Œˆˆˆr   )Nr¿   Nr¼   r   )r,   r-   r.   r¡   r6   rã   ÚpropertyrÙ   rQ   r'   r¬   r©   r   r(   rê   r•   rí   rò   r   r   r   r¾   r¾   �  sE  € € € € € ðð ð&ð &ð &ð &ðP6ð 6ð 6ð ðð ñ „Xðð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð)ð )ð )ð
&ð &ð &ð
 ðð ð ñ „Xðð ðð ð ñ „XððFð Fð Fð Fð
ð ð ð*ð ð ð
ð ð ðð ð ð ð r   r¾   Ú__main__rS   )rÔ   )7r¡   ræ   rL   r^   ÚsysÚos.pathrX   Úpathlibr   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   Útyping_extensionsr   ÚImportErrorÚdebian.arfiler   r   r   Údebian.changelogr   Údebian.deb822r   r\   r]   r[   rÏ   r¨   r«   rå   rä   r±   r*   Úobjectr0   r¤   r¦   r¾   r,   ÚargvÚdebr'   rd   Úprintrt   r   r   r   ú<module>r     s  ððð ð. €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð ð"ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð øð ð "ð "ð "à€Màð "ð "�>ˆøøð"øøøð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ø  Ð  Ð  Ð  Ð  Ð  ð €	Ø€	Ø.Ð.Ð.€	Ø€	ØDÐDÐD€à€Ø2Ð Ø9Ð Ø€ð	ð 	ð 	ð 	ð 	ˆwñ 	ô 	ð 	ð~ð ~ð ~ð ~ð ~ˆfñ ~ô ~ð ~ðB	ð 	ð 	ð 	ð 	ˆgñ 	ô 	ð 	ð
Cð Cð Cð Cð C�ñ Cô Cð CðLFð Fð Fð Fð Fˆfñ Fô Fð FðR ˆzÒÐØ
ˆ'˜3œ8 Aœ;Ð
'Ñ
'Ô
'€CØ
Œ+�/Š/Ñ
Ô
€CØ	€Eˆ#�-Š-˜	Ñ
"Ô
"Ñ#Ô#Ð#Ð#Ð#ð Ðs   ž"A ÁAÁA