+
    ‘°³j8&  ã                  ó(  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHt ^ RI	H
t
 ^ RIHt ^ýtR]R&   ]! ]! ^!^4      4      ]! R4      0,
          tR	]R
&   R R ltR R lt]P*                  R8X  Edt   ^ RIt^ RIHt ]P0                  ! RRR7      tR]R&   ]P4                  .]P6                  n        ]P:                  ]P6                  n        ]P>                  ]P:                  ]P>                  .]P@                  n        ]P4                  ]P@                  n        ]P4                  ]PB                  ! ]PD                  4      ]PB                  ! ]PD                  4      ]PB                  ! ]PD                  4      ]PB                  ! ]PD                  4      .]PF                  n        ]P:                  ]PF                  n        Rt$R]R&   Rt%R]R&   ^Wt&R]R&   Rt'R]R&   R R lt(R  R! lt)M©R" R# lt(]P*                  R99   d!   ^t*R]R$&   R% R& lt+]+! 4       t,R]R'&   R( R) lt)Mr]P*                  R*8X  d\   ^ RIt^ RI-t-]P\                  ! RRR+7      t/R,]R-&   ^t0R]R.&   ^t1R]R/&   ^t2R]R0&   R1t3R2]R3&   ]-Ph                  ! ]34      t5R]R4&   R5 R6 lt)MR7 R8 lt). R:Ot6R# );é    )ÚannotationsN)ÚEPERMÚESRCH)ÚPath)ÚFinalz
Final[int]Ú_HOST_NAME_LIMITÚ?zFinal[frozenset[int]]Ú_HOST_NAME_VERBATIMc               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚstr© )Úformats   "ÚS/home/luca/screen-checking/.venv/lib/python3.14/site-packages/filelock/_identity.pyÚ__annotate__r      s   € ÷ ñ �3ñ ó    c                 ó
  € Rp \         P                  ! 4       P                  RR4       FM  pV\        9   d   \	        V4      MRVR 2p\        V 4      \        V4      ,           \        8”  d    MW,          p KO  	  T ;'       g    R# )aØ  
The hostname recorded alongside an owner, so a marker written on another machine is never probed here.

Marker formats here hold the field to printable non-space ASCII, while ``socket.gethostname()`` reports whatever
the kernel stores: a space, a newline that forges an extra marker line, or a byte no codec encodes, which Python
hands back as a surrogate. A holder that publishes one raw writes a marker it cannot read back, and loses the lock
to the first peer that ages it out as malformed. ``?`` is illegal in a hostname, so escaping it along with every
out-of-grammar byte as ``?<hex>`` leaves a real name untouched and still keeps two hosts apart, which
:func:`owner_is_stale` relies on to refuse to probe a foreign PID.
Ú zutf-8Úsurrogateescaper	   Ú02x)ÚsocketÚgethostnameÚencoder
   ÚchrÚlenr   )ÚnameÚbyteÚpieces      r   Ú	host_namer       st   € ð €DÜ×"Ò"Ó$×+Ñ+¨GÐ5FÖGˆØ!Ô%8Ô8”�D”	ÀÀ$ÀsÀ¸nˆÜˆt‹9”s˜5“zÕ!Ô$4Ô4ÙØ�Šñ	 Hð �;ˆ;�3Ðr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   ÚpidÚintÚhostnamer   Ústart_tokenú
int | Noner   Úboolr   )r   s   "r   r   r   %   s(   € ÷ :ñ :˜ð : sð :¸ð :Èñ :r   c                óŒ   € V\        4       8w  d   R# \        V 4      '       g   R# Vf   R# \        V 4      pVRJ;'       d    W28g  # )af  
Whether the recorded owner is provably gone, so reclaiming its marker cannot detach a live holder.

Fail closed: return ``True`` only when this process can prove the exact recorded owner is dead. A marker from
another host cannot be probed; a live PID whose start token still matches, or whose token cannot be read, is the
holder or is indistinguishable from it; a live PID whose start token differs is a recycled PID, so the process that
wrote the marker is gone. PostgreSQL, Qt ``QLockFile`` and Mercurial all break a stale lock only on proof of death
and treat an unreadable or foreign owner as still holding.
FTN)r    Úprocess_aliveÚprocess_start_token)r"   r$   r%   Úcurrents   &&& r   Úowner_is_staler,   %   sH   € ð ”9“;ÔÙÜ˜×ÒÙØÒÙÜ! #Ó&€GØ˜$Ð×9Ð9 7Ñ#9Ð9r   Úwin32)ÚwintypesÚkernel32T)Úuse_last_errorzFinal[ctypes.WinDLL]Ú	_KERNEL32i   Ú_WIN_SYNCHRONIZEi   Ú&_WIN_PROCESS_QUERY_LIMITED_INFORMATIONÚ_WIN_ERROR_INVALID_PARAMETERFzFinal[bool]Ú_WIN_INHERIT_HANDLEc               ó    € V ^8„  d   QhRRRR/# ©r   r"   r#   r   r'   r   )r   s   "r   r   r   P   s   € ÷ Gñ G˜3ð G 4ñ Gr   c                ó¶   € \         P                  \        \        V 4      pV'       d   \         P	                  V4       R# \
        P                  ! 4       \        8g  # )zSWhether a process with this PID exists, treating an access denial as proof it does.T)r1   ÚOpenProcessr2   r5   ÚCloseHandleÚctypesÚget_last_errorr4   )r"   Úhandles   & r   r)   r)   P   sA   € ä×&Ñ&Ô'7Ô9LÈcÓRˆßÜ×!Ñ! &Ô)ÙÜ×$Ò$Ó&Ô*FÑFÐFr   c               ó    € V ^8„  d   QhRRRR/# ©r   r"   r#   r   r&   r   )r   s   "r   r   r   X   s   € ÷ Hñ H ð H¨ñ Hr   c           	     ó6  € \         P                  \        \        V 4      pV'       g   R# R \	        ^4       4       w  r#rE \         P                  V\        P                  ! V4      \        P                  ! V4      \        P                  ! V4      \        P                  ! V4      4      '       g    \         P                  V4       R#  \         P                  V4       VP                  ^ ,          VP                  ,          #   \         P                  T4       i ; i)zXThe process creation FILETIME as a 100ns tick count, or ``None`` when it cannot be read.Nc              3  óL   "  € T F  p\         P                  ! 4       x € K  	  R # 5i)N)r.   ÚFILETIME)Ú.0Ú_s   & r   Ú	<genexpr>Ú&process_start_token.<locals>.<genexpr>]   s   é € Ð6]ÑT\Èq´x×7HÒ7H×7JÐ7JÓT\ùs   ‚"$)r1   r9   r3   r5   ÚrangeÚGetProcessTimesr;   Úbyrefr:   ÚdwHighDateTimeÚdwLowDateTime)r"   r=   ÚcreationÚ	exit_timeÚkernel_timeÚ	user_times   &     r   r*   r*   X   sÖ   € ä×&Ñ&Ô'MÔObÐdgÓhˆßÙÙ6]ÔTYÐZ[ÔT\Ó6]Ñ3ˆ˜[ð
	*Ü×,Ñ,ØÜ—’˜XÓ&Ü—’˜YÓ'Ü—’˜[Ó)Ü—’˜YÓ'÷ò ð ä×!Ñ! &Ö)ðô ×!Ñ! &Ô)Ø×'Ñ'¨2Õ-°×1GÑ1GÕGÐGøô ×!Ñ! &Õ)ús   Á A/D ÄDc               ó    € V ^8„  d   QhRRRR/# r7   r   )r   s   "r   r   r   m   s   € ÷ 
ñ 
˜3ð 
 4ñ 
r   c                óÊ   €  \         P                  ! V ^ 4       R#   \         d=   pTP                  \        8X  d    Rp?R# TP                  \
        8X  d    Rp?R# h Rp?ii ; i)z_Whether a process with this PID exists, treating an access denial (``EPERM``) as proof it does.NFT)ÚosÚkillÚOSErrorÚerrnor   r   )r"   Úerrors   & r   r)   r)   m   sL   € ð	Ü�GŠG�C˜ŒOñ øô ô 	Ø�{‰{œeÔ#ÝØ�{‰{œeÔ#ÝØûð	ús    ‚ ›A"¦AÁAÁAÁA"Ú_STARTTIME_INDEXc               ó   € V ^8„  d   QhRR/# )r   r   r#   r   )r   s   "r   r   r   €   s   € ÷ 
	ñ 
	˜sñ 
	r   c                 ó¾   €  \        R 4      P                  RR7      p \        V P                  4       P	                  RR4      ^4      #   \
        \        3 d     ^ # i ; i)z/proc/sys/kernel/random/boot_idÚascii)ÚencodingÚ-r   )r   Ú	read_textr#   ÚstripÚreplacerT   Ú
ValueError)Úboot_ids    r   Ú_read_boot_idrb   €   sX   € ðÜÐ@ÓA×KÑKÐU\ÐKÓ]�Ü˜7Ÿ=™=›?×2Ñ2°3¸Ó;¸RÓ@Ð@øÜœZÐ(ô Úðús   ‚AA ÁAÁAÚ_BOOT_IDc               ó    € V ^8„  d   QhRRRR/# r?   r   )r   s   "r   r   r   Ž   s   € ÷ 	0ñ 	0 Sð 	0¨Zñ 	0r   c                óX  €  \        RV  R24      P                  4       pYP                  R4      ^,           R P	                  4       p\        T4      \        8:  d   R#  \        T\        ,          4      p\        ^@,          T,          #   \         d     R# i ; i  \         d     R# i ; i)zeThe ``/proc/<pid>/stat`` ``starttime`` folded with the boot id, or ``None`` when the process is gone.z/proc/z/statNó   ))
r   Ú
read_bytesrT   ÚrfindÚsplitr   rW   r#   r`   rc   )r"   ÚdataÚfieldsÚ	starttimes   &   r   r*   r*   Ž   s¤   € ðÜ˜f S E¨Ð/Ó0×;Ñ;Ó=�ð Ÿ*™* TÓ*¨QÕ.Ð0Ð1×7Ñ7Ó9ˆFÜ�6‹{Ô.Ô.ÙðÜ Ô'7Õ 8Ó9�	ô  •N iÕ/Ð/øô ô Úðûô ô Úðús#   ‚B ÁB ÂBÂBÂB)Â(B)Údarwin)Ú	use_errnozFinal[ctypes.CDLL]Ú_LIBCÚ	_CTL_KERNÚ
_KERN_PROCÚ_KERN_PROC_PIDz<qiz
Final[str]Ú_TIMEVAL_AT_ZEROÚ_TIMEVAL_SIZEc               ó    € V ^8„  d   QhRRRR/# r?   r   )r   s   "r   r   r   «   s   € ÷ 	6ñ 	6 Sð 	6¨Zñ 	6r   c                ó@  € \         P                  ^,          ! \        \        \        V 4      p\         P
                  ! ^ 4      p\        P                  V^R\         P                  ! V4      R^ 4      ^ 8w  d   R# \         P                  VP                  ,          ! 4       p\        P                  V^V\         P                  ! V4      R^ 4      ^ 8w  g   VP                  \        8  d   R# \        P                  ! \        VP                  ^ 4      w  rEVR,          V,           # )zcThe process start time in microseconds from ``sysctl(KERN_PROC_PID)``, or ``None`` when it is gone.Ni@B )r;   Úc_intrp   rq   rr   Úc_size_tro   ÚsysctlrI   Úc_charÚvaluert   ÚstructÚunpack_fromrs   Úraw)r"   ÚmibÚlengthÚbufferÚsecondsÚmicrosecondss   &     r   r*   r*   «   sÊ   € ä—<‘< !Ö#¤Y´
¼NÈCÓPˆCÜ—_’_ QÓ'ˆFô �|‰|˜C  D¬&¯,ª,°vÓ*>ÀÀaÓHÈAÔMÙÜ—m‘m f§l¡lÖ2Ó5ˆFÜ�|‰|˜C  F¬F¯LªL¸Ó,@À$ÈÓJÈaÔOÐSY×S_ÑS_ÔboÔSoÙÜ$*×$6Ò$6Ô7GÈÏÉÐUVÓ$WÑ!ˆGØ˜YÕ&¨Õ5Ð5r   c               ó    € V ^8„  d   QhRRRR/# r?   r   )r   s   "r   r   r   »   s   € ÷ 	ñ 	 Sð 	¨Zñ 	r   c                ó   € ? R# )z_No proven start-time source, so the owner carries no token and liveness rests on the PID alone.Nr   )r"   s   &r   r*   r*   »   s   € àÙr   >   ÚlinuxÚandroid)r    r,   r)   r*   )7Ú__conditional_annotations__Ú
__future__r   rR   r   ÚsysrU   r   r   Úpathlibr   Útypingr   r   Ú__annotations__Ú	frozensetrG   Úordr
   r    r,   Úplatformr;   r.   ÚWinDLLr1   ÚHANDLEr:   ÚargtypesÚBOOLÚrestypeÚDWORDr9   ÚPOINTERrB   rH   r2   r3   r4   r5   r)   r*   rW   rb   rc   r|   ÚCDLLro   rp   rq   rr   rs   Úcalcsizert   Ú__all__)rˆ   s   @r   Ú<module>r›      s;  øðß "Ð "ã 	Û Û 
ß Ý Ý ð  #Ð �*Ó "á-6±u¸TÀ4Ó7HÓ-IÉSÐQTËXÈJÕ-VÐ Ð*Ó Võõ*:ð( ‡<�<�7ÕÛÝà&,§m¢m°JÈtÔ&T€IÐ#ÓTØ&.§o¡oÐ%6€I×ÑÔ"Ø$,§M¡M€I×ÑÔ!Ø&.§n¡n°h·m±mÀXÇ^Á^Ð%T€I×ÑÔ"Ø$,§O¡O€I×ÑÔ!à�‰Ø�Š�x×(Ñ(Ó)Ø�Š�x×(Ñ(Ó)Ø�Š�x×(Ñ(Ó)Ø�Š�x×(Ñ(Ó)ð*€I×ÑÔ&ð )1¯©€I×ÑÔ%à#+Ð�jÓ+Ø9?Ð*¨JÓ?Ø/1Ð  *Ó1Ø',Ð˜Ó,õGöHõ*
ð ‡|�|Ð+Ô+ð
 (*Ð˜*Ó)õ
	ñ  -›ˆ�*Ó.ö	0ð  
�‰˜Ô	!ÛÛà$*§K¢K°ÀÔ$EˆÐ!ÓEØ !ˆ	�:Ó!Ø!#ˆ
�JÓ#Ø%&ˆ˜
Ó&ð (-Ð˜*Ó,Ø$*§O¢OÐ4DÓ$Eˆ�zÓEö	6õ 	ò‚r   