Ë
    CØïióf  ã            	       óÆ  — U 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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 ddlmZ ddlmZmZ dd	lmZ dd
lm Z  dZ! G d„ de	«      Z"e"D � ch c]
  }  e#| «      ’Œ c} Z$eee#      e%d<   dZ& G d„ de	«      Z'dZ(ee)   e%d<    ed«      jT                  Z+ ed«      jT                  Z, ed«      jZ                  Z. ed«      j^                  Z0 ed«      j^                  Z1 ed«      j^                  Z2 ed«      j^                  Z3dZ4ee#   e%d<   dZ5ee#   e%d<    G d„ de«      Z6 e6e'jn                  dd«      Z8 e6e'jr                  dd«      Z: G d„ d e;«      Z< G d!„ d"e;«      Z=ej|                  Z?ee@   e%d#<   ej‚                  d$ee)   fd%„«       ZBd&e)d'eCd$dfd(„ZDereDZEn		 dd)lFmGZG eGZE e)g d*¢«      ZIee)   e%d+<    ej”                  d,«      ZKeee@      e%d-<    ej”                  d.«      ZLeee@      e%d/<   d<d0ee@   d1eMd$ee#eMf   fd2„ZN	 d=d3e#d1eMd4eMd$e@fd5„ZO G d6„ d7e	«      ZP G d8„ d9«      ZQ G d:„ d;«      ZRyc c} w # eH$ r eDZEY Œ›w xY w)>z%WebSocket protocol versions 13 and 8.é    N)ÚIntEnum)ÚStruct)ÚAnyÚCallableÚFinalÚListÚ
NamedTupleÚOptionalÚPatternÚSetÚTupleÚUnionÚcasté   )ÚBaseProtocol)ÚZLibCompressorÚZLibDecompressor)ÚNO_EXTENSIONS)Ú	DataQueue)	ÚWS_CLOSED_MESSAGEÚWS_CLOSING_MESSAGEÚWS_KEYÚWebSocketReaderÚWebSocketWriterÚ	WSMessageÚWebSocketErrorÚ	WSMsgTypeÚWSCloseCodec                   ó@   — 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y)r   éè  ié  iê  ië  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  N)Ú__name__Ú
__module__Ú__qualname__ÚOKÚ
GOING_AWAYÚPROTOCOL_ERRORÚUNSUPPORTED_DATAÚABNORMAL_CLOSUREÚINVALID_TEXTÚPOLICY_VIOLATIONÚMESSAGE_TOO_BIGÚMANDATORY_EXTENSIONÚINTERNAL_ERRORÚSERVICE_RESTARTÚTRY_AGAIN_LATERÚBAD_GATEWAY© ó    úP/var/www/html/aiagents/fe/lib/python3.12/site-packages/aiohttp/http_websocket.pyr   r   ,   sG   „ Ø	€BØ€JØ€NØÐØÐØ€LØÐØ€OØÐØ€NØ€OØ€OØ�Kr2   r   ÚALLOWED_CLOSE_CODESi   c                   óP   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	ZeZeZeZeZeZe	Ze
ZeZy
)r   r   r   é   é	   é
   é   é   i  i  N)r!   r"   r#   ÚCONTINUATIONÚTEXTÚBINARYÚPINGÚPONGÚCLOSEÚCLOSINGÚCLOSEDÚERRORÚtextÚbinaryÚpingÚpongÚcloseÚclosingÚclosedÚerrorr1   r2   r3   r   r   H   sY   „ à€LØ€DØ€FØ€DØ€DØ€Eð €GØ€FØ€Eà€DØ€FØ€DØ€DØ€EØ€GØ€FØ�Er2   r   s$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11r   z!Hz!Qz!BBz!BBHz!BBQi @  ÚMSG_SIZEé   ÚDEFAULT_LIMITc                   óh   — e Zd ZU eed<   eed<   ee   ed<   ej                  dœde
egef   defd„Zy)	r   ÚtypeÚdataÚextra)ÚloadsrS   Úreturnc                ó&   —  || j                   «      S )zAReturn parsed JSON data.

        .. versionadded:: 0.22
        )rQ   )ÚselfrS   s     r3   ÚjsonzWSMessage.jsont   s   € ñ
 �T—Y‘YÓÐr2   N)r!   r"   r#   r   Ú__annotations__r   r
   ÚstrrW   rS   r   r1   r2   r3   r   r   n   s;   … Ø
ƒOà
ƒIØ�C‰=Óà48·J±Jò  ˜X s e¨S jÑ1ð  À3ô  r2   r   c                   ó<   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zˆ xZS )r   z WebSocket protocol parser error.ÚcodeÚmessagerT   Nc                 ó4   •— || _         t        ‰| �	  ||«       y ©N)r[   ÚsuperÚ__init__)rV   r[   r\   Ú	__class__s      €r3   r`   zWebSocketError.__init__ƒ   s   ø€ ØˆŒ	Ü‰Ñ˜˜wÕ'r2   c                 ó<   — t        t        | j                  d   «      S )Nr   )r   rY   Úargs©rV   s    r3   Ú__str__zWebSocketError.__str__‡   s   € Ü”C˜Ÿ™ 1™Ó&Ð&r2   )	r!   r"   r#   Ú__doc__ÚintrY   r`   re   Ú__classcell__)ra   s   @r3   r   r   €   s,   ø„ Ù*ð(˜Sð (¨3ð (°4õ (ð'˜÷ 'r2   r   c                   ó   — e Zd ZdZy)ÚWSHandshakeErrorz#WebSocket protocol handshake error.N)r!   r"   r#   rf   r1   r2   r3   rj   rj   ‹   s   „ Ú-r2   rj   Únative_byteorderrT   c            	      óx   ‡ — t        d«      D � ‡ cg c]  Š t        ˆ fd„t        d«      D «       «      ‘Œ! c} S c c} w )Nr:   c              3   ó(   •K  — | ]	  }|‰z  –— Œ y ­wr^   r1   )Ú.0ÚaÚbs     €r3   ú	<genexpr>z_xor_table.<locals>.<genexpr>•   s   øè ø€ Ò,˜A�!�a•%Ñ,ùó   ƒ)ÚrangeÚbytes)rp   s   `r3   Ú
_xor_tableru   “   s*   ø€ ä6;¸C³j×A°ŒEÓ,¤ s£Ô,Õ,ÒAÐAùÒAs   �$7ÚmaskrQ   c                 ó€  ‡— t        |t        «      sJ |«       ‚t        | «      dk(  sJ | «       ‚|r�t        «       Šˆfd„| 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…<   yy)aw  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.

    é   c              3   ó(   •K  — | ]	  }‰|   –— Œ y ­wr^   r1   )rn   ÚnÚ
_XOR_TABLEs     €r3   rq   z)_websocket_mask_python.<locals>.<genexpr>ª   s   øè ø€ Ò2¨�j •mÑ2ùrr   Nr   r6   é   )Ú
isinstanceÚ	bytearrayÚlenru   Ú	translate)rv   rQ   ro   rp   ÚcÚdr{   s         @r3   Ú_websocket_mask_pythonrƒ   ˜   sÜ   ø€ ô �dœIÔ&Ð,¨Ó,Ð&Üˆt‹9˜Š>Ð˜4Óˆ>áÜ“\ˆ
Û2¨TÔ2‰
ˆˆ1ˆa�Ø™˜1˜‘I×'Ñ'¨Ó*ˆ‰SˆqˆS‰	Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆT‰
Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆT‰
Ø˜!˜$˜Q˜$‘Z×)Ñ)¨!Ó,ˆˆQˆT�ˆTŠ
ð r2   )Ú_websocket_mask_cython)r   r   éÿ   r…   Ú_WS_DEFLATE_TRAILINGz�^(?:;\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                 óD  — | syd}d}t         j                  | «      D ]þ  }|j                  d«      }|sd} ||fS t        j	                  |«      }|r¬d}|rP|j                  d«      r't        |j                  d«      «      }|dkD  s|dk  rd}Œp|j                  d«      rd} ||fS |j                  d	«      r/t        |j                  d	«      «      }|dkD  s|dk  rt        d
«      ‚|j                  d«      rd} ||fS |rŒãt        d|j                  d«      z   «      ‚ ||fS )N)r   Fr   Fr   é   rx   r7   Té   zInvalid window sizer6   z#Extension for deflate not supported)rˆ   ÚfinditerÚgroupr‡   Úmatchrg   rj   )r‰   rŠ   ÚcompressÚ
notakeoverÚextÚdefextr�   s          r3   Úws_ext_parser•   É   sP  € ÙØà€HØ€JÜ×(Ñ(¨Ó0ò (YˆØ—‘˜1“ˆáØˆHØðJ �ZÐÐôI × Ñ  Ó(ˆÙØˆHÙð —;‘;˜q”>Ü" 5§;¡;¨q£>Ó2�Hð
   "’}¨°1ªØ#$˜Ø Ø—;‘;˜q”>Ø!%�Jàð$ �ZÐÐð! —;‘;˜q”>Ü" 5§;¡;¨q£>Ó2�Hð
   "’}¨°1ªÜ.Ð/DÓEÐEØ—;‘;˜q”>Ø!%�Jàð
 �ZÐÐò Ü"Ð#HÈ3Ï9É9ÐUVË<Ñ#WÓXÐXðQ(YðT �ZÐÐr2   r‘   Úserver_notakeoverc                 óä   — | dk  s| dkD  rt        d«      ‚dg}|s|j                  d«       | dk  r|j                  dt        | «      z   «       |r|j                  d«       dj                  |«      S )	Nr7   rŒ   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ÚappendrY   Újoin)r‘   rŠ   r–   Ú
enabledexts       r3   Ú
ws_ext_genrž   ü   s   € ð
 �!‚|�x "’}ÜØTó
ð 	
ð 'Ð'€JÙØ×ÑÐ2Ô3à�"‚}Ø×ÑÐ3´c¸(³mÑCÔDÙØ×ÑÐ6Ô7ð �9‰9�ZÓ Ð r2   c                   ó   — e Zd ZdZdZdZdZy)ÚWSParserStater   r6   r|   rx   N)r!   r"   r#   ÚREAD_HEADERÚREAD_PAYLOAD_LENGTHÚREAD_PAYLOAD_MASKÚREAD_PAYLOADr1   r2   r3   r    r      s   „ Ø€KØÐØÐØ�Lr2   r    c            
       óš   — e Zd Z	 ddee   dededdfd„Zdd„Zde	de
ee	f   fd	„Zde	de
ee	f   fd
„Zde	dee
eee   eee   f      fd„Zy)r   ÚqueueÚmax_msg_sizer‘   rT   Nc                 ó.  — || _         || _        d | _        t        «       | _        t
        j                  | _        d | _        d| _	        d | _
        t        «       | _        d| _        d| _        d | _        d| _        d| _        d | _        d | _        || _        y )NFr2   r   )r¦   Ú_max_msg_sizeÚ_excr~   Ú_partialr    r¡   Ú_stateÚ_opcodeÚ
_frame_finÚ_frame_opcodeÚ_frame_payloadÚ_tailÚ	_has_maskÚ_frame_maskÚ_payload_lengthÚ_payload_length_flagÚ_compressedÚ_decompressobjÚ	_compress)rV   r¦   r§   r‘   s       r3   r`   zWebSocketReader.__init__  s�   € ð ˆŒ
Ø)ˆÔà-1ˆŒ	Ü!›ˆŒÜ#×/Ñ/ˆŒà&*ˆŒØˆŒØ,0ˆÔÜ'›kˆÔàˆŒ
ØˆŒØ,0ˆÔØ ˆÔØ$%ˆÔ!Ø+/ˆÔØ:>ˆÔØ!ˆ�r2   c                 ó8   — | j                   j                  «        y r^   )r¦   Úfeed_eofrd   s    r3   rº   zWebSocketReader.feed_eof2  s   € Ø�
‰
×ÑÕr2   rQ   c                 ó¶   — | j                   rd|fS 	 | j                  |«      S # t        $ r,}|| _         | j                  j	                  |«       Y d }~yd }~ww xY w)NT)Tr2   )rª   Ú
_feed_dataÚ	Exceptionr¦   Úset_exception)rV   rQ   Úexcs      r3   Ú	feed_datazWebSocketReader.feed_data5  sS   € Ø�9Š9Ø˜�:Ðð	Ø—?‘? 4Ó(Ð(øÜò 	ØˆDŒIØ�J‰J×$Ñ$ SÔ)Üûð	ús   ’# £	A¬"AÁAc           
      óª  — | j                  |«      D �]f  \  }}}}|r| j                  st        d¬«      | _        |t        j                  k(  rØt        |«      dk\  rlt        |d d «      d   }|dk  r%|t        vrt        t        j                  d|› �«      ‚	 |dd  j                  d«      }t        t        j                  ||«      }	n@|r#t        t        j                  d	|› d
|› d
|›�«      ‚t        t        j                  dd«      }	| j                  j!                  |	d«       �Œ|t        j"                  k(  r@| j                  j!                  t        t        j"                  |d«      t        |«      «       �Œf|t        j$                  k(  r@| j                  j!                  t        t        j$                  |d«      t        |«      «       �Œ¹|t        j&                  t        j(                  fvr)| j*                  €t        t        j                  d|›�«      ‚|s®|t        j,                  k7  r|| _        | j.                  j1                  |«       | j2                  s�ŒIt        | j.                  «      | j2                  k\  s�Œmt        t        j4                  dj7                  t        | j.                  «      | j2                  «      «      ‚| j.                  r<|t        j,                  k7  r)t        t        j                  dj7                  |«      «      ‚|t        j,                  k(  r!| j*                  €J ‚| j*                  }d | _        | j.                  j1                  |«       | j2                  rit        | j.                  «      | j2                  k\  rGt        t        j4                  dj7                  t        | j.                  «      | j2                  «      «      ‚|rÓ| j                  €J ‚| j.                  j1                  t8        «       | j                  j;                  | j.                  | j2                  «      }
| j                  j<                  rut        | j                  j<                  «      }t        t        j4                  dj7                  | j2                  |z   | j2                  «      «      ‚t?        | j.                  «      }
| j.                  jA                  «        |t        j&                  k(  rR	 |
j                  d«      }| j                  j!                  t        t        j&                  |d«      t        |«      «       �Œ)| j                  j!                  t        t        j(                  |
d«      t        |
«      «       �Œi y# t        $ r }t        t        j                  d«      |‚d }~ww xY w# t        $ r }t        t        j                  d«      |‚d }~ww xY w)NT)Úsuppress_deflate_headerr6   r   i¸  zInvalid close code: úutf-8zInvalid UTF-8 text messagezInvalid close frame: ú Ú zUnexpected opcode=z Message size {} exceeds limit {}z<The opcode in non-fin frame is expected to be zero, got {!r}z-Decompressed message size {} exceeds limit {})Fr2   )!Úparse_framer·   r   r   r@   r   ÚUNPACK_CLOSE_CODEr4   r   r   r&   ÚdecodeÚUnicodeDecodeErrorr)   r   r¦   rÀ   r>   r?   r<   r=   r­   r;   r«   Úextendr©   r+   Úformatr†   Údecompress_syncÚunconsumed_tailrt   Úclear)rV   rQ   ÚfinÚopcodeÚpayloadÚ
compressedÚ
close_codeÚclose_messager¿   ÚmsgÚpayload_mergedÚleftrD   s                r3   r¼   zWebSocketReader._feed_data@  sÑ  € Ø04×0@Ñ0@ÀÓ0Fó w	Ñ,ˆC�˜ *Ù $×"5Ò"5Ü&6ÈtÔ&T�Ô#ØœŸ™Ò(Ü�w“< 1Ò$Ü!2°7¸2¸A°;Ó!?ÀÑ!B�JØ! DÒ(¨ZÔ?RÑ-RÜ,Ü'×6Ñ6Ø2°:°,Ð?óð ð#Ø(/°°¨×(:Ñ(:¸7Ó(C˜ô
 $¤I§O¡O°ZÀÓO‘CÙÜ(Ü#×2Ñ2Ø/°¨u°A°f°X¸Q¸w¸kÐJóð ô
 $¤I§O¡O°Q¸Ó;�Cà—
‘
×$Ñ$ S¨!Ö,àœ9Ÿ>™>Ò)Ø—
‘
×$Ñ$ÜœiŸn™n¨g°rÓ:¼CÀ»Löð œ9Ÿ>™>Ò)Ø—
‘
×$Ñ$ÜœiŸn™n¨g°rÓ:¼CÀ»Löð
 œyŸ~™~¬y×/?Ñ/?Ð@Ñ@Ø—L‘LÐ(ä$Ü×.Ñ.Ð2DÀVÀJÐ0Oóð ñ
 à¤×!7Ñ!7Ò7Ø'-˜œØ—M‘M×(Ñ(¨Ô1Ø×)Ô)¬c°$·-±-Ó.@ÀD×DVÑDVÔ.VÜ,Ü'×7Ñ7Ø>×EÑEÜ # D§M¡MÓ 2°D×4FÑ4Fóóð ð —}’}Ø!¤Y×%;Ñ%;Ò;Ü"0Ü +× :Ñ :ð!7ß7=±v¸f³~ó#ð ð ¤×!7Ñ!7Ò7Ø#Ÿ|™|Ð7Ð7Ð7Ø!%§¡˜Ø'+˜œà—M‘M×(Ñ(¨Ô1Ø×)Ò)¬c°$·-±-Ó.@ÀD×DVÑDVÒ.VÜ,Ü'×7Ñ7Ø>×EÑEÜ # D§M¡MÓ 2°D×4FÑ4Fóóð ñ "Ø#×2Ñ2Ð>Ð>Ð>ØŸ™×,Ñ,Ô-AÔBØ)-×)<Ñ)<×)LÑ)LØ ŸM™M¨4×+=Ñ+=ó*˜ð  ×.Ñ.×>Ò>Ü#& t×':Ñ':×'JÑ'JÓ#K˜DÜ"0Ü +× ;Ñ ;Ø O× VÑ VØ$(×$6Ñ$6¸Ñ$=¸t×?QÑ?Qó!"ó#ð ô */¨t¯}©}Ó)=˜à—M‘M×'Ñ'Ô)à¤§¡Ò/ð'Ø#1×#8Ñ#8¸Ó#A˜DØ ŸJ™J×0Ñ0Ü )¬)¯.©.¸$ÀÓ CÄSÈÃYöð Ÿ
™
×,Ñ,Ü%¤i×&6Ñ&6¸ÈÓKÜ Ó/öðiw	ðr øôY .ò #Ü,Ü'×4Ñ4Ð6Róà"ð#ûð#ûôD  2ò 'Ü"0Ü +× 8Ñ 8Ð:Vó#à#&ð'ûð'ús1   ÂU=Ó*AV)Õ=	V&ÖV!Ö!V&Ö)	WÖ2W×WÚbufc                 ór  — g }| j                   r| j                   |z   dc}| _         d}t        |«      }	 | j                  t        j                  k(  �rG||z
  dk\  �r<|||dz    }|dz  }|\  }}|dz	  dz  }|dz	  dz  }	|dz	  dz  }
|d	z	  dz  }|d
z  }|
s|s|	r&| j
                  st        t        j                  d«      ‚|dkD  r|dk(  rt        t        j                  d«      ‚|dz	  dz  }|dz  }|dkD  r|dkD  rt        t        j                  d«      ‚| j                  s| j                  €|	rdnd| _
        n|	rt        t        j                  d«      ‚t        |«      | _	        || _        t        |«      | _        || _        t        j                  | _        n�n”| j                  t        j                  k(  �r
| j                  }|dk(  r^||z
  dk\  rT|||dz    }|dz  }t!        |«      d   }|| _        | j                  rt        j$                  nt        j&                  | _        n��n|dkD  r^||z
  dk\  rT|||dz    }|dz  }t)        |«      d   }|| _        | j                  rt        j$                  nt        j&                  | _        n:�n¤|| _        | j                  rt        j$                  nt        j&                  | _        | j                  t        j$                  k(  r2||z
  d	k\  r(|||d	z    | _        |d	z  }t        j&                  | _        n�n| j                  t        j&                  k(  rþ| j"                  }| j,                  }||z
  }||k\  r!||z
  | _        |j/                  ||d «       |}n#d| _        |j/                  ||||z    «       ||z   }| j"                  dk(  rˆ| j                  r$| j*                  €J ‚t1        | j*                  |«       |j3                  | j                  | j                  || j                  f«       t5        «       | _        t        j                  | _        nn�Œù||d | _         |S )z&Return the next frame from the socket.r2   r   Tr6   é   r   r�   é   rx   rŒ   z*Received frame with non-zero reserved bitsz!Received fragmented control frameé   é}   z5Control frame payload cannot be larger than 125 bytesNFé~   r9   )r±   r   r¬   r    r¡   r¸   r   r   r&   r®   r¶   Úboolr¯   r²   rµ   r¢   ÚUNPACK_LEN2r´   r£   r¤   ÚUNPACK_LEN3r³   r°   rÊ   Ú_websocket_maskr›   r~   )rV   rØ   ÚframesÚ	start_posÚ
buf_lengthrQ   Ú
first_byteÚsecond_byterÏ   Úrsv1Úrsv2Úrsv3rÐ   Úhas_maskÚlengthrÑ   Ú	chunk_lens                    r3   rÆ   zWebSocketReader.parse_frame¼  sR  € ð ˆØ�:Š:Ø"Ÿj™j¨3Ñ.°ˆOˆC�”àˆ	Ü˜“Xˆ
àà�{‰{œm×7Ñ7Ó7Ø 	Ñ)¨QÓ.Ø˜y¨9°q©=Ð9�DØ ‘N�IØ.2Ñ+�J à%¨™?¨aÑ/�CØ&¨!™O¨qÑ0�DØ&¨!™O¨qÑ0�DØ&¨!™O¨qÑ0�DØ'¨#Ñ-�Fñ ™t©°T·^²^Ü,Ü'×6Ñ6ØHóð ð
  ’|¨¨qªÜ,Ü'×6Ñ6Ø?óð ð
 !,¨qÑ 0°AÑ5�HØ(¨4Ñ/�Fð  ’|¨°ªÜ,Ü'×6Ñ6ØVóð ð —’¨$×*:Ñ*:Ð*BÙ37©4¸U˜Õ(ÙÜ,Ü'×6Ñ6ØHóð ô
 '+¨3£i�D”OØ)/�DÔ&Ü%)¨(£^�D”NØ06�DÔ-Ü"/×"CÑ"C�D•Káð �{‰{œm×?Ñ?Ó?Ø×2Ñ2�Ø˜S’=Ø! IÑ-°Ò2Ø" 9¨y¸1©}Ð=˜Ø! Q™˜	Ü!,¨TÓ!2°1Ñ!5˜Ø/5˜Ô,ð  $Ÿ~š~ô *×;Ò;ä!.×!;Ñ!;ð �ñ Ø˜c’\Ø! IÑ-°Ò2Ø" 9¨y¸1©}Ð=˜Ø! Q™˜	Ü!,¨TÓ!2°1Ñ!5˜Ø/5˜Ô,ð  $Ÿ~š~ô *×;Ò;ä!.×!;Ñ!;ð �ñ à+1�DÔ(ð  Ÿ>š>ô &×7Ò7ä*×7Ñ7ð ”Kð �{‰{œm×=Ñ=Ò=Ø 	Ñ)¨QÒ.Ø'*¨9°yÀ1±}Ð'E�DÔ$Ø ‘N�IÜ"/×"<Ñ"<�D•Káà�{‰{œm×8Ñ8Ò8Ø×-Ñ-�Ø×-Ñ-�à&¨Ñ2�	Ø˜YÒ&Ø+1°IÑ+=�DÔ(Ø—N‘N 3 y z ?Ô3Ø *‘Ià+,�DÔ(Ø—N‘N 3 y°9¸vÑ3EÐ#FÔGØ )¨FÑ 2�Ià×'Ñ'¨1Ò,Ø—~’~Ø#×/Ñ/Ð;Ð;Ð;Ü'¨×(8Ñ(8¸'ÔBà—M‘MØŸ™¨$×*<Ñ*<¸gÀt×GWÑGWÐXôô +4«+�DÔ'Ü"/×";Ñ";�D•KàñU ðX ˜˜�_ˆŒ
àˆr2   )T)rT   N)r!   r"   r#   r   r   rg   rß   r`   rº   rt   r   rÀ   r¼   r   r
   r~   rÆ   r1   r2   r3   r   r     s£   „ àOSñ"Ø˜yÑ)ð"Ø9<ð"ØHLð"à	ó"ó0ð	˜eð 	¨¨d°E¨kÑ(:ó 	ðz˜uð z¨¨t°U¨{Ñ);ó zðxYØðYà	ˆe�D˜( 3™-¨°H¸T±NÐBÑCÑ	DôYr2   r   c                   ó,  — e Zd Zde ej
                  «       dddœdedej                  de	de
ded	e
d
e	ddfd„Z	 ddede
d	ee
   ddfd„Zdeddfd„Zddeeef   ddfd„Zddeeef   ddfd„Z	 	 ddeeef   de	d	ee
   ddfd„Zdde
deeef   ddfd„Zy)r   Fr   )Úuse_maskÚlimitÚrandomr‘   r’   ÚprotocolÚ	transportrï   rð   rñ   r‘   r’   rT   Nc                ó¤   — || _         || _        || _        |j                  | _        || _        || _        d| _        || _        d| _        d | _	        y )NFr   )
rò   ró   rï   Ú	randranger‘   r’   Ú_closingÚ_limitÚ_output_sizeÚ_compressobj)rV   rò   ró   rï   rð   rñ   r‘   r’   s           r3   r`   zWebSocketWriter.__init__Y  sR   € ð !ˆŒØ"ˆŒØ ˆŒØ×)Ñ)ˆŒØ ˆŒØ$ˆŒØˆŒØˆŒØˆÔØ!%ˆÕr2   r\   rÐ   c              ƒ   ó°  K  — | j                   r|t        j                  z  st        d«      ‚d}|s| j                  rç|dk  râ|r"t        t        j                  | t        ¬«      }nH| j                  s0t        t        j                  | j                   t        ¬«      | _	        | j                  }|j	                  |«      ƒ d{  –—† }||j                  | j                  rt        j                  nt        j                  «      z  }|j                  t        «      r|dd }|dz  }t!        |«      }| j"                  }|rd}nd}|d	k  rt%        d|z  |z  ||z  «      }	n2|d
k  rt'        d|z  |z  d	|z  |«      }	nt)        d|z  |z  d|z  |«      }	|r‰| j+                  dd«      }
|
j-                  dd«      }
t/        |«      }t1        |
|«       | j3                  |	|
z   |z   «       | xj4                  t!        |	«      t!        |
«      z   t!        |«      z   z  c_        nst!        |«      t6        kD  r#| j3                  |	«       | j3                  |«       n| j3                  |	|z   «       | xj4                  t!        |	«      t!        |«      z   z  c_        | j4                  | j8                  kD  r*d| _        | j:                  j=                  «       ƒ d{  –—†  yy7 �Œ7 Œ	­w)ú<Send a frame over the websocket with message as its payload.ú!Cannot write to closing transportr   r9   )ÚlevelÚwbitsÚmax_sync_chunk_sizeNéüÿÿÿé@   é€   rÞ   rM   rÜ   l   ÿÿ rx   Úbig)rö   r   r@   ÚConnectionResetErrorr‘   r   ÚzlibÚZ_BEST_SPEEDÚWEBSOCKET_MAX_SYNC_CHUNK_SIZErù   Úflushr’   ÚZ_FULL_FLUSHÚZ_SYNC_FLUSHÚendswithr†   r   rï   Ú	PACK_LEN1Ú	PACK_LEN2Ú	PACK_LEN3rõ   Úto_bytesr~   râ   Ú_writerø   rL   r÷   rò   Ú_drain_helper)rV   r\   rÐ   r‘   ÚrsvÚcompressobjÚ
msg_lengthrï   Úmask_bitÚheaderrv   s              r3   Ú_send_framezWebSocketWriter._send_frameo  s�  è ø€ ð �=Š= &¬9¯?©?Ò":Ü&Ð'JÓKÐKàˆñ
 ˜Ÿš¨6°Aª:Ùä,Ü×+Ñ+Ø#˜)Ü(Eô‘ð ×(Ò(Ü(6Ü"×/Ñ/Ø#Ÿ}™}˜nÜ,Iô)�DÔ%ð
 #×/Ñ/�à'×0Ñ0°Ó9×9ˆGØ�{×(Ñ(Ø%)§_¢_”×!Ò!¼$×:KÑ:Kóñ ˆGð ×ÑÔ 4Ô5Ø! # 2˜,�Ø˜‘*ˆCä˜“\ˆ
à—=‘=ˆÙØ‰HàˆHà˜ÒÜ˜t c™z¨FÑ2°JÀÑ4IÓJ‰FØ˜7Ò#Ü˜t c™z¨FÑ2°C¸(±NÀJÓO‰Fä˜t c™z¨FÑ2°C¸(±NÀJÓOˆFÙØ—>‘> ! ZÓ0ˆDØ—=‘=  EÓ*ˆDÜ Ó(ˆGÜ˜D 'Ô*Ø�K‰K˜ ™¨Ñ/Ô0Ø×Ò¤ V£¬s°4«yÑ!8¼3¸w»<Ñ!GÑGÖä�7‹|œhÒ&Ø—‘˜FÔ#Ø—‘˜GÕ$à—‘˜F WÑ,Ô-à×Ò¤ V£¬s°7«|Ñ!;Ñ;Õà×Ñ˜tŸ{™{Ò*Ø !ˆDÔØ—-‘-×-Ñ-Ó/×/Ñ/ð +ðM :ùðP 0ús%   ‚C KÃKÃHKË
KËKËKrQ   c                 óœ   — | j                   �| j                   j                  «       rt        d«      ‚| j                   j                  |«       y )Nrü   )ró   Ú
is_closingr  Úwrite)rV   rQ   s     r3   r  zWebSocketWriter._write¶  s9   € Ø�>‰>Ð! T§^¡^×%>Ñ%>Ô%@Ü&Ð'JÓKÐKØ�‰×Ñ˜TÕ"r2   c              ƒ   ó¢   K  — t        |t        «      r|j                  d«      }| j                  |t        j
                  «      ƒ d{  –—†  y7 Œ­w)zSend pong message.rÃ   N)r}   rY   Úencoder  r   r?   ©rV   r\   s     r3   rG   zWebSocketWriter.pong»  ó8   è ø€ ä�gœsÔ#Ø—n‘n WÓ-ˆGØ×Ñ˜w¬	¯©Ó7×7Ò7úó   ‚AAÁAÁAc              ƒ   ó¢   K  — t        |t        «      r|j                  d«      }| j                  |t        j
                  «      ƒ d{  –—†  y7 Œ­w)zSend ping message.rÃ   N)r}   rY   r  r  r   r>   r  s     r3   rF   zWebSocketWriter.pingÁ  r  r  rE   c              ƒ   ó   K  — t        |t        «      r|j                  d«      }|r*| j                  |t        j
                  |«      ƒ d{  –—†  y| j                  |t        j                  |«      ƒ d{  –—†  y7 Œ/7 Œ­w)rû   rÃ   N)r}   rY   r  r  r   r=   r<   )rV   r\   rE   r‘   s       r3   ÚsendzWebSocketWriter.sendÇ  sg   è ø€ ô �gœsÔ#Ø—n‘n WÓ-ˆGÙØ×"Ñ" 7¬I×,<Ñ,<¸hÓG×GÑGà×"Ñ" 7¬I¯N©N¸HÓE×EÑEð HøàEús$   ‚AA>Á
A:Á)A>Á4A<Á5A>Á<A>r[   c              ƒ   óä   K  — t        |t        «      r|j                  d«      }	 | j                  t	        |«      |z   t
        j                  ¬«      ƒ d{  –—†  d| _        y7 Œ# d| _        w xY w­w)z<Close the websocket, sending the specified code and message.rÃ   )rÐ   NT)r}   rY   r  r  ÚPACK_CLOSE_CODEr   r@   rö   )rV   r[   r\   s      r3   rH   zWebSocketWriter.closeÕ  sk   è ø€ ä�gœsÔ#Ø—n‘n WÓ-ˆGð	!Ø×"Ñ"Ü Ó%¨Ñ/¼	¿¹ð #ó ÷ ð ð !ˆD�Mð	ùð !ˆD�Müs.   ‚"A0¥0A$ ÁA"ÁA$ ÁA0Á"A$ Á$	A-Á-A0r^   )r2   )FN)r    r2   )r!   r"   r#   rN   rñ   ÚRandomr   ÚasyncioÚ	Transportrß   rg   r   r`   rt   r
   r  r  r   rY   rG   rF   r"  rH   r1   r2   r3   r   r   X  s^  „ ð Ø"Ø#�f—m‘m“oØØ ò&àð&ð ×$Ñ$ð&ð
 ð&ð ð&ð ð&ð ð&ð ð&ð 
ó&ð. FJñE0ØðE0Ø&)ðE0Ø5=¸c±]ðE0à	óE0ðN#˜5ð # Tó #ñ
8 %¨¨s¨
Ñ"3ð 8¸dó 8ñ8 %¨¨s¨
Ñ"3ð 8¸dó 8ð Ø"&ñ	Fà�s˜E�zÑ"ðFð ðFð ˜3‘-ð	Fð
 
óFñ	! ð 	!°U¸5À#¸:Ñ5Fð 	!ÐQUô 	!r2   r   )F)rŒ   FF)Srf   r&  Ú	functoolsrW   rñ   ÚreÚsysr  Úenumr   Ústructr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   Úbase_protocolr   Úcompression_utilsr   r   Úhelpersr   Ústreamsr   Ú__all__r   rg   r4   rX   r  r   r   rt   Úunpack_fromrà   rá   ÚunpackrÇ   Úpackr  r  r  r$  rL   rN   r   rB   r   rA   r   r½   r   rj   Ú	byteorderrk   rY   Ú	lru_cacheru   r~   rƒ   râ   Ú
_websocketr„   ÚImportErrorr†   Úcompiler‡   rˆ   rß   r•   rž   r    r   r   )Úis   0r3   ú<module>r<     sÞ  ðÚ +ã Û Û Û Û 	Û 
Û Ý Ý ÷÷ ÷ ñ õ (ß ?Ý "Ý ð
€ô�'ô ð  9DÖ'D°1©¨A­Ò'DÐ �U˜3˜s™8‘_Ó Dð !)Ð ô�ô ð0 ?€ˆˆe‰Ó >ñ �T‹l×&Ñ&€Ù�T‹l×&Ñ&€Ù˜4“L×'Ñ'Ð Ù�5‹M×Ñ€	Ù�6‹N×Ñ€	Ù�6‹N×Ñ€	Ù˜“,×#Ñ#€Ø€ˆ%�‰*Ó Ø!€ˆu�S‰zÓ !ô �
ô  ñ ˜i×.Ñ.°°dÓ;Ð Ù˜y×0Ñ0°$¸Ó=Ð ô'�Yô 'ô.�yô .ð  #Ÿ}™}Ð �%˜‘*Ó ,ð ×ÑðB�D˜‘Kò Bó ðBð- ð -¨ið -¸Dó -ñ2 Ø,�Oð1Ý6à0ˆñ &+Ò+CÓ%DÐ �e˜E‘lÓ Dð #- "§*¡*ð/ó#€
ˆE�'˜#‘,Ñó ð )3¨¯
©
Ð3PÓ(QÐ �%˜ ™Ñ%Ó Qñ0 ˜ #™ð 0 °$ð 0 À5ÈÈdÈÑCSó 0 ðh KPñ!Øð!Ø"&ð!ØCGð!àó!ô,�Gô ÷|ñ |÷~	F!ò F!ùòy (Eøðx ò 1Ø0Šð1ús   Á1IÆ<I ÉI ÉI 