
    A>qj                    p    d dl m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 g dZ	dZ
ddZddZdd	Zdd
Zy)    )annotationsN   )	BytesLike)
accept_key
apply_maskget_socket_namez$258EAFA5-E914-47DA-95CA-C5AB0DC85B11c                 r    t        j                  d      } t        j                  |       j	                         S )zB
    Generate a random key for the Sec-WebSocket-Key header.

       )secretstoken_bytesbase64	b64encodedecode)keys    O/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/websockets/utils.pygenerate_keyr      s.    
 

b
!CC ''))    c                    t        j                  | t        z   j                               j	                         }t        j                  |      j                         S )z
    Compute the value of the Sec-WebSocket-Accept header.

    Args:
        key: Value of the Sec-WebSocket-Key header.

    )hashlibsha1GUIDencodedigestr   r   r   )r   r   s     r   r   r      sB     <<t++-.557DD!((**r   c                   t        |      dk7  rt        d      t        | t              r| j                  st        |       } t        j                  | t        j                        }|t        |       dz  z  |dt        |       dz   z   }t        j                  |t        j                        }||z  j                  t        |       t        j                        S )z
    Apply masking to the data of a WebSocket message.

    Args:
        data: Data to mask.
        mask: 4-bytes mask.

       zmask must contain 4 bytesN)len
ValueError
isinstance
memoryviewc_contiguousbytesint
from_bytessys	byteorderto_bytes)datamaskdata_intmask_repeatedmask_ints        r   r   r   '   s     4yA~455 $
#D,=,=T{~~dCMM2HCIN+d?SY].CCM~~mS]];Hx))#d)S]]CCr   c                (   | j                   xt        j                  k(  r d| j                         z  S xt        j                  k(  r d| j                         dd z  S t        j
                  k(  rt        | j                               S 	 t        d      )zR
    Return a string representation of :meth:`~socket.socket.getsockname()`.

    z%s:%dz[%s]:%dN   zunsupported socket family)familysocketAF_INETgetsocknameAF_INET6AF_UNIXstrAssertionError)socks    r   r   r   =   sx    
 ++V^^T--///V__t//1"1555^^t'')** !!<==r   )returnr4   )r   r4   r7   r4   )r'   r   r(   zbytes | bytearrayr7   r!   )r6   zsocket.socketr7   r4   )
__future__r   r   r   r   r/   r$   typingr   __all__r   r   r   r   r    r   r   <module>r<      s=    "     
  : .*	+D,>r   