Ë
    ¸�©jæ  ã                  óâ   — d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 ddl
mZmZ ddlmZmZ ddlmZmZ 	 dd	lmZ  G d
„ de	«      Zdd„Zdd„ZeZddlmZ dd„Zdd„Zy# e$ r	 dd	lmZ Y Œ1w xY w)é    )ÚannotationsN)Ú	AwaitableÚSequence)ÚAnyÚCallableÚ
NamedTupleé   )Ú
extensionsÚframes)ÚPayloadTooBigÚProtocolError)Ú	BytesLikeÚDataLike)Ú
apply_maskc                  óÀ   — e Zd ZU ded<   ded<   ded<   dZded<   dZded	<   dZded
<   edd„«       Zdd„Z	dd„Z
edddœ	 	 	 	 	 	 	 	 	 dd„«       Zddœ	 	 	 	 	 	 	 dd„Zy)ÚFrameÚboolÚfinzframes.OpcodeÚopcoder   ÚdataFÚrsv1Úrsv2Úrsv3c                ó®   — t        j                  | j                  | j                  | j                  | j
                  | j                  | j                  «      S ©N)r   r   r   r   r   r   r   r   ©Úselfs    ú`/var/www/html/streamforge-license/venv/lib/python3.12/site-packages/websockets/legacy/framing.pyÚ	new_framezFrame.new_frame   s=   € ä�|‰|Ø�K‰KØ�I‰IØ�H‰HØ�I‰IØ�I‰IØ�I‰Ió
ð 	
ó    c                ó,   — t        | j                  «      S r   )Ústrr   r   s    r   Ú__str__zFrame.__str__%   s   € Ü�4—>‘>Ó"Ð"r    c                ó6   — | j                   j                  «       S r   )r   Úcheckr   s    r   r%   zFrame.check(   s   € Ø�~‰~×#Ñ#Ó%Ð%r    N)Úmax_sizer
   c             ƒ  óÒ  K  —  |d«      ƒ d{  –—† }t        j                  d|«      \  }}|dz  rdnd}|dz  rdnd}	|dz  rdnd}
|d	z  rdnd}	 t        j                  |d
z  «      }|dz  rdnd|k7  rt        d«      ‚|dz  }|dk(  r) |d«      ƒ d{  –—† }t        j                  d|«      \  }n-|dk(  r( |d«      ƒ d{  –—† }t        j                  d|«      \  }|�||kD  rt        ||«      ‚|r |d«      ƒ d{  –—† } ||«      ƒ d{  –—† }|rt        |«      }t        j                  ||||	|
|«      }|€g }t        |«      D ]  }|j                  ||¬«      }Œ |j                  «         | |j                  |j                  |j                  |j                  |j                   |j"                  «      S 7 �Œ¯# t        $ r}t        d«      |‚d}~ww xY w7 �ŒH7 �Œ7 Œâ7 ŒÔ­w)a@  
        Read a WebSocket frame.

        Args:
            reader: Coroutine that reads exactly the requested number of
                bytes, unless the end of file is reached.
            mask: Whether the frame should be masked i.e. whether the read
                happens on the server side.
            max_size: Maximum payload size in bytes.
            extensions: List of extensions, applied in reverse order.

        Raises:
            PayloadTooBig: If the frame exceeds ``max_size``.
            ProtocolError: If the frame contains incorrect values.

        r	   Nz!BBé€   TFé@   é    é   é   zinvalid opcodezincorrect maskingé   é~   z!Hé   z!Qé   )r&   )ÚstructÚunpackr   ÚOpcodeÚ
ValueErrorr   r   r   r   ÚreversedÚdecoder%   r   r   r   r   r   r   )ÚclsÚreaderÚmaskr&   r
   r   Úhead1Úhead2r   r   r   r   r   ÚexcÚlengthÚ	mask_bitsr   Ú	extensions                     r   Úreadz
Frame.read+   sÿ  è ø€ ñ6 ˜A“Y�ˆÜ—}‘} U¨DÓ1‰ˆˆuð ˜jÒ(‰d¨eˆØ˜zÒ)‰t¨uˆØ˜zÒ)‰t¨uˆØ˜zÒ)‰t¨uˆð	;Ü—]‘] 5¨:Ñ#5Ó6ˆFð ˜JÒ&‰D¨E°dÒ:ÜÐ 3Ó4Ð4à˜Ñ#ˆØ�SŠ=Ù ›—?ˆDÜŸ™ d¨DÓ1‰I‰VØ�sŠ]Ù ›—?ˆDÜŸ™ d¨DÓ1‰IˆVØÐ F¨XÒ$5Ü ¨Ó1Ð1ÙÙ$ Q›iŸˆIñ ˜F“^×#ˆÙÜ˜d IÓ.ˆDä—L‘L ¨¨s°D¸$ÀÓEˆ	àÐØˆJÜ! *Ó-ò 	GˆIØ!×(Ñ(¨¸XÐ(ÓF‰Ið	Gð 	�‰ÔáØ�M‰MØ×ÑØ�N‰NØ�N‰NØ�N‰NØ�N‰Nó
ð 	
ðW úô ò 	;ÜÐ 0Ó1°sÐ:ûð	;úð #ùð #ùð
 (øð $úsw   ‚G'ŽF=�AG'ÁG  Á),G'ÂGÂ-G'ÃG Ã<G'Ä G#ÄG'ÄG%ÄB-G'Ç 	GÇ	GÇGÇG'Ç G'Ç#G'Ç%G')r
   c               óJ   —  || j                   j                  ||¬«      «       y)a–  
        Write a WebSocket frame.

        Args:
            frame: Frame to write.
            write: Function that writes bytes.
            mask: Whether the frame should be masked i.e. whether the write
                happens on the client side.
            extensions: List of extensions, applied in order.

        Raises:
            ProtocolError: If the frame contains incorrect values.

        )r9   r
   N)r   Ú	serialize)r   Úwriter9   r
   s       r   rC   zFrame.writez   s    € ñ0 	ˆd�n‰n×&Ñ&¨D¸ZÐ&ÓHÕIr    )Úreturnzframes.Frame)rD   r"   )rD   ÚNone)
r8   z!Callable[[int], Awaitable[bytes]]r9   r   r&   z
int | Noner
   ú%Sequence[extensions.Extension] | NonerD   r   )rC   zCallable[[bytes], Any]r9   r   r
   rF   rD   rE   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   r   Úpropertyr   r#   r%   Úclassmethodr@   rC   © r    r   r   r      sÖ   … Ø	ƒIØÓØ
ƒOØ€Dˆ$ÓØ€Dˆ$ÓØ€Dˆ$Óàò
ó ð
ó#ó&ð ð  $Ø<@ñL
à1ðL
ð ð	L
ð
 ðL
ð :ðL
ð 
òL
ó ðL
ðf =AñJà%ðJð ð	Jð
 :ðJð 
ôJr    r   c                óä   — t        | t        «      r*t        j                  j                  | j                  «       fS t        | t        «      rt        j                  j                  | fS t        d«      ‚)a¦  
    Convert a string or byte-like object to an opcode and a bytes-like object.

    This function is designed for data frames.

    If ``data`` is a :class:`str`, return ``Opcode.TEXT`` and a :class:`bytes`
    object encoding ``data`` in UTF-8.

    If ``data`` is a bytes-like object, return ``Opcode.BINARY`` and a
    bytes-like object.

    Raises:
        TypeError: If ``data`` doesn't have a supported type.

    údata must be str or bytes-like)	Ú
isinstancer"   r   r3   ÚTEXTÚencoder   ÚBINARYÚ	TypeError©r   s    r   Úprepare_datarV   •   sT   € ô  �$œÔÜ�}‰}×!Ñ! 4§;¡;£=Ð0Ð0Ü	�Dœ)Ô	$Ü�}‰}×#Ñ# TÐ)Ð)äÐ8Ó9Ð9r    c                óŽ   — t        | t        «      r| j                  «       S t        | t        «      rt	        | «      S t        d«      ‚)ai  
    Convert a string or byte-like object to bytes.

    This function is designed for ping and pong frames.

    If ``data`` is a :class:`str`, return a :class:`bytes` object encoding
    ``data`` in UTF-8.

    If ``data`` is a bytes-like object, return a :class:`bytes` object.

    Raises:
        TypeError: If ``data`` doesn't have a supported type.

    rO   )rP   r"   rR   r   ÚbytesrT   rU   s    r   Úprepare_ctrlrY   ­   s:   € ô �$œÔØ�{‰{‹}ÐÜ	�Dœ)Ô	$Ü�T‹{ÐäÐ8Ó9Ð9r    )ÚClosec                ó\   — t        j                  | «      }|j                  |j                  fS )zÕ
    Parse the payload from a close frame.

    Returns:
        Close code and reason.

    Raises:
        ProtocolError: If data is ill-formed.
        UnicodeDecodeError: If the reason isn't valid UTF-8.

    )rZ   ÚparseÚcodeÚreason)r   Úcloses     r   Úparse_closer`   Ë   s%   € ô �K‰K˜Ó€EØ�:‰:�u—|‘|Ð#Ð#r    c                ó6   — t        | |«      j                  «       S )z3
    Serialize the payload for a close frame.

    )rZ   rB   )r]   r^   s     r   Úserialize_closerb   Û   s   € ô
 ��vÓ×(Ñ(Ó*Ð*r    )r   r   rD   ztuple[int, BytesLike])r   r   rD   rX   )r   rX   rD   ztuple[int, str])r]   Úintr^   r"   rD   rX   )Ú
__future__r   r1   Úcollections.abcr   r   Útypingr   r   r   Ú r
   r   Ú
exceptionsr   r   r   r   Úspeedupsr   ÚImportErrorÚutilsr   rV   rY   Úencode_datarZ   r`   rb   rM   r    r   ú<module>rm      sk   ðÝ "ã ß /ß ,Ñ ,ç !ß 5ß (ð#Ý%ô
@JˆJô @JóF:ó0:ð0 €õ ó$ô +øð[ ò #ß"ð#ús   ¶A  Á A.Á-A.