Ë
    _§1hi[  ã            	       óœ  ‡ — d Z ddlZddl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 erddlmZ  ed«      D � ‡ cg c]  Š  eˆ fd	„ ed«      D «       «      ‘Œ c} Z G d
„ d«      Z G d„ d«      ZdZdZdZdZdZeZdZdZdZdZ dZ!dZ"dZ# G d„ de«      Z$ G d„ de«      Z%e%jL                  e%jN                  e%jP                  fZ)dZ*dZ+dZ,dZ-dZ.d Z/d!Z0d!Z1 ejd                  d"d«      Z3 G d#„ d$e4«      Z5 G d%„ d&e«      Z6 G d'„ d(e«      Z7 G d)„ d*e«      Z8d+ed,e9d-efd.„Z: G d/„ d0«      Z; G d1„ d2«      Z< G d3„ d4«      Z= G d5„ d6«      Z>yc c} w )7zY
wsproto/frame_protocol
~~~~~~~~~~~~~~~~~~~~~~

WebSocket frame protocol implementation.
é    N)ÚgetincrementaldecoderÚIncrementalDecoder)ÚIntEnum)Ú	GeneratorÚListÚ
NamedTupleÚOptionalÚTupleÚTYPE_CHECKINGÚUnioné   )Ú	Extensioné   c              3   ó(   •K  — | ]	  }|‰z  –— Œ y ­w©N© )Ú.0ÚaÚbs     €úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/wsproto/frame_protocol.pyú	<genexpr>r      s   øè ø€ Ò.˜a�A˜•EÑ.ùs   ƒc                   ó,   — e Zd Zdeddfd„Zdedefd„Zy)ÚXorMaskerSimpleÚmasking_keyÚreturnNc                 ó   — || _         y r   )Ú_masking_key)Úselfr   s     r   Ú__init__zXorMaskerSimple.__init__   s
   € Ø'ˆÕó    Údatac                 ó²  — |rÔt        |«      }d„ | j                  D «       \  }}}}|d d d…   j                  |«      |d d d…<   |dd d…   j                  |«      |dd d…<   |dd d…   j                  |«      |dd d…<   |dd d…   j                  |«      |dd d…<   t        |«      dz  }| j                  |d  | j                  d | z   | _        t	        |«      S |S )Nc              3   ó.   K  — | ]  }t         |   –— Œ y ­wr   )Ú
_XOR_TABLE)r   Úns     r   r   z*XorMaskerSimple.process.<locals>.<genexpr>   s   è ø€ ÒC¨Aœ* Q�-ÑCùs   ‚é   r   é   é   )Ú	bytearrayr   Ú	translateÚlenÚbytes)r   r!   Ú
data_arrayr   r   ÚcÚdÚkey_rotations           r   ÚprocesszXorMaskerSimple.process   s  € ÙÜ" 4›ˆJÙC°×1BÑ1BÔC‰JˆAˆq�!�QØ(©¨1¨™o×7Ñ7¸Ó:ˆJ‘s˜�s‰OØ)¨!¨$¨Q¨$Ñ/×9Ñ9¸!Ó<ˆJ�q�t˜!�tÑØ)¨!¨$¨Q¨$Ñ/×9Ñ9¸!Ó<ˆJ�q�t˜!�tÑØ)¨!¨$¨Q¨$Ñ/×9Ñ9¸!Ó<ˆJ�q�t˜!�tÑô ˜t›9 q™=ˆLà×!Ñ! , -Ð0°4×3DÑ3DÀ]ÀlÐ3SÑSð Ôô ˜Ó$Ð$Øˆr    )Ú__name__Ú
__module__Ú__qualname__r,   r   r1   r   r    r   r   r      s(   „ ð( Eð (¨dó (ð˜Eð  eô r    r   c                   ó   — e Zd Zdedefd„Zy)ÚXorMaskerNullr!   r   c                 ó   — |S r   r   ©r   r!   s     r   r1   zXorMaskerNull.process.   s   € Øˆr    N)r2   r3   r4   r,   r1   r   r    r   r6   r6   -   s   „ ð˜Eð  eô r    r6   é~   é   é}   iÿÿ  l   ÿÿÿÿ é€   é@   é    é   é   c                   ó4   — e Zd ZdZdZdZdZdZdZdZ	de
fd	„Zy
)ÚOpcodez7
    RFC 6455, Section 5.2 - Base Framing Protocol
    r   r   r'   é   é	   é
   r   c                 ó   — t        | dz  «      S )NrC   )Úbool©r   s    r   Ú	iscontrolzOpcode.iscontrol_   s   € Ü�D˜4‘KÓ Ð r    N)r2   r3   r4   Ú__doc__ÚCONTINUATIONÚTEXTÚBINARYÚCLOSEÚPINGÚPONGrG   rI   r   r    r   rB   rB   H   s=   „ ñð
 €Lð €Dð €Fð €Eð €Dð €Dð!˜4ô !r    rB   c                   óH   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZy)ÚCloseReasonz8
    RFC 6455, Section 7.4.1 - Defined Status Codes
    éè  ié  iê  ië  ií  iî  iï  ið  iñ  iò  ió  iô  iõ  i÷  N)r2   r3   r4   rJ   ÚNORMAL_CLOSUREÚ
GOING_AWAYÚPROTOCOL_ERRORÚUNSUPPORTED_DATAÚNO_STATUS_RCVDÚABNORMAL_CLOSUREÚINVALID_FRAME_PAYLOAD_DATAÚPOLICY_VIOLATIONÚMESSAGE_TOO_BIGÚMANDATORY_EXTÚINTERNAL_ERRORÚSERVICE_RESTARTÚTRY_AGAIN_LATERÚTLS_HANDSHAKE_FAILEDr   r    r   rR   rR   c   sn   „ ñð €Nð €Jð €Nð Ðð €Nð Ðð "&Ðð Ðð
 €Oð €Mð
 €Nð €Oð €Oð  Ñr    rR   rS   i·  i¸  iŸ  i   i‡  z!Ic                   óD   ‡ — e Zd Zej                  fdededdfˆ fd„Zˆ xZS )ÚParseFailedÚmsgÚcoder   Nc                 ó2   •— t         ‰| �  |«       || _        y r   )Úsuperr   re   )r   rd   re   Ú	__class__s      €r   r   zParseFailed.__init__Ñ   s   ø€ ô 	‰Ñ˜ÔØˆ�	r    )r2   r3   r4   rR   rV   Ústrr   Ú__classcell__)rh   s   @r   rc   rc   Ð   s.   ø„ à,7×,FÑ,FñØðØ)ðà	÷ñ r    rc   c                   ó,   — e Zd ZU eed<   eed<   eed<   y)ÚRsvBitsÚrsv1Úrsv2Úrsv3N)r2   r3   r4   rG   Ú__annotations__r   r    r   rl   rl   Ø   s   … Ø
ƒJØ
ƒJØ
„Jr    rl   c                   óF   — e Zd ZU eed<   eed<   eed<   eed<   ee	   ed<   y)ÚHeaderÚfinÚrsvÚopcodeÚpayload_lenr   N)
r2   r3   r4   rG   rp   rl   rB   Úintr	   r,   r   r    r   rr   rr   Þ   s!   … Ø	ƒIØ	ƒLØƒNØÓØ˜%‘Ô r    rr   c                   óL   — e Zd ZU eed<   eeeee	ef   f   ed<   e
ed<   e
ed<   y)ÚFrameru   ÚpayloadÚframe_finishedÚmessage_finishedN)r2   r3   r4   rB   rp   r   r,   ri   r
   rw   rG   r   r    r   ry   ry   æ   s-   … ØƒNØ�5˜#˜u S¨# X™Ð.Ñ/Ó/ØÓØÔr    ry   r!   Únbytesr   c                 ót   — t        | «      |k  r| S | d | } | j                  dd¬«      j                  d«      } | S )Núutf-8Úignore)Úerrors)r+   ÚdecodeÚencode)r!   r}   s     r   Ú_truncate_utf8r„   í   sD   € Ü
ˆ4ƒy�FÒØˆð ��ˆ=€Dð �;‰;�w xˆ;Ó0×7Ñ7¸Ó@€DØ€Kr    c                   óv   — e Zd Zddee   ddfd„Zdeddfd„Zdedefd„Zdedee   fd	„Z	dd
„Z
dd„Zdefd„Zy)ÚBufferNÚinitial_bytesr   c                 óX   — t        «       | _        d| _        |r| j                  |«       y y ©Nr   )r)   ÚbufferÚ
bytes_usedÚfeed)r   r‡   s     r   r   zBuffer.__init__þ   s&   € Ü“kˆŒØˆŒÙØ�I‰I�mÕ$ð r    Ú	new_bytesc                 ó.   — | xj                   |z  c_         y r   )rŠ   )r   r�   s     r   rŒ   zBuffer.feed  s   € Ø�Š�yÑ Žr    r}   c                 ó¦   — |s
t        «       S | j                  | j                  | j                  |z    }| xj                  t        |«      z  c_        |S r   )r)   rŠ   r‹   r+   )r   r}   r!   s      r   Úconsume_at_mostzBuffer.consume_at_most  sA   € ÙÜ“;Ðà�{‰{˜4Ÿ?™?¨T¯_©_¸vÑ-EÐFˆØ�Šœ3˜t›9Ñ$�Øˆr    c                 óp   — t        | j                  «      | j                  z
  |k  ry | j                  |«      S r   )r+   rŠ   r‹   r�   )r   r}   s     r   Úconsume_exactlyzBuffer.consume_exactly  s0   € Üˆt�{‰{Ó˜dŸo™oÑ-°Ò6Øà×#Ñ# FÓ+Ð+r    c                 óD   — | j                   d | j                  …= d| _        y r‰   )rŠ   r‹   rH   s    r   ÚcommitzBuffer.commit  s   € à�K‰KÐ)˜$Ÿ/™/Ð)Ð*Øˆ�r    c                 ó   — d| _         y r‰   )r‹   rH   s    r   ÚrollbackzBuffer.rollback  s	   € Øˆ�r    c                 ó,   — t        | j                  «      S r   )r+   rŠ   rH   s    r   Ú__len__zBuffer.__len__  s   € Ü�4—;‘;ÓÐr    r   ©r   N)r2   r3   r4   r	   r,   r   rŒ   rw   r�   r’   r”   r–   r˜   r   r    r   r†   r†   ý   sl   „ ñ% h¨u¡oð %Àó %ð!˜eð !¨ó !ð cð ¨eó ð, cð ,¨h°u©oó ,óó
ð ˜ô  r    r†   c                   ó$   — e Zd Zdd„Zdedefd„Zy)ÚMessageDecoderr   Nc                 ó    — d | _         d | _        y r   )ru   ÚdecoderrH   s    r   r   zMessageDecoder.__init__"  s   € Ø(,ˆŒØ59ˆ�r    Úframec                 óV  — |j                   j                  «       rJ ‚| j                   €9|j                   t        j                  u rt	        d«      ‚|j                   | _         n4|j                   t        j                  urt	        d|j                   z  «      ‚|j                   t        j
                  u r t        d«      «       | _        |j                  xr |j                  }| j                  €|j                  }nIt        |j                  t        t        f«      sJ ‚	 | j                  j                  |j                  |«      }t'        | j                   ||j                  |«      }|rd | _         d | _        |S # t        $ r(}t	        t!        |«      t"        j$                  «      ‚d }~ww xY w)Nzunexpected CONTINUATIONzexpected CONTINUATION, got %rr   )ru   rI   rB   rK   rc   rL   r   r�   r{   r|   rz   Ú
isinstancer,   r)   r‚   ÚUnicodeDecodeErrorri   rR   rZ   ry   )r   rž   Úfinishedr!   Úexcs        r   Úprocess_framezMessageDecoder.process_frame&  sS  € Ø—<‘<×)Ñ)Ô+Ð+Ð+à�;‰;ÐØ�|‰|œv×2Ñ2Ñ2Ü!Ð";Ó<Ð<ØŸ,™,ˆD�KØ�\‰\¤×!4Ñ!4Ñ4ÜÐ=ÀÇÁÑLÓMÐMà�<‰<œ6Ÿ;™;Ñ&Ø9Ô0°Ó9Ó;ˆDŒLà×'Ñ'ÒB¨E×,BÑ,Bˆà�<‰<ÐØ—=‘=‰Dä˜eŸm™m¬e´YÐ-?Ô@Ð@Ð@ðTØ—|‘|×*Ñ*¨5¯=©=¸(ÓC�ô �d—k‘k 4¨×)=Ñ)=¸xÓHˆáØˆDŒKØˆDŒLàˆøô &ò TÜ!¤# c£(¬K×,RÑ,RÓSÐSûðTús   Ä&E7 Å7	F(Æ #F#Æ#F(r™   )r2   r3   r4   r   ry   r¤   r   r    r   r›   r›   !  s   „ ó:ð 5ð ¨Uô r    r›   c                   ó�   — e Zd Z	 ddedeed      ddfd„Zdeddfd„Zdee	   fd	„Z
defd
„Zdededee   fd„Zdedededdfd„Zy)ÚFrameDecoderNÚclientÚ
extensionsr   r   c                 óŒ   — || _         |xs g | _        t        «       | _        d | _        d | _        d | _        d| _        d| _        y r‰   )	r§   r¨   r†   rŠ   ÚheaderÚeffective_opcodeÚmaskerÚpayload_requiredÚpayload_consumed)r   r§   r¨   s      r   r   zFrameDecoder.__init__H  sF   € ð ˆŒØ$Ò*¨ˆŒä“hˆŒà(,ˆŒØ26ˆÔØCGˆŒØ !ˆÔØ !ˆÕr    r!   c                 ó:   — | j                   j                  |«       y r   )rŠ   rŒ   r8   s     r   Úreceive_byteszFrameDecoder.receive_bytesV  s   € Ø�‰×Ñ˜Õr    c                 óˆ  — | j                   s| j                  «       sy | j                   €J ‚| j                  €J ‚| j                  €J ‚t	        | j
                  «      | j                  k  ry | j                   j                  | j                  z
  }| j
                  j                  |«      }|s| j                   j                  dkD  ry | j
                  j                  «        | xj                  t	        |«      z  c_        | j                  | j                   j                  k(  }| j                  j                  |«      }| j                  D ]2  }|j                  | |«      }t        |t        «      rt!        d|«      ‚|}Œ4 |rjt#        «       }| j                  D ]L  }|j%                  | | j                   j&                  «      }t        |t        «      rt!        d|«      ‚|€ŒH||z  }ŒN ||z  }t)        | j                  ||| j                   j&                  «      }|rd | _         d | _        d | _        |S t*        j,                  | _        |S )Nr   úerror in extension)rª   Úparse_headerr¬   r«   r+   rŠ   r­   rv   r®   r�   r”   r1   r¨   Úframe_inbound_payload_datar    rR   rc   r)   Úframe_inbound_completers   ry   rB   rK   )	r   Úpayload_remainingrz   r¢   Ú	extensionÚpayload_ÚfinalÚresultrž   s	            r   Úprocess_bufferzFrameDecoder.process_bufferY  sÿ  € Ø�{Š{Ø×$Ñ$Ô&Øà�{‰{Ð&Ð&Ð&Ø�{‰{Ð&Ð&Ð&Ø×$Ñ$Ð0Ð0Ð0äˆt�{‰{Ó˜d×3Ñ3Ò3Øà ŸK™K×3Ñ3°d×6KÑ6KÑKÐØ—+‘+×-Ñ-Ð.?Ó@ˆÙ˜4Ÿ;™;×2Ñ2°QÒ6ØØ�‰×ÑÔà×Ò¤ W£Ñ-ÕØ×(Ñ(¨D¯K©K×,CÑ,CÑCˆà—+‘+×%Ñ% gÓ.ˆàŸ™ò 	ˆIØ ×;Ñ;¸DÀ'ÓJˆHÜ˜(¤KÔ0Ü!Ð"6¸ÓAÐAØ‰Gð		ñ Ü“KˆEØ!Ÿ_™_ò $�	Ø"×9Ñ9¸$ÀÇÁÇÁÓP�Ü˜f¤kÔ2Ü%Ð&:¸FÓCÐCØÑ%Ø˜V‘O‘Eð$ð �uÑˆGä�d×+Ñ+¨W°hÀÇÁÇÁÓPˆáØˆDŒKØ$(ˆDÔ!ØˆDŒKð ˆô %+×$7Ñ$7ˆDÔ!àˆr    c                 ó¾  — | j                   j                  d«      }|€| j                   j                  «        yt        |d   t        z  «      }t        t        |d   t        z  «      t        |d   t        z  «      t        |d   t        z  «      «      }|d   t        z  }	 t        |«      }|j                  «       r|st        d«      ‚t        |d   t        z  «      }|d   t        z  }| j!                  ||«      }|€| j                   j                  «        y| j#                  |||«       |r| j$                  rt        d«      ‚|s| j$                  st        d	«      ‚|rI| j                   j                  d
«      }|€| j                   j                  «        yt'        |«      | _        nt+        «       | _        | j                   j-                  «        t/        ||||d «      | _        | j0                  j2                  | _        | j0                  j2                  j                  «       r|| _        d| _        yd| _        d| _        y# t        $ r t        d|d›�«      ‚w xY w)Nr'   Fr   zInvalid opcode z#xz)Invalid attempt to fragment control framer   z'client received unexpected masked framez)server received unexpected unmasked framer&   T)rŠ   r’   r–   rG   ÚFIN_MASKrl   Ú	RSV1_MASKÚ	RSV2_MASKÚ	RSV3_MASKÚOPCODE_MASKrB   Ú
ValueErrorrc   rI   Ú	MASK_MASKÚPAYLOAD_LEN_MASKÚparse_extended_payload_lengthÚextension_processingr§   r   r¬   r6   r”   rr   rª   ru   r«   r­   r®   )	r   r!   rs   rt   ru   Úhas_maskÚpayload_len_shortrv   r   s	            r   r³   zFrameDecoder.parse_header‹  s$  € Ø�{‰{×*Ñ*¨1Ó-ˆØˆ<Ø�K‰K× Ñ Ô"Øä�4˜‘7œXÑ%Ó&ˆÜÜ��a‘œ9Ñ$Ó%Ü��a‘œ9Ñ$Ó%Ü��a‘œ9Ñ$Ó%ó
ˆð
 �a‘œ;Ñ&ˆð	=Ü˜F“^ˆFð ×ÑÔ¡cÜÐIÓJÐJä˜˜Q™¤)Ñ+Ó,ˆØ  ™GÔ&6Ñ6ÐØ×8Ñ8¸ÐARÓSˆØÐØ�K‰K× Ñ Ô"Øà×!Ñ! &¨#¨{Ô;á˜ŸšÜÐGÓHÐHÙ §¢ÜÐIÓJÐJÙØŸ+™+×5Ñ5°aÓ8ˆKØÐ"Ø—‘×$Ñ$Ô&ØÜ)¨+Ó6ˆD�Kä'›/ˆDŒKà�‰×ÑÔÜ˜S # v¨{¸DÓAˆŒØ $§¡× 2Ñ 2ˆÔØ�;‰;×Ñ×'Ñ'Ô)Ø$/ˆDÔ!ð !"ˆÔØð %&ˆDÔ!Ø !ˆÔØøôI ò 	=Ü °°r¨{Ð;Ó<Ð<ð	=ús   Â!I ÉIru   rv   c                 ó¾  — |j                  «       r|t        kD  rt        d«      ‚|t        k(  rL| j                  j                  d«      }|€y t        j                  d|«      \  }|t        k  rt        d«      ‚|S |t        k(  rZ| j                  j                  d«      }|€y t        j                  d|«      \  }|t        k  rt        d«      ‚|dz	  rt        d	«      ‚|S )
Nz$Control frame with payload len > 125r'   ú!Hz6Payload length used 2 bytes when 1 would have sufficedrC   ú!Qz6Payload length used 8 bytes when 2 would have sufficedé?   z'8-byte payload length with non-zero MSB)
rI   ÚMAX_PAYLOAD_NORMALrc   ÚPAYLOAD_LENGTH_TWO_BYTErŠ   r’   ÚstructÚunpackÚPAYLOAD_LENGTH_EIGHT_BYTEÚMAX_PAYLOAD_TWO_BYTE)r   ru   rv   r!   s       r   rÅ   z*FrameDecoder.parse_extended_payload_lengthÀ  sì   € ð ×ÑÔ +Ô0BÒ"BÜÐDÓEÐEØÔ1Ò1Ø—;‘;×.Ñ.¨qÓ1ˆDØˆ|ØÜ#Ÿ]™]¨4°Ó6‰Nˆ[ØÔ0Ò0Ü!ØLóð ð" Ðð Ô5Ò5Ø—;‘;×.Ñ.¨qÓ1ˆDØˆ|ØÜ#Ÿ]™]¨4°Ó6‰Nˆ[ØÔ2Ò2Ü!ØLóð ð ˜bÒ ô "Ð"KÓLÐLàÐr    rt   c                 ó  — g d¢}| j                   D ]M  }|j                  | |||«      }t        |t        «      rt	        d|«      ‚t        |«      D ]  \  }}|sŒ	d||<   Œ ŒO t        ||«      D ]  \  }	}
|
sŒ	|	rŒt	        d«      ‚ y )N)FFFr²   TzReserved bit set unexpectedly)r¨   Úframe_inbound_headerr    rR   rc   Ú	enumerateÚzip)r   ru   rt   rv   Úrsv_usedr·   rº   ÚbitÚusedÚexpectedÚfounds              r   rÆ   z!FrameDecoder.extension_processingÞ  s�   € ò )ˆØŸ™ò 	)ˆIØ×3Ñ3°D¸&À#À{ÓSˆFÜ˜&¤+Ô.Ü!Ð"6¸Ó?Ð?Ü& vÓ.ò )‘	��TÚØ$(�H˜S’Mñ)ð		)ô  # 8¨SÓ1ò 	C‰OˆH�eÚšXÜ!Ð"AÓBÐBñ	Cr    r   )r2   r3   r4   rG   r	   r   r   r,   r°   ry   r»   r³   rB   rw   rÅ   rl   rÆ   r   r    r   r¦   r¦   G  s¨   „ àFJñ"Øð"Ø(0°°kÑ1BÑ(Cð"à	ó"ð %ð ¨Dó ð0 ¨¡ó 0ðd3˜dó 3ðjØðØ+.ðà	�#‰óð<CØðCØ#*ðCØ9<ðCà	ôCr    r¦   c            	       ó  — e Zd Zdeded   ddfd„Zdedefd„Zdee	e   ddf   fd	„Z
d
eddfd„Zdeeddf   fd„Zdde	e   de	e   defd„Zddedefd„Zddedefd„Z	 ddeeeef   dedefd„Zdedededefd„Z	 ddedededefd„Zy)ÚFrameProtocolr§   r¨   r   r   Nc                 ó  — || _         |D �cg c]  }|j                  «       sŒ|‘Œ c}| _        t        | j                   | j                  «      | _        t        «       | _        | j                  «       | _        d | _	        y c c}w r   )
r§   Úenabledr¨   r¦   Ú_frame_decoderr›   Ú_message_decoderÚ_parse_more_genÚ_parse_moreÚ_outbound_opcode)r   r§   r¨   Úexts       r   r   zFrameProtocol.__init__ï  sf   € ØˆŒØ*4ÖF 3¸¿¹½š3ÒFˆŒô +¨4¯;©;¸¿¹ÓHˆÔÜ .Ó 0ˆÔØ×/Ñ/Ó1ˆÔà26ˆÕùò Gs
   ŒA?¢A?rž   c                 ó²  — |j                   }t        |t        t        f«      sJ ‚|st        j
                  df}n­t        |«      dk(  rt        d«      ‚t        j                  d|d d «      \  }|t        k  s	|t        kD  rt        d«      ‚	 t	        |«      }|t        v rt        d«      ‚t        |t        «      s|t        k  rt        d«      ‚	 |dd  j                  d	«      }||f}t'        |j(                  ||j*                  |j,                  «      S # t        $ r Y Œ‡w xY w# t         $ r+}t        d
t#        |«      z   t        j$                  «      ‚d }~ww xY w)NÚ r   zCLOSE with 1 byte payloadrÊ   r'   zCLOSE with invalid codez#remote CLOSE with local-only reasonz CLOSE with unknown reserved coder   zError decoding CLOSE reason: )rz   r    r,   r)   rR   rX   r+   rc   rÏ   rÐ   ÚMIN_CLOSE_REASONÚMAX_CLOSE_REASONrÂ   ÚLOCAL_ONLY_CLOSE_REASONSÚMAX_PROTOCOL_CLOSE_REASONr‚   r¡   ri   rZ   ry   ru   r{   r|   )r   rž   r!   re   Úreasonr£   s         r   Ú_process_closezFrameProtocol._process_closeú  sQ  € Ø�}‰}ˆÜ˜$¤¬	Ð 2Ô3Ð3Ð3áô  ×.Ñ.°Ð3‰DÜ�‹Y˜!Š^ÜÐ9Ó:Ð:ä—m‘m D¨$¨r°¨(Ó3‰GˆTØÔ&Ò&¨$Ô1AÒ*AÜ!Ð";Ó<Ð<ðÜ" 4Ó(�ð Ô/Ñ/Ü!Ð"GÓHÐHÜ˜d¤KÔ0°TÔ=VÒ5VÜ!Ð"DÓEÐEðØ˜a˜b˜Ÿ™¨Ó1�ð ˜&�>ˆDä�U—\‘\ 4¨×)=Ñ)=¸u×?UÑ?UÓVÐVøô ò Ùðûô &ò Ü!Ø3´c¸#³hÑ>Ü×:Ñ:óð ûðús*   ÂD ÃD" Ä	DÄDÄ"	EÄ+&EÅEc              #   ó’  K  — | j                   D �cg c]  }|j                  «       sŒ|‘Œ c}| _         d}|sŠ| j                  j                  «       }|�f|j                  j                  «       s| j                  j                  |«      }n0|j                  t        j                  k(  r| j                  |«      }d}|–— |sŒ‰y y c c}w ­w)NFT)r¨   rß   rà   r»   ru   rI   rá   r¤   rB   rN   rí   )r   rå   Úclosedrž   s       r   râ   zFrameProtocol._parse_more_gen  s£   è ø€ ð +/¯/©/ÖK 3¸S¿[¹[½]š3ÒKˆŒØˆáØ×'Ñ'×6Ñ6Ó8ˆEàÐ Ø—|‘|×-Ñ-Ô/Ø ×1Ñ1×?Ñ?ÀÓF‘EØ—\‘\¤V§\¡\Ò1Ø ×/Ñ/°Ó6�EØ!�FàŠKô ùò Lùs   ‚C‘C§C«BCÃ Cr!   c                 ó:   — | j                   j                  |«       y r   )rà   r°   r8   s     r   r°   zFrameProtocol.receive_bytes0  s   € Ø×Ñ×)Ñ)¨$Õ/r    c              #   ó>   K  — | j                   D ]
  }|€ y |–— Œ y ­wr   )rã   )r   Úevents     r   Úreceived_frameszFrameProtocol.received_frames3  s(   è ø€ Ø×%Ñ%ò 	ˆEØˆ}Ùà“ñ		ùs   ‚re   rì   c                 ób  — t        «       }|t        j                  u rd }|€|rt        d«      ‚|t        v rt        j
                  }|�I|t        t        j                  d|«      «      z  }|�%|t        |j                  d«      t        dz
  «      z  }| j                  t        j                  |«      S )Nz&cannot specify a reason without a coderÊ   r   r'   )r)   rR   rX   Ú	TypeErrorrê   rT   rÏ   Úpackr„   rƒ   rÍ   Ú_serialize_framerB   rN   )r   re   rì   rz   s       r   ÚclosezFrameProtocol.close:  s§   € Ü“+ˆØ”;×-Ñ-Ñ-ØˆDØˆ<™FÜÐDÓEÐEØÔ+Ñ+Ü×-Ñ-ˆDØÐØ”y¤§¡¨T°4Ó!8Ó9Ñ9ˆGØÐ!Øœ>Ø—M‘M 'Ó*Ô,>ÀÑ,Bóñ �ð ×$Ñ$¤V§\¡\°7Ó;Ð;r    rz   c                 óB   — | j                  t        j                  |«      S r   )r÷   rB   rO   ©r   rz   s     r   ÚpingzFrameProtocol.pingK  ó   € Ø×$Ñ$¤V§[¡[°'Ó:Ð:r    c                 óB   — | j                  t        j                  |«      S r   )r÷   rB   rP   rú   s     r   ÚpongzFrameProtocol.pongN  rü   r    rs   c                 ó†  — t        |t        t        t        f«      rt        j
                  }n=t        |t        «      r"t        j                  }|j                  d«      }nt        d«      ‚| j                  €|| _
        n)| j                  |urt        d«      ‚t        j                  }|rd | _
        | j                  |||«      S )Nr   zMust provide bytes or textz!Data type mismatch inside message)r    r,   r)   Ú
memoryviewrB   rM   ri   rL   rƒ   rÂ   rä   rõ   rK   r÷   )r   rz   rs   ru   s       r   Ú	send_datazFrameProtocol.send_dataQ  s¤   € ô �g¤¤y´*Ð=Ô>Ü—]‘]‰FÜ˜¤Ô%Ü—[‘[ˆFØ—n‘n WÓ-‰GäÐ9Ó:Ð:à× Ñ Ð(Ø$*ˆDÕ!Ø×"Ñ"¨&Ñ0ÜÐ?Ó@Ð@ä×(Ñ(ˆFáØ$(ˆDÔ!à×$Ñ$ V¨W°cÓ:Ð:r    rt   ru   c                 óØ   — t        |«      dz  }t        |j                  «      dz  t        |j                  «      dz  z   t        |j                  «      dz  z   }t        |«      }||z  |z  S )Né   é   é   r&   )rw   rm   rn   ro   )r   rs   rt   ru   Úfin_bitsÚrsv_bitsÚopcode_bitss          r   Ú_make_fin_rsv_opcodez"FrameProtocol._make_fin_rsv_opcodeh  s_   € Ü�s“8˜q‘=ˆÜ˜Ÿ™“M QÑ&¬3¨s¯x©x«=¸AÑ+=Ñ>Ä#ÀcÇhÁhÃ-ÐSTÑBTÑUˆÜ˜&“kˆà˜(Ñ" [Ñ0Ð0r    c                 ó¨  — t        ddd«      }t        | j                  «      D ]  }|j                  | ||||«      \  }}Œ | j	                  |||«      }t        |«      }d}|t        k  r|}	d }
n|t        k  r	t        }	|}
n
t        }	|}
d}| j                  r|	dz  }	t        ||	g«      }|
�b|j                  «       rt        d«      ‚|r#|t        t        j                  d|
«      «      z  }n"|t        t        j                  d|
«      «      z  }| j                  r7t!        j"                  d«      }t%        |«      }||z   |j'                  |«      z   S ||z   S )NFTr<   z"payload too long for control framerË   rÊ   r&   )rl   Úreversedr¨   Úframe_outboundr	  r+   rÍ   rÒ   rÎ   rÑ   r§   r)   rI   rÂ   rÏ   rö   ÚosÚurandomr   r1   )r   ru   rz   rs   rt   r·   Úfin_rsv_opcodeÚpayload_lengthÚquad_payloadÚfirst_payloadÚsecond_payloadrª   r   r¬   s                 r   r÷   zFrameProtocol._serialize_frameo  s[  € ô �e˜U EÓ*ˆÜ! $§/¡/Ó2ò 	UˆIØ$×3Ñ3°D¸&À#ÀwÐPSÓT‰LˆC‘ð	Uð ×2Ñ2°3¸¸VÓDˆä˜W›ˆØˆØÔ/Ò/Ø*ˆMØ!‰NØÔ3Ò3Ü3ˆMØ+‰Nä5ˆMØ+ˆNØˆLà�;Š;Ø˜VÑ#ˆMä˜N¨MÐ:Ó;ˆØÐ%Ø×ÑÔ!Ü Ð!EÓFÐFÙØœ)¤F§K¡K°°nÓ$EÓFÑF‘àœ)¤F§K¡K°°nÓ$EÓFÑF�à�;Š;ô Ÿ*™* Q›-ˆKÜ$ [Ó1ˆFØ˜KÑ'¨&¯.©.¸Ó*AÑAÐAà˜ÑÐr    )NN)r    )r    T)r2   r3   r4   rG   r   r   ry   rí   r   r	   râ   r,   r°   ró   rw   ri   rø   rû   rþ   r   r)   r  rl   rB   r	  r÷   r   r    r   rÝ   rÝ   î  sE  „ ð	7˜tð 	7°°kÑ1Bð 	7Àtó 	7ðW Eð W¨eó WðB ¨8°E©?¸DÀ$Ð+FÑ!Gó ð*0 %ð 0¨Dó 0ð ¨5°$¸Ð+<Ñ!=ó ñ<˜( 3™-ð <¸À¹ð <ÐQVó <ñ";˜Eð ;¨Eó ;ñ;˜Eð ;¨Eó ;ð HLñ;Ø˜U I¨sÐ2Ñ3ð;Ø@Dð;à	ó;ð.1¨ð 1°7ð 1ÀFð 1Èsó 1ð AEñ2 Øð2 Ø',ð2 Ø9=ð2 à	ô2 r    rÝ   )?rJ   r  rÏ   Úcodecsr   r   Úenumr   Útypingr   r   r   r	   r
   r   r   r¨   r   Úranger,   r$   r   r6   rÎ   rÑ   rÍ   rÒ   ÚMAX_PAYLOAD_EIGHT_BYTEÚMAX_FRAME_PAYLOADrÃ   rÄ   r½   r¾   r¿   rÀ   rÁ   rB   rR   rX   rY   ra   rê   rè   ÚMIN_PROTOCOL_CLOSE_REASONrë   ÚMIN_LIBRARY_CLOSE_REASONÚMAX_LIBRARY_CLOSE_REASONÚMIN_PRIVATE_CLOSE_REASONÚMAX_PRIVATE_CLOSE_REASONré   rö   Ú	NULL_MASKÚ	Exceptionrc   rl   rr   ry   rw   r„   r†   r›   r¦   rÝ   )r   s   pr   ú<module>r!     s·  øðñó 
Û ß <Ý ß U× UÑ UáÝ%ñ 9>¸c»
×C°1‰eÓ.¡5¨£:Ô.Õ.ÒC€
÷ñ ÷0ñ ð Ð ØÐ ØÐ Ø Ð Ø"Ð Ø*Ð ð €	ØÐ ð €Ø€	Ø€	Ø€	Ø€ô!ˆWô !ô6T �'ô T ðr ×ÑØ× Ñ Ø×$Ñ$ðÐ ð Ð Ø Ð Ø Ð ØÐ ØÐ ØÐ ØÐ ØÐ ð ˆF�K‰K˜˜aÓ €	ô�)ô ôˆjô ô!ˆZô !ôˆJô ð˜ð ¨ð °ó ÷ ! ñ ! ÷H#ñ #÷LdCñ dC÷Ns ò s ùòy Ds   ¿E	