ó
    Û°›j¢  ã            	       óè  • % S r SSKrSSKrSSKJr  SSKJr  SSKJrJr  SSK	J
r
  SS	KJr  \" S
5      R                  r\" S5      R                  r\" S5      R"                  r\" S5      R"                  r\" S5      R"                  r\" S5      R"                  r\" S5      R"                  rSr\\   \S'   Sr\\   \S'   Sr\\   \S'   \R:                  S\\   4S j5       rS\S\ SS4S jr!\(       d  \
(       a  \!r"O	 SSK#J$r$  \$r"\RL                  " S5      r'\\\(      \S'   \RL                  " S5      r)\\\(      \S'   S&S \(S-  S!\*S\+\\*4   4S" jjr, S'S#\S!\*S$\*S\(4S% jjr-g! \% a    \!r" Njf = f)(z1Helpers for WebSocket protocol versions 13 and 8.é    N)ÚPattern)ÚStruct)ÚTYPE_CHECKINGÚFinalé   )ÚNO_EXTENSIONSé   )ÚWSHandshakeErrorz!Qz!Hz!BBz!BBHz!BBQz!Li @  ÚMSG_SIZEé   ÚMASK_LENs$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11ÚWS_KEYÚreturnc            	      ó€   ^ • [        S5       V ^ s/ s H!  m [        U 4S j[        S5       5       5      PM#     sn $ s  sn f )Né   c              3   ó,   >#   • U  H	  oT-  v •  M     g 7f©N© )Ú.0ÚaÚbs     €ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/aiohttp/_websocket/helpers.pyÚ	<genexpr>Ú_xor_table.<locals>.<genexpr>   s   øé € Ð,¢˜A�a–%¢ùs   ƒ)ÚrangeÚbytes)r   s   `r   Ú
_xor_tabler      s.   ø€ ä6;¸C´jÔA²j°ŒEÔ,¤ s¤Ó,Ö,±jÑAÐAùÒAs   �(;ÚmaskÚdatac                 ó”  ^• [        U[        5      (       d   U5       e[        U 5      S:X  d   U 5       eU(       aŽ  [        5       mU4S jU  5       u  p#pEUSSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   gg)a[  Websocket masking function.

`mask` is a `bytes` object of length 4; `data` is a `bytearray`
object of any length. The contents of `data` are masked with `mask`,
as specified in section 5.3 of RFC 6455.

Note that this function mutates the `data` argument.

This pure-python implementation may be replaced by an optimized
version when available.

r   c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr   r   )r   ÚnÚ
_XOR_TABLEs     €r   r   Ú)_websocket_mask_python.<locals>.<genexpr>1   s   øé € Ð2ªT¨�j –mªTùs   ƒNr	   r   é   )Ú
isinstanceÚ	bytearrayÚlenr   Ú	translate)r   r   r   r   ÚcÚdr#   s         @r   Ú_websocket_mask_pythonr,      sÛ   ø€ ô �dœI×&Ñ&Ð,¨Ó,Ð&Üˆt‹9˜‹>Ð˜4Óˆ>æÜ“\ˆ
Ü2©TÓ2‰
ˆˆaØ™˜1˜‘I×'Ñ'¨Ó*ˆ‰SˆqˆS‰	Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆT‰
Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆT‰
Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆTŠ
ð ó    )Ú_websocket_mask_cythonz�^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$Ú
_WS_EXT_REzpermessage-deflate([^,]+)?Ú_WS_EXT_RE_SPLITÚextstrÚisserverc                 ó¨  • U (       d  gSnSn[         R                  U 5       GH*  nUR                  S5      nU(       d  Sn  X#4$ [        R	                  U5      nU(       aÈ  SnU(       a\  UR                  S5      (       a*  [        UR                  S5      5      nUS:”  d  US:  a  SnM‡  UR                  S5      (       a  Sn  X#4$ UR                  S	5      (       a1  [        UR                  S	5      5      nUS:”  d  US:  a  [        S
5      eUR                  S5      (       a  Sn  X#4$ U(       a  GM  [        SUR                  S5      -   5      e   X#4$ )N)r   Fr   Fr	   é   r   é	   Té   zInvalid window sizer   z#Extension for deflate not supported)r0   ÚfinditerÚgroupr/   ÚmatchÚintr
   )r1   r2   ÚcompressÚ
notakeoverÚextÚdefextr9   s          r   Úws_ext_parser?   N   sK  € ÞØà€HØ€JÜ×(Ñ(¨×0ˆØ—‘˜1“ˆæØˆHØðJ ÐÐôI × Ñ  Ó(ˆÞØˆHÞð —;‘;˜q—>‘>Ü" 5§;¡;¨q£>Ó2�Hð
   "“}¨°1«Ø#$˜Ù Ø—;‘;˜q—>‘>Ø!%�Jàð$ ÐÐð! —;‘;˜q—>‘>Ü" 5§;¡;¨q£>Ó2�Hð
   "“}¨°1«Ü.Ð/DÓEÐEØ—;‘;˜q—>‘>Ø!%�Jàð
 ÐÐ÷ ‘Ü"Ð#HÈ3Ï9É9ÐUVË<Ñ#WÓXÐXñQ 1ðT ÐÐr-   r;   Úserver_notakeoverc                 óþ   • U S:  d  U S:”  a  [        S5      eS/nU(       d  UR                  S5        U S:  a  UR                  S[        U 5      -   5        U(       a  UR                  S5        SR                  U5      $ )	Nr5   r4   zCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateÚclient_max_window_bitszserver_max_window_bits=Úserver_no_context_takeoverz; )Ú
ValueErrorÚappendÚstrÚjoin)r;   r2   r@   Ú
enabledexts       r   Ú
ws_ext_genrI   �   s   € ð
 �!ƒ|�x "“}ÜØQó
ð 	
ð 'Ð'€JÞØ×ÑÐ2Ô3à�"ƒ}Ø×ÑÐ3´c¸(³mÑCÔDÞØ×ÑÐ6Ô7ð �9‰9�ZÓ Ð r-   )F)r4   FF).Ú__doc__Ú	functoolsÚrer   Ústructr   Útypingr   r   Úhelpersr   Úmodelsr
   Úunpack_fromÚUNPACK_LEN3ÚunpackÚUNPACK_CLOSE_CODEÚpackÚ	PACK_LEN1Ú	PACK_LEN2Ú	PACK_LEN3ÚPACK_CLOSE_CODEÚPACK_RANDBITSr   r:   Ú__annotations__r   r   r   Ú	lru_cacheÚlistr   r'   r,   Úwebsocket_maskr   r.   ÚImportErrorÚcompiler/   rF   r0   ÚboolÚtupler?   rI   r   r-   r   Ú<module>rc      s¼  ðÚ 7ã Û 	Ý Ý ß 'å #Ý $á�T‹l×&Ñ&€Ù˜4“L×'Ñ'Ð Ù�5‹M×Ñ€	Ù�6‹N×Ñ€	Ù�6‹N×Ñ€	Ù˜“,×#Ñ#€Ù�t“×!Ñ!€Ø€ˆ%�‰*Ó Ø€ˆ%�‰*Ó à>€ˆˆe‰Ó >ð ×ÑðB�D˜‘Kó Bó ðBð- ð -¨ið -¸Dô -ö2 –MØ+�Nð0Ý0à/ˆð
 #%§*¢*ð/ó#€
ˆE�'˜#‘,Ñó ð )+¯
ª
Ð3PÓ(QÐ �%˜ ™Ñ%Ó Qñ0 ˜˜t™ð 0 ¨tð 0 ÀÀcÈ4ÀiÑ@Põ 0 ðh KPñ!Øð!Ø"&ð!ØCGð!àö!øðE ó 0Ø/Šð0ús   Ã>E& Å&E1Å0E1