Ë
    °È„jè  ã                   ó¤   — 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dlmZ ddlm	Z	 dd	l
mZ d
dlmZ  e j                  d«      Z G d„ d«      Zy)é    N)ÚAny)ÚList)ÚOptional)ÚUnioné   )ÚCache)ÚGroupCallParticipant)ÚParticipantListé   )ÚBridgedClientÚ	pytgcallsc            	       ó  — e Zd Zdedefd„Zdedee   fd„Zdee   de	j                  de	dee	   fd	„Z	 dded
edee	   fd„Zdeeef   dee   fd„Zdededdfd„Z	 	 dd„Zdededdfd„Zdedee   fd„Zdedee   fd„Zy)ÚClientCacheÚcache_durationÚappc                 óÂ   — || _         |j                  «       rdn|}|j                  «       rdn|}t        |«      | _        t        |«      | _        t        |«      | _        y )Nr   )Ú_appÚ
no_updatesr   Ú_input_callsÚ_call_participants_cacheÚ_dc_call_cache)Úselfr   r   Úfull_chat_durations       úU/var/www/html/GAP/venv/lib/python3.12/site-packages/pytgcalls/mtproto/client_cache.pyÚ__init__zClientCache.__init__   sU   € ð
 $'ˆŒ	Ø!Ÿn™nÔ.™°NˆØ"%§.¡.Ô"2™Q¸ÐÜ!Ð"4Ó5ˆÔÜ(-¨nÓ(=ˆÔ%Ü#Ð$6Ó7ˆÕó    Úchat_idÚreturnc              ƒ   ó  K  — | j                   j                  |«      }|€|dkD  r|S 	 t        j                  d|«       | j                  j                  |«      ƒ d {  –—† }|�| j                  ||«       |S 7 Œ# t        $ r Y y w xY w­w)Nr   zFullChat cache miss for %d)r   ÚgetÚ	py_loggerÚdebugr   Úget_callÚ	set_cacheÚ	Exception©r   r   Ú
input_calls      r   Úget_input_callzClientCache.get_input_call   s–   è ø€ ð ×&Ñ&×*Ñ*¨7Ó3ˆ
ØÐ! W¨q¢[ØÐð
Ü—‘Ð <¸gÔFØ#'§9¡9×#5Ñ#5°gÓ#>×>�
ØÐ)Ø—N‘NØØ"ôð "Ð!ð ?ùô ò ØØðüs:   ‚%B¨4A9 ÁA7ÁA9 Á6BÁ7A9 Á9	BÂBÂBÂBÚactionÚparticipantc                 ó  — |�‰| j                   j                  |«      €$| j                   j                  |t        «       «       | j                   j                  |«      }|�-| j                   j	                  |«       |j                  ||«      S y ©N)r   r    Úputr
   Úupdate_cacheÚupdate_participant)r   r   r)   r*   Úparticipantss        r   Úset_participants_cachez"ClientCache.set_participants_cache2   s–   € ð ÐØ×,Ñ,×0Ñ0°Ó9ÐAØ×-Ñ-×1Ñ1ØÜ#Ó%ôð ×-Ñ-×1Ñ1Øóð ð
 Ð'Ø×-Ñ-×:Ñ:¸7ÔCØ#×6Ñ6ØØóð ð r   Úonly_cachedc              ƒ   óà  K  — | j                  |«      ƒ d {  –—† }|�Ê| j                  j                  |«      €p|rg S t        j	                  d|«       | j
                  j                  |«      ƒ d {  –—† }|D ]-  }| j                  |t        j                  j                  |«       Œ/ nt        j	                  d|«       | j                  j                  |«      j                  «       S g S 7 ŒÒ7 Œz­w)Nz GetParticipant cache miss for %dzGetParticipant cache hit for %d)r(   r   r    r!   r"   r   Úget_participantsr1   r	   ÚActionÚUPDATED)r   r   r2   r'   Úlist_participantsr*   s         r   Úget_participant_listz ClientCache.get_participant_listK   só   è ø€ ð
  ×.Ñ.Øó
÷ 
ˆ
ð Ð!Ø×,Ñ,×0Ñ0°Ó9ÐAÙØ�IÜ—‘Ø6¸ôð +/¯)©)×*DÑ*DØó+÷ %Ð!ð $5ò �KØ×/Ñ/ØÜ,×3Ñ3×;Ñ;Ø#õñô —‘Ð AÀ7ÔKØ×0Ñ0×4Ñ4ØóçÑÓ ð!ð ˆ	ð1
øð%ús#   ‚C.—C*˜AC.Á1C,Á2A9C.Ã,C.Úcall_idc                 óü   — | j                   j                  D ]c  }| j                   j                  |«      }|t        |d«      r|j                  n|j
                  k(  sŒF| j                   j                  |«       |c S  y )NÚslug)r   Úkeysr    Úhasattrr;   Úidr.   )r   r9   ÚkeyÚcalls       r   Úget_chat_idzClientCache.get_chat_idj   sn   € ð ×$Ñ$×)Ñ)ò 	ˆCØ×$Ñ$×(Ñ(¨Ó-ˆDØ¬°°fÔ(=˜4Ÿ9š9À4Ç7Á7ÓKØ×!Ñ!×.Ñ.¨sÔ3Ø’
ð		ð
 r   r'   Nc                 óÄ   — | j                   j                  |||dkD  «       | j                  j                  |«      €%| j                  j                  |t	        «       «       y y )Nr   )r   r-   r   r    r
   r&   s      r   r$   zClientCache.set_cacheu   s`   € ð
 	×Ñ×ÑØØØ�a‰Kô	
ð
 ×(Ñ(×,Ñ,¨WÓ5Ð=Ø×)Ñ)×-Ñ-ØÜÓ!õð >r   c                 ó¦   — | j                   j                  |«       | j                  j                  |«       | j                  j                  |«       y r,   )r   Úpopr   r   ©r   r   s     r   Ú
drop_cachezClientCache.drop_cache…   s@   € ð 	×Ñ×Ñ˜gÔ&Ø×%Ñ%×)Ñ)¨'Ô2Ø×Ñ×Ñ Õ(r   Údc_idc                 ó<   — | j                   j                  ||«       y r,   )r   r-   )r   r   rG   s      r   Úset_dc_callzClientCache.set_dc_call�   s   € ð
 	×Ñ×ÑØØõ	
r   c                 ó8   — | j                   j                  |«      S r,   )r   r    rE   s     r   Úget_dc_callzClientCache.get_dc_call—   s   € ð ×"Ñ"×&Ñ& wÓ/Ð/r   Úphone_call_idc                 óZ   ‡ ‡— t        ˆˆ fd„‰ j                  j                  D «       d «      S )Nc              3   ót   •K  — | ]/  }t        ‰j                  j                  |«      d d«      ‰k(  r|–— Œ1 y­w)r>   N)Úgetattrr   r    )Ú.0Úuser_idrL   r   s     €€r   ú	<genexpr>z*ClientCache.get_user_id.<locals>.<genexpr>¢   sA   øè ø€ ò àÜØ×%Ñ%×)Ñ)¨'Ó2°D¸$óà"ò#ô ñùs   ƒ58)Únextr   r<   )r   rL   s   ``r   Úget_user_idzClientCache.get_user_id�   s0   ù€ ô ôà#×0Ñ0×5Ñ5ôð ó	
ð 		
r   )F)r   N)Ú__name__Ú
__module__Ú__qualname__Úintr   r   r   r   r(   r	   r5   r1   Úboolr   r8   r   ÚstrrA   r$   rF   rI   rK   rT   © r   r   r   r      sE  „ ð
8àð
8ð ó
8ðàðð 
�#‰óð,à˜#‘ðð %×+Ñ+ðð *ð	ð
 
Ð&Ñ	'óð8 "ñàðð ðð 
Ð"Ñ	#ó	ð>	à�s˜C�x‘ð	ð 
�#‰ó	ðàðð ðð 
ó	ð )ð 
ó)ð
àð
ð ð
ð 
ó	
ð0àð0ð 
�#‰ó0ð
àð
ð 
�#‰ô
r   r   )ÚloggingÚtypingr   r   r   r   Útypesr   Útypes.chatsr	   Útypes.participant_listr
   Úbridged_clientr   Ú	getLoggerr!   r   r[   r   r   ú<module>rc      s>   ðÛ Ý Ý Ý Ý å Ý .Ý 4Ý )àˆG×Ñ˜kÓ*€	÷[
ò [
r   