Ë
    _§1h18  ã                   ó²  — 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mZm	Z	 ddl
mZmZ ddlmZ 	 	 d dlmZ de j                   d	e j                   d
efd„Zg 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%eeeeeeee e!e"e#e$fZ& G d„ d«      Z' G d„ d «      Z( G d!„ d"«      Z)y# e$ r- ej(                  Zde j                   d	e j                   d
efd„ZY Œ€w xY w)#é    N)ÚLock)ÚCallableÚOptionalÚUnioné   )ÚWebSocketPayloadExceptionÚWebSocketProtocolException)Úvalidate_utf8)ÚXorMaskerSimpleÚ
mask_valueÚ
data_valueÚreturnc                 ó:   — t        | «      j                  |«      }|S ©N)r   Úprocess)r   r   Úmask_results      úM/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/websocket/_abnf.pyÚ_maskr   %   s   € Ü,¨ZÓ8×@Ñ@ÀÓLˆØÐó    c                 óÐ   — t        |«      }t        j                  |t        «      }t        j                  | |dz  z  | d |dz   z   t        «      }||z  j	                  |t        «      S )Né   )ÚlenÚintÚ
from_bytesÚnative_byteorderÚto_bytes)r   r   ÚdatalenÚint_data_valueÚint_mask_values        r   r   r   -   sd   € Ü�j“/ˆÜŸ™¨
Ô4DÓEˆÜŸ™Ø˜' Q™,Ñ'¨*°]°wÀ±{Ð*CÑCÔEUó
ˆð  Ñ/×9Ñ9¸'ÔCSÓTÐTr   )ÚABNFÚcontinuous_frameÚframe_bufferÚSTATUS_NORMALÚSTATUS_GOING_AWAYÚSTATUS_PROTOCOL_ERRORÚSTATUS_UNSUPPORTED_DATA_TYPEÚSTATUS_STATUS_NOT_AVAILABLEÚSTATUS_ABNORMAL_CLOSEDÚSTATUS_INVALID_PAYLOADÚSTATUS_POLICY_VIOLATIONÚSTATUS_MESSAGE_TOO_BIGÚSTATUS_INVALID_EXTENSIONÚSTATUS_UNEXPECTED_CONDITIONÚSTATUS_BAD_GATEWAYÚSTATUS_TLS_HANDSHAKE_ERRORiè  ié  iê  ië  ií  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  i÷  c                   ób  — e Zd ZdZdZdZdZdZdZdZ	eeeeee	fZ
eded	ed
edede	diZdZdZdZddddeddfdededededededeeedf   ddfd„Zd&deddfd„Zededefd„«       Zdefd „Zed'deeef   dededd fd!„«       Zdefd"„Zd#eeef   defd$„Zed#eeef   deeef   defd%„«       Zy)(r    z}
    ABNF frame class.
    See http://tools.ietf.org/html/rfc5234
    and http://tools.ietf.org/html/rfc6455#section-5.2
    r   r   é   é   é	   é
   ÚcontÚtextÚbinaryÚcloseÚpingÚpongé~   i   l            Ú ÚfinÚrsv1Úrsv2Úrsv3Úopcoder   ÚdataNr   c                 ó˜   — || _         || _        || _        || _        || _        || _        |€d}|| _        t        j                  | _	        y)zG
        Constructor for ABNF. Please check RFC for arguments.
        Nr<   )
r=   r>   r?   r@   rA   r   rB   ÚosÚurandomÚget_mask_key)Úselfr=   r>   r?   r@   rA   r   rB   s           r   Ú__init__zABNF.__init__’   sK   € ð ˆŒØˆŒ	ØˆŒ	ØˆŒ	ØˆŒØ$ˆŒØˆ<ØˆDØˆŒ	ÜŸJ™JˆÕr   Úskip_utf8_validationc                 óº  — | j                   s| j                  s| j                  rt        d«      ‚| j                  t
        j                  vrt        d| j                  «      ‚| j                  t
        j                  k(  r| j                  st        d«      ‚| j                  t
        j                  k(  r©t        | j                  «      }|sy|dk(  s|dk\  rt        d«      ‚|dkD  r%|s#t        | j                  dd «      st        d«      ‚d	t        | j                  d
   «      z  t        | j                  d   «      z   }| j                  |«      st        d|«      ‚yy)z…
        Validate the ABNF frame.

        Parameters
        ----------
        skip_utf8_validation: skip utf8 validation.
        zrsv is not implemented, yetzInvalid opcode %rzInvalid ping frame.Nr   r;   zInvalid close frame.r1   é   r   zInvalid close opcode %r)r>   r?   r@   r	   rA   r    ÚOPCODESÚOPCODE_PINGr=   ÚOPCODE_CLOSEr   rB   r
   r   Ú_is_valid_close_status)rG   rI   ÚlÚcodes       r   ÚvalidatezABNF.validateª   s  € ð �9Š9˜Ÿ	š	 T§Y¢YÜ,Ð-JÓKÐKà�;‰;œdŸl™lÑ*Ü,Ð-@À$Ç+Á+ÓNÐNà�;‰;œ$×*Ñ*Ò*°4·8²8Ü,Ð-BÓCÐCà�;‰;œ$×+Ñ+Ò+Ü�D—I‘I“ˆAÙØØ�AŠv˜˜cšÜ0Ð1GÓHÐHØ�1ŠuÑ1¼-ÈÏ	É	ÐRSÐRTÈÔ:VÜ0Ð1GÓHÐHàœ˜TŸY™Y q™\Ó*Ñ*¬S°·±¸1±Ó->Ñ>ˆDØ×.Ñ.¨tÔ4Ü0Ð1JÈDÓQÐQð 5ð ,r   rQ   c                 ó6   — | t         v xs d| cxk  xr dk  S c S )Ni¸  iˆ  )ÚVALID_CLOSE_STATUS)rQ   s    r   rO   zABNF._is_valid_close_statusÈ   s#   € àÔ)Ð)ÒB¨d°dÖ.A¸TÑ.AÐBÑ.AÐBr   c                 óT   — d| j                   › d| j                  › d| j                  › �S )Nzfin=z opcode=z data=)r=   rA   rB   ©rG   s    r   Ú__str__zABNF.__str__Ì   s'   € Ø�d—h‘h�Z˜x¨¯© }°F¸4¿9¹9¸+ÐFÐFr   c           	      óŒ   — |t         j                  k(  r!t        | t        «      r| j	                  d«      } t        |ddd|d| «      S )aÚ  
        Create frame to send text, binary and other data.

        Parameters
        ----------
        data: str
            data to send. This is string value(byte array).
            If opcode is OPCODE_TEXT and this value is unicode,
            data value is converted into unicode string, automatically.
        opcode: int
            operation code. please see OPCODE_MAP.
        fin: int
            fin flag. if set to 0, create continue fragmentation.
        úutf-8r   r   )r    ÚOPCODE_TEXTÚ
isinstanceÚstrÚencode)rB   rA   r=   s      r   Úcreate_framezABNF.create_frameÏ   s@   € ð  ”T×%Ñ%Ò%¬*°T¼3Ô*?Ø—;‘;˜wÓ'ˆDä�C˜˜A˜q &¨!¨TÓ2Ð2r   c                 óÆ  — t        d„ | j                  | j                  | j                  | j                  fD «       «      rt        d«      ‚| j                  t        j                  vrt        d«      ‚t        | j                  «      }|t        j                  k\  rt        d«      ‚t        | j                  dz  | j                  dz  z  | j                  dz  z  | j                  dz  z  | j                  z  «      j                  d	«      }|t        j                  k  r.|t        | j                  dz  |z  «      j                  d	«      z  }n |t        j                   k  rG|t        | j                  dz  d
z  «      j                  d	«      z  }|t#        j$                  d|«      z  }nF|t        | j                  dz  dz  «      j                  d	«      z  }|t#        j$                  d|«      z  }| j                  sIt'        | j                  t(        «      r | j                  j                  d«      | _
        || j                  z   S | j+                  d«      }|| j-                  |«      z   S )zR
        Format this object to string(byte array) to send data to server.
        c              3   ó$   K  — | ]  }|d v–— Œ
 y­w))r   r   N© )Ú.0Úxs     r   ú	<genexpr>zABNF.format.<locals>.<genexpr>è   s   è ø€ ÒT 1ˆq˜ŒÑTùs   ‚z
not 0 or 1zInvalid OPCODEzdata is too longé   é   é   r   úlatin-1r;   ú!Hé   ú!QrY   )Úanyr=   r>   r?   r@   Ú
ValueErrorrA   r    rL   r   rB   Ú	LENGTH_63Úchrr]   ÚLENGTH_7r   Ú	LENGTH_16ÚstructÚpackr[   r\   rF   Ú_get_masked)rG   ÚlengthÚframe_headerÚmask_keys       r   ÚformatzABNF.formatä   s÷  € ô ÑT¨¯©°4·9±9¸d¿i¹iÈÏÉÐ(SÔTÔTÜ˜\Ó*Ð*Ø�;‰;œdŸl™lÑ*ÜÐ-Ó.Ð.Ü�T—Y‘Y“ˆØ”T—^‘^Ò#ÜÐ/Ó0Ð0äØ�H‰H˜‰MØ�i‰i˜1‰nñà�i‰i˜1‰nñð �i‰i˜1‰nñð �k‰kñ	ó
÷ ‰&�Ó
ð 	ð ”D—M‘MÒ!ØœC §¡°1Ñ 4°vÑ =Ó>×EÑEÀiÓPÑP‰LØ”d—n‘nÒ$ØœC §¡°1Ñ 4°tÑ ;Ó<×CÑCÀIÓNÑNˆLØœFŸK™K¨¨fÓ5Ñ5‰LàœC §¡°1Ñ 4°tÑ ;Ó<×CÑCÀIÓNÑNˆLØœFŸK™K¨¨fÓ5Ñ5ˆLà�ŠÜ˜$Ÿ)™)¤SÔ)Ø ŸI™I×,Ñ,¨WÓ5�”	Ø $§)¡)Ñ+Ð+Ø×$Ñ$ QÓ'ˆØ˜d×.Ñ.¨xÓ8Ñ8Ð8r   rw   c                 óŽ   — t         j                  || j                  «      }t        |t        «      r|j                  d«      }||z   S )NrY   )r    ÚmaskrB   r[   r\   r]   )rG   rw   Úss      r   rt   zABNF._get_masked  s8   € Ü�I‰I�h §	¡	Ó*ˆä�h¤Ô$Ø—‘ wÓ/ˆHà˜!‰|Ðr   c                 óö   — |€d}t        | t        «      r| j                  d«      } t        |t        «      r|j                  d«      }t        t	        j                  d| «      t	        j                  d|«      «      S )zÛ
        Mask or unmask data. Just do xor for each byte

        Parameters
        ----------
        mask_key: bytes or str
            4 byte mask.
        data: bytes or str
            data to mask/unmask.
        r<   rh   ÚB)r[   r\   r]   r   Úarray)rw   rB   s     r   rz   z	ABNF.mask  sa   € ð ˆ<ØˆDä�h¤Ô$Ø—‘ yÓ1ˆHä�dœCÔ Ø—;‘;˜yÓ)ˆDä”U—[‘[  hÓ/´·±¸SÀ$Ó1GÓHÐHr   )F)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚOPCODE_CONTrZ   ÚOPCODE_BINARYrN   rM   ÚOPCODE_PONGrL   Ú
OPCODE_MAPrp   rq   rn   r   r   r\   ÚbytesrH   ÚboolrR   ÚstaticmethodrO   rW   r^   rx   rt   rz   ra   r   r   r    r    j   sÜ  „ ñð €KØ€KØ€MØ€LØ€KØ€Kð 	ØØØØØð€Gð 	�VØ�VØ�xØ�gØ�VØ�Vð€Jð €HØ€IØ€Ið ØØØØ!ØØ(*ñ'àð'ð ð'ð ð	'ð
 ð'ð ð'ð ð'ð �C˜ Ð$Ñ%ð'ð 
ó'ñ0R¨Tð R¸dó Rð< ðC Sð C¨Tò Có ðCðG˜ó Gð ñ3˜5 ¨ Ñ,ð 3°cð 3Àð 3ÈFò 3ó ð3ð(!9˜ó !9ðF E¨#¨u¨*Ñ$5ð ¸%ó ð ðI�u˜S %˜ZÑ(ð I°°c¸5°jÑ0Að IÀeò Ió ñIr   r    c                   óª   — e Zd ZdZdZdeegef   deddfd„Zdd„Z	defd	„Z
dd
„Zdeeef   fd„Zdefd„Zdd„Zdefd„Zdd„Zdefd„Zdedefd„Zy)r"   rg   rf   Úrecv_fnrI   r   Nc                 ól   — || _         || _        g | _        | j                  «        t	        «       | _        y r   )ÚrecvrI   Úrecv_bufferÚclearr   Úlock)rG   r‹   rI   s      r   rH   zframe_buffer.__init__+  s/   € ð ˆŒ	Ø$8ˆÔ!ð "$ˆÔØ�
‰
ŒÜ“Fˆ�	r   c                 ó.   — d | _         d | _        d | _        y r   )Úheaderru   r   rV   s    r   r�   zframe_buffer.clear6  s   € Ø'+ˆŒØ%)ˆŒØ37ˆ�r   c                 ó   — | j                   d u S r   )r’   rV   s    r   Úhas_received_headerz frame_buffer.has_received_header;  ó   € Ø�{‰{˜dÐ"Ð"r   c                 óº   — | j                  d«      }|d   }|dz	  dz  }|dz	  dz  }|dz	  dz  }|dz	  dz  }|dz  }|d   }|dz	  dz  }	|d	z  }
||||||	|
f| _        y )
Nr1   r   re   r   rf   rg   r   é   rj   )Úrecv_strictr’   )rG   r’   Úb1r=   r>   r?   r@   rA   Úb2Úhas_maskÚlength_bitss              r   Úrecv_headerzframe_buffer.recv_header>  s�   € Ø×!Ñ! !Ó$ˆØ�A‰YˆØ�A‰g˜‰kˆØ�Q‰w˜‰{ˆØ�Q‰w˜‰{ˆØ�Q‰w˜‰{ˆØ�c‘ˆØ�A‰YˆØ˜‘7˜Q‘;ˆØ˜4‘iˆà˜D $¨¨f°hÀÐLˆ�r   c                 óZ   — | j                   sy| j                   t        j                     }|S )NF)r’   r"   Ú_HEADER_MASK_INDEX)rG   Ú
header_vals     r   r›   zframe_buffer.has_maskL  s&   € Ø�{Š{ØØŸ+™+¤l×&EÑ&EÑFˆ
ØÐr   c                 ó   — | j                   d u S r   )ru   rV   s    r   Úhas_received_lengthz frame_buffer.has_received_lengthR  r•   r   c                 ó*  — | j                   t        j                     }|dz  }|dk(  r0| j                  d«      }t	        j
                  d|«      d   | _        y |dk(  r0| j                  d«      }t	        j
                  d|«      d   | _        y || _        y )Nrj   r;   r1   ri   r   r2   rk   )r’   r"   Ú_HEADER_LENGTH_INDEXr˜   rr   Úunpackru   )rG   Úbitsrœ   Úvs       r   Úrecv_lengthzframe_buffer.recv_lengthU  s„   € Ø�{‰{œ<×<Ñ<Ñ=ˆØ˜T‘kˆØ˜$ÒØ× Ñ  Ó#ˆAÜ Ÿ-™-¨¨aÓ0°Ñ3ˆD�KØ˜DÒ Ø× Ñ  Ó#ˆAÜ Ÿ-™-¨¨aÓ0°Ñ3ˆD�Kà%ˆD�Kr   c                 ó   — | j                   d u S r   )r   rV   s    r   Úhas_received_maskzframe_buffer.has_received_maska  s   € Ø�‰ $Ð&Ð&r   c                 ó`   — | j                  «       r| j                  d«      | _        y d| _        y )Nr   r<   )r›   r˜   r   rV   s    r   Ú	recv_maskzframe_buffer.recv_maskd  s"   € Ø15·±´˜$×*Ñ*¨1Ó-ˆ�Àbˆ�r   c           
      ó,  — | j                   5  | j                  «       r| j                  «        | j                  \  }}}}}}}| j	                  «       r| j                  «        | j                  }| j                  «       r| j                  «        | j                  }	| j                  |«      }
|rt        j                  |	|
«      }
| j                  «        t        |||||||
«      }|j                  | j                  «       d d d «       |S # 1 sw Y   S xY wr   )r�   r”   r�   r’   r¢   r¨   ru   rª   r¬   r   r˜   r    rz   r�   rR   rI   )rG   r=   r>   r?   r@   rA   r›   Ú_ru   r   ÚpayloadÚframes               r   Ú
recv_framezframe_buffer.recv_frameg  só   € Ø�Y‰Yñ 	6à×'Ñ'Ô)Ø× Ñ Ô"Ø;?¿;¹;Ñ8ˆS�$˜˜d F¨H°að ×'Ñ'Ô)Ø× Ñ Ô"Ø—[‘[ˆFð ×%Ñ%Ô'Ø—‘Ô ØŸ™ˆJð ×&Ñ& vÓ.ˆGÙÜŸ)™) J°Ó8�ð �J‰JŒLä˜˜d D¨$°¸À'ÓJˆEØ�N‰N˜4×4Ñ4Ô5÷3	6ð6 ˆ÷7	6ð6 ˆús   �C2D	Ä	DÚbufsizec                 ó^  — |t        t        t        | j                  «      «      z
  }|dkD  rJ| j	                  t        d|«      «      }| j                  j                  |«       |t        |«      z  }|dkD  rŒJdj                  | j                  «      }|dk(  r	g | _        |S ||d  g| _        |d | S )Nr   i @  r   )ÚsumÚmapr   rŽ   r�   ÚminÚappendÚjoin)rG   r²   ÚshortageÚbytes_Úunifieds        r   r˜   zframe_buffer.recv_strict…  s°   € ØœS¤¤S¨$×*:Ñ*:Ó!;Ó<Ñ<ˆØ˜Šlð —Y‘Yœs 5¨(Ó3Ó4ˆFØ×Ñ×#Ñ# FÔ+Øœ˜F›Ñ#ˆHð ˜‹lð —(‘(˜4×+Ñ+Ó,ˆà�qŠ=Ø!ˆDÔØˆNà '¨¨Ð 1Ð2ˆDÔØ˜8˜GÐ$Ð$r   )r   N)r   r€   r�   rŸ   r¤   r   r   rˆ   rH   r�   r”   r�   r   r›   r¢   r¨   rª   r¬   r    r±   r‡   r˜   ra   r   r   r"   r"   '  s¤   „ ØÐØÐð	Ø   s 
Ñ+ð	ØCGð	à	ó	ó8ð
# Tó #óMð˜%  c 	Ñ*ó ð# Tó #ó
&ð' 4ó 'óIð˜Dó ð<% 3ð %¨5ô %r   r"   c                   ój   — e Zd Zdededdfd„Zdeddfd„Zdeddfd„Zdedeee	f   fd	„Z
dedefd
„Zy)r!   Úfire_cont_framerI   r   Nc                 ó<   — || _         || _        d | _        d | _        y r   )r½   rI   Ú	cont_dataÚrecving_frames)rG   r½   rI   s      r   rH   zcontinuous_frame.__init__�  s!   € Ø.ˆÔØ$8ˆÔ!Ø)-ˆŒØ-1ˆÕr   r°   c                 óô   — | j                   s(|j                  t        j                  k(  rt	        d«      ‚| j                   r8|j                  t        j
                  t        j                  fv rt	        d«      ‚y y )NzIllegal frame)rÀ   rA   r    rƒ   r	   rZ   r„   ©rG   r°   s     r   rR   zcontinuous_frame.validate£  sg   € Ø×"Ò" u§|¡|´t×7GÑ7GÒ'GÜ,¨_Ó=Ð=Ø×Ò 5§<¡<Ü×ÑÜ×Ñð4
ñ $
ô -¨_Ó=Ð=ð	$
Ðr   c                 ó<  — | j                   r"| j                   dxx   |j                  z  cc<   nZ|j                  t        j                  t        j
                  fv r|j                  | _        |j                  |j                  g| _         |j                  rd | _        y y )Nr   )r¿   rB   rA   r    rZ   r„   rÀ   r=   rÂ   s     r   Úaddzcontinuous_frame.add¬  sr   € Ø�>Š>Ø�N‰N˜1Ó §¡Ñ+Ôà�|‰|¤× 0Ñ 0´$×2DÑ2DÐEÑEØ&+§l¡l�Ô#Ø#Ÿl™l¨E¯J©JÐ7ˆDŒNà�9Š9Ø"&ˆDÕð r   c                 ó6   — |j                   xs | j                  S r   )r=   r½   rÂ   s     r   Úis_firezcontinuous_frame.is_fire·  s   € Ø�y‰yÒ0˜D×0Ñ0Ð0r   c                 ó  — | j                   }d | _         |d   |_        | j                  sX|d   t        j                  k(  rB| j
                  s6t        |j                  «      s!t        dt        |j                  «      › �«      ‚|d   |fS )Nr   r   zcannot decode: )	r¿   rB   r½   r    rZ   rI   r
   r   Úrepr)rG   r°   rB   s      r   Úextractzcontinuous_frame.extractº  sw   € Ø�~‰~ˆØˆŒØ˜!‘WˆŒ
à×$Ò$Ø�Q‘œ4×+Ñ+Ò+Ø×-Ò-Ü! %§*¡*Ô-ä+¨o¼dÀ5Ç:Á:Ó>NÐ=OÐ,PÓQÐQØ�A‰w˜ˆ~Ðr   )r   r€   r�   rˆ   rH   r    rR   rÄ   r   r   rÆ   ÚtuplerÉ   ra   r   r   r!   r!   œ  sq   „ ð2¨ð 2ÀDð 2ÈTó 2ð>˜dð > tó >ð	'˜ð 	' $ó 	'ð1˜Tð 1 e¨D°#¨IÑ&6ó 1ð˜Tð  eô r   r!   )*r~   rD   rr   ÚsysÚ	threadingr   Útypingr   r   r   Ú_exceptionsr   r	   Ú_utilsr
   Úwsaccel.xormaskr   r‡   r   ÚImportErrorÚ	byteorderr   Ú__all__r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   ÚSTATUS_SERVICE_RESTARTÚSTATUS_TRY_AGAIN_LATERr.   r/   rT   r    r"   r!   ra   r   r   ú<module>rÖ      sL  ðÛ Û 	Û Û 
Ý ß ,Ñ ,ç NÝ !ðð&Uõ
 0ð˜%Ÿ+™+ð °5·;±;ð À5ó ò"€ð( €ØÐ ØÐ Ø#Ð Ø"Ð ØÐ ØÐ ØÐ ØÐ ØÐ Ø"Ð ØÐ ØÐ ØÐ Ø!Ð ð ØØØ ØØØØØØØØðÐ ÷ zIñ zI÷zr%ñ r%÷j)ò )øðg ò 
Uà—}‘}ÐðU˜%Ÿ+™+ð U°5·;±;ð UÀ5õ Uð	
Uús   ±$B$ Â$/CÃC