§
     ’Þjà¼  ã                  ó`  — d dl mZ d dlZd dlZd dlZd dlZd dl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 d dlmZ d dlZd dlmZ d dlmZ d dlmZ d d	lmZ d
ZdZddhZh d£Zd�d„Z džd„Z!dŸd„Z"d d„Z#d¡d „Z$ ed!¬"¦  «         G d#„ d$¦  «        ¦   «         Z%d%d&œd¢d*„Z&d£d¤d7„Z'd¥d9„Z(d¦d;„Z)d¥d<„Z*d§d>„Z+d¨d?„Z,d©d@„Z-dªd«dB„Z.d¬dC„Z/d dD„Z0d­d®dI„Z1d¯d°dN„Z2d±d²dR„Z3d³dS„Z4d´dµdX„Z5d¶dY„Z6d·d¸dZ„Z7d¹d[„Z8dºd^„Z9d»d¼db„Z:d½dµdc„Z;dddedfdgdhdiœdgd,djdkœdgg dl¢d.dmdnœdod%dpœdqd-drdkœdqd dsdkœdtœduœdvœdwdxdfdTdgdydiœidTgdzœdvœd{dedfd|dgidqdEdpœd|dqidgddgdd}œd~œdgd%dœdvœd€dedfd|dgid|dgidgd,djdkœdod%dpœdod%dpœdod%dpœdqdJdpœd�œddKgdzœdvœd‚dƒdfd|dgid|dgidgg d„¢dOd}œdgddgdd}œd…œddPgdzœdvœd†dƒdfdd|dgiidgdzœdvœd‡dƒdfdgdydiœd|dgidod%dpœdˆœdTdUgdzœdvœd‰dƒdfd|dgid|dgidŠœdTdUgdzœdvœd‹dƒdfd|dgidod%dpœdŒœdgdzœdvœd�dƒdfdŽd|dgid�d�œdgd‘diœd’œd\gdzœdvœd“dƒdfdgd”diœdgd•diœdod%dpœdˆœdTgdzœdvœd–dxdfdTdgd—diœidTgdzœdvœd˜œZ<d¾d¿d›„Z=g dœ¢Z>dS )Àé    )ÚannotationsN)Ú	dataclass)ÚPathÚPurePosixPath)ÚAny)ÚImage)Úimage_color_details)Údetect_media_type)Úresolve_media_binaryi€>  i   úutf-8ú	utf-8-sig>   ÚpathÚpathsÚdestinationÚoutput_fileÚsource_pathÚoutput_filesÚgenerated_filesÚvaluer   Úreturnr   c                óÐ   — t          | pd¦  «                             ¦   «         }|st          d¦  «        ‚t          |¦  «                             ¦   «                              ¦   «         S )NÚ úPath is empty.)ÚstrÚstripÚ
ValueErrorr   Ú
expanduserÚresolve)r   Útexts     ú?C:\Users\johnn\OneDrive\Documents\AI\shared\deepy\filesystem.pyÚ_resolved_pathr!       sZ   € Ýˆuˆ{˜ÑÔ×!Ò!Ñ#Ô#€DØð +ÝÐ)Ñ*Ô*Ð*Ý�‰:Œ:× Ò Ñ"Ô"×*Ò*Ñ,Ô,Ð,ó    Úvaluesú	list[Any]útuple[Path, ...]c                ó@  — g }t          ¦   «         }| D ]}}	 t          |¦  «        }n# t          $ r Y Œw xY wt          j                             t          |¦  «        ¦  «        }||vr*|                     |¦  «         |                     |¦  «         Œ~t          |¦  «        S ©N)
Úsetr!   r   Úosr   Únormcaser   ÚaddÚappendÚtuple)r#   r   Úseenr   r   Úkeys         r    Ú_unique_pathsr0   '   s¥   € Ø€EÝ‰5Œ5€DØð ð ˆð	Ý! %Ñ(Ô(ˆDˆDøÝð 	ð 	ð 	ØˆHð	øøøåŒg×Ò�s 4™yœyÑ)Ô)ˆØ�dˆ?ˆ?Ø�HŠH�S‰MŒMˆMØ�LŠL˜ÑÔÐøÝ�‰<Œ<Ðs   –&¦
3²3r   ÚrootÚboolc                ó2  — 	 t           j                             t           j                             t	          | ¦  «        t	          |¦  «        f¦  «        ¦  «        t           j                             t	          |¦  «        ¦  «        k    S # t
          $ r Y dS w xY w©NF)r)   r   r*   Ú
commonpathr   r   )r   r1   s     r    Ú_insider6   6   s   € ðÝŒw×Ò¥¤× 2Ò 2µC¸±I´I½sÀ4¹y¼yÐ3IÑ JÔ JÑKÔKÍrÌw×O_ÒO_Õ`cÐdhÑ`iÔ`iÑOjÔOjÒjÐjøÝð ð ð Øˆuˆuðøøøs   ‚BB Â
BÂBr   c                óº   — t          j        ddt          | pd¦  «                             ¦   «         ¦  «                             d¦  «                             ¦   «         S )Nz[^A-Za-z0-9_-]+Ú_r   z_-)ÚreÚsubr   r   Úlower©r   s    r    Ú_alias_componentr=   =   sI   € ÝŒ6Ð$ c­3¨u¨{¸Ñ+;Ô+;×+AÒ+AÑ+CÔ+CÑDÔD×JÒJÈ4ÑPÔP×VÒVÑXÔXÐXr"   Úusedúset[str]c                ó¶  ‡ — ˆ fd„‰ j         D ¦   «         }d„ |D ¦   «         }t          dt          |¦  «        dz   ¦  «        D ]a}d                     || d …         ¦  «        }|                     ¦   «         |vr+t          j        d|                     ¦   «         ¦  «        €|c S Œbd                     |¦  «        pd}|                     ¦   «         |vr)t          j        d|                     ¦   «         ¦  «        €|S d}|› |dk    r|nd|› �› �                     ¦   «         |v r*|dz  }|› |dk    r|nd|› �› �                     ¦   «         |v °*|› |dk    r|nd|› �› �S )Nc                óR   •— g | ]#}|‰j         ‰j        d dhv¯t          |¦  «        ‘Œ$S )ú\ú/)ÚanchorÚdriver=   )Ú.0Úpartr   s     €r    ú
<listcomp>z$_automatic_alias.<locals>.<listcomp>B   s?   ø€ ÐtÐtÐt¨TÀ4ÐPTÔP[Ð]aÔ]gÐimÐorÐOsÐCsÐCsÕ" 4Ñ(Ô(ÐCsÐCsÐCsr"   c                ó   — g | ]}|¯|‘ŒS © rJ   ©rF   rG   s     r    rH   z$_automatic_alias.<locals>.<listcomp>C   s   € Ð6Ð6Ð6˜4°Ð6�$Ð6Ð6Ð6r"   é   r8   z
outputs\d*r1   é   )ÚpartsÚrangeÚlenÚjoinÚcasefoldr9   Ú	fullmatch)r   r>   Ú
componentsÚcountÚaliasÚbaseÚindexs   `      r    Ú_automatic_aliasrY   A   s�  ø€ ØtÐtÐtÐt°T´ZÐtÑtÔt€JØ6Ð6 :Ð6Ñ6Ô6€JÝ�q�#˜j™/œ/¨AÑ-Ñ.Ô.ð ð ˆØ—’˜ U F G GÔ,Ñ-Ô-ˆØ�>Š>ÑÔ 4Ð'Ð'­B¬L¸ÈÏÊÑHXÔHXÑ,YÔ,YÐ,aØˆLˆLˆLøØ�8Š8�JÑÔÐ) 6€DØ‡}‚}�„˜dÐ"Ð"¥r¤|°MÀ4Ç=Â=Á?Ä?Ñ'SÔ'SÐ'[ØˆØ€EØÐ
=˜D FšN˜N�5�5°°E°°Ð
=Ð
=×
FÒ
FÑ
HÔ
HÈDÐ
PÐ
PØ�‰
ˆð Ð
=˜D FšN˜N�5�5°°E°°Ð
=Ð
=×
FÒ
FÑ
HÔ
HÈDÐ
PÐ
PàÐ>˜T Vš^˜^�E�E°°U°°Ð>Ð>Ð>r"   T)Úfrozenc                  óh  — e Zd ZU ded<   ded<   dZded<   dZded	<   dZd
ed<   ed1d„¦   «         Zed1d„¦   «         Z	ed2d„¦   «         Z
ed2d„¦   «         Zed3d„¦   «         Zed4d„¦   «         Zed1d„¦   «         Zd5d„Zd6d„Zd7d„Zd8d„Zd9d:d!„Zd;d"„Zd;d#„Zddd$œd<d'„Zd6d(„Zd;d)„Zd6d*„Zd=d,„Zd>d/„Zd0S )?ÚFileAccessPolicyr   Úmoder%   Úoutput_rootsrJ   Úselected_rootsFr2   Úread_everywhereútuple[str, ...]Úroot_aliasesr   c                ó   — | j         dv S )N>   ÚreadÚ
read_write©r]   ©Úselfs    r    Úread_enabledzFileAccessPolicy.read_enabledY   s   € àŒyÐ2Ð2Ð2r"   c                ó   — | j         dk    S )Nre   rf   rg   s    r    Úwrite_enabledzFileAccessPolicy.write_enabled]   s   € àŒy˜LÒ(Ð(r"   c                ó<   — t          g | j        ¢| j        ¢¦  «        S r'   )r0   r^   r_   rg   s    r    Ú
read_rootszFileAccessPolicy.read_rootsa   s!   € åÐG˜tÔ0ÐG°4Ô3FÐGÑHÔHÐHr"   c                ó"   — | j         r| j        ndS )NrJ   )rk   rm   rg   s    r    Úwrite_rootszFileAccessPolicy.write_rootse   s   € à"&Ô"4Ð<ˆtŒˆ¸"Ð<r"   c                ó–  — | j         r| j         S d„ t          t          | j        ¦  «        ¦  «        D ¦   «         }d„ |D ¦   «         }g }| j        t          | j        ¦  «        d …         D ]N}t          ||¦  «        }|                     |                     ¦   «         ¦  «         |                     |¦  «         ŒOt          g |¢|¢¦  «        S )Nc                ó.   — g | ]}|d k    rdnd|dz   › �‘ŒS ©r   ÚoutputsrL   rJ   ©rF   rX   s     r    rH   z,FileAccessPolicy.aliases.<locals>.<listcomp>m   s2   € ÐxÐxÐxÐQV u°¢z z˜)˜)Ð7LÀÈÁÐ7LÐ7LÐxÐxÐxr"   c                ó6   — h | ]}|                      ¦   «         ’ŒS rJ   ©rR   ©rF   rV   s     r    ú	<setcomp>z+FileAccessPolicy.aliases.<locals>.<setcomp>n   s"   € Ð=Ð=Ð= U�—’Ñ Ô Ð=Ð=Ð=r"   )
rb   rO   rP   r^   rm   rY   r+   rR   r,   r-   )rh   Úoutput_aliasesr>   Úselected_aliasesr1   rV   s         r    ÚaliaseszFileAccessPolicy.aliasesi   sÛ   € àÔð 	%ØÔ$Ð$ØxÐxÕZ_Õ`cÐdhÔduÑ`vÔ`vÑZwÔZwÐxÑxÔxˆØ=Ð=¨nÐ=Ñ=Ô=ˆØÐØ”O¥C¨Ô(9Ñ$:Ô$:Ð$;Ð$;Ô<ð 	+ð 	+ˆDÝ$ T¨4Ñ0Ô0ˆEØ�HŠH�U—^’^Ñ%Ô%Ñ&Ô&Ð&Ø×#Ò# EÑ*Ô*Ð*Ð*ÝÐ9�~Ð9Ð(8Ð9Ñ:Ô:Ð:r"   útuple[tuple[str, Path], ...]c                óP   — t          t          | j        | j        ¦  «        ¦  «        S r'   )r-   Úzipr{   rm   rg   s    r    ÚmountszFileAccessPolicy.mountsv   s   € å•S˜œ t¤Ñ7Ô7Ñ8Ô8Ð8r"   c                ó   — | j          S r'   )r`   rg   s    r    ÚvirtualizedzFileAccessPolicy.virtualizedz   s   € àÔ'Ð'Ð'r"   r   úPath | Nonec                óB  ‡— |                      dd¦  «        }|                     d¦  «        r|dd …         }n7|                     d¦  «        r |                     d¦  «        s|dd …         }nd S |                     d¦  «        \  Š}}t          j        dd‰t          j        ¬¦  «        Št          ˆfd	„| j        D ¦   «         d ¦  «        }|€t          d
‰pd› d�¦  «        ‚|rd„ | 	                    d¦  «        D ¦   «         ng } |j
        |Ž                      ¦   «         S )NrB   rC   ú@rL   ú\\z^workspace(\d*)$zdocuments\1©Úflagsc              3  óv   •K  — | ]3\  }}|                      ¦   «         ‰                      ¦   «         k    ¯/|V — Œ4d S r'   rv   )rF   Únamer   rV   s      €r    ú	<genexpr>z3FileAccessPolicy._virtual_target.<locals>.<genexpr>ˆ   sC   øè è € Ð_Ð_™j˜d D¸4¿=º=¹?¼?ÈeÏnÊnÑN^ÔN^Ò;^Ð;^�TÐ;^Ð;^Ð;^Ð;^Ð_Ð_r"   z!Unknown virtual filesystem root: z(empty)z-. List authorized roots without a path first.c                ó   — g | ]}|¯|‘ŒS rJ   rJ   rK   s     r    rH   z4FileAccessPolicy._virtual_target.<locals>.<listcomp>‹   s   € Ð?Ð?Ð?˜$¸$Ð?�Ð?Ð?Ð?r"   )ÚreplaceÚ
startswithÚ	partitionr9   r:   Ú
IGNORECASEÚnextr   r   ÚsplitÚjoinpathr   )rh   r   Ú	referenceÚ	separatorÚ	remainderr1   rN   rV   s          @r    Ú_virtual_targetz FileAccessPolicy._virtual_target~   sQ  ø€ Ø—L’L  sÑ+Ô+ˆ	Ø×Ò Ñ$Ô$ð 	Ø! ! " "œˆIˆIØ�_Š_˜TÑ"Ô"ð 	¨4¯?ª?¸6Ñ+BÔ+Bð 	Ø! ! " "œˆIˆIà�4Ø&/×&9Ò&9¸#Ñ&>Ô&>Ñ#ˆˆy˜)Ý”Ð*¨N¸EÍÌÐWÑWÔWˆÝÐ_Ð_Ð_Ð_¨D¬KÐ_Ñ_Ô_ÐaeÑfÔfˆØˆ<Ýð  CÀÐASÈ)ð  Cð  Cð  Cñ  Dô  Dð  DØCLÐTÐ?Ð? )§/¢/°#Ñ"6Ô"6Ð?Ñ?Ô?Ð?ÐRTˆØˆtŒ}˜eÐ$×,Ò,Ñ.Ô.Ð.r"   r   r   r   c                ó  — t          |pd¦  «                             ¦   «         }|st          d¦  «        ‚|                      |¦  «        }|�|S t	          |¦  «                             ¦   «         }|                     ¦   «         p+t          j        d|¦  «        d up| 	                    d¦  «        }|r+| j
        r$t          |t          ¦  «        st          d¦  «        ‚|r|n| j        d         |z                       ¦   «         S )Nr   r   ú^[A-Za-z]:[\\/])r…   rC   zmAbsolute filesystem paths require Read Everywhere; use a virtual root returned by the directory listing tool.r   )r   r   r   r–   r   r   Úis_absoluter9   Úmatchr�   r�   Ú
isinstanceÚPermissionErrorr^   r   )rh   r   r   Úvirtual_targetÚtargetÚabsolutes         r    Úresolve_pathzFileAccessPolicy.resolve_pathŽ   s  € Ý�4�:˜2‰Œ×$Ò$Ñ&Ô&ˆØð 	/ÝÐ-Ñ.Ô.Ð.Ø×-Ò-¨dÑ3Ô3ˆØÐ%Ø!Ð!Ý�d‘”×&Ò&Ñ(Ô(ˆØ×%Ò%Ñ'Ô'Ð{­2¬8Ð4FÈÑ+MÔ+MÐUYÐ+YÐ{Ð]a×]lÒ]lÐmzÑ]{Ô]{ˆØð 	S˜Ô(ð 	Sµ¸DÅ$Ñ1GÔ1Gð 	SÝ!ð  #Rñ  Sô  Sð  SØ"ÐE��¨Ô(9¸!Ô(<¸vÑ(E×NÒNÑPÔPÐPr"   c                ó2  — t          |¦  «        }| j        st          |¦  «        S t          | j        d„ d¬¦  «        D ]Q\  }}t          ||¦  «        sŒ|                     |¦  «                             ¦   «         }|dk    rd|› d|› �nd|› �c S |j        pdS )Nc                óF   — t          t          | d         ¦  «        ¦  «        S ©NrL   ©rP   r   ©Úitems    r    ú<lambda>z2FileAccessPolicy.virtualize_path.<locals>.<lambda>Ÿ   ó   € ÅÅCÈÈQÌÁLÄLÑ@QÔ@Q€ r"   T©r/   Úreverseú.r„   rC   Úfile)	r!   r�   r   Úsortedr   r6   Úrelative_toÚas_posixr‰   )rh   r   rž   rV   r1   Úrelatives         r    Úvirtualize_pathz FileAccessPolicy.virtualize_path›   sÂ   € Ý Ñ%Ô%ˆØÔð 	Ý�v‘;”;ÐÝ! $¤+Ð3QÐ3QÐ[_Ð`Ñ`Ô`ð 	Nð 	N‰KˆE�4Ý˜6 4Ñ(Ô(ð ØØ×)Ò)¨$Ñ/Ô/×8Ò8Ñ:Ô:ˆHØ-5¸ª_¨_Ð)�uÐ)Ð)˜xÐ)Ð)Ð)À+ÀeÀ+À+ÐMÐMÐMØŒ{Ð$˜fÐ$r"   r   c                óN  — t          |¦  «        }t          | j        d„ d¬¦  «        D ]|\  }}t          |¦  «        |                     ¦   «         hD ]S}|                     d¦  «        p|}t          j        t          j        |¦  «        › d�d|› �|t
          j        ¬¦  «        }ŒTŒ}|S )Nc                óF   — t          t          | d         ¦  «        ¦  «        S r£   r¤   r¥   s    r    r§   z3FileAccessPolicy._virtualize_text.<locals>.<lambda>¨   r¨   r"   Tr©   z\/z(?=$|[\\/])r„   r†   )	r   r­   r   r¯   Úrstripr9   r:   Úescaper�   )rh   r   r   rV   r1   ÚphysicalÚprefixs          r    Ú_virtualize_textz!FileAccessPolicy._virtualize_text¦   s¶   € Ý�5‰zŒzˆÝ! $¤+Ð3QÐ3QÐ[_Ð`Ñ`Ô`ð 	jð 	j‰KˆE�4Ý  ™YœY¨¯ª©¬Ð8ð jð j�Ø!Ÿš¨Ñ/Ô/Ð;°8�Ý”v¥"¤)¨FÑ"3Ô"3Ð@Ð@Ð@À+ÀeÀ+À+ÈtÕ[]Ô[hÐiÑiÔi��ðjð ˆr"   r   r/   c                ó´  ‡ ‡‡— ‰ j         s|S t          |t          ¦  «        r ˆ fd„|                     ¦   «         D ¦   «         S t          |t          t
          f¦  «        rˆˆ fd„|D ¦   «         S t          |t          t          j        f¦  «        �rIt          |¦  «        }t          |¦  «         
                    ¦   «         p+t          j        d|¦  «        d up|                     d¦  «        }|                     d¦  «        }‰t          v p-‰                     d¦  «        p‰                     d¦  «        o|p|}|s‰dv r†|s|r‚	 |r|s‰                      |¦  «        nt#          |¦  «        Št%          ˆfd	„‰ j        D ¦   «         ¦  «        r‰                      ‰¦  «        nd S # t*          t,          t.          f$ r |rY d S Y nw xY w‰                      |¦  «        S |S )
Nc           	     ó‚   •— i | ];\  }}|‰                      |t          |¦  «                             ¦   «         ¦  «        “Œ<S rJ   )Úvirtualize_resultr   rR   )rF   Ú	child_keyÚchild_valuerh   s      €r    ú
<dictcomp>z6FileAccessPolicy.virtualize_result.<locals>.<dictcomp>²   sV   ø€ ð  Kð  Kð  KÑbxÐbkÐmx�I˜t×5Ò5°kÅ3ÀyÁ>Ä>×CZÒCZÑC\ÔC\Ñ]Ô]ð  Kð  Kð  Kr"   c                ó<   •— g | ]}‰                      |‰¦  «        ‘ŒS rJ   )r»   )rF   r¦   r/   rh   s     €€r    rH   z6FileAccessPolicy.virtualize_result.<locals>.<listcomp>´   s)   ø€ ÐHÐHÐH¸$�D×*Ò*¨4°Ñ5Ô5ÐHÐHÐHr"   r˜   r…   )r„   rB   rC   )Ú_pathÚ_paths)Ú_fileÚ_filesÚ_folderÚ_foldersÚ
_directoryÚ_directories>   ÚsourceÚsourcesc              3  ó>   •K  — | ]\  }}t          ‰|¦  «        V — Œd S r'   ©r6   )rF   Ú_aliasr1   rž   s      €r    rŠ   z5FileAccessPolicy.virtualize_result.<locals>.<genexpr>½   s4   øè è € Ð>uÐ>uÑYeÐY_Ðae½wÀvÈtÑ?TÔ?TÐ>uÐ>uÐ>uÐ>uÐ>uÐ>ur"   )r�   r›   ÚdictÚitemsÚlistr-   r   r)   ÚPathLiker   r™   r9   rš   r�   Ú
_PATH_KEYSÚendswithr    r!   Úanyr   r±   ÚOSErrorrœ   r   r¸   )rh   r   r/   r   rŸ   ÚvirtualÚpath_keyrž   s   ` `    @r    r»   z"FileAccessPolicy.virtualize_result®   sm  øøø€ ØÔð 	ØˆLÝ�e�TÑ"Ô"ð 	Kð Kð  Kð  Kð  Kð  }B÷  }Hò  }Hñ  }Jô  }Jð  Kñ  Kô  Kð  KÝ�e�d¥E˜]Ñ+Ô+ð 	IØHÐHÐHÐHÐHÀ%ÐHÑHÔHÐHÝ�e�c¥2¤;Ð/Ñ0Ô0ñ 	/Ý�u‘:”:ˆDÝ˜D‘z”z×-Ò-Ñ/Ô/Ð|µ2´8Ð<NÐPTÑ3UÔ3UÐ]aÐ3aÐ|Ðei×etÒetÐu{Ñe|Ôe|ˆHØ—o’oÐ&6Ñ7Ô7ˆGØ�jÐ(ð  B¨C¯LªLÐ9LÑ,MÔ,Mð  BÐQT×Q]ÒQ]ð  _gñ  Rhô  Rhð  RBð  nvð  nAð  zAˆHØð $˜3Ð"7Ð7Ð7¸XÐ7ÈÐ7ð$Ø8?ÐjÈÐj˜T×.Ò.¨tÑ4Ô4Ð4ÕVdÐeiÑVjÔVj�FÝ;>Ð>uÐ>uÐ>uÐ>uÐimÔitÐ>uÑ>uÔ>uÑ;uÔ;uÐ˜4×/Ò/°Ñ7Ô7Ð7Ð{ÐøÝ¥µ*Ð=ð $ð $ð $Øð $Ø#˜t˜tð$ð $ð$øøøð ×(Ò(¨Ñ.Ô.Ð.Øˆs   ÅAF! Æ!G Æ?G c                óÎ   ‡— | j         sdS 	 |                      |¦  «        Šn# t          t          t          f$ r Y dS w xY w| j        pt          ˆfd„| j        D ¦   «         ¦  «        S )NFc              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r'   rË   ©rF   r1   rž   s     €r    rŠ   z,FileAccessPolicy.can_read.<locals>.<genexpr>Ë   s-   øè è € Ð*]Ð*]ÀT­7°6¸4Ñ+@Ô+@Ð*]Ð*]Ð*]Ð*]Ð*]Ð*]r"   )ri   r    rÔ   rœ   r   r`   rÓ   rm   ©rh   r   rž   s     @r    Úcan_readzFileAccessPolicy.can_readÄ   sƒ   ø€ ØÔ ð 	Ø�5ð	Ø×&Ò& tÑ,Ô,ˆFˆFøÝ�­*Ð5ð 	ð 	ð 	Ø�5�5ð	øøøàÔ#Ð]¥sÐ*]Ð*]Ð*]Ð*]ÈTÌ_Ð*]Ñ*]Ô*]Ñ']Ô']Ð]ó   Œ" ¢=¼=c                óÀ   ‡— | j         sdS 	 |                      |¦  «        Šn# t          t          t          f$ r Y dS w xY wt          ˆfd„| j        D ¦   «         ¦  «        S )NFc              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r'   rË   rÙ   s     €r    rŠ   z-FileAccessPolicy.can_write.<locals>.<genexpr>Ô   s-   øè è € ÐFÐF¨T•7˜6 4Ñ(Ô(ÐFÐFÐFÐFÐFÐFr"   )rk   r    rÔ   rœ   r   rÓ   ro   rÚ   s     @r    Ú	can_writezFileAccessPolicy.can_writeÍ   s|   ø€ ØÔ!ð 	Ø�5ð	Ø×&Ò& tÑ,Ô,ˆFˆFøÝ�­*Ð5ð 	ð 	ð 	Ø�5�5ð	øøøåÐFÐFÐFÐF°TÔ5EÐFÑFÔFÑFÔFÐFrÜ   )r¬   Ú	directoryr¬   rà   c          
     óü  ‡ ‡— ‰                       ‰¦  «        }‰                      |¦  «        s%t          d‰                      |¦  «        › �¦  «        ‚|�r/|                     ¦   «         �s|j        sZ|j                             ¦   «         rAt          |j         	                    t          j
        |j        ¦  «        › d�¦  «        ¦  «        ng }|s^t          ‰t          ¦  «        rI‰                     d¦  «        s4t          ‰¦  «                             ¦   «         sˆfd„‰ j        D ¦   «         }t%          d‰                      |¦  «        › �|r-dd                     ˆ fd„|d d	…         D ¦   «         ¦  «        › d
�ndz   ¦  «        ‚|r9|                     ¦   «         s%t%          d‰                      |¦  «        › �¦  «        ‚|s;|s9|                     ¦   «         s%t%          d‰                      |¦  «        › �¦  «        ‚|S )Nz'Filesystem read is not authorized for: z.*r„   c                ó\   •— g | ](}|‰z  |d z  ‰z  fD ]}|                      ¦   «         ¯|‘ŒŒ)S )Úsandbox©Úis_file)rF   r1   Ú	candidater   s      €r    rH   z1FileAccessPolicy.require_read.<locals>.<listcomp>Ý   sƒ   ø€ ð  Oð  Oð  O tÐQUÐX\ÑQ\Ð^bÐenÑ^nÐquÑ^uÐPvð  Oð  OÀ9ð  {D÷  {Lò  {Lñ  {Nô  {Nð  O˜ð  Oð  Oð  Oð  Or"   zPath is not an existing file: z (did you mean z, c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r'   )r±   )rF   r¦   rh   s     €r    rŠ   z0FileAccessPolicy.require_read.<locals>.<genexpr>Þ   sp   øè è € ð  Cuð  Cuð  cgð  DH÷  DXò  DXð  Y]ñ  D^ô  D^ð  Cuð  Cuð  Cuð  Cuð  Cuð  Cur"   é   z?)r   z#Path is not an existing directory: úPath does not exist: )r    rÛ   rœ   r±   rå   ÚsuffixÚparentÚis_dirr­   Úglobrµ   r‰   r›   r   r�   r   r™   rm   ÚFileNotFoundErrorrQ   Úexists)rh   r   r¬   rà   rž   Únameds   ``    r    Úrequire_readzFileAccessPolicy.require_readÖ   s´  øø€ Ø×"Ò" 4Ñ(Ô(ˆØ�}Š}˜VÑ$Ô$ð 	lÝ!Ð"jÈD×L`ÒL`ÐagÑLhÔLhÐ"jÐ"jÑkÔkÐkØñ 	L˜ŸšÑ(Ô(ñ 	LØW]ÔWdð  HÐioÔiv×i}Òi}ÑiÔið  H•F˜6œ=×-Ò-µ´¸V¼[Ñ1IÔ1IÐ.MÐ.MÐ.MÑNÔNÑOÔOÐOð  FHˆEØð O�Z¨­cÑ2Ô2ð O¸4¿?º?È3Ñ;OÔ;Oð OÕX\Ð]aÑXbÔXb×XnÒXnÑXpÔXpð Oð Oð  Oð  Oð  O¨t¬ð  Oñ  Oô  O�Ý#Ð$cÀT×EYÒEYÐZ`ÑEaÔEaÐ$cÐ$cð  }Bð  hJð  hyÐy}÷  zCò  zCð  Cuð  Cuð  Cuð  Cuð  kpð  qsð  rsð  qsô  ktð  Cuñ  Cuô  Cuñ  zuô  zuð  hyð  hyð  hyð  hyð  HJñ  %Kñ  Lô  Lð  LØð 	j˜VŸ]š]™_œ_ð 	jÝ#Ð$hÈ$×J^ÒJ^Ð_eÑJfÔJfÐ$hÐ$hÑiÔiÐiØð 	\˜Ið 	\¨f¯mªm©o¬oð 	\Ý#Ð$Z¸D×<PÒ<PÐQWÑ<XÔ<XÐ$ZÐ$ZÑ[Ô[Ð[Øˆr"   c                ó¤   — |                       |¦  «        }|                      |¦  «        s%t          d|                      |¦  «        › �¦  «        ‚|S )Nz(Filesystem write is not authorized for: )r    rß   rœ   r±   rÚ   s      r    Úrequire_writezFileAccessPolicy.require_writeå   sU   € Ø×"Ò" 4Ñ(Ô(ˆØ�~Š~˜fÑ%Ô%ð 	mÝ!Ð"kÈT×MaÒMaÐbhÑMiÔMiÐ"kÐ"kÑlÔlÐlØˆr"   c                ó   — dS r4   rJ   )rh   r   s     r    Úcreate_onlyzFileAccessPolicy.create_onlyë   s   € Øˆur"   c                óŒ   — |                       |¦  «        }|| j        v r%t          d|                      |¦  «        › �¦  «        ‚|S )Nz.A filesystem root cannot be moved or deleted: )ró   ro   rœ   r±   rÚ   s      r    Úrequire_mutationz!FileAccessPolicy.require_mutationî   sO   € Ø×#Ò# DÑ)Ô)ˆØ�TÔ%Ð%Ð%Ý!Ð"qÐSW×SgÒSgÐhnÑSoÔSoÐ"qÐ"qÑrÔrÐrØˆr"   úlist[dict[str, Any]]c                ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc                óŒ   •— g | ]@}‰                      |¦  «        |                     ¦   «         ‰                     |¦  «        d œ‘ŒAS ))r   rï   Úwritable)r±   rì   rß   )rF   r   rh   s     €r    rH   z*FileAccessPolicy.roots.<locals>.<listcomp>õ   s\   ø€ ð  Mð  Mð  MÐtx˜×-Ò-¨dÑ3Ô3¸t¿{º{¹}¼}ÐZ^×ZhÒZhÐimÑZnÔZnÐoÐoð  Mð  Mð  Mr"   )rm   rg   s   `r    ÚrootszFileAccessPolicy.rootsô   sA   ø€ ð Mð  Mð  Mð  Mð  }Aô  }Lð  Mñ  Mô  Mð  	Mr"   rV   ú'FileAccessPolicy'c           
     ód  ‡— t          |¦  «        }t          |¦  «        Š‰st          d¦  «        ‚t          ˆfd„| j        D ¦   «         ¦  «        rt          d‰› �¦  «        ‚t          | j        | j        t          g | j	        ¢|‘¦  «        | j
        t          g | j        ¢‰‘¦  «        ¬¦  «        S )NzFilesystem root alias is empty.c              3  ól   •K  — | ].}|                      ¦   «         ‰                      ¦   «         k    V — Œ/d S r'   rv   )rF   r‰   Únormalized_aliass     €r    rŠ   z-FileAccessPolicy.with_root.<locals>.<genexpr>ü   s=   øè è € ÐWÐWÀ$ˆt�}Š}‰ŒÐ"2×";Ò";Ñ"=Ô"=Ò=ÐWÐWÐWÐWÐWÐWr"   z&Filesystem root alias already exists: ©r]   r^   r_   r`   rb   )r!   r=   r   rÓ   r{   r\   r]   r^   r-   r_   r`   )rh   r   rV   r1   r   s       @r    Ú	with_rootzFileAccessPolicy.with_root÷   sÐ   ø€ Ý˜dÑ#Ô#ˆÝ+¨EÑ2Ô2ÐØð 	@ÝÐ>Ñ?Ô?Ð?ÝÐWÐWÐWÐWÈ$Ì,ÐWÑWÔWÑWÔWð 	ZÝÐXÐFVÐXÐXÑYÔYÐYÝØ”ØÔ*Ý Ð!= 4Ô#6Ð!=¸Ð!=Ñ>Ô>Ø Ô0ÝÐ@ ¤Ð@Ð/?Ð@ÑAÔAð
ñ 
ô 
ð 	
r"   N)r   r2   )r   r%   )r   ra   )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   r2   )r   r   r¬   r2   rà   r2   r   r   )r   rø   )r   r   rV   r   r   rý   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r_   r`   rb   Úpropertyri   rk   rm   ro   r{   r   r�   r–   r    r±   r¸   r»   rÛ   rß   rñ   ró   rõ   r÷   rü   r  rJ   r"   r    r\   r\   Q   sj  € € € € € € à€I€I�IØ"Ð"Ð"Ñ"Ø')€NÐ)Ð)Ð)Ñ)Ø!€OÐ!Ð!Ð!Ñ!Ø$&€LÐ&Ð&Ð&Ñ&àð3ð 3ð 3ñ „Xð3ð ð)ð )ð )ñ „Xð)ð ðIð Ið Iñ „XðIð ð=ð =ð =ñ „Xð=ð ð
;ð 
;ð 
;ñ „Xð
;ð ð9ð 9ð 9ñ „Xð9ð ð(ð (ð (ñ „Xð(ð/ð /ð /ð /ð Qð Qð Qð Qð	%ð 	%ð 	%ð 	%ðð ð ð ðð ð ð ð ð,^ð ^ð ^ð ^ðGð Gð Gð Gð 7<Èuð ð ð ð ð ð ðð ð ð ðð ð ð ðð ð ð ðMð Mð Mð Mð
ð 
ð 
ð 
ð 
ð 
r"   r\   F)Úunrestricted_readÚserver_configúdict[str, Any] | Noner	  c          
     ó¼  — ddl m}m}m}m}m}m}m}m}	m	}
m
} t          | pi ¦  «        }|r|n |	|                     |d¦  «        ¦  «        }|                     dd¦  «        pd}t          ||                     d|¦  «        p||                     d|¦  «        p||                     d|¦  «        p|g¦  «        }||k    r |
|                     ||¦  «        ¦  «        ng }d	„ |D ¦   «         }g }|D ]p\  }}t          |¦  «        }t          j                             t%          |¦  «        ¦  «        }||vr,|                     |¦  «         |                     ||f¦  «         Œqd
„ t+          t-          |¦  «        ¦  «        D ¦   «         }d„ |D ¦   «         d„ |D ¦   «         z  }g }|D ]S\  }}|pt/          ||¦  «        }|                     |                     ¦   «         ¦  «         |                     |¦  «         ŒTt3          d„ |D ¦   «         ¦  «        }|p$||k    o ||                     ||¦  «        ¦  «        }t5          ||||t3          g |¢|¢¦  «        ¬¦  «        S )Nr   )
Ú DEEPY_ALLOW_READ_FILE_SYSTEM_KEYÚ!DEEPY_FILE_SYSTEM_ACCESS_DISABLEDÚDEEPY_FILE_SYSTEM_ACCESS_READÚDEEPY_FILE_SYSTEM_PATHS_DEFAULTÚDEEPY_FILE_SYSTEM_PATHS_KEYÚDEEPY_READ_EVERYWHERE_DEFAULTÚDEEPY_READ_EVERYWHERE_KEYÚ"normalize_deepy_file_system_accessÚparse_deepy_file_system_pathsÚnormalize_deepy_read_everywhereFÚ	save_pathrs   Úimage_save_pathÚaudio_save_pathÚmesh_save_pathc                óf   — h | ].}t           j                             t          |¦  «        ¦  «        ’Œ/S rJ   ©r)   r   r*   r   ©rF   r   s     r    rx   z+build_file_access_policy.<locals>.<setcomp>  s.   € ÐGÐGÐG°$•"”'×"Ò"¥3 t¡9¤9Ñ-Ô-ÐGÐGÐGr"   c                ó.   — g | ]}|d k    rdnd|dz   › �‘ŒS rr   rJ   rt   s     r    rH   z,build_file_access_policy.<locals>.<listcomp>"  s1   € ÐoÐoÐoÈU 5¨A¢: :�i�iÐ3H¸UÀQ¹YÐ3HÐ3HÐoÐoÐor"   c                ó6   — h | ]}|                      ¦   «         ’ŒS rJ   rv   rw   s     r    rx   z+build_file_access_policy.<locals>.<setcomp>#  s"   € ÐAÐAÐA¨�E—N’NÑ$Ô$ÐAÐAÐAr"   c                ó@   — h | ]\  }}|¯|                      ¦   «         ’ŒS rJ   rv   )rF   rÀ   rV   s      r    rx   z+build_file_access_policy.<locals>.<setcomp>#  s/   € ÐD|ÐD|ÐD|ÑZfÐZ_ÐafÐv{ÐD|ÀUÇ^Â^ÑEUÔEUÐD|ÐD|ÐD|r"   c              3  ó    K  — | ]	\  }}|V — Œ
d S r'   rJ   )rF   r   rÌ   s      r    rŠ   z+build_file_access_policy.<locals>.<genexpr>)  s&   è è € Ð=Ð=¡L D¨&˜4Ð=Ð=Ð=Ð=Ð=Ð=r"   r  )Úshared.deepy.configr  r  r  r  r  r  r  r  r  r  rÍ   Úgetr0   r!   r)   r   r*   r   r+   r,   rO   rP   rY   rR   r-   r\   )r
  r	  r  r  r  r  r  r  r  r  r  r  Úconfigr]   Úvideo_outputr^   Úconfigured_rootsÚ
seen_pathsÚselectedr   rV   r   r/   ry   Úused_aliasesrz   r_   r`   s                               r    Úbuild_file_access_policyr*    sè  € ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð õ �-Ð% 2Ñ&Ô&€FØ,=ð  [Ð(Ð(ÐCeÐCeÐfl×fpÒfpð  rRð  TYñ  gZô  gZñ  D[ô  D[€DØ—:’:˜k¨9Ñ5Ô5ÐB¸€LÝ  ,°·
²
Ð;LÈlÑ0[Ô0[Ð0kÐ_kÐms×mwÒmwð  yJð  LXñ  nYô  nYð  nið  ]ið  kq÷  kuò  kuð  vFð  HTñ  kUô  kUð  keð  Yeð  "fñ  gô  g€Lð CGð  Klò  Clð  ClÐ4Ð4°V·Z²ZÐ@[Ð]|Ñ5}Ô5}Ñ~Ô~Ð~ð  rtÐØGÐG¸,ÐGÑGÔG€JØ€HØ(ð +ð +‰ˆˆuÝ˜eÑ$Ô$ˆÝŒg×Ò�s 4™yœyÑ)Ô)ˆØ�jÐ Ð Ø�NŠN˜3ÑÔÐØ�OŠO˜T 5˜MÑ*Ô*Ð*øØoÐoÕV[Õ\_Ð`lÑ\mÔ\mÑVnÔVnÐoÑoÔo€NØAÐA°.ÐAÑAÔAÐD|ÐD|ÐjrÐD|ÑD|ÔD|Ñ|€LØÐØð 'ð '‰ˆˆeØÐ=Õ)¨$°Ñ=Ô=ˆØ×Ò˜ŸšÑ)Ô)Ñ*Ô*Ð*Ø×Ò Ñ&Ô&Ð&Ð&ÝÐ=Ð=°HÐ=Ñ=Ô=Ñ=Ô=€NØ'ð  ¨4Ð3TÒ+Tð  ,ÐYxÐYxÐy÷  zDò  zDð  E^ð  `}ñ  z~ô  z~ñ  Zô  Z€OÝ °LÐQ_ð  rAõ  PUð  Vzð  Xfð  Vzð  iyð  Vzñ  P{ô  P{ð  |ñ  |ô  |ð  |r"   r   Ú*éÈ   ÚallÚpolicyÚpatternÚ	recursiveÚlimitÚintÚoffsetÚ
media_typeúdict[str, Any]c           
     óª  — t          |pd¦  «                             ¦   «         s;|                      ¦   «         }d|t          |¦  «        t	          | j        ¦  «        ddœS |                      |d¬¦  «        }t          |pd¦  «                             ¦   «         pd}t          dt          t          |¦  «        d¦  «        ¦  «        }t          d	t          |¦  «        ¦  «        }t          |pd
¦  «                             ¦   «          
                    ¦   «         }|dvrt          d¦  «        ‚|r|                     |¦  «        n1t          t          |                     |¦  «        d„ ¬¦  «        ¦  «        }	g }
|	D �]u}|                      |¦  «        sŒ|d
k    r‰|                     ¦   «         rt%          t          |¦  «        ¦  «        nd}|dk    r|j         
                    ¦   «         dk    }n0|dk    r$|dk    o|j         
                    ¦   «         dk    }n||k    }|sŒ¨t          |
¦  «        |k     r|
                     d ¦  «         ŒÑ|                     ¦   «         }|
                     |j        t          |                     ¦   «         ¦  «        |                     ¦   «         rdnd|                     ¦   «         rd n|j        |j        dœ¦  «         t          |
¦  «        ||z   dz   k    r n�Œwd„ |
|||z   …         D ¦   «         }t          |
¦  «        ||z   k    }dt          |¦  «        |t          |¦  «        |||r|t          |¦  «        z   nd ddœS )Nr   Údone)Ústatusrü   rU   r`   ÚerrorT)rà   r+  rL   éè  r   r-  >   Ú3dr-  ÚtxtÚaudioÚimageÚotherÚvideoÚworldzEmedia_type must be all, image, video, audio, 3d, world, txt, or otherc                óD   — t          | ¦  «                             ¦   «         S r'   ©r   rR   )Úentrys    r    r§   zlist_entries.<locals>.<lambda>9  s,   € ÕsvÐw|Ñs}Ôs}÷  tGò  tGñ  tIô  tI€ r"   ©r/   r<  z.txtr?  rÓ   rà   r¬   )r‰   r   ÚtypeÚ
size_bytesÚmodifiedc                ó   — g | ]}|®|‘ŒS r'   rJ   )rF   rD  s     r    rH   z list_entries.<locals>.<listcomp>O  s   € ÐVÐVÐV˜ÀEÐDUˆuÐDUÐDUÐDUr"   )r8  r   ÚentriesrU   r3  Úhas_moreÚnext_offsetr9  )r   r   rü   rP   r2   r`   rñ   ÚmaxÚminr2  r;   r   ÚrglobÚiterr­   rí   rÛ   rå   r
   rê   r,   Ústatr‰   r   rì   Úst_sizeÚst_mtime)r.  r   r/  r0  r1  r3  r4  rü   rà   Ú
candidatesrJ  r¦   Údetected_typeÚmatches_typerQ  ÚvisiblerK  s                    r    Úlist_entriesrX  .  só  € Ýˆtˆz�r‰?Œ?× Ò Ñ"Ô"ð EØ—’‘”ˆØ ¨5½3¸u¹:¼:ÕZ^Ð_eÔ_uÑZvÔZvð  BDð  Eð  Eð  	EØ×#Ò# D°DÐ#Ñ9Ô9€IÝ�'�.˜SÑ!Ô!×'Ò'Ñ)Ô)Ð0¨S€GÝ�•3•s˜5‘z”z 4Ñ(Ô(Ñ)Ô)€EÝ�•C˜‘K”KÑ Ô €FÝ�ZÐ( 5Ñ)Ô)×/Ò/Ñ1Ô1×7Ò7Ñ9Ô9€JØÐZÐZÐZÝÐ`ÑaÔaÐaØ-6ð  K�—’ Ñ)Ô)Ð)½DÅÈ	ÏÊÐW^ÑH_ÔH_ð  fIð  fIð  BJñ  BJô  BJñ  =Kô  =K€JØ€GØð ñ ˆØ�Š˜tÑ$Ô$ð 	ØØ˜ÒÐØ<@¿LºL¹N¼NÐRÕ-­c°$©i¬iÑ8Ô8Ð8ÐPRˆMØ˜UÒ"Ð"Ø#œ{×0Ò0Ñ2Ô2°fÒ<��Ø˜wÒ&Ð&Ø,°Ò5ÐW¸$¼+×:KÒ:KÑ:MÔ:MÐQWÒ:W��à,°
Ò:�Øð ØÝˆw‰<Œ<˜&Ò Ð Ø�NŠN˜4Ñ Ô Ð ØØ�yŠy‰{Œ{ˆØ�Š ¤	µ3°t·|²|±~´~Ñ3FÔ3FÐ_c×_jÒ_jÑ_lÔ_lÐPxÐP[ÐP[Ðrxð  QU÷  Q\ò  Q\ñ  Q^ô  Q^ð  Ipð  IMð  IMð  dhô  dpð  ~Bô  ~Kð  Lð  Lñ  	Mô  	Mð  	MÝˆw‰<Œ<˜6 E™>¨AÑ-Ò-Ð-ØˆEñ .àVÐV '¨&°¸%±Ð*?Ô"@ÐVÑVÔV€GÝ�7‰|Œ|˜f u™nÒ,€HØ¥c¨)¡n¤nÀÕSVÐW^ÑS_ÔS_Ðkqð  @Hð  rzð  YDð  Y_õ  beð  fmñ  bnô  bnñ  Ynð  Ynð  @Dð  OQð  Rð  Rð  Rr"   úfloat | Nonec                óR   — 	 t          | ¦  «        S # t          t          f$ r Y d S w xY wr'   )ÚfloatÚ	TypeErrorr   r<   s    r    Ú_floatr]  T  s:   € ðÝ�U‰|Œ|ÐøÝ•zÐ"ð ð ð Øˆtˆtðøøøó   ‚ ‘&¥&ú
int | Nonec                óR   — 	 t          | ¦  «        S # t          t          f$ r Y d S w xY wr'   )r2  r\  r   r<   s    r    Ú_integerra  [  s:   € ðÝ�5‰zŒzÐøÝ•zÐ"ð ð ð Øˆtˆtðøøør^  c                óê   — t          | pd¦  «                             ¦   «         }d|v r>|                     dd¦  «        \  }}t          |¦  «        }|sd nt	          |¦  «        |z  S t          |¦  «        S )Nr   rC   rL   )r   r   r‘   r]  r[  )r   r   Ú	numeratorÚdenominatorÚdenominator_values        r    Ú_raterf  b  sw   € Ýˆuˆ{˜ÑÔ×!Ò!Ñ#Ô#€DØ
ˆd€{€{Ø!%§¢¨C°Ñ!3Ô!3Ñˆ	�;Ý" ;Ñ/Ô/ÐØ,ÐVˆtˆtµ%¸	Ñ2BÔ2BÐEVÑ2VÐVÝ�$‰<Œ<Ðr"   Ústreamc                óà  — |                       di ¦  «        }|                      d¦  «        p|                      dd¦  «        }| d         |                       d¦  «        dœ}| d         dk    rk|                     t          |                       d	¦  «        ¦  «        t          |                       d
¦  «        ¦  «        |                       d¦  «        ¬¦  «         |                      dd¦  «        dk    r|d         |d<   |rt          j        d|¦  «        s||d<   | d         dk    r.|                       di ¦  «                              d¦  «        rd|d<   d„ |                     ¦   «         D ¦   «         S )NÚtagsÚtitleÚhandler_namer   Ú
codec_typeÚ
codec_name)rF  Úcodecr=  Úsample_rateÚchannelsÚchannel_layout)ro  rp  ÚlayoutÚlanguageÚundz
\w*HandlerÚsubtitleÚdispositionÚdefaultTc                ó   — i | ]
\  }}|®||“ŒS r'   rJ   )rF   r/   r   s      r    r¾   z#_stream_summary.<locals>.<dictcomp>w  s#   € ÐNÐNÐN™:˜3 ¸EÐ<MˆC�Ð<MÐ<MÐ<Mr"   )r#  Úupdatera  r9   rS   rÎ   )rg  ri  rj  Úsummarys       r    Ú_stream_summaryr{  k  s‚  € Ø�:Š:�f˜bÑ!Ô!€DØ�HŠH�WÑÔÐ= §¢¨.¸"Ñ!=Ô!=€EØ˜lÔ+°f·j²jÀÑ6NÔ6NÐOÐO€GØˆlÔ˜wÒ&Ð&Ø�Š¥8¨F¯JªJ°}Ñ,EÔ,EÑ#FÔ#FÕQYÐZ`×ZdÒZdÐeoÑZpÔZpÑQqÔQqð  {A÷  {Eò  {Eð  FVñ  {Wô  {Wˆñ  	Xô  	Xð  	XØ‡x‚x�
˜EÑ"Ô" eÒ+Ð+Ø" :Ô.ˆ�
ÑØð !•R”\ -°Ñ7Ô7ð !Ø ˆ�ÑØˆlÔ˜zÒ)Ð)¨f¯jªj¸ÈÑ.KÔ.K×.OÒ.OÐPYÑ.ZÔ.ZÐ)Ø!ˆ�	ÑØNÐN¨¯ª©¬ÐNÑNÔNÐNr"   c                ó®  — t          j        t          | ¦  «        t          d¦  «        pd¬¦  «        }|                     dg ¦  «        }|                     di ¦  «        }d„ |D ¦   «         }t          |                     d¦  «        ¦  «        }dt          | ¦  «        | j        |                      ¦   «         j        ||t          |¦  «        t          |¦  «        dd	„ |D ¦   «         d
œ
}|dk    �rt          d„ |D ¦   «         i ¦  «        }t          |                     d¦  «        p|                     d¦  «        ¦  «        }	t          |                     d¦  «        ¦  «        }
|
€#|	�!|�t          t          |	|z  ¦  «        ¦  «        }
t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        }}|                     |||�|€d n|› d|› �|
|	dœ¦  «         nd|r|d         ni }|                     t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        dœ¦  «         |S )NÚffprobe)ÚcmdÚstreamsÚformatc                óD   — g | ]}|                      d ¦  «        dk    ¯|‘ŒS )rl  r=  ©r#  ©rF   rg  s     r    rH   z _probe_media.<locals>.<listcomp>~  s/   € ÐYÐYÐY °V·Z²ZÀÑ5MÔ5MÐQXÒ5XÐ5X�VÐ5XÐ5XÐ5Xr"   Údurationr7  r   c                óZ   — g | ](}|                      d ¦  «        dv ¯t          |¦  «        ‘Œ)S )rl  >   r=  r@  ru  )r#  r{  rƒ  s     r    rH   z _probe_media.<locals>.<listcomp>ƒ  sA   € ð  Að  Að  A°ÀVÇZÂZÐP\ÑE]ÔE]ÐaÐEÐE•O FÑ+Ô+ÐEÐEÐEr"   )
r8  r   ÚfilenamerG  Ú	file_typeÚduration_secondsÚ	has_audioÚaudio_track_countr9  r  r@  c              3  óL   K  — | ]}|                      d ¦  «        dk    ¯|V — Œ dS )rl  r@  Nr‚  rƒ  s     r    rŠ   z_probe_media.<locals>.<genexpr>†  s9   è è € ÐaÐa¨¸V¿ZºZÈÑ=UÔ=UÐY`Ò=`Ð=`˜VÐ=`Ð=`Ð=`Ð=`ÐaÐar"   Úavg_frame_rateÚr_frame_rateÚ	nb_framesÚwidthÚheightÚx)r�  r�  Ú
resolutionÚframe_countÚfpsr   ro  rp  )ro  rp  )ÚffmpegÚprober   r   r#  r]  r‰   rQ  rR  r2   rP   r�   rf  ra  r2  Úroundry  )r   r4  r–  r  Úformat_infoÚaudio_streamsr„  ÚresultÚvideo_streamr”  r“  r�  r�  Úaudio_streams                 r    Ú_probe_mediar�  z  s²  € ÝŒL�˜T™œÕ(<¸YÑ(GÔ(GÐ(TÈ9ÐUÑUÔU€EØ�iŠi˜	 2Ñ&Ô&€GØ—)’)˜H bÑ)Ô)€KØYÐY¨'ÐYÑYÔY€MÝ�k—o’o jÑ1Ô1Ñ2Ô2€Hà¥# d¡)¤)¸¼ÐRV×R[ÒR[ÑR]ÔR]ÔReÐt~Ø$µ4¸Ñ3FÔ3FÕ]`ÐanÑ]oÔ]oÐz|ð Að  A¸'ð  Añ  Aô  Aðð €Fð
 �WÒÑÝÐaÐa°'ÐaÑaÔaÐceÑfÔfˆÝ�L×$Ò$Ð%5Ñ6Ô6ÐZ¸,×:JÒ:JÈ>Ñ:ZÔ:ZÑ[Ô[ˆÝ˜|×/Ò/°Ñ<Ô<Ñ=Ô=ˆØÐ 3 ?°xÐ7KÝ�e C¨(¡NÑ3Ô3Ñ4Ô4ˆKÝ  ×!1Ò!1°'Ñ!:Ô!:Ñ;Ô;½XÀl×FVÒFVÐW_ÑF`ÔF`Ñ=aÔ=aˆvˆØ�Š °ÈuÈ}Ð`fÐ`nÀtÀtÐw|ð  uHð  uHð  @Fð  uHð  uHð  Ydð  mpð  qð  qñ  	rô  	rð  	rð  	rà+8Ð@�} QÔ'Ð'¸bˆØ�Š¥h¨|×/?Ò/?ÀÑ/NÔ/NÑ&OÔ&OÕ]eÐfr×fvÒfvð  xBñ  gCô  gCñ  ^Dô  ^Dð  Eð  Eñ  	Fô  	Fð  	FØ€Mr"   c                óÊ  ‡— t          j        | ¦  «        5 Š‰j        \  }}t          ‰¦  «        }t	          t          ‰dd¦  «        pd¦  «        }|dk    r+t          ˆfd„t          |¦  «        D ¦   «         ¦  «        dz  nd }d d d ¦  «         n# 1 swxY w Y   dt          | ¦  «        | j	        |  
                    ¦   «         j        d|||› d|› �||sd n||z  |dd	d
œ|¥ddi¥S )NÚn_framesrL   c              3  ó–   •K  — | ]C}t          ‰                     |¦  «        p‰j                             d d¦  «        pd¦  «        V — ŒDdS )r„  r   N)r[  ÚseekÚinfor#  )rF   rX   r>  s     €r    rŠ   z_query_image.<locals>.<genexpr>˜  sS   øè è € ÐvÐvÐZ_•u˜UŸZšZ¨Ñ.Ô.ÐT°%´*·.².ÀÈQÑ2OÔ2OÐTÐSTÑUÔUÐvÐvÐvÐvÐvÐvr"   r:  r7  r>  r‘  Fr   )r8  r   r†  rG  r‡  r�  r�  r’  r“  r”  rˆ  r‰  rŠ  r9  r   )r   ÚopenÚsizer	   r2  ÚgetattrÚsumrO   r   r‰   rQ  rR  )r   r�  r�  Úcolor_detailsr“  r„  r>  s         @r    Ú_query_imager¨  “  sæ  ø€ Ý	Œ�DÑ	Ô	ð [˜UØœ
‰ˆˆvÝ+¨EÑ2Ô2ˆÝ�' %¨°QÑ7Ô7Ð<¸1Ñ=Ô=ˆð BMð  PQò  BQð  BQ•3ÐvÐvÐvÐvÕchÐitÑcuÔcuÐvÑvÔvÑvÔvÐy}Ñ}Ð}ð  W[ˆð	[ð [ð [ñ [ô [ð [ð [ð [ð [ð [ð [øøøð [ð [ð [ð [ð
 ¥c¨$¡i¤i¸T¼YÐVZ×V_ÒV_ÑVaÔVaÔViÐxð  KPð  \bð  uzð  rEð  rEð  }Cð  rEð  rEð  Vað  v~ð  jZð  jnð  jnð  DOð  RZñ  DZð  pxð  GLð  cdð  Cð  Cð  huð  Cð  w~ð  @Bð  Cð  Cð  Cs   –A-BÂBÂBúFileAccessPolicy | Nonec                óz  — |�|                      | ¦  «        nt          | ¦  «        }|                     ¦   «         r5|                     ¦   «         }dt	          |¦  «        |j        dd |j        ddœS 	 t          t	          |¦  «        ¦  «        }|dk    rTddlm	} dt	          |¦  «        |j        |                     ¦   «         j
        ddœ |t	          |¦  «        ¦  «        ¥d	di¥}nÕ|d
k    rTddlm} dt	          |¦  «        |j        |                     ¦   «         j
        d
dœ |t	          |¦  «        ¦  «        ¥d	di¥}n{|dk    rt          |¦  «        ne|dv rt          ||¦  «        nQdt	          |¦  «        |j        |                     ¦   «         j
        dt          j        |j        ¦  «        d         pdddœ}|                     ¦   «         j        |d<   |S # t"          t$          t&          j        f$ rD}d	t	          |¦  «        |                     ¦   «         j
        t	          |¦  «        pddœcY d }~S d }~ww xY w)Nr7  rà   r   )r8  r   r†  r‡  rG  rH  r9  r;  r   )Úasset_summary)r8  r   r†  rG  r‡  r9  rA  )Úworld_summaryr>  >   r=  r@  r¬   zapplication/octet-stream)r8  r   r†  rG  r‡  Ú	mime_typer9  rH  úUnable to inspect file.©r8  r   rG  r9  )rñ   r!   rì   rQ  r   r‰   rS  r
   Úshared.utils.mesh_outputsr«  rR  Úshared.utils.world_outputsr¬  r¨  r�  Ú	mimetypesÚ
guess_typerÔ   r   r•  ÚError)	r   r.  rž   rQ  r4  r«  rš  r¬  Úexcs	            r    Ú	file_infor¶  œ  s�  € Ø*0Ð*<ˆV× Ò  Ñ&Ô&Ð&Å.ÐQUÑBVÔBV€FØ‡}‚}�„ð fØ�{Š{‰}Œ}ˆØ ­#¨f©+¬+À6Ä;Ð]hÐx|ð  KOô  KXð  ceð  fð  fð  	fðMÝ&¥s¨6¡{¤{Ñ3Ô3ˆ
Ø˜ÒÐØ?Ð?Ð?Ð?Ð?Ð?Ø &µ°F±´ÈÌÐdj×doÒdoÑdqÔdqÔdyð  IMð  yð  yð  Q^ð  Q^õ  _bð  ciñ  _jô  _jñ  Qkô  Qkð  yð  mtð  vxð  yð  yˆFˆFØ˜7Ò"Ð"Ø@Ð@Ð@Ð@Ð@Ð@Ø &µ°F±´ÈÌÐdj×doÒdoÑdqÔdqÔdyð  IPð  |ð  |ð  Tað  Taõ  beð  flñ  bmô  bmñ  Tnô  Tnð  |ð  pwð  y{ð  |ð  |ˆFˆFà-7¸7Ò-BÐ-B•\ &Ñ)Ô)Ð)Ðlvð  {Mð  mMð  mMÍÐU[Ð]gÑHhÔHhÐHhð  ^dõ  nqð  rxñ  nyô  nyð  GMô  GRð  bh÷  bmò  bmñ  boô  boô  bwð  FLõ  [dô  [oð  pvô  p{ñ  [|ô  [|ð  }~ô  [ð  []ð  C]ð  hjð  Skð  SkˆFØ#Ÿ[š[™]œ]Ô3ˆˆzÑØˆøÝ•Z¥¤Ð.ð Mð Mð MØ!­3¨v©;¬;ÀfÇkÂkÁmÄmÔF[ÕfiÐjmÑfnÔfnð  gLð  sLð  Mð  Mð  	Mð  	Mð  	Mð  	Mð  	Mð  	MøøøøðMøøøs   Á1E(G ÇH:Ç69H5È/H:È5H:c           	     ó€  — t          | ¦  «        }|                     ¦   «         sdt          |¦  «        ddœS 	 t          t          |¦  «        ¦  «        }|dk    rt	          |¦  «        S |dv rt          ||¦  «        S |                     dd¬¦  «        5 }|                     t          d	z   ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        t          k    r5dt          |¦  «        | 
                    ¦   «         j        d
t          d›d�dœS dt          |¦  «        |j        | 
                    ¦   «         j        d|t          |¦  «        ddœS # t          t          t          t           j        f$ rD}dt          |¦  «        | 
                    ¦   «         j        t          |¦  «        pddœcY d }~S d }~ww xY w)Nr9  zPath is not an existing file.)r8  r   r9  r>  >   r=  r@  Úrr   ©ÚencodingrL   zText file exceeds the ú,z-character limit.r¯  r7  r   r   )r8  r   r†  rG  r‡  r   Úcharacter_countr9  r®  )r!   rå   r   r
   r¨  r�  r£  rd   ÚTEXT_MAX_CHARSrP   rQ  rR  r‰   rÔ   ÚUnicodeErrorr   r•  r´  )r   Ú	file_pathr4  Úreaderr   rµ  s         r    Ú
query_filerÁ  ±  sd  € Ý˜tÑ$Ô$€IØ×ÒÑÔð eØ!­3¨y©>¬>ÐDcÐdÐdÐdðSÝ&¥s¨9¡~¤~Ñ6Ô6ˆ
Ø˜Ò Ð Ý 	Ñ*Ô*Ð*ØÐ+Ð+Ð+Ý 	¨:Ñ6Ô6Ð6Ø�^Š^˜C¨'ˆ^Ñ2Ô2ð 	3°fØ—;’;�~°Ñ1Ñ2Ô2ˆDð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3åˆt‰9Œ9•~Ò%Ð%Ø%­s°9©~¬~ÈYÏ^Ê^ÑM]ÔM]ÔMeð  qmõ  JXð  qmð  qmð  qmð  qmð  nð  nð  nØ ­#¨i©.¬.ÀiÄnÐdm×drÒdrÑdtÔdtÔd|ð  LRð  \`õ  uxð  y}ñ  u~ô  u~ð  IKð  Lð  Lð  	LøÝ•\¥:­v¬|Ð<ð Sð Sð SØ!­3¨y©>¬>ÈÏÊÑIYÔIYÔIaÕloÐpsÑltÔltð  mRð  yRð  Sð  Sð  	Sð  	Sð  	Sð  	Sð  	Sð  	SøøøøðSøøøsU   ¸0E Á)E Á=E ÂB>Â2E Â>CÃE ÃCÃAE ÄA E Å"F=Å99F8Æ2F=Æ8F=c                ó    — t          | pd¦  «                             ¦   «                              ¦   «         }|t          vrt	          d¦  «        ‚|S )Nr   z$encoding must be utf-8 or utf-8-sig.)r   r   r;   Ú_TEXT_ENCODINGSr   )r   rº  s     r    Ú	_encodingrÄ  Ä  sK   € Ý�5Ð#˜GÑ$Ô$×*Ò*Ñ,Ô,×2Ò2Ñ4Ô4€HØ•Ð&Ð&ÝÐ?Ñ@Ô@Ð@Ø€Or"   rL   Ú
start_lineÚend_linerº  c                ó,  — |                       |d¬¦  «        }t          |¦  «        }|€d nt          |¦  «        }|dk     s|�||k     rt          d¦  «        ‚g d|dz
  d ddf\  }}}}	}
}|                     dt	          |¦  «        ¬¦  «        5 }t          |d¦  «        D ]¤\  }}||k     rŒ|�||k    r|d}}	 n‹t          |z
  }t          |¦  «        |k    rDt          |¦  «        }|dk    r| 	                    |d |…         ¦  «         |}|r|n|dz   }	d	\  }
} n*| 	                    |¦  «         |t          |¦  «        z  }|}Œ¥d d d ¦  «         n# 1 swxY w Y   d
 
                    |¦  «        }dt          |¦  «        |||	|
|t          |¦  «        |d
dœ
S )NT©r¬   rL   zEUse a 1-based start_line and an end_line greater than or equal to it.r   Fr¸  r¹  )TFr   r7  )
r8  r   rÅ  rÆ  Ú	next_lineÚ	truncatedÚeofr¼  r   r9  )rñ   r2  r   r£  rÄ  Ú	enumerater½  rP   r2   r,   rQ   r   )r.  r   rÅ  rÆ  rº  r¿  Úchunksr¼  Ú	last_linerÉ  rÊ  rË  rÀ  Úline_noÚlineÚ	remainingÚhad_contentr   s                     r    Ú	read_textrÓ  Ë  sF  € Ø×#Ò# D¨tÐ#Ñ4Ô4€IÝ�Z‘”€JØÐ'ˆtˆt­S°©]¬]€HØ�A‚~€~˜Ð-°(¸ZÒ2GÐ2GÝÐ`ÑaÔaÐaØDFÈÈ:ÐXYÉ>Ð[_ÐafÐhlÐDlÑA€FˆO˜Y¨	°9¸cØ	�Š˜¥i°Ñ&9Ô&9ˆÑ	:Ô	:ð  ¸fÝ& v¨qÑ1Ô1ð 	 ð 	 ‰MˆG�TØ˜Ò#Ð#ØØÐ#¨°(Ò(:Ð(:Ø!(¨%˜3�	Ø�Ý&¨Ñ8ˆIÝ�4‰yŒy˜9Ò$Ð$Ý" 6™lœl�Ø˜q’=�=Ø—M’M $ z¨	 zÔ"2Ñ3Ô3Ð3Ø '�IØ'2ÐC˜G˜G¸À!¹�	Ø!,‘�	˜3Ø�Ø�MŠM˜$ÑÔÐØ�s 4™yœyÑ(ˆOØˆIˆIð% ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð& �7Š7�6‰?Œ?€DØ¥c¨)¡n¤nÀJÐ\eÐt}ð  MVð  _bõ  wzð  {ñ  w@ô  w@ð  JNð  Y[ð  \ð  \ð  \s   ÂB6EÅEÅEéd   ÚqueryÚregexÚcase_sensitivec                ó.  — |                       |¦  «        }t          |pd¦  «        }|st          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚t	          j        |r|nt	          j        |¦  «        |rdnt          j        ¦  «        }	t          dt          t          |¦  «        d¦  «        ¦  «        }|                     ¦   «         r|gn?|r|                     |pd¦  «        n&t          |                     |pd¦  «        d„ ¬	¦  «        }
g d}}|
D �]c}|                     ¦   «         r|                      |¦  «        sŒ-|                     ¦   «         j        t$          k    r|dz  }ŒU	 |                     d
d¬¦  «        5 }t)          |d¦  «        D ]¯\  }}|	                     |d d…         ¦  «        €Œ#|                     t          |                     ¦   «         ¦  «        ||                     ¦   «         d d…         dœ¦  «         t          |¦  «        |k    r'd||t          |¦  «        d|ddœc cd d d ¦  «         c S Œ°	 d d d ¦  «         n# 1 swxY w Y   �ŒH# t2          t4          f$ r	 |dz  }Y �Œaw xY wd||t          |¦  «        d|ddœS )Nr   zquery is empty.iô  zquery exceeds 500 characters.r   rL   r+  c                óD   — t          | ¦  «                             ¦   «         S r'   rC  r¥   s    r    r§   zsearch_text.<locals>.<lambda>ò  s<   € õ  SVð  W[ñ  S\ô  S\÷  Seò  Señ  Sgô  Sg€ r"   rE  r¸  r   r¹  i † )r   rÐ  r   r7  T)r8  rÕ  ÚmatchesrU   rÊ  Úskipped_filesr9  F)rñ   r   r   rP   r9   Úcompilerµ   r�   rM  rN  r2  rå   rO  r­   rí   rÛ   rQ  rR  ÚSEARCH_MAX_FILE_BYTESr£  rÌ  Úsearchr,   r   r   rÔ   r¾  )r.  r   rÕ  r/  r0  rÖ  r×  r1  rÈ   ÚmatcherÚfilesrÚ  Úskippedræ   rÀ  rÏ  rÐ  s                    r    Úsearch_textrâ  é  s‚  € Ø× Ò  Ñ&Ô&€FÝ��˜ÑÔ€EØð ,ÝÐ*Ñ+Ô+Ð+Ý
ˆ5�z„z�CÒÐÝÐ8Ñ9Ô9Ð9ÝŒj %Ð=˜˜­R¬Y°uÑ-=Ô-=ÀNÐ?e¸q¸qÕXZÔXeÑfÔf€GÝ�•3•s˜5‘z”z 3Ñ'Ô'Ñ(Ô(€EØŸšÑ(Ô(ð  hˆVˆHˆHÈið  /h¨f¯lªl¸7¸>ÀcÑ.JÔ.JÐ.JÕ]cÐdj×doÒdoÐpwÐp~Ð{~ÑdÔdð  Fgð  Fgð  ^hñ  ^hô  ^h€EØ˜1ˆW€GØð ñ ˆ	Ø× Ò Ñ"Ô"ð 	¨&¯/ª/¸)Ñ*DÔ*Dð 	ØØ�>Š>ÑÔÔ#Õ&;Ò;Ð;Ø�q‰LˆGØð		Ø—’ ¨k�Ñ:Ô:ð g¸fÝ%.¨v°qÑ%9Ô%9ð gð g‘M�G˜TØ—~’~ d¨7¨F¨7¤mÑ4Ô4Ð<Ø Ø—N’N­C°	×0AÒ0AÑ0CÔ0CÑ,DÔ,DÈgÐ_c×_iÒ_iÑ_kÔ_kÐlpÐmpÐlpÔ_qÐ#rÐ#rÑsÔsÐsÝ˜7‘|”| uÒ,Ð,Ø*0¸5ÈWÕ_bÐcjÑ_kÔ_kÐz~ð  RYð  dfð   gð   gð  gð  gðgð gð gð gñ gô gð gð gð gð gð
 -ð	gðgð gð gñ gô gð gð gð gð gð gð gøøøð gð gð gð gùøõ �Ð&ð 	ð 	ð 	Ø�q‰LˆGˆG‰Gð	øøøà u¸Í3ÈwÉ<Ì<Ðfkð  Fð  QSð  Tð  Tð  TsC   Å1I#ÆB1IÈ9I#ÉIÉ
I#ÉI	ÉI#ÉI	ÉI#É#I=É<I=Úcreater   r]   c                óÜ  ‡— |                       |¦  «        }t          |pd¦  «                             ¦   «                              ¦   «         }ddddœ                     |¦  «        }|€t          d¦  «        ‚|                      |¦  «        rd}|dk    r@|                     ¦   «         r,t          |                      |¦  «        r|› d�n|› d�¦  «        ‚t          |¦  «        }|j	         
                    d	d	¬
¦  «         |                     |t          |¦  «        d¬¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         }	|                     d¦  «        5 Št!          ˆfd„d¦  «        D ]}
|	                     |
¦  «         Œ	 d d d ¦  «         n# 1 swxY w Y   g d}}|                     dt          |¦  «        ¬¦  «        5 Š‰D ]D}|dz  }t%          j        d|¦  «        r(|                     |                     d¦  «        ¦  «         ŒE	 d d d ¦  «         n# 1 swxY w Y   |                     d¦  «        |r|                     d¦  «        sdndz   }dt          |¦  «        |j        |t3          |¦  «        ||t3          |¦  «        |r|d         nd |r|d         nd |	                     ¦   «         |                     ¦   «         j        ddœS )Nrã  r‘  ÚwÚa©rã  Ú	overwriter,   z*mode must be create, overwrite, or append.zC already exists and cannot be replaced here: write a new file name.zV already exists: pass mode "overwrite" to replace it, or use append_text to add to it.T©ÚparentsÚexist_okr   )rº  ÚnewlineÚrbc                 ó.   •— ‰                       d¦  «        S )Ni   )rd   )rÀ  s   €r    r§   zwrite_text.<locals>.<lambda>  s   ø€  &§+¢+¨kÑ":Ô":€ r"   r"   r   r¸  r¹  rL   z^#{1,6}\s+\Sz
ú
r7  éÿÿÿÿ)r8  r   r†  r]   Úcharacters_writtenÚlines_writtenÚ
line_countÚmarkdown_heading_countÚfirst_markdown_headingÚlast_markdown_headingÚsha256rG  r9  )ró   r   r   r;   r#  r   rõ   rï   ÚFileExistsErrorrë   Úmkdirr£  rÄ  ÚwriteÚhashlibr÷  rP  ry  r9   rš   r,   r´   rU   rÒ   r‰   rP   Ú	hexdigestrQ  rR  )r.  r   r   r]   rº  r¿  Ú	open_modeÚcontentÚwriterÚdigestÚchunkÚheadingsró  rÐ  rò  rÀ  s                  @r    Ú
write_textr    s‹  ø€ Ø×$Ò$ TÑ*Ô*€IÝˆtÐ�xÑ Ô ×&Ò&Ñ(Ô(×.Ò.Ñ0Ô0€DØ¨S¸CÐ@Ð@×DÒDÀTÑJÔJ€IØÐÝÐEÑFÔFÐFØ×Ò˜)Ñ$Ô$ð Øˆ	Ø�CÒÐ˜I×,Ò,Ñ.Ô.ÐÝÐnt÷  oAò  oAð  BKñ  oLô  oLð  s ÐjÐjÐjÐjð  UYð  Rsð  Rsð  Rsñ  tô  tð  	tÝ�$‰iŒi€GØÔ×Ò 4°$ÐÑ7Ô7Ð7Ø	�Š˜	­I°hÑ,?Ô,?ÈˆÑ	LÔ	Lð ÐPVØ�Š�WÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð åŒ^ÑÔ€FØ	�Š˜Ñ	Ô	ð ! ÝÐ:Ð:Ð:Ð:¸CÑ@Ô@ð 	!ð 	!ˆEØ�MŠM˜%Ñ Ô Ð Ð ð	!ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð ˜qˆj€HØ	�Š˜¥i°Ñ&9Ô&9ˆÑ	:Ô	:ð 5¸fØð 	5ð 	5ˆDØ˜!‰OˆJÝŒx˜¨Ñ.Ô.ð 5Ø—’ §¢¨FÑ 3Ô 3Ñ4Ô4Ð4øð	5ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð
 —M’M $Ñ'Ô'°Ð+]À×@PÒ@PÐQUÑ@VÔ@VÐ+]¨1¨1Ð\]Ñ^€MØ¥c¨)¡n¤nÀ)Ä.ÐZ^Õvyð  {Bñ  wCô  wCð  Vcð  s}õ  Y\ð  ]eñ  Yfô  Yfð  QYð  Bcð  BJð  KLô  BMð  BMð  _cð  NVð  ~`ð  ~Fð  GIô  ~Jð  ~Jð  \`ð  lr÷  l|ò  l|ñ  l~ô  l~ð  NW÷  N\ò  N\ñ  N^ô  N^ô  Nfð  qsð  tð  tð  ts7   Ä#EÅE	ÅE	Å8,F1Æ1F5Æ8F5Ç$AH9È9H=É H=c                ó¬   — |                       |¦  «        }|                     ¦   «         }|                     dd¬¦  «         dt          |¦  «        | ddœS )NTré  r7  r   )r8  r   Úcreatedr9  )ró   rì   rù  r   )r.  r   rà   Úexisteds       r    Úmake_directoryr  #  sW   € Ø×$Ò$ TÑ*Ô*€IØ×ÒÑ Ô €GØ‡O‚O˜D¨4€OÑ0Ô0Ð0Ø¥c¨)¡n¤nÀWÀÐWYÐZÐZÐZr"   rÈ   r   rè  Úsource_authorizedc                óº  — |rt          |¦  «        n|                      |d¬¦  «        }|                     ¦   «         st          d|› �¦  «        ‚|                      |¦  «        }|                     ¦   «         r
||j        z  }|                      |¦  «        }|j                             ¦   «         st          d|j        › �¦  «        ‚| 	                    ¦   «         r|st          d|› �¦  «        ‚|                      |¦  «        r…|                     d¦  «        5 }|                     d¦  «        5 }t          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          j        ||¦  «         nt          j        ||¦  «         dt#          |¦  «        t#          |¦  «        |j        |                     ¦   «         j        d	d
œS )NTrÈ  z Source is not an existing file: ú&Destination directory does not exist: úDestination already exists: rí  Úxbr7  r   )r8  rÈ   r   r†  rG  r9  )r!   rñ   rå   rî   r    rì   r‰   ró   rë   rï   rø  rõ   r£  ÚshutilÚcopyfileobjÚcopystatÚcopy2r   rQ  rR  )	r.  rÈ   r   rè  r  r   Údestination_pathrÀ  rÿ  s	            r    Ú	copy_filer  *  s�  € Ø,=Ði•. Ñ(Ô(Ð(À6×CVÒCVÐW]ÐdhÐCVÑCiÔCi€KØ×ÒÑ Ô ð RÝÐ PÀ;Ð PÐ PÑQÔQÐQØ×*Ò*¨;Ñ7Ô7ÐØ×ÒÑ Ô ð -Ø˜KÔ,Ñ,ÐØ×+Ò+Ð,<Ñ=Ô=ÐØÔ"×)Ò)Ñ+Ô+ð dÝÐ bÐIYÔI`Ð bÐ bÑcÔcÐcØ×ÒÑ Ô ð Q¨ð QÝÐOÐ=MÐOÐOÑPÔPÐPØ×ÒÐ*Ñ+Ô+ð 4Ø×Ò˜dÑ#Ô#ð 	/ vÐ/?×/DÒ/DÀTÑ/JÔ/Jð 	/ÈfÝÔ˜v vÑ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/åŒ˜Ð%5Ñ6Ô6Ð6Ð6åŒ�[Ð"2Ñ3Ô3Ð3Ø­¨KÑ(8Ô(8Å#ÐFVÑBWÔBWÐeuÔezð  K[÷  K`ò  K`ñ  Kbô  Kbô  Kjð  uwð  xð  xð  xs6   ÄE(Ä/EÅE(ÅE	ÅE(ÅE	ÅE(Å(E,Å/E,c                óÔ  ‡ — ‰                       |¦  «        }|                     ¦   «         s%t          d‰                      |¦  «        › �¦  «        ‚‰                      |¦  «        }|                     ¦   «         r
||j        z  }‰                      |¦  «        }||k    rt          d¦  «        ‚|                     ¦   «         r%t          d‰                      |¦  «        › �¦  «        ‚|j
                             ¦   «         s*t          d‰                      |j
        ¦  «        › �¦  «        ‚|                     ¦   «         rt          ||¦  «        rt          d¦  «        ‚|                     ¦   «         rdnd}‰                      |¦  «        r\|dk    r0t          j        ||dˆ fd	„¬
¦  «         t          j        |¦  «         nUt!          ‰ ||¦  «         |                     ¦   «          n/t          j        t'          |¦  «        t'          |¦  «        ¦  «         dt'          |¦  «        t'          |¦  «        |j        ||                     ¦   «         r|                     ¦   «         j        nd ddœS )NzSource does not exist: z)Source and destination are the same path.r  r
  z*A directory cannot be moved inside itself.rà   r¬   Tc                óf   •— t          ‰t          | ¦  «        t          |¦  «        ¦  «        d         S )Nr   )r  r   )rÈ   rž   r.  s     €r    r§   zmove_path.<locals>.<lambda>R  s_   ø€ ÕoxÐyõ  BFð  GMñ  BNô  BNõ  PTð  U[ñ  P\ô  P\ñ  p]ô  p]ð  ^dô  pe€ r"   )ÚsymlinksÚcopy_functionr7  r   )r8  rÈ   r   r†  rF  rG  r9  )r÷   rï   rî   r±   r    rì   r‰   ró   r   rø  rë   r6   rõ   r  ÚcopytreeÚrmtreer  ÚunlinkÚmover   rå   rQ  rR  )r.  rÈ   r   r   r  Ú	item_types   `     r    Ú	move_pathr  ?  sä  ø€ Ø×)Ò)¨&Ñ1Ô1€KØ×ÒÑÔð aÝÐ _¸&×:PÒ:PÐQ\Ñ:]Ô:]Ð _Ð _Ñ`Ô`Ð`Ø×*Ò*¨;Ñ7Ô7ÐØ×ÒÑ Ô ð -Ø˜KÔ,Ñ,ÐØ×+Ò+Ð,<Ñ=Ô=ÐØÐ&Ò&Ð&ÝÐDÑEÔEÐEØ×ÒÑ Ô ð iÝÐg¸V×=SÒ=SÐTdÑ=eÔ=eÐgÐgÑhÔhÐhØÔ"×)Ò)Ñ+Ô+ð |ÝÐ zÈ×I_ÒI_Ð`pÔ`wÑIxÔIxÐ zÐ zÑ{Ô{Ð{Ø×ÒÑÔð G¥Ð(8¸+Ñ FÔ Fð GÝÐEÑFÔFÐFØ*×1Ò1Ñ3Ô3Ð?��¸€IØ×ÒÐ*Ñ+Ô+ð =Ø˜Ò#Ð#ÝŒO˜KÐ)9ÀDð  Yeð  Yeð  Yeð  Yeð  fñ  fô  fð  fÝŒM˜+Ñ&Ô&Ð&Ð&å�f˜kÐ+;Ñ<Ô<Ð<Ø×ÒÑ Ô Ð Ð åŒ•C˜Ñ$Ô$¥cÐ*:Ñ&;Ô&;Ñ<Ô<Ð<Ø­¨KÑ(8Ô(8Å#ÐFVÑBWÔBWÐeuÔezð  ENð  AQ÷  AYò  AYñ  A[ô  A[ð  ^eð  ^n÷  ^sò  ^sñ  ^uô  ^uô  ^}ð  ^}ð  aeð  prð  sð  sð  sr"   c                ó8  — |                       |¦  «        }|                     ¦   «         s%t          d|                      |¦  «        › �¦  «        ‚|                     ¦   «         rdnd}|                     ¦   «         r^t          |                     ¦   «         ¦  «        r|st          d¦  «        ‚|rt          j	        |¦  «         n)| 
                    ¦   «          n|                     ¦   «          dt          |¦  «        |j        |t          |o|dk    ¦  «        dddœS )	Nré   rà   r¬   zIDirectory is not empty; set recursive=true to delete it and its contents.r7  Tr   )r8  r   r†  rF  r0  Údeletedr9  )r÷   rï   rî   r±   rì   rÓ   ÚiterdirrÔ   r  r  Úrmdirr  r   r‰   r2   )r.  r   r0  rž   r  s        r    Údelete_pathr!  \  s<  € Ø×$Ò$ TÑ*Ô*€FØ�=Š=‰?Œ?ð ZÝÐ X¸×8NÒ8NÈvÑ8VÔ8VÐ XÐ XÑYÔYÐYØ%Ÿ}š}™œÐ:��°F€IØ‡}‚}�„ð Ýˆv�~Š~ÑÔÑ Ô ð 	g¨ð 	gÝÐeÑfÔfÐfØð 	ÝŒM˜&Ñ!Ô!Ð!Ð!à�LŠL‰NŒNˆNˆNà�Š‰ŒˆØ¥c¨&¡k¤k¸v¼{ÐT]ÕlpÐqzð  rXð  @Ið  MXò  @Xñ  mYô  mYð  fjð  uwð  xð  xð  xr"   c                óô   — |                       ¦   «         s| S t          dd¦  «        D ]@}|                      | j        › d|› | j        › �¦  «        }|                      ¦   «         s|c S ŒAt          d| › �¦  «        ‚)NrM   i'  r8   z0Unable to choose an unused ZIP filename beside: )rï   rO   Ú	with_nameÚstemrê   rø  )r   rX   ræ   s      r    Ú_available_zip_pathr%  m  s’   € Ø�;Š;‰=Œ=ð ØˆÝ�q˜%‘”ð ð ˆØ—N’N d¤iÐ#FÐ#F°%Ð#F¸¼Ð#FÐ#FÑGÔGˆ	Ø×ÒÑ!Ô!ð 	ØÐÐÐð	å
ÐSÈTÐSÐSÑ
TÔ
TÐTr"   rÉ   ú
list[Path]c                óP  — t          | ¦  «        dk    r7| d                              ¦   «         r| d         j        n| d         j        › d�S d„ | D ¦   «         }t          |¦  «        dk    r&t	          t          |¦  «        ¦  «        j        pd› d�ndt          j        d¦  «        › d�S )NrL   r   ú.zipc                ó   — h | ]	}|j         ’Œ
S rJ   ©rë   ©rF   rÈ   s     r    rx   z_zip_name.<locals>.<setcomp>z  s   € Ð3Ð3Ð3 ˆvŒ}Ð3Ð3Ð3r"   ÚarchiveÚarchive_z%Y%m%d_%H%M%S)rP   rå   r$  r‰   r�   rP  ÚtimeÚstrftime)rÉ   rê  s     r    Ú	_zip_namer0  w  sÀ   € Ý
ˆ7�|„|�qÒÐØ%,¨Q¤Z×%7Ò%7Ñ%9Ô%9ÐN�'˜!”*”/�/¸wÀq¼z¼ÐTÐTÐTÐTØ3Ð3¨7Ð3Ñ3Ô3€GÝ=@À¹\¼\ÈQÒ=NÐ=N�d•4˜‘=”=Ñ!Ô!Ô&Ð3¨)Ð9Ð9Ð9Ð9ð  UDÕ_cÔ_lÐm|Ñ_}Ô_}ð  UDð  UDð  UDð  Dr"   ú	list[str]Úauthorized_sourcesúset[str] | Nonec           
     óÔ
  — t          |t          ¦  «        r|st          d¦  «        ‚d„ |pt          ¦   «         D ¦   «         }g }|D ]i}t	          |¦  «        }|                     t          j                             t          |¦  «        ¦  «        |v r|n|  
                    |¦  «        ¦  «         Œjt          d„ |D ¦   «         ¦  «        rt          d¦  «        ‚t          |¦  «        }t          |pd¦  «                             ¦   «         rN|                      |¦  «        }	|	                     ¦   «         s|	j                             ¦   «         dk    r|	|z  n|	}
nkd„ |D ¦   «         }t'          |¦  «        dk    rt)          t+          |¦  «        ¦  «        nd }|�|                      ||z  ¦  «        r|n| j        d	         }||z  }
|                      t3          |
¦  «        ¦  «        }
|
j                             ¦   «         st          d
|
j        › �¦  «        ‚|
                     d|
j        › dt;          j        ¦   «         j        › d�¦  «        }	 tA          t          j         !                    d„ |D ¦   «         ¦  «        ¦  «        }n# t          $ r d }Y nw xY wt          ¦   «         }	 tE          j#        |dtD          j$        d¬¦  «        5 }|D �]£}| %                    ¦   «         r|fnd„ | &                    d¦  «        D ¦   «         }|D �]f}t          j                             t          t	          |¦  «        ¦  «        ¦  «        |v rt	          |¦  «        n|  
                    |d¬¦  «        }||
|hv rŒk	 |�6t          | '                    |¦  «        ¦  «         (                    dd¦  «        n|j        }n# t          $ r
 |j        }Y nw xY wd|v r| )                    dd¦  «        n|df\  }}|d}}| *                    ¦   «         |v r+|› d|› |rd|z   nd› �}|dz  }| *                    ¦   «         |v °+| +                    | *                    ¦   «         ¦  «         | ,                    ||¦  «         �Œh�Œ¥	 d d d ¦  «         n# 1 swxY w Y   |  -                    |
¦  «        rt          j.        ||
¦  «         nt          j(        ||
¦  «         | /                    ¦   «         r| 0                    ¦   «          n.# | /                    ¦   «         r| 0                    ¦   «          w w xY wdt          |
¦  «        |
j        t'          |¦  «        t'          |¦  «        |
 1                    ¦   «         j2        ddœS )Nz"sources must be a non-empty array.c           	     ó€   — h | ];}t           j                             t          t	          |¦  «        ¦  «        ¦  «        ’Œ<S rJ   )r)   r   r*   r   r!   r  s     r    rx   zzip_files.<locals>.<setcomp>�  s8   € ÐfÐfÐfÀ$•"”'×"Ò"¥3¥~°dÑ';Ô';Ñ#<Ô#<Ñ=Ô=ÐfÐfÐfr"   c              3  ó@   K  — | ]}|                      ¦   «          V — Œd S r'   )rï   r+  s     r    rŠ   zzip_files.<locals>.<genexpr>†  s-   è è € Ð
:Ð
: 6ˆv�}Š}‰ŒÐÐ
:Ð
:Ð
:Ð
:Ð
:Ð
:r"   z%One or more ZIP sources do not exist.r   r(  c                ó   — h | ]	}|j         ’Œ
S rJ   r*  r+  s     r    rx   zzip_files.<locals>.<setcomp>�  s   € Ð<Ð<Ð< V�6”=Ð<Ð<Ð<r"   rL   r   z*ZIP destination directory does not exist: r«   z.partc                ó6   — g | ]}t          |j        ¦  «        ‘ŒS rJ   )r   rë   r+  s     r    rH   zzip_files.<locals>.<listcomp>–  s"   € Ð.]Ð.]Ð.]Àf­s°6´=Ñ/AÔ/AÐ.]Ð.]Ð.]r"   rå  T)ÚcompressionÚ
allowZip64c              3  óB   K  — | ]}|                      ¦   «         ¯|V — Œd S r'   rä   )rF   r¦   s     r    rŠ   zzip_files.<locals>.<genexpr>�  s4   è è € Ð;qÐ;qÀTÐbf×bnÒbnÑbpÔbpÐ;q¸DÐ;qÐ;qÐ;qÐ;qÐ;qÐ;qr"   r+  rÈ  rB   rC   rM   r8   r7  )r8  r   r†  Úsource_countÚ
file_countrG  r9  )3r›   rÏ   r   r(   r!   r,   r)   r   r*   r   rñ   rÓ   rî   r0  r   r    rì   rê   r;   rP   r�   rP  rß   r^   ró   r%  rë   r#  r‰   ÚuuidÚuuid4Úhexr   r5   ÚzipfileÚZipFileÚZIP_DEFLATEDrå   rO  r®   rŒ   ÚrsplitrR   r+   rú  rõ   Úlinkrï   r  rQ  rR  )r.  rÉ   r   r2  Ú
authorizedÚsource_pathsrÈ   r¶   Údefault_nameÚ	requestedrž   rê  Úsame_parentÚdefault_folderÚ	temp_pathÚcommon_baseÚnamesr,  rà  r¦   Úarchive_nameÚ	base_namerê   Úunique_namerX   s                            r    Ú	zip_filesrR  ~  sp  € Ý�g�tÑ$Ô$ð ?¨Gð ?ÝÐ=Ñ>Ô>Ð>ØfÐfÐJ\ÐJeÕ`cÑ`eÔ`eÐfÑfÔf€JØ€LØð xð xˆÝ! &Ñ)Ô)ˆØ×Ò­¬×(8Ò(8½¸X¹¼Ñ(GÔ(GÈ:Ð(UÐ(U˜H˜HÐ[a×[nÒ[nÐouÑ[vÔ[vÑwÔwÐwÐwÝ
Ð
:Ð
:¨\Ð
:Ñ
:Ô
:Ñ:Ô:ð IÝÐ GÑHÔHÐHÝ˜\Ñ*Ô*€LÝ
ˆ;Ð˜"ÑÔ×#Ò#Ñ%Ô%ð /Ø×'Ò'¨Ñ4Ô4ˆ	Ø-6×-=Ò-=Ñ-?Ô-?ÐtÀ9ÔCS×CYÒCYÑC[ÔC[Ð_eÒCeÐCe�˜\Ñ)Ð)Ðktˆˆà<Ð<¨|Ð<Ñ<Ô<ˆÝ-0°©\¬\¸QÒ->Ð->•d�4 ™=œ=Ñ)Ô)Ð)ÀDˆØ(3Ð(?ÀF×DTÒDTÐU`ÐcoÑUoÑDpÔDpÐ(?˜˜Ðv|ô  wJð  KLô  wMˆØ ,Ñ.ˆØ×!Ò!Õ"5°fÑ"=Ô"=Ñ>Ô>€FØŒ=×ÒÑ!Ô!ð ^ÝÐ \ÈVÌ]Ð \Ð \Ñ]Ô]Ð]Ø× Ò Ð!J V¤[Ð!JÐ!Jµ4´:±<´<Ô3CÐ!JÐ!JÐ!JÑKÔK€IðÝ�2œ7×-Ò-Ð.]Ð.]ÐP\Ð.]Ñ.]Ô.]Ñ^Ô^Ñ_Ô_ˆˆøÝð ð ð Øˆˆˆðøøøå‰EŒE€EðÝŒ_˜Y¨½Ô9MÐZ^Ð_Ñ_Ô_ð 	5ÐcjØ&ð 5ñ 5�Ø%+§^¢^Ñ%5Ô%5Ðq˜˜	˜	Ð;qÐ;qÈVÏ\Ê\ÐZ]ÑM^ÔM^Ð;qÑ;qÔ;q�Ø!ð 5ñ 5�DÝ35´7×3CÒ3CÅCÍÐW[ÑH\ÔH\ÑD]ÔD]Ñ3^Ô3^ÐblÐ3lÐ3l�>¨$Ñ/Ô/Ð/Ðrx÷  sFò  sFð  GKð  RVð  sFñ  sWô  sW�DØ ¨	Ð2Ð2Ð2Ø ð1Ø`kÐ`w¥s¨4×+;Ò+;¸KÑ+HÔ+HÑ'IÔ'I×'QÒ'QÐRVÐX[Ñ'\Ô'\Ð'\ð  ~Bô  ~G˜˜øÝ%ð 1ð 1ð 1Ø'+¤y˜˜˜ð1øøøàGJÈlÐGZÐGZ¨×(;Ò(;¸CÀÑ(CÔ(CÐ(CÐamÐoqÐ`rÑ%�I˜vØ)5°q �KØ%×.Ò.Ñ0Ô0°EÐ9Ð9Ø)2Ð&\Ð&\°UÐ&\ÈFÐ<Z¸CÀ&¹L¸LÐXZÐ&\Ð&\˜Ø ™
˜ð &×.Ò.Ñ0Ô0°EÐ9Ð9ð —I’I˜k×2Ò2Ñ4Ô4Ñ5Ô5Ð5Ø—M’M $¨Ñ4Ô4Ð4Ñ4ñ5ð5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð$ ×Ò˜fÑ%Ô%ð 	*ÝŒG�I˜vÑ&Ô&Ð&Ð&åŒJ�y &Ñ)Ô)Ð)à×ÒÑÔð 	Ø×ÒÑÔÐøøð ×ÒÑÔð 	Ø×ÒÑÔÐÐð	øøøà­S°©[¬[ÀfÄkÕcfÐgsÑctÔctõ  EHð  INñ  EOô  EOð  _e÷  _jò  _jñ  _lô  _lô  _tð  Að  Bð  Bð  Bsi   É6J ÊJÊJÊ$"S/ ËB)Q;Í0?N0Î/Q;Î0O	ÏQ;ÏO	ÏB*Q;Ñ/S/ Ñ;Q?Ñ?S/ ÒQ?ÒAS/ Ó/+Tc           	     óø  — t          |t          ¦  «        st          d¦  «        ‚|rt          |¦  «        n|                      |d¬¦  «        }|                     ¦   «         st          d|› �¦  «        ‚t          j        |¦  «        s%t          d|  	                    |¦  «        › �¦  «        ‚t          |pd¦  «                             ¦   «         r|                      |¦  «        }nT|                     d¦  «        }|                      |                      |¦  «        r|n| j        d         |j        z  ¦  «        }|                     ¦   «         r9|                     ¦   «         s%t'          d|  	                    |¦  «        › �¦  «        ‚g }d}	t          j        |d	¦  «        5 }
t+          ¦   «         }|
                     ¦   «         D �]¶}|j                             d
d¦  «        }t3          |¦  «        }|j        sŒ5|                     ¦   «         s"d|j        v st9          j        d|¦  «        sd|v rt          d|j        › �¦  «        ‚t=          j        |j         dz	  ¦  «        rt          d|j        › �¦  «        ‚|j!        dz  rt          d|j        › �¦  «        ‚ |j"        |j        Ž  #                    ¦   «         }tI          ||¦  «        st          d|j        › �¦  «        ‚ddl%m&} t          | |¦  «        r|                      |¦  «         ||k    rt          d¦  «        ‚tN          j(         )                    t          |¦  «        ¦  «        }||v rt          d|j        › �¦  «        ‚| *                    |¦  «         |                     ¦   «         p| +                    d¦  «        }|rM|                     ¦   «         r9|                     ¦   «         s%t'          d|  	                    |¦  «        › �¦  «        ‚|sO|                     ¦   «         r;|                     ¦   «         s|s%t'          d|  	                    |¦  «        › �¦  «        ‚|s|                     ¦   «         r|	dz  }	| ,                    |||f¦  «         �Œ¸d„ |D ¦   «         }|D ]ª\  }}}|j-        D ]œ}||k    r n“tN          j(         )                    t          |¦  «        ¦  «        |v rt          d|j        › �¦  «        ‚|                     ¦   «         r9|                     ¦   «         s%t'          d|  	                    |¦  «        › �¦  «        ‚Œ�Œ«| .                    dd¬¦  «         |D ]Ã\  }}}|r| .                    dd¬¦  «         Œ |j/         .                    dd¬¦  «         |
 0                    |d	¦  «        5 }| 0                    |  1                    |¦  «        rdnd¦  «        5 }te          j3        ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   ŒÄ	 d d d ¦  «         n# 1 swxY w Y   d „ |D ¦   «         }d!t          |¦  «        t          |¦  «        ti          |¦  «        tk          d"„ |D ¦   «         ¦  «        |	dd#œS )$Nzoverwrite must be a boolean.TrÈ  z$ZIP source is not an existing file: z Source is not a valid ZIP file: r   r   z$ZIP destination is not a directory: r¸  rB   rC   z..z
^[A-Za-z]:ú zUnsafe ZIP member path: é   z%ZIP symlink entries are not allowed: rL   z)Encrypted ZIP entries are not supported: z$ZIP member escapes the destination: )ÚPrimeFileAccessPolicyz.A ZIP cannot overwrite its own source archive.z*ZIP contains duplicate destination paths: z/ZIP directory conflicts with an existing file: z%ZIP file destination already exists: c                ór   — h | ]4\  }}}|°t           j                             t          |¦  «        ¦  «        ’Œ5S rJ   r  )rF   Ú_memberrž   Úis_directorys       r    rx   zunzip_file.<locals>.<setcomp>ë  s;   € ÐvÐvÐvÑ;X¸7ÀFÈLÐiuÐv�œ×)Ò)­#¨f©+¬+Ñ6Ô6ÐvÐvÐvr"   z"ZIP file/directory path conflict: z1ZIP parent path conflicts with an existing file: ré  r  Úwbc                ó   — g | ]
\  }}}|°|‘ŒS rJ   rJ   )rF   ÚmemberÚ_targetrY  s       r    rH   zunzip_file.<locals>.<listcomp>þ  s$   € ÐSÐSÐSÑ5˜ ¨ÀlÐSˆVÐSÐSÐSr"   r7  c              3  ó$   K  — | ]}|j         V — Œd S r'   )Ú	file_size)rF   r\  s     r    rŠ   zunzip_file.<locals>.<genexpr>ÿ  sS   è è € ð  Ekð  Ekð  [að  FLô  FVð  Ekð  Ekð  Ekð  Ekð  Ekð  Ekr"   )r8  rÈ   r   r=  rG  Úoverwritten_countr9  )6r›   r2   r   r!   rñ   rå   rî   rA  Ú
is_zipfiler±   r   r   ró   Úwith_suffixrß   r^   r$  rï   rì   rø  rB  r(   Úinfolistr†  rŒ   r   rN   r™   r9   rš   rQ  ÚS_ISLNKÚexternal_attrÚ	flag_bitsr’   r   r6   Úshared.deepy.prime_filesystemrV  r)   r   r*   r+   rÒ   r,   rê  rù  rë   r£  rõ   r  r  rP   r¦  )r.  rÈ   r   rè  r  r   r  Úbeside_sourceÚplansr`  r,  r.   r\  Úmember_nameÚmember_pathrž   rV  r/   rY  Úplanned_filesÚ_is_directoryrë   rÀ  rÿ  rà  s                            r    Ú
unzip_filern  ·  s÷  € Ý�i¥Ñ&Ô&ð 9ÝÐ7Ñ8Ô8Ð8Ø,=Ði•. Ñ(Ô(Ð(À6×CVÒCVÐW]ÐdhÐCVÑCiÔCi€KØ×ÒÑ Ô ð VÝÐ TÀ{Ð TÐ TÑUÔUÐUÝÔ˜kÑ*Ô*ð cÝÐa¸F×<RÒ<RÐS^Ñ<_Ô<_ÐaÐaÑbÔbÐbÝ
ˆ;Ð˜"ÑÔ×#Ò#Ñ%Ô%ð QØ!×/Ò/°Ñ<Ô<ÐÐà#×/Ò/°Ñ3Ô3ˆØ!×/Ò/À×AQÒAQÐR_ÑA`ÔA`ð  1P°°ÐflÔfyÐz{Ôf|ð  @Kô  @Pñ  gPñ  Qô  QÐØ×ÒÑ Ô ð qÐ)9×)@Ò)@Ñ)BÔ)Bð qÝÐoÀV×E[ÒE[Ð\lÑEmÔEmÐoÐoÑpÔpÐpà€EØÐÝ	Œ˜ cÑ	*Ô	*ð 33¨gÝ‰uŒuˆØ×&Ò&Ñ(Ô(ð 	9ñ 	9ˆFØ œ/×1Ò1°$¸Ñ<Ô<ˆKÝ'¨Ñ4Ô4ˆKØÔ$ð ØØ×&Ò&Ñ(Ô(ð O¨D°KÔ4EÐ,EÐ,EÍÌÐR_ÐalÑImÔImÐ,EÐquð  zEð  rEð  rEÝ Ð!M¸F¼OÐ!MÐ!MÑNÔNÐNÝŒ|˜FÔ0°BÑ6Ñ7Ô7ð \Ý Ð!ZÈÌÐ!ZÐ!ZÑ[Ô[Ð[ØÔ !Ñ#ð `Ý Ð!^ÈVÌ_Ð!^Ð!^Ñ_Ô_Ð_Ø.Ð%Ô.°Ô0AÐB×JÒJÑLÔLˆFÝ˜6Ð#3Ñ4Ô4ð [Ý Ð!YÈÌÐ!YÐ!YÑZÔZÐZØKÐKÐKÐKÐKÐKÝ˜&Ð"7Ñ8Ô8ð -Ø×$Ò$ VÑ,Ô,Ð,Ø˜Ò$Ð$Ý Ð!QÑRÔRÐRÝ”'×"Ò"¥3 v¡;¤;Ñ/Ô/ˆCØ�dˆ{ˆ{Ý Ð!_ÈfÌoÐ!_Ð!_Ñ`Ô`Ð`Ø�HŠH�S‰MŒMˆMØ!Ÿ=š=™?œ?ÐG¨k×.BÒ.BÀ3Ñ.GÔ.GˆLØð z §¢¡¤ð z¸¿º¹¼ð zÝ%Ð&xÐX^×XnÒXnÐouÑXvÔXvÐ&xÐ&xÑyÔyÐyØð p F§M¢M¡O¤Oð p¸¿º¹¼ð pÐPYð pÝ%Ð&nÈf×NdÒNdÐekÑNlÔNlÐ&nÐ&nÑoÔoÐoØð ' F§N¢NÑ$4Ô$4ð 'Ø! QÑ&Ð!Ø�LŠL˜& &¨,Ð7Ñ8Ô8Ð8Ñ8àvÐvÐ\aÐvÑvÔvˆØ-2ð 	@ð 	@Ñ)ˆF�F˜MØ œ.ð @ð @�ØÐ-Ò-Ð-Ø�EÝ”7×#Ò#¥C¨¡K¤KÑ0Ô0°MÐAÐAÝ$Ð%[È&Ì/Ð%[Ð%[Ñ\Ô\Ð\Ø—=’=‘?”?ð @¨6¯=ª=©?¬?ð @Ý)Ð*~Ð^d×^tÒ^tÐu{Ñ^|Ô^|Ð*~Ð*~ÑÔÐøøà×Ò t°dÐÑ;Ô;Ð;Ø,1ð 	3ð 	3Ñ(ˆF�F˜LØð Ø—’ T°D�Ñ9Ô9Ð9ØØŒM×Ò¨°tÐÑ<Ô<Ð<Ø—’˜f cÑ*Ô*ð 3¨f°f·k²kÈ&×J\ÒJ\Ð]cÑJdÔJdÐBnÀ$À$ÐjnÑ6oÔ6oð 3ÐsyÝÔ" 6¨6Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3øð	3ð[33ð 33ð 33ñ 33ô 33ð 33ð 33ð 33ð 33ð 33ð 33øøøð 33ð 33ð 33ð 33ðj TÐS¸ÐSÑSÔS€EØ­¨KÑ(8Ô(8Å#ÐFVÑBWÔBWÕgjÐkpÑgqÔgqõ  BEð  Ekð  Ekð  ejð  Ekñ  Ekô  Ekñ  Bkô  Bkð  BSð  ^`ð  að  að  as[   ÆO?XÖ-X×W-	×!X×-W1×1X×4W1×5X×8XØXØXØXØXØX!Ø$X!z„List authorized roots or a page of directory entries. When has_more is true, repeat the same filters with offset set to next_offset.rd   ÚobjectÚstringz)Directory; omit to list authorized roots.)rF  ÚdescriptionzFilename glob.)rF  rw  rq  )r-  r>  r@  r=  r<  r?  zjImplicit extension filter. Typed filters return files only; other excludes supported media and .txt files.)rF  Úenumrw  rq  Úboolean)rF  rw  Úintegerz\Maximum entries to return; Deepy may shorten the page to fit its context-safe output budget.zPEntry offset; preserve the previous filters and use its next_offset to continue.)r   r/  r4  r0  r1  r3  )rF  Ú
properties)rq  ÚaccessÚ
parametersz*Return file, directory, or media metadata.Úalwaysz$Authorized path or Gallery media id.)rF  ru  ÚrequiredzŽRead a 1-based line range from a UTF-8 text file. Use next_line to continue and eof to distinguish a completed range from the end of the file.rF  )rF  rr  rw  )r   rÅ  rÆ  rº  )rF  ru  ry  ÚadditionalPropertiesz8Search authorized UTF-8 files and return matching lines.)r   rÕ  r/  r0  rÖ  r×  r1  zOCreate, overwrite, or append literal UTF-8 text already present in the request.rú  rç  )r   r   r]   rº  zCreate an authorized directory.z2Copy an authorized file to a writable destination.)rÈ   r   rè  zGMove an authorized writable file or directory to an unused destination.)rÈ   r   zmPermanently delete an authorized writable file or directory; recursive is required for a non-empty directory.)r   r0  z9Create a persistent ZIP from authorized files or folders.Úarrayz&Authorized paths or Gallery media ids.)rF  rÎ   rq  z9Optional folder/.zip path; plain paths use video outputs.)rÉ   r   zgSafely extract an authorized ZIP into a writable directory without replacing existing files by default.zAuthorized ZIP file path.z|Optional extraction directory; defaults to a folder named after the ZIP beside it when writable, otherwise in video outputs.z9Create a session-long download link for an existing file.z)Authorized file path or Gallery media id.)rÏ   r¢  rÓ  râ  r  rù  Úcopyr  Údeleter~   ÚunzipÚdownloadÚdownloads_enabledrø   c                óè   — g }t                                ¦   «         D ]U\  }}|d         }|dk    r|r|dk    r| j        r|dk    r| j        sŒ0|                     ||d         |d         dœ¦  «         ŒV|S )Nrv  r  rd   rú  rq  rw  )r‰   rq  rw  )Ú
IO_ACTIONSrÎ   ri   rk   r,   )r.  r€  Úactionsr‰   Ú
definitionrv  s         r    Úavailable_io_actionsr…    s§   € Ø€GÝ&×,Ò,Ñ.Ô.ð yð yÑˆˆjØ˜HÔ%ˆØ�:ÒÐÐ&7Ð¸6ÀVÒ;KÐ;KÐTZÔTgÐ;KÐkqÐu|Òk|Ðk|ð  FLô  FZÐk|ØØ�Š °ZÀÔ5NÐ^hÐiuÔ^vÐwÐwÑxÔxÐxÐxØ€Nr"   )r½  r\   r‚  r…  r*  r  r!  r¶  rX  r  r  rÁ  rÓ  râ  rn  r  rR  )r   r   r   r   )r#   r$   r   r%   )r   r   r1   r   r   r2   r  )r   r   r>   r?   r   r   )r
  r  r	  r2   r   r\   )r   r+  Fr,  r   r-  )r.  r\   r   r   r/  r   r0  r2   r1  r2  r3  r2  r4  r   r   r5  )r   r   r   rY  )r   r   r   r_  )rg  r5  r   r5  )r   r   r4  r   r   r5  )r   r   r   r5  r'   )r   r   r.  r©  r   r5  )r   r   r   r5  )rL   Nr   )r.  r\   r   r   rÅ  r2  rÆ  r_  rº  r   r   r5  )r+  FFFrÔ  )r.  r\   r   r   rÕ  r   r/  r   r0  r2   rÖ  r2   r×  r2   r1  r2  r   r5  )rã  r   )r.  r\   r   r   r   r   r]   r   rº  r   r   r5  )r.  r\   r   r   r   r5  )FF)r.  r\   rÈ   r   r   r   rè  r2   r  r2   r   r5  )r.  r\   rÈ   r   r   r   r   r5  )F)r.  r\   r   r   r0  r2   r   r5  )r   r   r   r   )rÉ   r&  r   r   )r   N)
r.  r\   rÉ   r1  r   r   r2  r3  r   r5  )r   FF)T)r.  r\   r€  r2   r   rø   )?Ú
__future__r   rí   rû  r²  r)   r9   r  rQ  r.  r>  rA  Údataclassesr   Úpathlibr   r   Útypingr   r•  ÚPILr   Úshared.deepy.image_channelsr	   Úshared.deepy.media_registryr
   Úshared.utils.video_decoder   r½  rÝ  rÃ  rÑ   r!   r0   r6   r=   rY   r\   r*  rX  r]  ra  rf  r{  r�  r¨  r¶  rÁ  rÄ  rÓ  râ  r  r  r  r  r!  r%  r0  rR  rn  r‚  r…  Ú__all__rJ   r"   r    ú<module>r�     sÝ  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø :Ð :Ð :Ð :Ð :Ð :ð €Ø(Ð Ø˜KÐ(€ØnÐnÐn€
ð-ð -ð -ð -ðð ð ð ðð ð ð ðYð Yð Yð Yð?ð ?ð ?ð ?ð  €�$ÐÑÔðr
ð r
ð r
ð r
ð r
ñ r
ô r
ñ Ôðr
ðj afð $|ð $|ð $|ð $|ð $|ð $|ðN#Rð #Rð #Rð #Rð #RðLð ð ð ðð ð ð ðð ð ð ðOð Oð Oð Oðð ð ð ð2Cð Cð Cð CðMð Mð Mð Mð Mð*Sð Sð Sð Sð&ð ð ð ð\ð \ð \ð \ð \ð<Tð Tð Tð Tð Tð<tð tð tð tð tð8[ð [ð [ð [ðxð xð xð xð xð*sð sð sð sð:xð xð xð xð xð"Uð Uð Uð UðDð Dð Dð Dð6Bð 6Bð 6Bð 6Bð 6BðrHað Hað Hað Hað HaðX cð  ouð  NVð  x@ð  Q|ð  o}ð  o}ð  S[ð  hkð  |Lð  JMð  JMð  fnð  xjð  xjð  xjð  w|ð  My	ð  ]z	ð  ]z	ð  R
[
ð  h
m
ð  I
n
ð  I
n
ð  BKð  X[ð  lJð  y
Kð  y
Kð  `ið  vwð  HZð  W[ð  W[ð  f\ð  f\ð  E]ð  E]ð  ^ð  ^ØHÐT\Ðu}ð  OWð  bjð  {að  Ybð  Ybð  Ncð  rzð  q{ð  m|ð  m|ð  }ð  }ð "rð  ~Dð  ]eð  Eð  GOð  ~Pð  irð  @ð  `Að  `Að  PVð  Xað  Obð  yAð  LSð  U`ð  Kað  nyð  pzð  pzð  u{ð  u{ð  JPð  IQð  kpð  Tqð  Tqð  rð  rØ#]Ðioð  IQð  kqð  s{ð  j|ð  HNð  PXð  GYð  owð  DGð  Xhð  fið  fið  AJð  W\ð  x]ð  x]ð  qzð  GLð  hMð  hMð  jsð  @Eð  aFð  aFð  Zcð  psð  Qtð  Qtð  auð  auð  DJð  LSð  CTð  @Uð  @Uð  Vð  VØ"sð  @Gð  `hð  BHð  JRð  ASð  ^dð  fnð  ]oð  BJð  Tuð  Tuð  Tuð  BJð  yKð  yKð  bjð  u|ð  ~Ið  tJð  W^ð  Y_ð  Y_ð  x`ð  x`ð  ouð  w}ð  n~ð  Wð  Wð  @ð  @Ø>È'Ðjrð  DJð  MSð  U]ð  L^ð  C_ð  ntð  muð  bvð  bvð  wð  wØPÐ\cð  }Eð  iqð  Bhð  `ið  `ið  {Að  CKð  zLð  dmð  zð  [@ð  [@ð  UAð  UAð  PXð  Zgð  Ohð  tið  tið  jð  jØeÐqxð  RZð  v|ð  ~Fð  uGð  Y_ð  aið  Xjð  jkð  jkð  zBð  DQð  yRð  ISð  ISð  Tð  Tð Nð  Zað  zBð  \bð  dlð  [mð  ENð  [`ð  |að  |að  Rbð  Rbð  qwð  pxð  qyð  qyð  zð  zØVÐbið  CKð  pwð  CIð  KSð  BTð  eMð  gNð  gNð  hpð  A|ð  _}ð  _}ð  [~ð  [~ð  MVð  LWð  zXð  zXð  Yð  Yð Gð  SZð  s{ð  _gð  xSð  VTð  VTð  nvð  GEð  eFð  eFð  ^gð  tyð  Uzð  Uzð  K{ð  K{ð  JRð  ISð  jTð  jTð  Uð  UØ [Ðgoð  IQð  bjð  u}ð  Nyð  lzð  lzð  a{ð  JRð  ISð  @Tð  @Tð  Uð  Uðð €
ð ð ð ð ð ðð ð €€€r"   