
    !+h\h              	          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"d e"D             Z#eee$                  e%d<   dZ& G d de	          Z'dZ(ee)         e%d<    ed          j*        Z+ ed          j*        Z, ed          j-        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'j7        dd          Z8 e6e'j9        dd          Z: G d  d!e;          Z< G d" d#e;          Z=ej>        Z?ee@         e%d$<   ejA        d%ee)         fd&            ZBd'e)d(eCd%dfd)ZDereDZEn	 dd*lFmGZG eGZEn# eH$ r eDZEY nw xY w e)g d+          ZIee)         e%d,<    ejJ        d-          ZKeee@                  e%d.<    ejJ        d/          ZLeee@                  e%d0<   d?d2ee@         d3eMd%ee$eMf         fd4ZN	 d@d6e$d3eMd7eMd%e@fd8ZO G d9 d:e	          ZP G d; d<          ZQ G d= d>          ZRdS )Az%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                   B    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S )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     Z/var/www/html/e360mart/e360mart_env/lib/python3.11/site-packages/aiohttp/http_websocket.pyr   r   ,   sS        	BJNLONOOKKKr2   r   c                 ,    h | ]}t          |          S r1   )int).0is     r3   	<setcomp>r8   <   s    'D'D'D1A'D'D'Dr2   ALLOWED_CLOSE_CODESi   c                   R    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d
S )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   se        LDFDDE GFEDFDDEGFEEEr2   r   s$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11r   z!Hz!Qz!BBz!BBHz!BBQi @  MSG_SIZE   DEFAULT_LIMITc                   l    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dS )	r   typedataextra)loadsrX   returnc                "     || j                   S )zAReturn parsed JSON data.

        .. versionadded:: 0.22
        )rV   )selfrX   s     r3   jsonzWSMessage.jsont   s    
 uTYr2   N)r!   r"   r#   r   __annotations__r   r
   strr\   rX   r   r1   r2   r3   r   r   n   st         
OOO
IIIC=48J      XseSj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messagerY   Nc                 Z    || _         t                                          ||           d S N)r`   super__init__)r[   r`   ra   	__class__s      r3   re   zWebSocketError.__init__   s*    	w'''''r2   c                 B    t          t          | j        d                   S )Nr   )r   r^   argsr[   s    r3   __str__zWebSocketError.__str__   s    C1&&&r2   )	r!   r"   r#   __doc__r5   r^   re   rj   __classcell__)rf   s   @r3   r   r      ss        **(S (3 (4 ( ( ( ( ( (' ' ' ' ' ' ' ' 'r2   r   c                       e Zd ZdZdS )WSHandshakeErrorz#WebSocket protocol handshake error.N)r!   r"   r#   rk   r1   r2   r3   rn   rn      s        ----r2   rn   native_byteorderrY   c                  4    d t          d          D             S )Nc                 `    g | ]*t          fd t          d          D                       +S )c              3   "   K   | ]	}|z  V  
d S rc   r1   )r6   abs     r3   	<genexpr>z(_xor_table.<locals>.<listcomp>.<genexpr>   s'      ,,A!a%,,,,,,r2   r?   )bytesrange)r6   rt   s    @r3   
<listcomp>z_xor_table.<locals>.<listcomp>   s<    AAAE,,,,s,,,,,AAAr2   r?   )rw   r1   r2   r3   
_xor_tablery      s    AAeCjjAAAAr2   maskrV   c                    t          |t                    s
J |            t          |           dk    s
J |             |rt                      fd| D             \  }}}}|ddd                             |          |ddd<   |ddd                             |          |ddd<   |ddd                             |          |ddd<   |ddd                             |          |ddd<   dS dS )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   | ]}|         V  d S rc   r1   )r6   n
_XOR_TABLEs     r3   ru   z)_websocket_mask_python.<locals>.<genexpr>   s'      22jm222222r2   Nr   r;      )
isinstance	bytearraylenry   	translate)rz   rV   rs   rt   cdr   s         @r3   _websocket_mask_pythonr      s    dI&&,,,,&t99>>>4>>> -\\
2222T222
1a1I''**SSqS	!$Q$Z))!,,QTT
!$Q$Z))!,,QTT
!$Q$Z))!,,QT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_SPLITFextstrisserverc                    | sdS d}d}t                               |           D ]0}|                    d          }|sd} nt                              |          }|rd}|r_|                    d          r1t          |                    d                    }|dk    s|dk     rd}|                    d          rd} n|                    d	          r=t          |                    d	                    }|dk    s|dk     rt          d
          |                    d          rd} n)|s%t          d|                    d          z             2||fS )N)r   Fr   Fr      r|   r<   T   zInvalid window sizer;   z#Extension for deflate not supported)r   finditergroupr   matchr5   rn   )r   r   compress
notakeoverextdefextr   s          r3   ws_ext_parser      s    xHJ((00 (Y (Y1 	HE  (( !	YH  ;;q>> !"5;;q>>22H
  "}}1#$ ;;q>> &!%J;;q>> F"5;;q>>22H
  "}}1./DEEE;;q>> &!%J 	Y"#H399UV<<#WXXX	Y Zr2   r   r   server_notakeoverc                    | dk     s| dk    rt          d          dg}|s|                    d           | dk     r%|                    dt          |           z              |r|                    d           d                    |          S )	Nr<   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appendr^   join)r   r   r   
enabledexts       r3   
ws_ext_genr      s    
 !||x"}}T
 
 	
 ''J 42333"}}3c(mmCDDD 86777 99Z   r2   c                       e Zd ZdZdZdZdZdS )WSParserStater   r;   r   r|   N)r!   r"   r#   READ_HEADERREAD_PAYLOAD_LENGTHREAD_PAYLOAD_MASKREAD_PAYLOADr1   r2   r3   r   r     s$        KLLLr2   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dS )r   Tqueuemax_msg_sizer   rY   Nc                 8   || _         || _        d | _        t                      | _        t
          j        | _        d | _        d| _	        d | _
        t                      | _        d| _        d| _        d | _        d| _        d| _        d | _        d | _        || _        d S )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)r[   r   r   r   s       r3   re   zWebSocketReader.__init__  s     
)-1	!#/&*,0'kk
,0 $%!+/:>!r2   c                 8    | j                                          d S rc   )r   feed_eofri   s    r3   r   zWebSocketReader.feed_eof2  s    
r2   rV   c                     | j         rd|fS 	 |                     |          S # t          $ r,}|| _         | j                            |           Y d }~dS d }~ww xY w)NT)Tr2   )r   
_feed_data	Exceptionr   set_exception)r[   rV   excs      r3   	feed_datazWebSocketReader.feed_data5  sv    9 	:	??4((( 	 	 	DIJ$$S)))99999	s   " 
A!AAc           
      ,   |                      |          D ]|\  }}}}|r| j        st          d          | _        |t          j        k    r!t          |          dk    rt          |d d                   d         }|dk     r&|t          vrt          t          j
        d|           	 |dd                              d          }n-# t          $ r }t          t          j        d          |d }~ww xY wt          t          j        ||          }	n@|r#t          t          j
        d	| d
| d
|          t          t          j        dd          }	| j                            |	d           X|t          j        k    rC| j                            t          t          j        |d          t          |                     |t          j        k    rC| j                            t          t          j        |d          t          |                     |t          j        t          j        fvr$| j        t          t          j
        d|          |s|t          j        k    r|| _        | j                            |           | j        rbt          | j                  | j        k    rEt          t          j        d                    t          | j                  | j                            | j        r=|t          j        k    r-t          t          j
        d                    |                    |t          j        k    r| j        J | j        }d | _        | j                            |           | j        rbt          | j                  | j        k    rEt          t          j        d                    t          | j                  | j                            |r| j        J | j                            t8                     | j                            | j        | j                  }
| j        j        rTt          | j        j                  }t          t          j        d                    | j        |z   | j                            nt?          | j                  }
| j                                          |t          j        k    r	 |
                    d          }| j                            t          t          j        |d          t          |                     # t          $ r }t          t          j        d          |d }~ww xY w| j                            t          t          j        |
d          t          |
                     ~dS )NT)suppress_deflate_headerr;   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   rE   r   UNPACK_CLOSE_CODEr9   r   r   r&   decodeUnicodeDecodeErrorr)   r   r   r   rC   rD   rA   rB   r   r@   r   extendr   r+   formatr   decompress_syncunconsumed_tailrv   clear)r[   rV   finopcodepayload
compressed
close_codeclose_messager   msgpayload_mergedleftrI   s                r3   r   zWebSocketReader._feed_data@  s   040@0@0F0F w	 w	,C* U$"5 U&6t&T&T&T#((w<<1$$!272A2;!?!?!BJ!D((Z?R-R-R,'6?:??  #(/(:(:7(C(C- # # #,'46R "## $IOZOOCC <(#2JJJfJJwJJ  
 $IOQ;;C
$$S!,,,,9>))
$$ingr::CLL    9>))
$$ingr::CLL   
 y~y/?@@@L($.0OV0O0O  
  H!777'-M((111) c$-.@.@DDV.V.V,'7>EE #DM 2 2D4F    } !Y%;;;"0 + :!77=vf~~# #  !777#|777!%'+M((111) c$-.@.@DDV.V.V,'7>EE #DM 2 2D4F    " >#2>>>,,-ABBB)-)<)L)L M4+=* *  .> #&t':'J#K#KD"0 + ; O V V$($6$=t?Q!" !"# #  */t})=)=M'')))//'#1#8#8#A#AD J00 )).$ C CSYY     2 ' ' '"0 + 8:V# ##&''
 
,,%i&6KK//   
 zs1   *C
C2C--C2AT$$
U.U		Ubufc                    g }| j         r| j         |z   dc}| _         d}t          |          }	 | j        t          j        k    rF||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k    r |dk    rt          t          j        d          |dz	  dz  }|dz  }|dk    r |dk    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    rS|||dz            }|dz  }t!          |          d         }|| _        | j        rt          j        nt          j        | _        nn|dk    r^||z
  dk    rS|||dz            }|dz  }t)          |          d         }|| _        | j        rt          j        nt          j        | _        n-nx|| _        | j        rt          j        nt          j        | _        | j        t          j        k    r4||z
  d	k    r)|||d	z            | _        |d	z  }t          j        | _        nn| j        t          j        k    r| j        }| j        }||z
  }||k    r*||z
  | _        |                    ||d                    |}n,d| _        |                    ||||z                       ||z   }| j        dk    rr| j        r| j        J t1          | j        |           |                    | j	        | j        || j
        f           t5                      | _        t          j        | _        nn||d         | _         |S )z&Return the next frame from the socket.r2   r   Tr;      r   r      r|   r   z*Received frame with non-zero reserved bitsz!Received fragmented control frame   }   z5Control frame payload cannot be larger than 125 bytesNF~   r>   )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   )r[   r   frames	start_pos
buf_lengthrV   
first_bytesecond_byter   rsv1rsv2rsv3r   has_masklengthr   	chunk_lens                    r3   r   zWebSocketReader.parse_frame  s    : 	4"j3.OC	XX
J	{m777	)Q..y9q=89DNI.2+J%?a/C&!Oq0D&!Oq0D&!Oq0D'#-F  t  T^ ,'6H  
 ||q,'6?  
 !,q 0A5H(4/F ||,'6V    $*:*B37+B44U(( ,'6H  
 '+3iiDO)/D&%)(^^DN06D-"/"CDKK {m???2S==!I-22"9y1}#<=!Q	!,T!2!21!5/5,  $~<M;;!.!;  c\\!I-22"9y1}#<=!Q	!,T!2!21!5/5,  $~<M;;!.!;  +1D(  >877*7 K {m===	)Q..'*9y1}+D'ED$NI"/"<DKK{m888--&2	Y&&+1I+=D(NN3yzz?333 *II+,D(NN3y9v3E'E#FGGG )F 2I'1,,~ C#/;;;'(8'BBBMM$*<gtGWX   +4++D'"/";DKKUJ	X _
r2   )T)rY   N)r!   r"   r#   r   r   r5   r   re   r   rv   r   r   r   r   r
   r   r   r1   r2   r3   r   r     s       OS" "y)"9<"HL"	" " " "0   	e 	dEk(: 	 	 	 	zu ztU{); z z z zxYY	eD(3-HTNBC	DY Y Y Y Y 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j        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e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dS ) r   Fr   )use_masklimitrandomr   r   protocol	transportr   r   r   r   r   rY   Nc                    || _         || _        || _        |j        | _        || _        || _        d| _        || _        d| _        d | _	        d S )NFr   )
r   r   r   	randranger   r   _closing_limit_output_size_compressobj)r[   r   r   r   r   r   r   r   s           r3   re   zWebSocketWriter.__init__Y  sU     !" ) $!%r2   ra   r   c                 `  K   | j         r|t          j        z  st          d          d}|s| j        r|dk     r|r|                     |          }n-| j        s|                     | j                  | _        | j        }|                    |           d{V }||                    | j        rt          j
        nt          j                  z  }|                    t                    r
|dd         }|dz  }t          |          }| j        }|rd}nd}|dk     rt!          d|z  |z  ||z            }	n;|d	k     rt#          d|z  |z  d|z  |          }	nt%          d|z  |z  d
|z  |          }	|r|                     dd          }
|
                    dd          }t+          |          }t-          ||           |                     |	|z   |z              | xj        t          |	          t          |          z   |z   z  c_        nn|t2          k    r+|                     |	           |                     |           n|                     |	|z              | xj        t          |	          |z   z  c_        | j        | j        k    r(d| _        | j                                         d{V  dS dS )<Send a frame over the websocket with message as its payload.!Cannot write to closing transportr   r>   N@      r   rR   r   l    r|   big)r   r   rE   ConnectionResetErrorr   _make_compress_objr   flushr   zlibZ_FULL_FLUSHZ_SYNC_FLUSHendswithr   r   r   	PACK_LEN1	PACK_LEN2	PACK_LEN3r   to_bytesr   r   _writer   rQ   r   r   _drain_helper)r[   ra   r   r   rsvcompressobj
msg_lengthr   mask_bitheadermask_intrz   s               r3   _send_framezWebSocketWriter._send_frameo  s      = 	L&9?": 	L&'JKKK
  	 	6A:: 0"55h??( O(,(?(?(N(ND%"/'0099999999G
 {((%)_K!!$:K  G  455 '!#2#,*C\\
= 	HHHtczF2J4IJJFF7##tczF2C(NJOOFFtczF2C(NJOOF 	:~~a44H$$Q..D((GD'***KK/000Vs4yy!8:!EEH$$F###G$$$$FW,---Vz!99
 t{** !D---/////////// +*r2   c                 F    t          t          j        | t                    S )N)levelwbitsmax_sync_chunk_size)r   r  Z_BEST_SPEEDWEBSOCKET_MAX_SYNC_CHUNK_SIZE)r[   r   s     r3   r  z"WebSocketWriter._make_compress_obj  s'    #) =
 
 
 	
r2   rV   c                     | j         | j                                         rt          d          | j                             |           d S )Nr   )r   
is_closingr  write)r[   rV   s     r3   r  zWebSocketWriter._write  sH    >!T^%>%>%@%@!&'JKKKT"""""r2   r2   c                    K   t          |t                    r|                    d          }|                     |t          j                   d{V  dS )zSend pong message.r   N)r   r^   encoder  r   rD   r[   ra   s     r3   rL   zWebSocketWriter.pong  Y      gs## 	.nnW--Gw	77777777777r2   c                    K   t          |t                    r|                    d          }|                     |t          j                   d{V  dS )zSend ping message.r   N)r   r^   r#  r  r   rC   r$  s     r3   rK   zWebSocketWriter.ping  r%  r2   rJ   c                   K   t          |t                    r|                    d          }|r)|                     |t          j        |           d{V  dS |                     |t          j        |           d{V  dS )r   r   N)r   r^   r#  r  r   rB   rA   )r[   ra   rJ   r   s       r3   sendzWebSocketWriter.send  s       gs## 	.nnW--G 	F""7I,<hGGGGGGGGGGG""7INHEEEEEEEEEEEr2   r    r`   c                    K   t          |t                    r|                    d          }	 |                     t	          |          |z   t
          j                   d{V  d| _        dS # d| _        w xY w)z<Close the websocket, sending the specified code and message.r   )r   NT)r   r^   r#  r  PACK_CLOSE_CODEr   rE   r   )r[   r`   ra   s      r3   rM   zWebSocketWriter.close  s      gs## 	.nnW--G	!""%%/	 #          !DMMMDDM    s   7A. .	A7rc   )r2   )FN)r    r2   )r!   r"   r#   rS   r   Randomr   asyncio	Transportr   r5   re   rv   r
   r  r   r  r  r   r^   rL   rK   r(  rM   r1   r2   r3   r   r   X  s%        " - & & && $&
 & & & & & 
& & & &. FJD0 D0D0&)D05=c]D0	D0 D0 D0 D0L
3 
> 
 
 
 
#5 #T # # # #
8 8%s
"3 8d 8 8 8 88 8%s
"3 8d 8 8 8 8 "&	F FsEz"F F 3-	F
 
F F F F	! 	! 	!U5#:5F 	!QU 	! 	! 	! 	! 	! 	!r2   r   )F)r   FF)Srk   r,  	functoolsr\   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   r9   r5   r]   r  r   r   rv   unpack_fromr   r   unpackr   packr  r  r  r*  rQ   rS   r   rG   r   rF   r   r   r   rn   	byteorderro   r^   	lru_cachery   r   r   r   
_websocketr   ImportErrorr   compiler   r   r   r   r   r   r   r   r1   r2   r3   <module>rA     s   + + +        				 



                                       ( ' ' ' ' ' ? ? ? ? ? ? ? ? " " " " " "      
    '     (E'D'D'D'D U3s8_ D D D !)        0 ?e > > > fTll&fTll&F4LL' F5MM	F6NN	F6NN	&,,#%*   !uSz ! ! !         
       Ii.d;; Yy0$== ' ' ' ' 'Y ' ' '. . . . .y . . .  #} %* , , , BDK B B B B- -i -D - - - -2  1,OO16666660 1 1 101 &+U+C+C+C%D%D eEl D D D #-"*/# #
E'#,    )3
3P(Q(Q %% Q Q Q0  0 # 0 $ 0 5dCS 0  0  0  0 h KP! !!"&!CG!! ! ! !,    G   | | | | | | | |~	L! L! L! L! L! L! L! L! L! L!s   =G GG