Ë
    •KêjQ ã                  óB  — U d dl mZ g 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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mZ d dlmZ d dlmZmZmZmZmZmZm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.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6 e
jn                  dk(  rd dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> erd dl?m@Z@mAZA d dlmBZB d dlCmDZD  ejŠ                  d«      ZFdeGd<   ej�                  ZIdeGd<   e
j”                  j–                  dk(  ZLdeGd<    eMed«      xr* e
j”                  j–                  dk(  xr e
jœ                  dk  ZOdeGd<   ePeQz  ej¤                  eP   z  ej¤                  eQ   z  eSz  eTz  eUej¬                     z  dz  ZWdeGd<   eXeTeTf   ZYdeGd <   d!ZZd"eGd#<   d$Z[d%eGd&<   d'Z\d"eGd(<   d)Z]d%eGd*<   ej¼                  ej¾                  z   e`ed+d «      z   e`ed,d «      z  Zad"eGd-<   ejÄ                   e`ed.d «      z   e`ed+d «      z  Zcd"eGd/<   d0Zdd1eGd2<    eed3d4«      Zfd5eGd6<   d4Zgd"eGd7<   d8Zhd"eGd9<    G d:„ d;ejÒ                  «      Zj ej«       Zkd<eGd=<    G d>„ d?«      Zl el«       Zmd<eGd@<    G dA„ dB«      Zn en«       Zod<eGdC<   dDZpdEeGdF<   dGZqdEeGdH<    er«       ZsdIeGdJ<    G dK„ dL«      Zt G dM„ dNe«      Zu G dO„ dPe«      Zv edQ¬R«       G dS„ dT«      «       Zw et«       Zxd<eGdU<    G dV„ dWej¬                  «      Zy edQ¬R«       G dX„ dY«      «       Zz G dZ„ d[eU«      Z{ G d\„ d]e{¬^«      Z|d{d_„Z}	 	 	 	 	 	 	 	 	 	 d|d`„Z~d}da„Z G db„ dce«      Z€	 	 	 	 	 	 	 	 d~dd„Z�	 	 	 	 	 	 	 	 dde„Z‚	 	 	 	 	 	 	 	 d€df„Zƒd�dg„Z„d‚dh„Z…dƒdi„Z†d„dj„Z‡d…dk„Zˆe
jn                  dk(  rd†dl„Z‰d‡dm„ZŠdˆdn„Z‹d‰do„ZŒd…dp„Z�d dqœdŠdr„ZŽd‹ds„Z�edŒdt„«       Z�ed�du„«       Z‘dŽdv„Z’d�dw„Z“d�dx„Z” e*em«        e*eo«        e*ex«        e)e|«       eLr e
�j*                  e“«        eMed«      r e�j,                  e’¬y«       d]dzgZ—y)‘é    )Úannotations)Úcollectionszfilelock._errorzfilelock._identityÚhashlibÚ	itertoolsÚpathlibÚsecretsÚtempfileN)Údeque)ÚcontextmanagerÚsuppress)Ú	dataclassÚfield)Úcount)ÚTYPE_CHECKINGÚClassVarÚFinalÚLiteralÚ
NamedTupleÚ	TypeAliasÚcast)ÚWeakValueDictionary)ÚAcquireReturnProxyÚ_acquire_thread_lockÚ
_canonicalÚ_ensure_current_processÚ_fork_transitionÚ_raise_chained_errorsÚ_register_fork_classÚ_register_fork_objectÚ_register_owned_descriptorÚ%_resolve_lazy_imports_before_shutdownÚ_resolve_read_write_timeoutÚ_secondsÚ_timeout_behaviorÚ_unregister_owned_descriptor)ÚTimeout)Ú	host_nameÚowner_is_staleÚprocess_start_tokenÚwin32)Ú_directory_is_privateÚ_identity_atÚ_identity_of_fdÚ_make_private_directoryÚ_open_non_reparse_fdÚ_pinned)ÚCallableÚ	Generator)ÚSelf)ÚUnusedÚfilelockzFinal[logging.Logger]Ú_LOGGERzFinal[Callable[[], int]]Ú_GETPIDÚpypyzFinal[bool]Ú_IS_PYPYÚregister_at_forkÚcpython)é   é   Ú_NEEDS_CONNECTION_ESCROWr   Ú_ConnectionParameterÚ_DatabaseIdentityiÿ“5wz
Final[int]Ú_MAX_SQLITE_TIMEOUT_MSgš™™™™™¹?zFinal[float]Ú_CANCEL_POLL_INTERVALéF   Ú_UNSAFE_FORK_EXIT_STATUSgš™™™™™©?Ú_MAX_TRANSITION_WAITÚ
O_NOFOLLOWÚ
O_NONBLOCKÚ_DB_OPEN_FLAGSÚO_DIRECTORYÚ_DIRECTORY_FLAGSs   SQLite format 3 zFinal[bytes]Ú_SQLITE_MAGICé   é   zFinal[slice]Ú_FORMAT_VERSIONSÚ_HEADER_SIZEé   Ú_WAL_FORMAT_VERSIONc                  ó   — e Zd ZU dZded<   y)Ú_SQLiteTransitionContextr   ÚintÚdepthN)Ú__name__Ú
__module__Ú__qualname__rU   Ú__annotations__© ó    úY/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/filelock/_read_write.pyrS   rS   _   s   … Ø€Eˆ3„Nr[   rS   r   Ú_SQLITE_TRANSITION_CONTEXTc                  ó(   — e Zd Zdd„Z	 	 dd„Zdd„Zy)Ú_ConnectionEscrowc                óD   — t        j                  «       | _        d | _        y ©N)Ú	threadingÚRLockÚ_lockÚ
_functions©Úselfs    r\   Ú__init__z_ConnectionEscrow.__init__g   s   € Ü—_‘_Ó&ˆŒ
Øtxˆ�r[   c                ó   — t         sy | j                  5  | j                  €Îdd l}|j	                  d |j
                  «      }|j                  |j                  j                  |j                  «      j                  }|j                  |j                  j                  |j                  «      j                  }|�|€d}t        |«      ‚t        d ||«      «      t        d ||«      «      f| _        | j                  cd d d «       S # 1 sw Y   y xY w)Nr   z+CPython reference functions have no addressz$Callable[[sqlite3.Connection], None])r>   rd   re   ÚctypesÚ
PYFUNCTYPEÚ	py_objectr   Ú	pythonapiÚ	Py_IncRefÚc_void_pÚvalueÚ	Py_DecRefÚRuntimeError)rg   rj   Úfunction_typeÚincrement_addressÚdecrement_addressÚmsgs         r\   Ú	functionsz_ConnectionEscrow.functionsk   sé   € õ (ØØ�Z‰Zñ 	#Ø�‰Ð&Ûà &× 1Ñ 1°$¸×8HÑ8HÓ I�Ø$*§K¡K°×0@Ñ0@×0JÑ0JÈFÏOÉOÓ$\×$bÑ$bÐ!Ø$*§K¡K°×0@Ñ0@×0JÑ0JÈFÏOÉOÓ$\×$bÑ$bÐ!Ø$Ð,Ð0AÐ0IØG�CÜ& sÓ+Ð+äÐ?ÁÐO`ÓAaÓbÜÐ?ÁÐO`ÓAaÓbð#�”ð —?‘?÷	#÷ 	#ò 	#ús   ”C&DÄDc                ó6   — t        j                  «       | _        y ra   )rb   rc   rd   rf   s    r\   Ú_reset_after_fork_in_childz,_ConnectionEscrow._reset_after_fork_in_child€   s   € Ü—_‘_Ó&ˆ�
r[   N©ÚreturnÚNone)r{   úXtuple[Callable[[sqlite3.Connection], None], Callable[[sqlite3.Connection], None]] | None)rV   rW   rX   rh   rw   ry   rZ   r[   r\   r_   r_   f   s   „ óyð#à	aó#ô*'r[   r_   Ú_CONNECTION_ESCROWc                  óF   — e Zd Zdd„Zd	d„Zd
d„Zdd„Zdd„Zedd„«       Z	y)Ú_ForkedDatabaseRegistryc                óŽ   — t        j                  «       | _        t        «       | _        t        «       | _        d| _        d| _        y ©NF)rb   rc   rd   ÚsetÚ_pathsÚ_identitiesÚ_sqlite_usedÚ_all_paths_poisonedrf   s    r\   rh   z _ForkedDatabaseRegistry.__init__ˆ   s3   € Ü—_‘_Ó&ˆŒ
Ü),«ˆŒÜ36³5ˆÔØ!ˆÔØ#(ˆÕ r[   c                óþ   — | j                  |«      }| j                  5  | j                  }|xs$ || j                  v xs |d uxr || j                  v }d d d «       rrdnd|›d�}t        |«      ‚y # 1 sw Y   Œ!xY w)NzOReadWriteLock is unavailable in a PyPy fork child; exec or exit before using itzSQLite database zD was active across fork(); exec or exit before using it in the child)Úidentityrd   r‡   r„   r…   rr   )rg   Úpathr‰   Úall_paths_poisonedÚpoisonedrv   s         r\   Úraise_if_poisonedz)_ForkedDatabaseRegistry.raise_if_poisoned�   sž   € Ø—=‘= Ó&ˆØ�Z‰Zñ 	Ø!%×!9Ñ!9Ðà"Òt d¨d¯k©kÐ&9Òt¸hÈdÐ>RÒ>sÐW_Ðcg×csÑcsÐWsð ÷	ñ
 ñ &ñ bà'¨ xÐ/sÐtð ô
 ˜sÓ#Ð#ð ÷	ð 	ús   ž5A3Á3A<c                óv   — | j                   j                  |«       |�| j                  j                  |«       y y ra   )r„   Úaddr…   )rg   rŠ   r‰   s      r\   Úpoison_after_forkz)_ForkedDatabaseRegistry.poison_after_forkž   s1   € Ø�‰�‰˜ÔØÐØ×Ñ× Ñ  Õ*ð  r[   c                ób   — t         r| j                  5  d| _        d d d «       y y # 1 sw Y   y xY w©NT)r9   rd   r†   rf   s    r\   Únote_sqlite_usez'_ForkedDatabaseRegistry.note_sqlite_use£   s3   € ÝØ—‘ñ )Ø$(�Ô!÷)ð )ð ÷)ð )ús   “%¥.c                ó’   — t        j                  «       | _        | j                  xs t        xr | j
                  | _        d| _        y r‚   )rb   rc   rd   r‡   r9   r†   rf   s    r\   ry   z2_ForkedDatabaseRegistry._reset_after_fork_in_child¨   s6   € Ü—_‘_Ó&ˆŒ
Ø#'×#;Ñ#;Ò#_ÄÒ@^ÈT×M^ÑM^ˆÔ Ø!ˆÕr[   c                ór   — 	 | j                  «       }|j                  |j                  fS # t        $ r Y y w xY wra   )ÚstatÚOSErrorÚst_devÚst_ino)rŠ   Ústat_results     r\   r‰   z _ForkedDatabaseRegistry.identity­   s?   € ð	ØŸ)™)›+ˆKð ×!Ñ! ;×#5Ñ#5Ð5Ð5øô ò 	Ùð	ús   ‚* ª	6µ6Nrz   )rŠ   úpathlib.Pathr{   r|   )rŠ   r›   r‰   ú_DatabaseIdentity | Noner{   r|   )rŠ   r›   r{   rœ   )
rV   rW   rX   rh   r�   r�   r“   ry   Ústaticmethodr‰   rZ   r[   r\   r€   r€   ‡   s/   „ ó)ó$ó+ó
)ó
"ð
 ò6ó ñ6r[   r€   Ú_FORKED_DATABASESz
.filelock-z
Final[str]Ú_LINK_PREFIXzlock.dbÚ
_LINK_NAMEzFinal[set[_DatabaseIdentity]]Ú_SWEPT_DATABASESc                  óD   — e Zd Zd	d„Zd
d„Zdd„Zdd„Zd	d„Zdd„Zd	d„Z	y)Ú_ProbeDescriptorsc                ó€   — t        j                  «       | _        i | _        t	        «       | _        t        «       | _        y ra   )rb   ÚLockrd   Ú_inodesr
   Ú	_releasesr   Ú_leasesrf   s    r\   rh   z_ProbeDescriptors.__init__Á   s)   € Ü—^‘^Ó%ˆŒ
Ø>@ˆŒÜ(-«ˆŒÜ“wˆ�r[   c           
     óD  — 	 t        j                  |«      }|j                  |j                  f}| j
                  5  t        j                  |j                  «      r)| j                  j                  |«      x}r|j                  s
	 d d d «       y |j                  t        ||j                  j                  «       t        | j                   «      «      x}«       |j"                  j%                  |j&                  «       d d d «       |S # t        $ r Y y w xY w# 1 sw Y   S xY wra   )ÚosÚlstatr—   r˜   r™   rd   r–   ÚS_ISREGÚst_moder¦   ÚgetÚidleÚappendÚ_ProbeÚpopÚnextr¨   Úleasesr�   Úlease)rg   ÚdatabaseÚclaimedrš   r‰   ÚprobesÚadopteds          r\   Úadoptz_ProbeDescriptors.adoptÇ   sî   € ð	Ü!#§¡¨(Ó!3ˆKð &×,Ñ,¨k×.@Ñ.@Ð@ˆØ�Z‰Zñ 	-Ü—<‘< × 3Ñ 3Ô4ÀtÇ|Á|×GWÑGWÐX`ÓGaÐ=a¸VÐ=aÐjp×juÒjuØ÷	-ð 	-ð �N‰N¤f¨X°v·{±{·±Ó7HÌ$ÈtÏ|É|ÓJ\Ó&]Ð]˜7Ô^Ø�M‰M×Ñ˜gŸm™mÔ,÷		-ð
 ˆøô ò 	Ùð	ú÷	-ð
 ˆús$   ‚D »A
DÂA.DÄ	DÄDÄDc           
     óê  — t        j                  |«      }|j                  |j                  f}t	        ||«      }| j
                  5  | j                  j                  |t        «       «      x}j                  j                  ||f«       |j                  t        ||t        | j                  «      «      x}«       |j                  j                  |j                   «       d d d «       |S # 1 sw Y   S xY wra   )rª   Úfstatr˜   r™   r    rd   r¦   Ú
setdefaultÚ_InodeProbesÚdescriptorsr°   r±   r³   r¨   r´   r�   rµ   )rg   Úfdr·   rš   r‰   Útokenr¸   Úretaineds           r\   Úretainz_ProbeDescriptors.retainÖ   sÂ   € ÜŸX™X b›\ˆØ%×,Ñ,¨k×.@Ñ.@Ð@ˆÜ1°"°hÓ?ˆØ�Z‰Zñ 	.Ø—|‘|×.Ñ.¨x¼»ÓHÐHˆV×UÑU×\Ñ\Ð^`ÐbgÐ]hÔiØ�N‰N¤v¨h¸¼DÀÇÁÓ<NÓ'OÐO˜8ÔPØ�M‰M×Ñ˜hŸn™nÔ-÷	.ð ˆ÷		.ð ˆús   ÁBC(Ã(C2c                óZ   — | j                   j                  |«       | j                  «        y ra   )r§   r°   Údrain)rg   Úprobes     r\   Úreleasez_ProbeDescriptors.releaseà   s   € à�‰×Ñ˜eÔ$Ø�
‰
�r[   c                óÂ  — | j                   r´| j                  j                  d¬«      r—	 | j                   rE| j                  | j                   d   «       | j                   j	                  «        | j                   rŒE| j                  j                  «        | j                   r| j                  j                  d¬«      rŒ•y y y y # | j                  j                  «        w xY w)NF©Úblockingr   )r§   rd   ÚacquireÚ_release_lockedÚpopleftrÇ   rf   s    r\   rÅ   z_ProbeDescriptors.drainå   s£   € Ø�nŠn §¡×!3Ñ!3¸UÐ!3Ô!Cð%à—n’nØ×(Ñ(¨¯©¸Ñ):Ô;Ø—N‘N×*Ñ*Ô,ð —n“nð —
‘
×"Ñ"Ô$ð �nŠn §¡×!3Ñ!3¸UÐ!3Ö!CˆnÐ!Cˆnøð —
‘
×"Ñ"Õ$ús   ªAC ÃCc                óÂ  — | j                   j                  |j                  «      x}€y |j                  |j                  v rV|j                  j                  |j                  «       |j                  r%|j                  j                  |j                  «       |j                  ry |j                  j                  «        |j                  rs|j                  d   \  }}|�t        |«       |j                  j                  «        t        t        «      5  t        j                   |«       d d d «       |j                  rŒs| j                   |j                  = y # 1 sw Y   Œ.xY w)Néÿÿÿÿ)r¦   r®   r‰   rµ   r´   Úremover¯   r°   rÀ   Úclearr¿   r%   r²   r   r—   rª   Úclose)rg   rÆ   r¸   rÀ   rÁ   s        r\   rÌ   z!_ProbeDescriptors._release_lockedï   s  € Ø—l‘l×&Ñ& u§~¡~Ó6Ð6ˆFÐ?ØØ�;‰;˜&Ÿ-™-Ñ'Ø�M‰M× Ñ  §¡Ô-Ø�}Š}Ø—‘×"Ñ" 5§8¡8Ô,Ø�=Š=Øà�‰×ÑÔà× Ò Ø×*Ñ*¨2Ñ.‰IˆB�ØÐ Ü,¨UÔ3à×Ñ×"Ñ"Ô$äœ'Ó"ñ Ü—‘˜”÷ð × Ó ð �L‰L˜Ÿ™Ñ(÷ð ús   ÄEÅEc                ób   — t        j                  «       | _        i | _        t	        «       | _        y ra   )rb   r¥   rd   r¦   r
   r§   rf   s    r\   ry   z,_ProbeDescriptors._reset_after_fork_in_child  s    € ä—^‘^Ó%ˆŒ
ØˆŒÜ›ˆ�r[   Nrz   )r¶   Ústrr·   úlist[_Probe]r{   ú_Probe | None)rÀ   rT   r·   rÕ   r{   r±   )rÆ   r±   r{   r|   )
rV   rW   rX   rh   rº   rÃ   rÇ   rÅ   rÌ   ry   rZ   r[   r\   r£   r£   À   s%   „ óóóóó
%ó)ô.!r[   r£   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú
_OperationrT   ÚpidÚfloatÚ
start_timeúCallable[[], bool] | NoneÚcancel_checkN©rV   rW   rX   rY   rZ   r[   r\   rØ   rØ     s   … Ø	ƒHØÓà+Ô+r[   rØ   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)r±   r@   r‰   rT   rÀ   rµ   NrÞ   rZ   r[   r\   r±   r±     s   … ØÓØƒGà„Jr[   r±   T)Úslotsc                  ób   — e Zd ZU  ee¬«      Zded<    ee¬«      Zded<    ee¬«      Z	ded<   y)	r¾   )Údefault_factoryzset[int]r´   zlist[tuple[int, int | None]]r¿   z	list[int]r¯   N)
rV   rW   rX   r   rƒ   r´   rY   Úlistr¿   r¯   rZ   r[   r\   r¾   r¾     s0   … á¨SÔ1€FˆHÓ1Ù05ÀdÔ0K€KÐ-ÓKÙ¨DÔ1€Dˆ)Ô1r[   r¾   Ú_PROBE_DESCRIPTORSc                  ó˜   ‡ — e Zd ZU ded<   ded<   ded<   dZded	<   dZd
ed<   	 	 	 	 	 	 dˆ fd„Zdd„Zdd„Zdd„Z		 	 	 	 dd„Z
dd„Zˆ xZS )Ú_ForkSafeConnectionrT   Ú_creator_pidz+Callable[[sqlite3.Connection], None] | NoneÚ_decrement_escrowú_LinkDirectory | NoneÚ_database_directoryNrœ   Údatabase_identityrÖ   Ú_probec                ó`   •— t         ‰| �  | «      }t        «       |_        d |_        d |_        |S ra   )ÚsuperÚ__new__r7   rç   rè   rê   )ÚclsÚ_argsÚ_kwargsÚ
connectionÚ	__class__s       €r\   rï   z_ForkSafeConnection.__new__,  s3   ø€ ô
 ‘W‘_ SÓ)ˆ
Ü")£)ˆ
ÔØ'+ˆ
Ô$Ø)-ˆ
Ô&ØÐr[   c                óN  — t        «       5  t        «       | j                  k7  r
	 d d d «       y t        «       5  t        j
                  j                  | «       	 | j                  x}�d | _        t        |«       | j                  x}�$d x| _	        | _
        t        j                  |«       	 | j                  x}�d | _         || «       d d d «       d d d «       y # | j                  x}�$d x| _	        | _
        t        j                  |«       w w xY w# 1 sw Y   ŒIxY w# 1 sw Y   y xY wra   )Ú_sqlite_transitionr7   rç   r   Úsqlite3Ú
ConnectionrÒ   rê   Ú_remove_link_directoryrì   rë   rä   rÇ   rè   )rg   Ú	directoryrÆ   Ú	decrements       r\   rÒ   z_ForkSafeConnection.close7  s  € ÜÓ!ñ 	$Ü‹y˜D×-Ñ-Ò-Ø÷	$ð 	$ô "Ó#ñ $Ü×"Ñ"×(Ñ(¨Ô.ð:Ø%)×%=Ñ%=Ð=˜	ÐJØ37˜Ô0Ü.¨yÔ9à!%§¡Ð,˜Ð9Ø?CÐC˜œ dÔ&<Ü*×2Ñ2°5Õ9Ø!%×!7Ñ!7Ð7�IÐDØ-1�DÔ*Ù˜d”O÷$÷	$ð 	$øð "&§¡Ð,˜Ð9Ø?CÐC˜œ dÔ&<Ü*×2Ñ2°5Õ9ð :ú÷$ð $ú÷	$ð 	$ús@   ‹D­
D· DÁ CÁ8ADÃDÃ4DÄDÄD	ÄDÄD$c                ó   — || _         y)zQKeep the private link directory, if there is one, until SQLite no longer uses it.N)rê   )rg   rú   s     r\   Úretain_linkz_ForkSafeConnection.retain_linkI  s
   € à#,ˆÕ r[   c                óB   — || _         || _        |j                  | _        y)z^Keep the private link and this connection's probe descriptor until SQLite no longer uses them.N)rê   rì   r‰   rë   )rg   rú   rÆ   s      r\   Úretain_until_closez&_ForkSafeConnection.retain_until_closeM  s   € à#,ˆÔ ØˆŒØ!&§¡ˆÕr[   c                ó2   — |�|\  }} || «       || _         y y ra   )rè   )rg   rw   Ú	incrementrû   s       r\   Úacquire_escrowz"_ForkSafeConnection.acquire_escrowS  s(   € ð
 Ð Ø#,Ñ ˆI�yÙ�dŒOØ%.ˆDÕ"ð !r[   c                ó”   — t        t        j                  t        t        «      5  | j                  «        d d d «       y # 1 sw Y   y xY wra   )r   r÷   ÚErrorrr   r—   rÒ   rf   s    r\   Ú__del__z_ForkSafeConnection.__del__]  s0   € Ü”g—m‘m¤\´7Ó;ñ 	Ø�J‰JŒL÷	÷ 	ñ 	ús	   ¤>¾A)rñ   r?   rò   r?   r{   r3   rz   )rú   ré   r{   r|   )rú   ré   rÆ   r±   r{   r|   )rw   r}   r{   r|   )rV   rW   rX   rY   rë   rì   rï   rÒ   rý   rÿ   r  r  Ú__classcell__©rô   s   @r\   ræ   ræ   %  sw   ø… ØÓØBÓBØ.Ó.Ø26ÐÐ/Ó6Ø €FˆMÓ ð	à$ð	ð (ð	ð 
õ		ó$ó$-ó0ð/àkð/ð 
ó/÷r[   ræ   c                  ó(   — e Zd ZU dZdZded<   dd„Zy)Ú_OwnedConnectionaÀ  
    The connection of one lock, closed when the lock is collected.

    CPython runs ``__del__`` before it clears weak references. A finalizer on the lock itself would close the
    connection while the singleton cache still hands the lock out, and a thread given the lock would nest into a hold
    with no database lock behind it. The lock alone refers to this holder, so the holder is collected once the cache no
    longer finds the lock.
    Nú_ForkSafeConnection | Noneró   c                ó¨   — | j                   x}�8t        t        j                  t        «      5  |j                  «        d d d «       y y # 1 sw Y   y xY wra   )ró   r   r÷   r  rr   rÒ   ©rg   ró   s     r\   r  z_OwnedConnection.__del__o  sJ   € ØŸ/™/Ð)ˆJÐ6Üœ'Ÿ-™-¬Ó6ñ #Ø× Ñ Ô"÷#ð #ð 7÷#ð #ús   ­AÁArz   )rV   rW   rX   Ú__doc__ró   rY   r  rZ   r[   r\   r	  r	  b  s   … ñð .2€JÐ*Ó1ô#r[   r	  c                  ót   ‡ — e Zd ZU dZded<   ded<   ded<   ded	<   	 dd
d
dœ	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )Ú_ReadWriteLockMetaa
  
    Resolve singleton instances for ``is_singleton=True`` construction.

    This logic lives here rather than in ReadWriteLock.get_lock so ``ReadWriteLock(path)`` returns cached instances
    without a 2-arg ``super()`` call that type checkers cannot verify.

    z0WeakValueDictionary[pathlib.Path, ReadWriteLock]Ú
_instanceszthreading.RLockÚ_instances_lockrT   Ú_instances_pidzset[pathlib.Path]Ú_instances_under_constructionT©rÊ   Úis_singletonc          	     óþ  •— t        «        t        «        t        d|«      }| j                  t	        «       k7  r| j                  «        t	        «       }|s/t        ‰
| �  ||||¬«      }t	        «       |k7  rd}t        |«      ‚|S t        j                  t        |«      «      }| j                  5  | j                  j                  |«      x}€—|| j                  v rd|›�}t        |«      ‚| j                  }	|	j!                  |«       	 t        ‰
| �  ||||¬«      }t	        «       |k(  r|	j#                  |«       	 t	        «       |k7  rd}t        |«      ‚|| j                  |<   t%        |j&                  d¬«      t%        |d¬«      k7  s|j(                  |k7  r-d|j&                  › d|j(                  › d	|› d|› �}t+        |«      ‚|cd d d «       S # t	        «       |k(  r|	j#                  |«       w w xY w# 1 sw Y   y xY w)
NÚtimeoutr  z5ReadWriteLock construction cannot continue after forkz2Singleton lock construction is already active for F)Úany_negativez$Singleton lock created with timeout=z, blocking=z, cannot be changed to timeout=)r   r!   r#   r  r7   Ú_reset_class_after_forkrî   Ú__call__rr   r   ÚPathr   r  r  r®   r  r�   Údiscardr$   r  rÊ   Ú
ValueError)rð   Ú	lock_filer  rÊ   r  Úconstruction_pidÚinstancerv   Ú
normalizedÚconstruction_registryrô   s             €r\   r  z_ReadWriteLockMeta.__call__ƒ  s
  ø€ ô 	 Ô!Ü-Ô/Ü˜9 gÓ.ˆØ×Ñ¤£Ò*Ø×'Ñ'Ô)Ü"›9ÐÙÜ‘wÑ'¨	°7ÀXÐ\hÐ'ÓiˆHÜ‹yÐ,Ò,ØM�Ü" 3Ó'Ð'ØˆOô —\‘\¤*¨YÓ"7Ó8ˆ
Ø× Ñ ñ 	àŸN™N×.Ñ.¨zÓ:Ð:�ÐCØ ×!BÑ!BÑBØNÈyÈmÐ\�CÜ& sÓ+Ð+Ø(+×(IÑ(IÐ%Ø%×)Ñ)¨*Ô5ðBÜ$™wÑ/°	¸7ÈXÐdpÐ/Óq�Hä“yÐ$4Ò4Ø-×5Ñ5°jÕAÜ“9Ð 0Ò0ØQ�CÜ& sÓ+Ð+Ø-5�—‘˜zÑ*ô " (×"2Ñ"2ÀÔGÜ$ W¸5ÔAòBà×$Ñ$¨Ò0ð ;¸8×;KÑ;KÐ:LÈKÐX`×XiÑXiÐWjð k5Ø5<°I¸[ÈÈ
ðTð ô ! “oÐ%Ø÷9	ñ 	øô “yÐ$4Ò4Ø-×5Ñ5°jÕAð 5ú÷	ð 	ús&   Â.AG3ÄGÄB*G3Ç!G0Ç0G3Ç3G<c                ó�   — t        «       | _        t        j                  «       | _        t        «       | _        t        «       | _        y ra   )	r   r  rb   rc   r  r7   r  rƒ   r  )rð   s    r\   r  z*_ReadWriteLockMeta._reset_class_after_fork¸  s/   € Ü,Ó.ˆŒÜ'Ÿo™oÓ/ˆÔÜ$›YˆÔÜ,/«EˆÕ)r[   ©rÏ   )
r  ústr | os.PathLike[str]r  rÚ   rÊ   Úboolr  r&  r{   ÚReadWriteLockrz   )rV   rW   rX   r  rY   r  r  r  r  s   @r\   r  r  u  sp   ø… ñð AÓ@Ø$Ó$ØÓØ#4Ó4ð
 ð3ð
 Ø!ñ3à)ð3ð ð3ð
 ð3ð ð3ð 
õ3÷j2r[   r  c                  ó  ‡ — e Zd ZU dZ e«       Zded<    ej                  «       Z	 e
«       Z e«       Zded<   d2ˆ fd„Ze	 d3ddœ	 	 	 	 	 	 	 d4d	„«       Z	 d3ddd
œ	 	 	 	 	 	 	 	 	 d5d„Zd6ddœd7d„Zd6ddœd7d„Zed6ddœd8d„«       Zed6ddœd8d„«       Zddœd9d„Zd2d„Z	 	 	 	 	 	 	 	 	 	 	 	 d:d„Zd;d„Zd<d„Zddœd=d„Zd>d„Zd;d„Zd;d„Zd2d„Z e!d?d„«       Z"e"jF                  d@d„«       Z"d2d „Z$e!d>d!„«       Z%d2d"„Z&ddd#œ	 	 	 	 	 	 	 	 	 	 	 dAd$„Z'ddd#œ	 	 	 	 	 	 	 	 	 	 	 dAd%„Z(	 	 	 	 	 	 	 	 	 	 	 	 dBd&„Z)dCd'„Z*	 	 	 	 	 	 	 	 	 	 dDd(„Z+e,	 	 	 	 	 	 	 	 	 	 	 	 dEd)„«       Z-dFd*„Z.dGd+„Z/d2d,„Z0d>d-„Z1dHd.„Z2	 	 	 	 	 	 	 	 dId/„Z3dJd0„Z4dKd1„Z5ˆ xZ6S )Lr'  a  
    Cross-process read-write lock backed by SQLite.

    Allows concurrent shared readers or a single exclusive writer. The lock is reentrant within the same mode (multiple
    ``acquire_read`` calls nest, as do multiple ``acquire_write`` calls from the same thread), but upgrading from read
    to write or downgrading from write to read raises :class:`RuntimeError`. Write locks are pinned to the thread that
    acquired them, and each thread sharing a read lock can release only the levels it acquired.

    An instance coordinates processes, not threads: a thread asking for the opposite mode of another thread's hold
    raises :class:`RuntimeError` instead of waiting. Threads that must wait for each other each need their own
    instance (``is_singleton=False``).

    By default, ``is_singleton=True``: calling ``ReadWriteLock(path)`` with the same resolved path returns the same
    instance. A ``.db`` extension is a convention rather than a requirement; the filesystem must be one the active
    SQLite VFS supports. Give the lock a file of its own: a WAL-mode database, or one with a schema larger than a lock
    needs, raises :class:`ValueError`. A database directory that other accounts can write must also be writable by
    this one and support hard links; the protection against other accounts ends once one of them can replace the
    database directory or a directory above it.

    :param lock_file: path to the SQLite database file used as the lock
    :param timeout: maximum wait time in seconds; ``-1`` waits up to SQLite's busy-timeout cap of about 23 days
    :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately when the lock is unavailable
    :param is_singleton: if ``True``, reuse existing instances for the same resolved path

    .. versionadded:: 3.21.0

    z:ClassVar[WeakValueDictionary[pathlib.Path, ReadWriteLock]]r  zClassVar[set[pathlib.Path]]r  c                óÄ   •— t         ‰| �  «        t        «       | _        t	        j
                  «       | _        t        «       | _        t        «       | _
        t        | «       y ra   )rî   Ú__init_subclass__r   r  rb   rc   r  r7   r  rƒ   r  r   )rð   rô   s    €r\   r*  zReadWriteLock.__init_subclass__á  sC   ø€ Ü‰Ñ!Ô#Ü,Ó.ˆŒÜ'Ÿo™oÓ/ˆÔÜ$›YˆÔÜ,/«EˆÔ)Ü˜SÕ!r[   TrÉ   c               ó   —  | |||¬«      S )a'  
        Return the singleton :class:`ReadWriteLock` for *lock_file*.

        :param lock_file: path to the SQLite database file used as the lock
        :param timeout: maximum wait time in seconds; ``-1`` waits up to SQLite's busy-timeout cap of about 23 days
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately when the lock is unavailable

        :returns: the singleton lock instance

        :raises ValueError: if an instance already exists for this path with different *timeout* or *blocking* values

        rÉ   rZ   )rð   r  r  rÊ   s       r\   Úget_lockzReadWriteLock.get_locké  s   € ñ  �9˜g°Ô9Ð9r[   r  c               óÜ  — t        j                  |«      | _        t        j                  t        |«      «      | _        t        j                  | j                  «       || _	        || _
        t        j                  «       | _        t        j                  «       | _        d| _        d | _        d | _        i | _        t'        «       | _        t+        «       | _        d| _        d | _        d| _        t5        «       | _        d| _        t;        | «       t=        «       5  t?        «       5  | jA                  d¬«      }|jC                  «        d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr   TFg      @©Úsqlite_timeout)"rª   Úfspathr  r   r  r   Ú_canonical_pathrž   r�   r  rÊ   rb   r¥   Ú_transaction_lockÚ_internal_lockÚ_lock_levelÚ_current_modeÚ_write_thread_idÚ_read_depthsrƒ   Ú_acquisition_thread_idsr	  Ú_owned_connectionÚ _connection_transaction_releasedÚ_connection_identityÚ_closedr7   rç   Ú_fork_invalidatedr   r   rö   Ú_open_connectionrÒ   )rg   r  r  rÊ   r  Úvalidation_connections         r\   rh   zReadWriteLock.__init__û  s&  € ô Ÿ™ 9Ó-ˆŒÜ&Ÿ|™|¬J°yÓ,AÓBˆÔÜ×+Ñ+¨D×,@Ñ,@ÔAØˆŒØ ˆŒÜ!*§¡Ó!1ˆÔÜ'Ÿn™nÓ.ˆÔØˆÔØ>BˆÔØ,0ˆÔØ,.ˆÔÜ14³ˆÔ$Ü!1Ó!3ˆÔØ04ˆÔ-Ø>BˆÔ!ØˆŒÜ#›IˆÔØ!&ˆÔÜ˜dÔ#ÜÓñ 	*Ô!3Ó!5ñ 	*Ø$(×$9Ñ$9ÈÐ$9Ó$MÐ!Ø!×'Ñ'Ô)÷	*÷ 	*÷ 	*ñ 	*ú÷ 	*ð 	*ús$   ÄE"Ä"#EÅE"ÅE	ÅE"Å"E+Nc               ól   — | j                  d|€| j                  n||€| j                  ¬«      S |¬«      S )aÙ  
        Acquire a shared read lock.

        If this instance already holds a read lock, the lock level is incremented (reentrant). Attempting to acquire a
        read lock while holding a write lock raises :class:`RuntimeError` (downgrade not allowed).

        :param timeout: seconds to wait; ``None`` uses the instance setting; ``-1`` waits up to SQLite's
            busy-timeout cap of about 23 days
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` on contention;
            ``None`` uses the instance setting

        :returns: a proxy that can be used as a context manager to release the lock

        :raises RuntimeError: if a write lock is already held on this instance
        :raises Timeout: if the lock cannot be acquired within *timeout* seconds
        :raises TypeError: if *timeout* is a :class:`bool` or not a real number
        :raises ValueError: if a blocking call gets a ``nan`` *timeout* or a negative one other than ``-1``

        ÚreadrÉ   ©Ú_acquirer  rÊ   ©rg   r  rÊ   s      r\   Úacquire_readzReadWriteLock.acquire_read  sK   € ð( �}‰}ØØ#˜OˆD�LŠL°Ø&.Ð&6�T—]‘]ð ó 
ð 	
ð =Eð ó 
ð 	
r[   c               ól   — | j                  d|€| j                  n||€| j                  ¬«      S |¬«      S )a˜  
        Acquire an exclusive write lock.

        If this instance already holds a write lock from the same thread, the lock level is incremented (reentrant).
        Attempting to acquire a write lock while holding a read lock raises :class:`RuntimeError` (upgrade not allowed).
        Write locks are pinned to the acquiring thread: a different thread trying to re-enter also raises
        :class:`RuntimeError`.

        :param timeout: seconds to wait; ``None`` uses the instance setting; ``-1`` waits up to SQLite's
            busy-timeout cap of about 23 days
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` on contention;
            ``None`` uses the instance setting

        :returns: a proxy that can be used as a context manager to release the lock

        :raises RuntimeError: if a read lock is already held, or a write lock is held by a different thread
        :raises Timeout: if the lock cannot be acquired within *timeout* seconds
        :raises TypeError: if *timeout* is a :class:`bool` or not a real number
        :raises ValueError: if a blocking call gets a ``nan`` *timeout* or a negative one other than ``-1``

        ÚwriterÉ   rB  rD  s      r\   Úacquire_writezReadWriteLock.acquire_write4  sK   € ð, �}‰}ØØ#˜OˆD�LŠL°Ø&.Ð&6�T—]‘]ð ó 
ð 	
ð =Eð ó 
ð 	
r[   c             #  ó†   K  — | j                  ||¬«       	 d–— | j                  «        y# | j                  «        w xY w­w)a}  
        Context manager that acquires and releases a shared read lock.

        Falls back to instance defaults for *timeout* and *blocking* when ``None``.

        :param timeout: maximum wait time in seconds, or ``None`` to use the instance default
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

        rÉ   N)rE  rÇ   rD  s      r\   Ú	read_lockzReadWriteLock.read_lockP  s5   è ø€ ð 	×Ñ˜'¨HÐÔ5ð	Ûà�L‰L�NøˆD�L‰L�Nüó   ‚A—, ›A¬>¾Ac             #  ó†   K  — | j                  ||¬«       	 d–— | j                  «        y# | j                  «        w xY w­w)a‚  
        Context manager that acquires and releases an exclusive write lock.

        Falls back to instance defaults for *timeout* and *blocking* when ``None``.

        :param timeout: maximum wait time in seconds, or ``None`` to use the instance default
        :param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

        rÉ   N)rH  rÇ   rD  s      r\   Ú
write_lockzReadWriteLock.write_locka  s5   è ø€ ð 	×Ñ˜7¨XÐÔ6ð	Ûà�L‰L�NøˆD�L‰L�NürK  F)Úforcec               óÊ   — t        «       5  t        «        | j                  r
	 ddd«       y| j                  d«       | j	                  |d¬«       ddd«       y# 1 sw Y   yxY w)aÎ  
        Release one level of the current lock.

        When the lock level reaches zero the underlying SQLite transaction is rolled back, releasing the database lock.

        :param force: if ``True``, release the lock completely regardless of the current lock level

        :raises RuntimeError: if no lock is currently held and *force* is ``False``, or if the calling thread holds
            no level of the current lock and *force* is ``False``

        NrÇ   F©rN  rÒ   ©r   r   Ú
_inheritedÚ_raise_if_acquiringÚ_release)rg   rN  s     r\   rÇ   zReadWriteLock.releaser  sY   € ô Óñ 	4Ü#Ô%Ø�ŠØ÷	4ð 	4ð ×$Ñ$ YÔ/Ø�M‰M ¨UˆMÔ3÷	4÷ 	4ñ 	4úó   ‹A¬$AÁA"c                óÊ   — t        «       5  t        «        | j                  r
	 ddd«       y| j                  d«       | j	                  dd¬«       ddd«       y# 1 sw Y   yxY w)a  
        Release the lock (if held) and close the underlying SQLite connection.

        After calling this method, the lock instance is no longer usable. Unlike :meth:`release`, it ends every
        thread's hold on this instance, whichever thread calls it.

        NrÒ   TrP  rQ  rf   s    r\   rÒ   zReadWriteLock.close…  sY   € ô Óñ 	2Ü#Ô%Ø�ŠØ÷	2ð 	2ð ×$Ñ$ WÔ-Ø�M‰M ¨DˆMÔ1÷	2÷ 	2ñ 	2úrU  c               ó.   — | j                  |||||¬«      S )N©rÊ   ÚholderrÝ   )rC  )rg   rY  Úmoder  rÊ   rÝ   s         r\   Ú_acquire_level_ofzReadWriteLock._acquire_level_of”  s   € ð �}‰}˜T 7°XÀfÐ[gˆ}ÓhÐhr[   c                ó    — t        «       5  t        «        | j                  d«       | j                  dd|¬«       d d d «       y # 1 sw Y   y xY w)NrÇ   F)rN  rÒ   Ú	thread_id)r   r   rS  rT  ©rg   r]  s     r\   Ú_release_level_ofzReadWriteLock._release_level_of¡  sG   € ÜÓñ 	IÜ#Ô%Ø×$Ñ$ YÔ/Ø�M‰M ¨U¸iˆMÔH÷	I÷ 	Iñ 	Iús   ‹0AÁAc                ó”   — || j                   k7  r|| j                  vry	 | j                  «        S # t        j                  $ r Y yw xY wr‚   )r6  r7  Ú_transaction_endedr÷   ÚProgrammingErrorr^  s     r\   Ú_holds_level_ofzReadWriteLock._holds_level_of§  sQ   € ð ˜×-Ñ-Ò-°)À4×CTÑCTÑ2TØð	Ø×.Ñ.Ó0Ð0Ð0øÜ×'Ñ'ò 	áð	ús    1 ±AÁA)r]  c               ó¸  — |€t        j                  «       n|}| j                  5  | j                  5  |s| j	                  |«       | j
                  dk(  rR|r'| j                  €|rd| _        	 d d d «       d d d «       y |s'd| j                  › dt        | «      › d�}t        |«      ‚|s2| j
                  dkD  r#| j                  |«       	 d d d «       d d d «       y 	 | j                  «        | j                  «        |rd| _        d d d «       d d d «       y # t        $ r" | j                  «       r| j                  «        ‚ w xY w# 1 sw Y   Œ@xY w# 1 sw Y   y xY w)Nr   TzCannot release a lock on ú (lock id: z) that is not heldé   )rb   Ú	get_identr2  r3  Ú_raise_if_not_holderr4  Ú_conr<  r  Úidrr   Ú_leave_one_levelÚ_finish_connectionÚBaseExceptionra  Ú_clear_lock_state)rg   rN  rÒ   r]  rv   s        r\   rT  zReadWriteLock._release³  sW  € Ø-6Ð->”I×'Ñ'Ô)ÀIˆ	Ø×#Ñ#ñ 	$ T×%8Ñ%8ñ 	$ÙØ×)Ñ)¨)Ô4Ø×Ñ 1Ò$Ù˜TŸY™YÐ.ÙØ'+˜œØ÷	$÷ 	$ð 	$ñ Ø5°d·n±nÐ5EÀ[ÔQSÐTXÓQYÐPZÐZlÐm�CÜ& sÓ+Ð+Ù˜T×-Ñ-°Ò1Ø×%Ñ% iÔ0Ø÷	$÷ 	$ð 	$ðØ×'Ñ'Ô)ð ×"Ñ"Ô$ÙØ#�”÷1	$÷ 	$ð 	$øô  !ò ð ×*Ñ*Ô,Ø×*Ñ*Ô,Øðú÷!	$ð 	$ú÷ 	$ð 	$úsM   ¥E²;EÁ-EÁ>AEÃ
EÃDÃ,EÄEÄ+EÅEÅE	Å	EÅEc                óR   — | j                   s| j                  x}€y|j                   S r’   )r:  ri  Úin_transactionr  s     r\   ra  z ReadWriteLock._transaction_endedÏ  s+   € Ø×0Ò0À4Ç9Á9Ð5L°ZÐ4UØà×,Ñ,Ð,Ð,r[   c                ó<  — | j                   dk(  rE|| j                  k7  r6d| j                  › dt        | «      › d|› d| j                  › �}t	        |«      ‚| j                   dk(  r9|| j
                  vr*d| j                  › dt        | «      › d|› d�}t	        |«      ‚y y )	NrG  zCannot release write lock on re  ú) from thread ú while it is held by thread rA  zCannot release read lock on z, which does not hold it)r5  r6  r  rj  rr   r7  )rg   r]  rv   s      r\   rh  z"ReadWriteLock._raise_if_not_holderÕ  sÆ   € ð ×Ñ Ò(¨Y¸$×:OÑ:OÒ-Oà/°·±Ð/?¸{Ì2ÈdË8È*ð UØ(˜kÐ)EÀd×F[ÑF[ÐE\ð^ð ô ˜sÓ#Ð#à×Ñ Ò'¨I¸T×=NÑ=NÑ,Nà.¨t¯~©~Ð.>¸kÌ"ÈTË(Èð TØ(˜kÐ)AðCð ô ˜sÓ#Ð#ð -OÐ'r[   c                ó®   — | xj                   dz  c_         | j                  dk(  r1| j                  j                  |«      dz
  x}r|| j                  |<   y y y )Nrf  rA  )r4  r5  r7  r²   )rg   r]  rU   s      r\   rk  zReadWriteLock._leave_one_levelæ  s[   € Ø×Ò˜AÑÕØ×Ñ Ò'°d×6GÑ6G×6KÑ6KÈIÓ6VÐYZÑ6ZÐ-Z¨UÐ-ZØ+0ˆD×Ñ˜iÒ(ð .[Ð'r[   c                ó<   — d| _         d | _        d | _        i | _        y ©Nr   )r4  r5  r6  r7  rf   s    r\   rn  zReadWriteLock._clear_lock_stateë  s"   € ØˆÔØ!ˆÔØ $ˆÔØˆÕr[   c                ó.   — | j                   j                  S ra   ©r9  ró   rf   s    r\   ri  zReadWriteLock._conñ  s   € à×%Ñ%×0Ñ0Ð0r[   c                ó&   — || j                   _        y ra   rx  r  s     r\   ri  zReadWriteLock._conõ  s   € à,6ˆ×ÑÕ)r[   c                óJ  — | j                   �*t        j                  | j                  | j                  «       d | _         d| _        d | _        t        j                  «       | _        t        j                  «       | _	        | j                  «        t        «       | _        d| _        y r’   )ri  rž   r�   r1  r;  r:  rb   r¥   r2  r3  rn  rƒ   r8  r=  rf   s    r\   ry   z(ReadWriteLock._reset_after_fork_in_childù  s{   € Ø�9‰9Ð Ü×/Ñ/°×0DÑ0DÀd×F_ÑF_Ô`ØˆŒ	Ø04ˆÔ-Ø$(ˆÔ!Ü!*§¡Ó!1ˆÔÜ'Ÿn™nÓ.ˆÔØ×ÑÔ Ü'*£uˆÔ$Ø!%ˆÕr[   c                óL   — | j                   xs t        «       | j                  k7  S ra   )r=  r7   rç   rf   s    r\   rR  zReadWriteLock._inherited  s    € à×%Ñ%ÒG¬«°d×6GÑ6GÑ)GÐGr[   c                ó¬   — t        «        | j                  rd| j                  › d�}t        |«      ‚| j                  rd}t        j                  |«      ‚y )NúReadWriteLock on ú4 was invalidated by fork(); construct a new instancez$Cannot operate on a closed database.)r   rR  r  rr   r<  r÷   rb  )rg   rv   s     r\   Ú_raise_if_unusablez ReadWriteLock._raise_if_unusable	  sP   € ÜÔ!Ø�?Š?Ø% d§n¡nÐ%5Ð5iÐjˆCÜ˜sÓ#Ð#Ø�<Š<Ø8ˆCÜ×*Ñ*¨3Ó/Ð/ð r[   )rY  rÝ   c               óœ  — t        ||¬«      }t        j                  «       }|}	 | xs@ d|cxk  xr	 t        k  nc xs* t	        t
        d«       xs t        j                  «       dk(  }	 | j                  ||r|nt        |||¬«      S # t        $ r |s	|� |«       r‚ Y nw xY w|dk7  r$t        |t        j                  «       |z
  z
  d«      }Œ©)NrÉ   r   r:   rf  rX  rÏ   )r"   ÚtimeÚ	monotonicrE   Úhasattrrª   rb   Úactive_countÚ_attempt_acquirer&   Úmax)	rg   rZ  r  rÊ   rY  rÝ   rÛ   Ú	remainingÚfinals	            r\   rC  zReadWriteLock._acquire  së   € ô .¨gÀÔIˆÜ ŸN™NÓ,ˆ
Øˆ	Øð �ò 1Ø˜	Ö9Ô%9Ô9ò1äœrÐ#5Ó6Ð6ò1ô ×)Ñ)Ó+¨qÑ0ð	 ð
Ø×,Ñ,ØÙ!&‘IÔ,@Ø%Ø!Ø!-ð -ó ð øô ò Ù˜\Ð5¹,¼.Øùðúð ˜"Š}Ü ¬4¯>©>Ó+;¸jÑ+HÑ IÈ1ÓM�	ð1 s   Á+B	 Â	B!Â B!c               óþ  — t        «       5  | j                  «        t        «       }t        j                  «       }|€|n|}| j
                  5  | j                  «       r$| j                  ||«      cd d d «       cd d d «       S || j                  v rd| j                  › d�}t        |«      ‚| j                  j                  |«       d d d «       	 t        j                  «       }	| j                  |||¬«       	 | j                  «        | j                  ||||t!        ||	|«      ¬«      | j"                  j%                  «        | j
                  5  | j                  j'                  |«       d d d «       cd d d «       S # 1 sw Y   Œ·xY w# 1 sw Y   ŒxY w# | j"                  j%                  «        w xY w# | j
                  5  | j                  j'                  |«       d d d «       w # 1 sw Y   w xY wxY w# 1 sw Y   y xY w)Nz Cannot acquire ReadWriteLock on ú+ while acquisition is active in this thread)rÊ   r  rÝ   ©rÊ   Ú	operation)r   r  r7   rb   rg  r3  Ú_holds_levelÚ_validate_reentrantr8  r  rr   r�   r�  Úperf_counterÚ_acquire_transaction_lockÚ_do_acquire_innerrØ   r2  rÇ   r  )
rg   rZ  r  rÊ   rY  rÝ   Úoperation_pidr]  rv   rÛ   s
             r\   r…  zReadWriteLock._attempt_acquire8  sã  € ô Óñ 	DØ×#Ñ#Ô%Ü#›IˆMÜ!×+Ñ+Ó-ˆIØ"( .‘Y°fˆFØ×$Ñ$ñ <Ø×$Ñ$Ô&Ø×3Ñ3°D¸&ÓA÷<ð <÷	Dñ 	Dð  × <Ñ <Ñ<Ø<¸T¿^¹^Ð<LÐLwÐx�CÜ& sÓ+Ð+Ø×,Ñ,×0Ñ0°Ô;÷<ðDÜ!×.Ñ.Ó0�
Ø×.Ñ.¸È'Ð`lÐ.Ômð
5Ø×+Ñ+Ô-Ø×1Ñ1ØØØØ!)Ü",¨]¸JÈÓ"Uð 2ó ð ×*Ñ*×2Ñ2Ô4à×(Ñ(ñ DØ×0Ñ0×8Ñ8¸ÔC÷D÷7	Dñ 	D÷
<ð <ú÷,Dð Dûð ×*Ñ*×2Ñ2Õ4ûà×(Ñ(ñ DØ×0Ñ0×8Ñ8¸ÔC÷D÷ Dñ Dý÷7	Dð 	Dús‘   ‹AG3Á"E;Á.	G3ÂAE;ÃG3Ã(F2Ã70FÄ'F2ÅG3ÅFÅ)G3Å;F	Æ G3ÆFÆG3ÆF/Æ/F2Æ2G0Æ?G$	Ç	G0Ç$G-Ç)G0Ç0G3Ç3G<c               óH  — |\  }}}| j                   5  | j                  «       r| j                  ||«      cd d d «       S 	 d d d «       | j                  �| j	                  «        	 | j                  ||||¬«       | j                  ||||¬«       | j                  |«       | j                   5  | j                  |«       || _        d| _        |dk(  r|| _        n	|di| _        d d d «       t+        | ¬«      S # 1 sw Y   Œ·xY w# t        $ rŠ}	t        |	t        j                  «      r#dt        |	«      v rt        | j                  «      }
n|	}
	 | j	                  «        n,# t        j                  $ r}t!        |
|«       Y d }~nd }~ww xY w|
|	ur|
d ‚‚ d }	~	ww xY w# 1 sw Y   Œ·xY w)N)rÊ   r’  rÛ   r‹  údatabase is lockedrf  rG  ©Úlock)r3  r�  rŽ  ri  rl  Ú_open_for_acquisitionÚ_configure_and_beginÚ_raise_if_process_changedrm  Ú
isinstancer÷   ÚOperationalErrorrÔ   r&   r  r  r   r5  r4  r6  r7  r   )rg   rZ  r  rY  rÊ   rŒ  r’  rÛ   Ú_ÚerrorÚacquisition_errorÚcleanup_errors               r\   r‘  zReadWriteLock._do_acquire_inner_  s°  € ð (1Ñ$ˆ�z 1à× Ñ ñ 	>Ø× Ñ Ô"Ø×/Ñ/°°fÓ=÷	>ñ 	>Ø"÷	>ð �9‰9Ð Ø×#Ñ#Ô%ð	Ø×&Ñ&ØØ!Ø+Ø%ð	 'ô ð ×%Ñ% d¨G¸hÐR[Ð%Ô\Ø×*Ñ*¨=Ô9ð × Ñ ñ 	0Ø×*Ñ*¨=Ô9Ø!%ˆDÔØ ˆDÔØ�wŠØ(.�Õ%à%+¨Q K�Ô!÷	0ô " tÔ,Ð,÷G	>ð 	>ûô ò 	ä˜%¤×!9Ñ!9Ô:Ð?SÔWZÐ[`ÓWaÑ?aÜ$+¨D¯N©NÓ$;Ñ!à$)Ð!ðHØ×'Ñ'Õ)øÜ—=‘=ò HÜ%Ð&7¸×GÑGûðHúà ¨Ñ-Ø'¨TÐ1Øûð	ú÷	0ð 	0úsY   “"C6Á%;D Â,6FÃ6C?Ä	FÄ?FÅEÅFÅFÅ/F Å;FÆ FÆFÆFÆF!c               ó:  — t        «       5  t        ||t        j                  «       |z
  ¬«      dz  }| j	                  |¬«      }|dt
        j                  | j                  «      c| _        | _	        | _
        | j                  |«       d d d «       y # 1 sw Y   y xY w)N©rÊ   Úalready_waitedéè  r.  F)rö   Útimeout_for_sqliter�  r�  r>  rž   r‰   r1  ri  r:  r;  r™  )rg   r  rÊ   r’  rÛ   r/  ró   s          r\   r—  z#ReadWriteLock._open_for_acquisition�  sž   € ÜÓ!ñ 	:ä"ØØ%Ü#'×#4Ñ#4Ó#6¸Ñ#Côð
 ñð ð ×.Ñ.¸nÐ.ÓMˆJàØÜ!×*Ñ*¨4×+?Ñ+?Ó@ð XˆDŒI�tÔ<¸dÔ>Wð
 ×*Ñ*¨=Ô9÷	:÷ 	:ñ 	:ús   ‹A=BÂBc          	     óò  — t        «       5  t        d| j                  «      }| j                  |«       t	        || j
                  «      5  | j                  |j                  «       | j                  |d|||¬«       | j                  |j                  «       |dk(  rdnd}|dk(  r|dz  }| j                  |||||¬«       d d d «       | j                  |«       d d d «       y # 1 sw Y   Œ#xY w# 1 sw Y   y xY w)	Nræ   zPRAGMA journal_mode=MEMORY;r‹  rG  zBEGIN EXCLUSIVE TRANSACTION;zBEGIN TRANSACTION;rA  z( SELECT name FROM sqlite_master LIMIT 1;)	rö   r   ri  Ú_raise_if_database_replacedÚ_bounded_schemar  r™  rÙ   Ú_execute_waiting)rg   rZ  r  rÊ   rŒ  ró   Ú
statementss          r\   r˜  z"ReadWriteLock._configure_and_begin¡  s  € ô  Ó!ñ 	9ÜÐ3°T·Y±YÓ?ˆJð ×,Ñ,¨ZÔ8Ü  ¨T¯^©^Ó<ñ oØ×.Ñ.¨y¯}©}Ô=ð
 ×%Ñ%ØÐ =¸wÐQYÐenð &ô ð ×.Ñ.¨y¯}©}Ô=Ø?CÀwºÑ;ÐTh�
Ø˜6’>ð Ð"LÑL�JØ×%Ñ% j°*¸gÐPXÐdmÐ%Ôn÷!oð" ×,Ñ,¨ZÔ8÷-	9ð 	9÷
oð oú÷	9ð 	9ús$   ‹>C-Á	A6C!Â?C-Ã!C*	Ã&C-Ã-C6c               ó¦  — t        t        dz  «      }	 t        ||t        j                  «       |j
                  z
  ¬«      }||kD  r|j                  nd }	 | j                  d|€|n|› d|› �«      j                  «        y # t        j                  $ r=}|�dt        |«      vs |«       r‚ | j                  r| j                  «        Y d }~nd }~ww xY wŒ¿)Nr£  r¡  zPRAGMA busy_timeout=z; r”  )rT   rB   r¤  r�  r�  rÛ   rÝ   ÚexecutescriptrÒ   r÷   r›  rÔ   rp  Úrollback)	ró   r©  r  rÊ   rŒ  Úslice_msÚbusy_msrÝ   r�  s	            r\   r¨  zReadWriteLock._execute_waitingÁ  sÜ   € ô Ô,¨tÑ3Ó4ˆØÜ(Ø (¼4×;LÑ;LÓ;NÐQZ×QeÑQeÑ;eôˆGð 6=¸xÒ5G˜9×1Ò1ÈTˆLðØ×(Ñ(Ø*°lÐ6J©7ÐPXÐ*YÐY[Ð\fÐ[gÐhóç‘%”'ð øô ×+Ñ+ò *ØÐ'Ð+?ÄsÈ5ÃzÑ+QÑUaÔUcØà×,Ò,Ø×'Ñ'Ô)ÿøð*úð s   Á)A? Á?CÂ3C
Ã
Cc                óî   — |j                   x}€y 	 | j                  j                  d¬«      }|�|j                  |j
                  f|k7  rd| j                  ›d�}t        |«      ‚y # t        $ r d }Y ŒFw xY w)NF©Úfollow_symlinksúlock database z< was unlinked or replaced while acquiring; leave it in place)rë   r1  r–   ÚFileNotFoundErrorr˜   r™   r  r—   )rg   ró   r‰   Úcurrentrv   s        r\   r¦  z)ReadWriteLock._raise_if_database_replacedÚ  s‰   € à"×4Ñ4Ð4ˆHÐ=Øð	Ø×*Ñ*×/Ñ/ÀÐ/ÓFˆGð ˆ?˜wŸ~™~¨w¯~©~Ð>À(ÒJØ" 4§>¡>Ð"4Ð4pÐqˆCÜ˜#“,Ðð Køô !ò 	ØŠGð	ús   ‘A& Á&A4Á3A4c               ó0  — t        «       5  t        «       }t        j                  «       }t        «       |k7  rd}t	        |«      ‚	 t        t        j                  | j                  «      t        |¬«      }|�|j                  |«       t        «       |k7  rJt        j                  | j                  t        j!                  | j                  «      «       d}t	        |«      ‚|cd d d «       S # t        $ r t        | j                  «      d ‚w xY w# 1 sw Y   y xY w)Nz9SQLite connection construction cannot continue after fork)Úfactoryr  )rö   r7   r~   rw   rr   Ú_connectrª   r0  r1  ræ   ÚBlockingIOErrorr&   r  r  rž   r�   r‰   )rg   r/  Úcreator_pidrw   rv   ró   s         r\   r>  zReadWriteLock._open_connectionç  sû   € ÜÓ!ñ 	Ü!›)ˆKÜ*×4Ñ4Ó6ˆIÜ‹y˜KÒ'ØQ�Ü" 3Ó'Ð'ð8Ü%Ü—I‘I˜d×2Ñ2Ó3Ü/Ø*ô�
ð Ð$Ø×)Ñ)¨)Ô4Ü‹y˜KÒ'Ü!×3Ñ3Ø×(Ñ(Ü%×.Ñ.¨t×/CÑ/CÓDôð R�Ü" 3Ó'Ð'Ø÷/	ñ 	øô #ò 8Ü˜dŸn™nÓ-°4Ð7ð8ú÷	ð 	ús$   ‹9DÁ/C)Á4A+DÃ) D	Ä	DÄDc                óü  — t        «       5  | j                  x}€
	 d d d «       y d }| j                  s,|j                  r	 |j	                  «        d| _        nd| _        	 |j                  «        d | _        d| _        d | _	        |�|‚	 d d d «       y # t
        j                  $ r }|j                  r‚ d| _        |}Y d }~Œbd }~ww xY w# t
        j                  $ r}|�t        ||«       ‚ d }~ww xY w# 1 sw Y   y xY wr’   )
rö   ri  r:  rp  r¬  r÷   r  rÒ   r   r;  )rg   ró   Úrollback_errorr�  Úclose_errors        r\   rl  z ReadWriteLock._finish_connection  s  € ÜÓ!ñ 	%Ø"Ÿi™iÐ'�
Ð0Ø÷	%ð 	%ð 48ˆNØ×8Ò8Ø×,Ò,ðEØ"×+Ñ+Ô-ð AE˜Õ=à<@�DÔ9ðØ× Ñ Ô"ð
 ˆDŒIØ48ˆDÔ1Ø(,ˆDÔ%ØÐ)Ø$Ð$ð *÷5	%ð 	%øô #Ÿ=™=ò /Ø%×4Ò4Ø!Ø@D˜Ô=Ø).�ûð	/ûô —=‘=ò Ø!Ð-Ü)¨.¸+ÔFØûðú÷'	%ð 	%ús]   ‹C2¤C2¿BÁC2ÁCÁ/C2ÂCÂ%C Â;C2Ã CÃC2ÃC/ÃC*Ã*C/Ã/C2Ã2C;c                ó~   — | j                   dkD  r | j                  «       r| j                  «        | j                   dkD  S rv  )r4  ra  rn  rf   s    r\   r�  zReadWriteLock._holds_level  s8   € à×Ñ˜aÒ D×$;Ñ$;Ô$=Ø×"Ñ"Ô$Ø×Ñ !Ñ#Ð#r[   c                ó.  — | j                   |k7  rk|dk(  rdnd}|| j                  k(  s|| j                  v r|dk(  rdnd}d|› d|› d�}nd|› d	�}d
|› d| j                  › dt	        | «      › d|› �}t        |«      ‚|dk(  rE|| j                  k7  r6d| j                  › dt	        | «      › d|› d| j                  › �}t        |«      ‚|dk(  r,| j                  j                  |d«      dz   | j                  |<   | xj                  dz  c_        t        | ¬«      S )NrA  rG  Ú	downgradeÚupgradezalready holding a z lock (z not allowed)zanother thread holds a z‚ lock on this instance, which coordinates processes rather than threads; give each thread its own instance with is_singleton=FalsezCannot acquire z	 lock on re  z): zCannot acquire write lock on rr  rs  r   rf  r•  )	r5  r6  r7  r  rj  rr   r®   r4  r   )rg   rZ  ÚcurÚoppositeÚ	directionÚreasonrv   s          r\   rŽ  z!ReadWriteLock._validate_reentrant%  sQ  € Ø×Ñ Ò%Ø"&¨&¢.‘w°fˆHØ�d×+Ñ+Ò+¨s°d×6GÑ6GÑ/GØ+/°6ª>™K¸y�	Ø-¨h¨Z°w¸y¸kÈÐW‘ð .¨h¨Zð 8^ð ^ð ð $ D 6¨°4·>±>Ð2BÀ+ÌbÐQUËhÈZÐWZÐ[aÐZbÐcˆCÜ˜sÓ#Ð#Ø�7Š?˜s d×&;Ñ&;Ò;à/°·±Ð/?¸{Ì2ÈdË8È*ð UØ"˜eÐ#?À×@UÑ@UÐ?VðXð ô ˜sÓ#Ð#Ø�6Š>Ø%)×%6Ñ%6×%:Ñ%:¸3ÀÓ%BÀQÑ%FˆD×Ñ˜cÑ"Ø×Ò˜AÑÕÜ! tÔ,Ð,r[   c               ól   — t        | j                  ||t        |¬«      st        | j                  «      d ‚y )N)rÊ   r  Úpoll_intervalrÝ   )r   r2  rB   r&   r  )rg   rÊ   r  rÝ   s       r\   r�  z'ReadWriteLock._acquire_transaction_lock=  s9   € ô $Ø×"Ñ"ØØÜ/Ø%õ
ô ˜$Ÿ.™.Ó)¨tÐ3ð
r[   c                óÆ   — | j                   5  t        j                  «       | j                  v }d d d «       rd|› d| j                  › d�}t        |«      ‚y # 1 sw Y   Œ*xY w)NzCannot z ReadWriteLock on rŠ  )r3  rb   rg  r8  r  rr   )rg   rŒ  Úactive_in_current_threadrv   s       r\   rS  z!ReadWriteLock._raise_if_acquiringI  sl   € Ø× Ñ ñ 	]Ü'0×':Ñ':Ó'<À×@\Ñ@\Ð'\Ð$÷	]á#Ø˜I˜;Ð&8¸¿¹Ð8HÐHsÐtˆCÜ˜sÓ#Ð#ð $÷	]ð 	]ús   �!AÁA c                ól   — t        «       |k7  s| j                  rd| j                  › d�}t        |«      ‚y )Nr}  r~  )r7   rR  r  rr   )rg   r’  rv   s      r\   r™  z'ReadWriteLock._raise_if_process_changedP  s6   € Ü‹9˜Ò%¨¯ªØ% d§n¡nÐ%5Ð5iÐjˆCÜ˜sÓ#Ð#ð *9r[   rz   r$  )r  r%  r  rÚ   rÊ   r&  r{   r'  )
r  r%  r  rÚ   rÊ   r&  r  r&  r{   r|   ra   )r  úfloat | NonerÊ   úbool | Noner{   r   )r  rÊ  rÊ   rË  r{   úGenerator[None])rN  r&  r{   r|   )rY  rT   rZ  úLiteral['read', 'write']r  rÚ   rÊ   r&  rÝ   zCallable[[], bool]r{   r   )r]  rT   r{   r|   )r]  rT   r{   r&  )rN  r&  rÒ   r&  r]  ú
int | Noner{   r|   )r{   r&  )r{   r
  )ró   r
  r{   r|   )rZ  rÍ  r  rÚ   rÊ   r&  rY  rÎ  rÝ   rÜ   r{   r   )rZ  rÍ  r  rÚ   rY  rT   rÊ   r&  rŒ  rØ   r{   r   )
r  rÚ   rÊ   r&  r’  rT   rÛ   rÚ   r{   r|   )
rZ  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{   ræ   )rZ  rÍ  rÁ  rT   r{   r   )rÊ   r&  r  rÚ   rÝ   rÜ   r{   r|   )rŒ  z&Literal['acquire', 'close', 'release']r{   r|   )r’  rT   r{   r|   )7rV   rW   rX   r  r   r  rY   rb   rc   r  r7   r  rƒ   r  r*  Úclassmethodr,  rh   rE  rH  r   rJ  rM  rÇ   rÒ   r[  r_  rc  rT  ra  rh  rk  rn  Úpropertyri  Úsetterry   rR  r  rC  r…  r‘  r—  r˜  r�   r¨  r¦  r>  rl  r�  rŽ  r�  rS  r™  r  r  s   @r\   r'  r'  ¿  s‹  ø… ññ8 NaÓMb€JÐJÓbØ%�i—o‘oÓ'€OÙ“Y€NÙADÃÐ!Ð#>ÓFõ"ð àACð:ØY]ñ:Ø.ð:Ø9>ð:ØRVð:à	ò:ó ð:ð( ð*ð
 Ø!ñ*à)ð*ð ð*ð
 ð*ð ð*ð 
ó*ð>
ÐTXõ 
ð4
ÐUYõ 
ð8 ðÐQUô ó ðð  ðÐRVô ó ðð  (-õ 4ó&2ðiàðið 'ðið ð	ið ðið )ðið 
óióIó
ð MQõ $ó8-ó$ó"1ó
ð ò1ó ð1ð 
‡[�[ò7ó ð7ó
&ð òHó ðHó0ð "Ø26ñ$Nà&ð$Nð ð$Nð
 ð$Nð ð$Nð 0ð$Nð 
ó$NðX "Ø26ñ%Dà&ð%Dð ð%Dð
 ð%Dð ð%Dð 0ð%Dð 
ó%DðN.-à&ð.-ð ð.-ð ð	.-ð ð.-ð ð.-ð 
ó.-ó`:ð$9à&ð9ð ð9ð
 ð9ð ð9ð 
ó9ð@ ðØ'ðØ58ðØCHðØW[ðØhrðà	òó ðó0óó4%ó<$ó-ð0
4Øð
4Ø*/ð
4Ø?Xð
4à	ó
4ó$÷$r[   r'  )Ú	metaclassc               óœ  — t         j                  «        t        j                  dk(  rÐt	        | |¬«      }d }	 t        || «       | }t        t        j                  t        j                  | «      j                  «      «      s4t        | t        |«      «      }t        j                  |j                  «      }	 t        j                   |d|d|¬«      }|j'                  |«       |t        j(                  |«       S t+        | ||t        j,                  «       ¬«      S # t"        $ r |�t%        |«       ‚ w xY w# t        j(                  |«       w xY w)Nr*   ©Úoplock_waitFr   ©Úcheck_same_threadr¶  Úcached_statementsr  )r¶  r  Úowner)rž   r“   ÚsysÚplatformÚ_open_lock_databaseÚ_raise_if_walr+   rª   r0  r   r  ÚparentÚ_link_beside_on_windowsr-   r¶   r÷   Úconnectrm  rù   rý   rÒ   Ú_connect_through_descriptorÚgeteuid)r¶   r¶  r  rÀ   ÚlinkÚtargetró   s          r\   r·  r·  V  s  € Ü×%Ñ%Ô'ô ‡|�|�wÒÜ'¨¸gÔFˆØ&*ˆð	Ü˜"˜hÔ'ØˆFÜ(¬¯©´7·<±<ÀÓ3I×3PÑ3PÓ)QÔRÜ.¨x¼ÈÓ9LÓM�ÜŸ™ 4§=¡=Ó1�ðÜ$Ÿ_™_Ø¨e¸WÐXYÐcjô�
ð ×"Ñ" 4Ô(Øä�H‰H�R�LÜ&Ø˜'¨7¼"¿*¹*»,ôð øô !ò ØÐ#Ü*¨4Ô0Øðûô �H‰H�R�Lús$   ¸A=D4 Â6D ÃD4 ÄD1Ä1D4 Ä4Ec               ó®  — g }d }	 t         j                  | |«      x}€t         j                  t        | «      |«      }|\  }}}	t         j	                  «        t        || «       | }
t        t        j                  | «      j                  |«      s,t        | ||«      }t        j                  |j                  «      }
t        j                  |
d|d|¬«      }|j!                  ||«       |j#                  «        ||D ]  }t         j%                  |«       Œ |r|�t'        |«       S S S # |D ]  }t         j%                  |«       Œ |r|�t'        |«       w w w xY w)NFr   rÖ  )rä   rº   rÃ   rÜ  rÅ   rÝ  Ú_names_are_privater   r  rÞ  Ú_link_besiderª   r0  r¶   r÷   rà  rÿ   rÑ   rÇ   rù   )r¶   r¶  r  rÙ  r·   rã  rÆ   r‰   rÀ   rœ  rä  ró   Úunowneds                r\   rá  rá  u  sI  € ð
 $&€GØ"&€Dð)Ü'×-Ñ-¨h¸Ó@Ð@ˆEÐIÜ&×-Ñ-Ô.AÀ(Ó.KÈWÓUˆEØ‰ˆ�"�aä× Ñ Ô"Ü�b˜(Ô#Øˆô "¤'§,¡,¨xÓ"8×"?Ñ"?ÀÔGÜ ¨(°EÓ:ˆDÜ—Y‘Y˜tŸ}™}Ó-ˆFÜ—_‘_Ø e°WÐPQÐ[bô
ˆ
ð 	×%Ñ% d¨EÔ2Ø�‰ŒØàò 	0ˆGÜ×&Ñ& wÕ/ð	0á�tÐ'ä" 4Õ(ð (ˆ7øð ò 	0ˆGÜ×&Ñ& wÕ/ð	0á�tÐ'ä" 4Õ(ð (ˆ7ús   †C1D% Ä%/Ec                ó®   — t        j                  | «      }|j                  |dhv xr/ |j                  t        j
                  t        j                  z  z   S rv  )rª   r«   Úst_uidr­   r–   ÚS_IWGRPÚS_IWOTH)rú   rÙ  Ústatuss      r\   ræ  ræ  ˜  sD   € Ü—H‘H˜YÓ'€Fà�=‰=˜U A˜JÐ&Ò]¨v¯~©~ÄÇÁÔPT×P\ÑP\ÑA\Ñ/]Ð+]Ð]r[   c                  ó>   — e Zd ZU ded<   ded<   ded<   ed	d„«       Zy)
Ú_LinkDirectoryr›   rŠ   r@   r‰   rÔ   Únamec                óB   — | j                   | j                  z  t        z  S ra   )rŠ   rð  r    rf   s    r\   r¶   z_LinkDirectory.database¥  s   € à�y‰y˜4Ÿ9™9Ñ$¤zÑ1Ð1r[   N)r{   r›   )rV   rW   rX   rY   rÐ  r¶   rZ   r[   r\   rï  rï  ž  s'   … Ø
ÓØÓð ƒIàò2ó ñ2r[   rï  c                ó$  — t        j                  | «      j                  }t        |||«       t        j                  t	        j
                  t        «       |¬«      «      }t        j                  |t        «      }	 t        j                  |«      }|j                  dz  }|j                  |k7  s|r9t        j                  |«      r$dt        j                  |«      ›d�}t        |«      ‚|rsdt        j                  |«      ›dt        j                  |«      ›d�}	 t        j                   |d«       t        j                  |«      j                  dz  rt        |«      ‚t%        ||j&                  |j(                  ft+        j,                  d«      «      }
	 t        j.                  |
j0                  d|¬	«       t        j2                  | |
j4                  d
¬«       |
j4                  j7                  d
¬«      }	 t        j<                  |«       |j&                  |j(                  f|k7  rt;        |
«       d| ›�}t        |«      ‚|
S # t"        $ r}	t        |«      |	‚d }	~	ww xY w# t8        $ r t;        |
«       ‚ w xY w# t        j<                  |«       w xY w)N)ÚprefixÚdiré?   úlink directory ú was replaced while openingzZ stays open to other accounts through an inherited ACL that chmod 0700 cannot close; make z writable by its owner onlyiÀ  é   ©Údir_fdFr°  ú%lock database changed while opening: )r   r  rÞ  Ú_sweep_links_of_the_deadr	   ÚmkdtempÚ_link_prefixrª   ÚopenrJ   r¼   r­   rê  Úlistdirr0  r—   ÚfchmodÚPermissionErrorrï  r˜   r™   r   Ú	token_hexÚmkdirrð  rã  r¶   r–   rm  rù   rÒ   )r¶   r‰   rÙ  rÞ  rŠ   rÀ   ÚmadeÚlooserv   Úexcrã  Úlinkeds               r\   rç  rç  ª  s  € ô —L‘L Ó*×1Ñ1€FÜ˜V X¨uÔ5Ü—,‘,œx×/Ñ/´|³~È6ÔRÓS€DÜ—‘˜Ô.Ó/€BðÜ—h‘h˜r“lˆà—|‘| eÑ+ˆØ�;‰;˜%Ò¡E¬b¯j©j¸¬nØ#¤B§I¡I¨d£OÐ#6Ð6QÐRˆCÜ˜#“,Ðñ à!¤"§)¡)¨D£/Ð!4ð 57Ü79·y±yÀÓ7HÐ6KÐKfðhð ð,Ü—	‘	˜"˜eÔ$ô �x‰x˜‹|×#Ñ# eÒ+Ü˜c“lÐ"Ü$ T¨D¯K©K¸¿¹Ð+EÄw×GXÑGXÐYZÓG[Ó\ˆð	Ü�H‰H�T—Y‘Y ¨bÕ1Ü�G‰G�H˜dŸm™m¸UÕCØ ŸM™M×.Ñ.¸uÐ.ÓE‰Fô
 	�‰�ŒØ�‰�v—}‘}Ð%¨Ò1Ü˜tÔ$Ø5°h°\ÐBˆÜ�c‹lÐØ€Køô% #ò ,Ü˜c“l¨Ð+ûð,ûô ò 	Ü" 4Ô(Øð	ûô 	�‰��úsE   Á:BI8 ÄI Ä0A#I8 ÆA I É	IÉIÉIÉI8 ÉI5É5I8 É8Jc                óÈ  — |t         v ry t         j                  |«       	 t        j                  | «      5 }|D �cg c]?  }|j                  j                  t        «      r|j                  d¬«      r|j                  ‘ŒA }}d d d «       D ]*  }t        t        «      5  t        | |z  ||«       d d d «       Œ, y c c}w # 1 sw Y   Œ>xY w# t        $ r Y y w xY w# 1 sw Y   ŒWxY w)NFr°  )r¡   r�   rª   Úscandirrð  Ú
startswithrŸ   Úis_dirr—   r   Ú_remove_dead_links)rÞ  r‰   rÙ  ÚentriesÚentryÚnamesrð  s          r\   rü  rü  ×  sä   € ð
 Ô#Ñ#ØÜ×Ñ˜Ô"ðÜ�Z‰Z˜Óð 	 7ð %öàØ—:‘:×(Ñ(¬Ô6¸5¿<¹<ÐX]¸<Ô;^ð —
“
ðˆEð ÷	ð ò ?ˆä”gÓñ 	?Ü˜v¨™}¨h¸Ô>÷	?ð 	?ñ?ùò÷	ð 	ûô ò Ùðú÷	?ð 	?úsF    C	 µB=ºAB8Á>B=Â C	 ÂCÂ8B=Â=CÃC	 Ã		CÃCÃC!	c                óð  — t         j                  dk(  rt        | |«       y t        j                  | t
        «      }	 t        j                  |«      j                  |k7  st        | j                  «      s	 t        j                  |«       y t        j                  |«      5 }|D �cg c]  }|j                  ‘Œ }}d d d «       D ]†  }|t        k(  rt        ||«       Œ	 t        j                  |t
        |¬«      }	 t        ||«       t        j                  |«       t        t        «      5  t        j                   ||¬«       d d d «       Œˆ 	 t        j                  |«       t        t        «      5  | j!                  «        d d d «       y c c}w # 1 sw Y   ŒØxY w# t        $ r Y Œäw xY w# t        j                  |«       w xY w# 1 sw Y   �ŒxY w# t        j                  |«       w xY w# 1 sw Y   y xY w)Nr*   rù  )rÚ  rÛ  Ú_remove_dead_links_on_windowsrª   rÿ  rJ   r¼   rê  Ú_owner_is_gonerð  rÒ   r
  r    Ú_unlink_link_tor—   r   Úrmdir)rŠ   r‰   rÙ  rÀ   r  r  r  Únesteds           r\   r  r  î  s—  € ô ‡|�|�wÒÜ% d¨HÔ5Øô —‘˜Ô.Ó/€Bðô �8‰8�B‹<×Ñ %Ò'¬~¸d¿i¹iÔ/HØô& 	�‰��ô% �Z‰Z˜‹^ð 	=˜wØ4;Ö<¨5˜EŸJ›JÐ<ˆEÐ<÷	=àò 	+ˆEàœ
Ò"Ü ¨"Ô-ØðÜŸ™ Ô(8ÀÔD�ð!Ü ¨&Ô1ä—‘˜Ô Üœ'Ó"ñ +Ü—‘˜ rÕ*÷+ð +ñ	+ô  	�‰�ŒÜ	”'Ó	ñ Ø�
‰
Œ÷ð ùò% =÷	=ð 	=ûô ò Ùðûô
 —‘˜Õ ú÷+ñ +ûô 	�‰��ú÷ð ús•   ¼7G Â
G ÂFÂ$FÂ7FÂ9#G ÃFÃ:F+Ä$G Ä*GÅ
G Å1G,ÆFÆFÆG Æ	F(Æ%G Æ'F(Æ(G Æ+GÇG ÇG	Ç
G ÇG)Ç,G5c                óÊ   — 	 t        j                  t        |d¬«      }|j                  |j
                  f| k(  rt        j                  t        |¬«       y y # t        $ r Y y w xY w)NF)rú  r±  rù  )rª   r–   r    r—   r˜   r™   Úunlink)r‰   rú  r  s      r\   r  r    sW   € ðÜŸ™¤
°6È5ÔQˆð 	�‰�v—}‘}Ð%¨Ò1Ü
�	‰	”* VÖ,ð 2øô ò Ùðús   ‚A Á	A"Á!A"c                ó†  — | j                  t        «      j                  d«        rš dk(  r•\  }}} |j                  «       r€|j	                  «       rp|r |j                  «       r^|j	                  «       rNdt        |«      x}cxk  rdk  sy yt        «       }|t        |«      k(  xr t        |||rt        |«      nd «      S  	 y)Nú-é   rf  iÿÿÿF)	ÚremoveprefixrŸ   ÚsplitÚisasciiÚisdigitrT   r'   Ú_host_digestr(   )rð  rÙ   ÚstartÚdigestÚ	owner_pidÚhosts         r\   r  r    sª   € Ø
×
Ñ
œLÓ
)×
/Ñ
/°Ó
4ß$Ó$ !Ø�K‰KŒM˜cŸk™kœm±U¸u¿}¹}¼ÐSX×S`ÑS`ÔSbà¤c¨#£hÐ.˜Ô<°9Ò<Øð =ØÜ#›+ˆDØœ\¨$Ó/Ñ/Òr´NÀ9ÈdÑbgÔTWÐX]ÔT^ÐmqÓ4rÐrð %ð Ør[   c            	     óŒ   — t        t        j                  «       x} «      }t        › | › d|€dn|› dt	        t        «       «      › d�S )Nr  Ú )r)   rª   ÚgetpidrŸ   r   r'   )rÙ   r!  s     r\   rþ  rþ  )  sF   € ä&¬b¯i©i«kÐ'9 sÓ:€EÜˆ^˜C˜5 ¨¨¡"¸5Ð!AÀÄ<ÔPYÓP[ÓC\ÐB]Ð]^Ð_Ð_r[   c                ój   — t        j                  | j                  «       «      j                  «       d d S )Né   )r   Úsha256ÚencodeÚ	hexdigest)r$  s    r\   r   r   /  s'   € ä�>‰>˜$Ÿ+™+›-Ó(×2Ñ2Ó4°S°bÐ9Ð9r[   c                ó`  — t         j                  dk(  rt        | «       y 	 t        j                  | j
                  t        «      }	 t        j                  |«      }|j                  |j                  f| j                  k7  r	 t        j                  |«       y dD ]F  }t        t        «      5  t        j                  | j                   › dt"        › |› �|¬«       d d d «       ŒH t        t        «      5  t        j$                  | j                   |¬«       d d d «       t        j                  |«       t        t        «      5  | j
                  j%                  «        d d d «       y # t        $ r Y y w xY w# 1 sw Y   ŒâxY w# 1 sw Y   ŒlxY w# t        j                  |«       w xY w# 1 sw Y   y xY w)Nr*   ©r&  z-journalz-walz-shmú/rù  )rÚ  rÛ  Ú!_remove_link_directory_on_windowsrª   rÿ  rŠ   rJ   r—   r¼   r˜   r™   r‰   rÒ   r   r³  r  rð  r    r  )rã  rÀ   ÚopenedÚsuffixs       r\   rù   rù   4  s[  € Ü
‡|�|�wÒÜ)¨$Ô/ØðÜ—G‘G˜DŸI™IÔ'7Ó8ˆð
ÜŸ™ ›ˆØ�M‰M˜6Ÿ=™=Ð)¨T¯]©]Ò:Øô 	�‰��ð 7ò 	JˆFÜÔ+Ó,ñ JÜ—	‘	˜TŸY™Y˜K q¬¨°V°HÐ=ÀbÕI÷Jð Jð	Jô Ô'Ó(ñ 	+Ü�H‰H�T—Y‘Y rÕ*÷	+ô 	�‰�Œä	”'Ó	ñ Ø�	‰	�‰Ô÷ð øô ò Ùðú÷Jð Jú÷	+ð 	+ûô 	�‰��ú÷ð ús_   ¡$E# Á:F
 ÂF
 Â+-E2ÃF
 Ã1"E>ÄF
 Ä?F$Å#	E/Å.E/Å2E;	Å7F
 Å>FÆF
 Æ
F!Æ$F-c                óà  — t        j                  | «      j                  }t        ||d«       |t	        «       › t        j                  d«      › �z  }t        t        j                  |«      «       d }	 t        t        j                  |«      «      5 }t        ||t        j                  d«      «      }t        || |«       d d d «       |S # 1 sw Y   |S xY w# t        $ r |�t        |«       ‚ w xY w)Nr   rø  )r   r  rÞ  rü  rþ  r   r  r.   rª   r0  r0   rï  Ú_fill_link_directoryrm  rù   )r¶   r‰   rÞ  rŠ   rã  Údirectory_identitys         r\   rß  rß  P  s×   € ÜŸ™ XÓ.×5Ñ5ˆä  ¨°1Ô5Ø¤,£.Ð!1´'×2CÑ2CÀAÓ2FÐ1GÐHÑHˆÜ¤§	¡	¨$£Ô0Ø&*ˆð	äœŸ™ 4›Ó)ð ?Ð-?Ü% dÐ,>Ä×@QÑ@QÐRSÓ@TÓU�Ü$ T¨8°XÔ>÷?ð ˆ÷?ð ˆûô	 ò 	ØÐÜ& tÔ,Øð	ús*   Á2C Â.CÂ>C ÃCÃC ÃC ÃC-c                óÐ  — t        t        j                  | j                  «      «      s.dt        j                  | j                  «      ›d�}t	        |«      ‚t        t        j                  | j                  | j                  z  «      «       t        j                  || j                  «       t        t        j                  | j                  «      «      |k7  rd|›�}t	        |«      ‚y )Nrö  r÷  rû  )
r+   rª   r0  rŠ   r—   r.   rð  rã  r¶   r,   )rã  r¶   r‰   rv   s       r\   r4  r4  b  s£   € Ü$¤R§Y¡Y¨t¯y©yÓ%9Ô:Ø#¤B§I¡I¨d¯i©iÓ$8Ð#;Ð;VÐWˆCÜ˜#“,ÐÜ¤§	¡	¨$¯)©)°d·i±iÑ*?Ó @ÔAÜ
�‰�˜$Ÿ-™-Ô(äœŸ	™	 $§-¡-Ó0Ó1°XÒ=Ø9¸(¸ÐFˆCÜ˜#“,Ðð >r[   c                ó   — t        t        j                  | «      «      5  t        t        j                  | «      «      rt	        | j
                  «      s
	 d d d «       y t        j                  | «      5 }|D �cg c]!  }t        j                  |j                  «      ‘Œ# }}d d d «       D ]=  }t        ||t        z  «       t        t        «      5  |j                  «        d d d «       Œ? 	 d d d «       t        t        «      5  | j                  «        d d d «       y c c}w # 1 sw Y   Œ‚xY w# 1 sw Y   ŒŒxY w# 1 sw Y   ŒOxY w# 1 sw Y   y xY wra   )r0   rª   r0  r+   r  rð  r
  r   r  rŠ   Ú_unlink_link_to_on_windowsr    r   r—   r  )rŠ   r‰   r  r  r  rú   s         r\   r  r  m  s  € Ü”R—Y‘Y˜t“_Ó%ñ 	&Ü(¬¯©°4«Ô9ÄÐPT×PYÑPYÔAZØ÷	&ð 	&ô —‘˜DÓ!ð P WØGNÖ O¸e¤§¡¨e¯j©jÕ!9Ð O�Ð O÷Pà#ò &�	Ü*¨8°YÄÑ5KÔLÜœgÓ&ñ &Ø—O‘OÔ%÷&ð &ñ&÷	&ô ”gÓñ 	Ø�J‰JŒL÷	ð 	ùò !P÷Pð Pú÷&ð &ú÷	&ð 	&ú÷	ð 	ús_   Ÿ5D8ÁD8Á2D Á7&DÂD Â/D8ÃD,Ã
D8ÄEÄD Ä D)	Ä%D8Ä,D5Ä1D8Ä8EÅEc                ó®   — t        t        «      5  t        t        j                  |«      «      | k(  r|j                  «        d d d «       y # 1 sw Y   y xY wra   )r   r—   r,   rª   r0  r  )r‰   rŠ   s     r\   r8  r8  z  s=   € Ü”gÓñ 	ÜœBŸI™I d›OÓ,°Ò8Ø—‘”÷	÷ 	ñ 	ús   �2AÁAc           	     óª  — t        t        «      5  t        t        j                  | j
                  «      «      5 }|| j                  k7  r	 d d d «       d d d «       y dD ]K  }t        t        «      5  t        j                  | j                  › |› �«      j                  «        d d d «       ŒM t        t        «      5  t        j                  | j                  j                  «      j                  «        d d d «       d d d «       | j
                  j                  «        d d d «       y # 1 sw Y   ŒÑxY w# 1 sw Y   Œ@xY w# 1 sw Y   ŒDxY w# 1 sw Y   y xY w)Nr.  )r   r—   r0   rª   r0  rŠ   r‰   r³  r   r  r¶   r  rÞ  r  )rã  r5  r2  s      r\   r0  r0    s  € ä”gÓñ 		ÜœŸ™ 4§9¡9Ó-Ó.ð ?Ð2DØ%¨¯©Ò6Ø÷?÷		ð 		ð ?ò J�FÜ!Ô"3Ó4ñ JÜŸ™¨¯© °v°hÐ%?Ó@×GÑGÔI÷Jð JðJô Ô/Ó0ñ ?Ü—L‘L §¡×!5Ñ!5Ó6×<Ñ<Ô>÷?÷?ð �I‰I�O‰OÔ÷		ð 		÷
Jð Jú÷?ð ?ú÷?ð ?ú÷		ð 		ús^   �)E	¹D=Á
E	ÁD=Á/2D%	Â!D=Â:8D1Ã2D=Ã:"E	Ä%D.Ä*D=Ä1D:Ä6D=Ä=E	ÅE	Å	ErÔ  c               óV  — t         j                  dk(  r#t        | d|¬«      x}€d| ›d�}t        |«      ‚|S t	        j
                  | t        d«      }t        j                  t	        j                  |«      j                  «      s%t	        j                  |«       d| ›�}t        |«      ‚|S )Nr*   i€  rÔ  r²  z, is held without sharing or pending deletionz&refusing a non-regular lock database: )rÚ  rÛ  r/   r  rª   rÿ  rH   r–   r¬   r¼   r­   rÒ   r—   )r¶   rÕ  rÀ   rv   s       r\   rÜ  rÜ  �  s“   € Ü
‡|�|�wÒä& x°ÀKÔPÐPˆBÐYØ" 8 ,Ð.ZÐ[ˆCÜ! #Ó&Ð&Øˆ	Ü	�‰�œ>¨5Ó	1€BÜ�<‰<œŸ™ ›×,Ñ,Ô-Ü
�‰�ŒØ6°x°lÐCˆÜ�c‹lÐØ€Ir[   c                óú   — t        t        d«      rt        j                  | t        d«      nt        j                  | t        «      }|j                  t        «      r!t        |t           v rd|›d�}t        |«      ‚y y )NÚpreadr   z#refusing a WAL-mode lock database: ú&; give ReadWriteLock a file of its own)
rƒ  rª   r=  rO   rA  r  rK   rQ   rN   r  )rÀ   r¶   Úheaderrv   s       r\   rÝ  rÝ  œ  sl   € ô 6=¼RÀÔ5I”B—H‘H˜R¤¨qÔ1ÌrÏwÉwÐWYÔ[gÓOh€FØ×ÑœÔ'Ô,?À6ÔJZÑC[Ñ,[Ø3°H°<Ð?eÐfˆÜ˜‹oÐð -\Ð'r[   c              #  óž  ‡‡K  — t        «       ŠdŠ| j                  t        j                  d«       | j	                  ˆˆfd„d«       	 d –— 	 | j	                  d d«       y # t        j
                  $ r@}t        |t        j                  «      st        ‰«      ‰kD  rd|›d�}t        |«      |‚‚ d }~ww xY w# | j	                  d d«       w xY w­w)Né
   i   c                 ó    •— t        ‰ «      ‰k\  S ra   )r³   )ÚcallsÚ	max_callss   €€r\   ú<lambda>z!_bounded_schema.<locals>.<lambda>­  s   ø€ ¬D°«K¸9Ñ,D€ r[   r£  z<refusing a lock database whose schema is too large to load: r>  r   )
r   Úsetlimitr÷   ÚSQLITE_LIMIT_LENGTHÚset_progress_handlerÚDatabaseErrorrš  Ú	DataErrorr³   r  )ró   r¶   r�  rv   rC  rD  s       @@r\   r§  r§  ¦  sÃ   ùè ø€ ô “7€EØ€IØ×Ñœ×3Ñ3°TÔ:Ø×#Ñ#Ô$DÀdÔKð1Üð 	×'Ñ'¨¨aÕ0øô × Ñ ò ä�eœW×.Ñ.Ô/´4¸³;ÀÒ3JàNÈxÈlð [7ð 7ð ô ˜S“/ uÐ,Øûðûð 	×'Ñ'¨¨aÕ0üs6   „ACÁA  ÁCÁ B3Á3;B.Â.B3Â3B6 Â6C
Ã
Cc               #  ó¶   K  — t         xj                  dz  c_        	 d –— t         xj                  dz  c_        y # t         xj                  dz  c_        w xY w­w)Nrf  )r]   rU   rZ   r[   r\   rö   rö   ½  sB   è ø€ ä×$Ò$¨Ñ)Õ$ð.Ûä"×(Ò(¨AÑ-Ö(øÔ"×(Ò(¨AÑ-Ö(üs   ‚A�; ¡A»AÁAc                 óX   — t         j                  rt        j                  t        «       y y ra   )r]   rU   rª   Ú_exitrD   rZ   r[   r\   Ú_abort_forked_sqlite_transitionrN  Æ  s   € Ü!×'Ò'Ü
�‰Ô)Õ*ð (r[   c                ó8   — | dk(  rt         j                  «        y y )Nzsqlite3.connect)rž   r“   )Úeventrñ   s     r\   Ú_track_sqlite_userQ  Ë  s   € ØÐ!Ò!Ü×)Ñ)Õ+ð "r[   c               óì   — |du ry| dk(  rt         S | dk  rd}t        |«      ‚t        | dkD  rt        | |z
  d«      n| dz  «      }|t         kD  s|dk  r!t        j                  d| t         «       t         S |S )NFr   rÏ   z+timeout must be a non-negative number or -1r£  z7timeout %s is too large for SQLite, using %s ms instead)rA   r  rT   r†  r6   Úwarning)r  rÊ   r¢  rv   Ú
timeout_mss        r\   r¤  r¤  Ð  s‚   € Ø�5ÑØà�"‚}Ü%Ð%à�‚{Ø;ˆÜ˜‹oÐä¸'ÀAº+”c˜' NÑ2°AÔ6È7ÐVZÑZÓ[€JØÔ*Ò*¨j¸1ªnÜ�‰ÐQÐSZÔ\rÔsÜ%Ð%ØÐr[   )Úafter_in_childr¤  )r¶   rÔ   r¶  útype[_ForkSafeConnection]r  rÚ   r{   ræ   )
r¶   rÔ   r¶  rV  r  rÚ   rÙ  rT   r{   ræ   )rú   r›   rÙ  rT   r{   r&  )r¶   rÔ   r‰   r@   rÙ  rT   r{   rï  )rÞ  r›   r‰   r@   rÙ  rT   r{   r|   )rŠ   r›   r‰   r@   rÙ  rT   r{   r|   )r‰   r@   rú  rT   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@   r{   r|   )rŠ   r›   r‰   r@   r{   r|   )r‰   r@   rŠ   r›   r{   r|   )r¶   rÔ   rÕ  rÚ   r{   rT   )rÀ   rT   r¶   rÔ   r{   r|   )ró   zsqlite3.Connectionr¶   rÔ   r{   rÌ  )r{   rÌ  rz   )rP  rÔ   rñ   r4   r{   r|   )r  rÚ   rÊ   r&  r¢  rÚ   r{   rT   )˜Ú
__future__r   Ú__lazy_modules__r   Úloggingrª   r   r   r÷   r–   rÚ  r	   rb   r�  r   r
   Ú
contextlibr   r   Údataclassesr   r   r   r   Útypingr   r   r   r   r   r   r   Úweakrefr   Úfilelock._apir   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Úfilelock._errorr&   Úfilelock._identityr'   r(   r)   rÛ  Úfilelock._windowsr+   r,   r-   r.   r/   r0   Úcollections.abcr1   r2   r3   Ú	_typeshedr4   Ú	getLoggerr6   rY   r'  r7   Úimplementationrð  r9   rƒ  Úversion_infor>   rÔ   ÚbytesÚPathLikerÚ   rT   Útyperø   r?   Útupler@   rA   rB   rD   rE   ÚO_RDWRÚO_CREATÚgetattrrH   ÚO_RDONLYrJ   rK   ÚslicerN   rO   rQ   ÚlocalrS   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þ  r   rù   rß  r4  r  r8  r0  rÜ  rÝ  r§  rö   rN  rQ  r¤  Úaddaudithookr:   Ú__all__rZ   r[   r\   ú<module>rs     sö  ðÞ "ò	Ð ó Û Û 	Û Û Û Û Û 
Û Û Û Ý ß /ß (Ý ß W× WÑ WÝ '÷÷ ÷ ÷ õ  $ß MÑ Mà‡<�<�7Ò÷÷ ñ ß3Ýå à!2 ×!2Ñ!2°:Ó!>€Ð	Ó >Ø$&§I¡I€Ð	!Ó -Ø×*Ñ*×/Ñ/°6Ñ9€ˆ+Ó 9áˆBÐ"Ó#Òk¨×(:Ñ(:×(?Ñ(?À9Ñ(LÒkÐQT×QaÑQaÐdkÑQkð ˜+ó ð ˆ%�K�"—+‘+˜cÑ"Ñ" R§[¡[°Ñ%7Ñ7¸%Ñ?À#ÑEÈÈW×M_ÑM_ÑH`Ñ`ÐcgÑgð �ió ð  % S¨# X™Ð �9Ó .ð &7Ð ˜
Ó 6à&)Ð �|Ó )Ø')Ð ˜*Ó )à%)Ð �lÓ )àŸY™Y¨¯©Ñ3±g¸bÀ,ÐPQÓ6RÑRÑU\Ð]_ÐamÐopÓUqÑq€�
Ó qØ!Ÿ{™{©W°R¸ÈÓ-JÑJÉWÐUWÐYeÐghÓMiÑiÐ �*Ó ià4€ˆ|Ó 4Ù!& r¨2£Ð �,Ó .Ø€ˆjÓ Ø"#Ð �ZÓ #ô˜yŸ™ô ñ %=Ó$>Ð ˜EÓ >÷'ñ 'ñ< .Ó/Ð �EÓ /÷,6ñ ,6ñ^ 3Ó4Ð �5Ó 4à'€ˆjÓ 'Ø"€
ˆJÓ "Ù25³%Ð Ð/Ó 7÷J!ñ J!ôZ,�ô ,ôˆZô ñ �Ô÷2ð 2ó ð2ñ .Ó/Ð �EÓ /ô:˜'×,Ñ,ô :ñz �Ô÷#ð #ó ð#ô$G2˜ô G2ôTT
$Ð0õ T
$ónð> )Øð )Ø8ð )ØCHð )ØQTð )àó )óF^ô	2�Zô 	2ð*Øð*Ø.ð*Ø7:ð*àó*ðZ?Øð?Ø$5ð?Ø>Að?à	ó?ð."Ø
ð"Ø"3ð"Ø<?ð"à	ó"óJ-ó
ó`ó:ó
ð4 ‡<�<�7Òóó$	óóó
ð @Aõ óð ò1ó ð1ð, ò.ó ð.ó+ó
,ó
ñ$ Ð(Ô )Ù Ð'Ô (Ù Ð(Ô )Ù �]Ô #ÙØ€C×ÒÐ&Ô'Ù
ˆ2Ð!Ô"Ø€B×ÒÐ'FÕGð Øð�r[   