
    g                        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 d dl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mZmZmZm Z m!Z! d dl"m#Z#m$Z$m%Z% d d	l&m'Z' d d
l(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 erd dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;  G d ded      Z< G d d      Z=dee>e>f   defdZ?deee      deeee>e>f         fdZ@ G d de#      ZA G d d e#      ZBd!e j                  d"eddfd#ZD G d$ d%      ZE G d& d'e#      ZF G d( d)      ZG G d* d+e#      ZH G d, d-e#      ZI G d. d/      ZJy)0    N)defaultdict)Path)SimpleNamespace)
TYPE_CHECKINGAnyCallable	CoroutineDictListOptional	TypedDictUnioncast)parse)ClientCertificateHeadersHeadersArray
RemoteAddrRequestSizesResourceTimingSecurityDetails)ChannelOwnerfrom_channelfrom_nullable_channel)Error)EventContextManagerImpl)URLMatchWebSocketRouteHandlerCallbackasync_readfilelocals_to_paramsurl_matches)escape_regex_flags)Waiter)BrowserContextAPIResponse)Frame)Pagec                   b    e Zd ZU ee   ed<   ee   ed<   eeeef      ed<   eeeef      ed<   y)FallbackOverrideParametersurlmethodheaderspostDataN)	__name__
__module____qualname__r   str__annotations__r
   r   bytes     N/var/www/openai/venv/lib/python3.12/site-packages/playwright/_impl/_network.pyr*   r*   H   s=    	#SMd38n%%uS%Z())r6   r*   F)totalc                       e Zd ZddZy)SerializedFallbackOverridesNc                 <    d | _         d | _        d | _        d | _        y N)r+   r,   r-   post_data_bufferselfs    r7   __init__z$SerializedFallbackOverrides.__init__P   s    "&%)1515r6   returnN)r/   r0   r1   r@   r5   r6   r7   r:   r:   O   s    6r6   r:   r-   rB   c                 ^    | j                         D cg c]  \  }}|||d c}}S c c}}w )N)namevalue)items)r-   rD   rE   s      r7   serialize_headersrG   W   s>     #==?*KD% &*  s   )clientCertificatesc                   K   | sy g }| D ]  }d|d   i}|j                  d      x}r||d<   |j                  d      x}r&t        j                  |      j                         |d<   |j                  d      x}r7t        j                  t	        |       d {         j                         |d<   |j                  d      x}r&t        j                  |      j                         |d<   |j                  d      x}r7t        j                  t	        |       d {         j                         |d<   |j                  d      x}	r&t        j                  |	      j                         |d<   |j                  d      x}
r7t        j                  t	        |
       d {         j                         |d<   |j                  |        |S 7 67 7 4w)	Norigin
passphrasepfxpfxPathcertcertPathkeykeyPath)getbase64	b64encodedecoder   append)rH   outclientCertificate
out_recordrK   rL   pfx_pathrN   	cert_pathrP   key_paths              r7   to_client_certificates_protocolr]   _   s     
C/'1

 +..|<<:<'1J|$#''..3. & 0 0 5 < < >Ju(,,Y7787 & 0 0$X..!fh u %((0040!'!1!1$!7!>!>!@Jv)--j9999!'!1!1$Y//"fh v $''..3. & 0 0 5 < < >Ju(,,Y7787 & 0 0$X..!fh u 	

:1 02 J / 0 /s8   BGG
BGG
BGG
0GGGc            
           e Zd Zdededededdf
 fdZdefdZd	eddfd
Z	e
defd       Ze
defd       Ze
defd       ZdefdZe
dee   fd       Ze
dee   fd       Ze
dee   fd       Zded   fdZe
d$d       ZdefdZe
ded    fd       Ze
ded    fd       Ze
dee   fd       Ze
defd       ZdeddfdZ e
de!fd       Z"de!fdZ#de$fdZ%dedee   fd Z&d%d!Z'de(jR                  fd"Z*d&d#Z+ xZ,S )'RequestparenttypeguidinitializerrB   Nc           
      z   t         |   ||||       | j                  j                          t	        |j                  d            | _        d | _        | j                  r| | j                  _        d | _        dddddddddd	| _	        t        | j                  d         | _        d | _        t               | _        y )NredirectedFromr   )		startTimedomainLookupStartdomainLookupEndconnectStartsecureConnectionStart
connectEndrequestStartresponseStartresponseEndr-   )superr@   _channelmark_as_internal_typer   rR   _redirected_from_redirected_to_failure_text_timing
RawHeaders_initializer_provisional_headers_all_headers_futurer:   _fallback_overridesr?   r`   ra   rb   rc   	__class__s        r7   r@   zRequest.__init__   s     	t[9++-5JOO,-6
 48  37D!!0,0!#!%'
(
 %/t/@/@/K$L!IM ') 	 r6   c                 <    d| j                   d| j                  dS )Nz<Request url=z method=>)r+   r,   r>   s    r7   __repr__zRequest.__repr__   s    txxl(4;;/CCr6   	overridesc                 r   |j                  d| j                  j                        | j                  _        |j                  d| j                  j                        | j                  _        |j                  d| j                  j                        | j                  _        |j                  d      }t        |t              r |j                         | j                  _        y t        |t              r|| j                  _        y |3t        j                  |      j                         | j                  _        y y )Nr+   r,   r-   r.   )rR   r{   r+   r,   r-   
isinstancer2   encoder=   r4   jsondumps)r?   r   	post_datas      r7   _apply_fallback_overridesz!Request._apply_fallback_overrides   s    '0}}4++//(
  $ +4--d..55+
  ' ,5==t//77,
  ( MM*-	i%8A8H8H8JD$$5	5)8AD$$5"8<

98M8T8T8VD$$5 #r6   c                 l    t        t        | j                  j                  xs | j                  d         S Nr+   )r   r2   r{   r+   rx   r>   s    r7   r+   zRequest.url   s+    C1155Q9J9J59QRRr6   c                      | j                   d   S )NresourceTyperx   r>   s    r7   resource_typezRequest.resource_type   s      00r6   c                 l    t        t        | j                  j                  xs | j                  d         S )Nr,   )r   r2   r{   r,   rx   r>   s    r7   r,   zRequest.method   s+    C1188WD<M<Mh<WXXr6   c                    K   | j                          d {   }|st        d      |j                  j                  d       d {   S 7 47 w)Nz(Unable to fetch sizes for failed requestsizes)responser   rq   send)r?   r   s     r7   r   zRequest.sizes   sH     (BCC&&++G444 ) 5s!   AA/AAAAc                     | j                   j                  }|r|j                         S | j                  j	                  d      }|#t        j                  |      j                         S y Nr.   )r{   r=   rU   rx   rR   rS   	b64decode)r?   database64_post_datas      r7   r   zRequest.post_data   s]    ''88;;= ,,00<'##$45<<>>r6   c                     | j                   }|sy | j                  d   }d|v rt        t        j                  |            S 	 t        j                  |      S # t        $ r t        d|       w xY w)Ncontent-typez!application/x-www-form-urlencodedz&POST data is not a valid JSON object: )	r   r-   dictr   	parse_qslr   loads	Exceptionr   )r?   r   content_types      r7   post_data_jsonzRequest.post_data_json   st    NN	||N3.,>	233	N::i(( 	N@LMM	Ns   A A/c                     | j                   j                  r| j                   j                  S | j                  j                  d      r"t	        j
                  | j                  d         S y r   )r{   r=   rx   rR   rS   r   r>   s    r7   r=   zRequest.post_data_buffer   sV    ##44++<<<  ,##D$5$5j$ABBr6   Responsec                 f   K   t        | j                  j                  d       d {         S 7 w)Nr   )r   rq   r   r>   s    r7   r   zRequest.response   s&     $4==+=+=j+I%IJJ%Is   $1/	1c                     | j                   j                  d      st        d      t        dt	        | j                   d               }|j
                  st        dj                  g d            |S )Nframez8Service Worker requests do not have an associated frame.r'   
)zGFrame for this navigation request is not available, because the requestzIwas issued before the frame is created. You can check whether the requestz@is a navigation request by calling isNavigationRequest() method.)rx   rR   r   r   r   _pagejoinr?   r   s     r7   r   zRequest.frame   sj      $$W-RSSWl4+<+<W+EFG{{		  r6   c                      | j                   d   S )NisNavigationRequestr   r>   s    r7   is_navigation_requestzRequest.is_navigation_request   s      !677r6   c                     | j                   S r<   )rs   r>   s    r7   redirected_fromzRequest.redirected_from   s    $$$r6   c                     | j                   S r<   )rt   r>   s    r7   redirected_tozRequest.redirected_to   s    """r6   c                     | j                   S r<   )ru   r>   s    r7   failurezRequest.failure  s    !!!r6   c                     | j                   S r<   rv   r>   s    r7   timingzRequest.timing  s    ||r6   response_end_timingc                 f    || j                   d<   | j                   d   dk(  r|| j                   d<   y y )Nro   rn   rf   r   )r?   r   s     r7   _set_response_end_timingz Request._set_response_end_timing  s4    &9]#<<(B.,?DLL) /r6   c                     | j                   j                  }|r#t        j                  |      j                         S | j                  j                         S r<   )r{   r-   rw   _from_headers_dict_lossyry   )r?   overrides     r7   r-   zRequest.headers  sE    ++3366x@HHJJ((0022r6   c                 Z   K   | j                          d {   j                         S 7 wr<   _actual_headersr-   r>   s    r7   all_headerszRequest.all_headers  $     **,,5577,   +)+c                 Z   K   | j                          d {   j                         S 7 wr<   r   headers_arrayr>   s    r7   r   zRequest.headers_array  $     **,,;;==,r   rD   c                 \   K   | j                          d {   j                  |      S 7 wr<   r   rR   r?   rD   s     r7   header_valuezRequest.header_value  &     **,,11$77,   ,*,c                 j  K   | j                   j                  }|rt        t        |            S | j                  s`t        j                         | _        | j                  j                  d       d {   }| j                  j                  t        |             | j                   d {   S 7 <7 w)NrawRequestHeaders)
r{   r-   rw   rG   rz   asyncioFuturerq   r   
set_result)r?   r   r-   s      r7   r   zRequest._actual_headers!  s     ++33/9::'''.~~'7D$ MM../BCCG$$//
70CD---- D-s$   A0B32B/37B3*B1+B31B3c                     t        t        d   t        | j                  j	                  d                  }|st        j                         S |j                  }|st        j                         S |j                  S )Nr'   r   )	r   r   r   rx   rR   r   r   r   _closed_or_crashed_future)r?   r   pages      r7   _target_closed_futurezRequest._target_closed_future+  sd    W4T5F5F5J5J75ST
 >>##{{>>##---r6   c                 |    t        | j                  j                  d            }|sy t        d|      j                  S )Nr   r'   )r   rx   rR   r   r   r   s     r7   
_safe_pagezRequest._safe_page6  s6    %d&7&7&;&;G&DEGU#)))r6   rB   r'   rB   rw   )rB   zOptional[Page])-r/   r0   r1   r   r2   r
   r@   r   r*   r   propertyr+   r   r,   r   r   r   r   r   r   r4   r=   r   r   boolr   r   r   r   r   r   floatr   r   r-   r   r   r   r   r   r   r   r   r   __classcell__r}   s   @r7   r_   r_      s@   
"
*-
58
GK
	
:D# DW3M WRV W$ SS S S 1s 1 1 Y Y Y5\ 5 8C=   
N 
N 
N (5/  K 4 K   8t 8 %)!4 % % #x	2 # # "# " "   @E @d @
 3 3 387 8>\ >8s 8x} 8.	.w~~ 	.*r6   r_   c                   <    e Zd Zdededededdf
 fdZd*dZd	eddfd
Z	d+dZ
defdZedefd       Zd,deddfdZ	 	 	 	 	 	 	 d-dedeeef   deeef   dedeeef   deddddfdZ	 	 	 	 	 	 	 d-dedeeef   deeef   dedeeef   deddddfdZdeddfdZ	 	 	 	 	 	 	 d-dededeeef   deeeef   ded ed!eddfd"Z	 	 	 	 d.dededeeef   deeeef   ddf
d#Z	 	 	 	 d.dededeeef   deeeef   ddf
d$Zd/d%eddfd&Zdeddfd'Zd(eddfd)Z  xZ!S )0Router`   ra   rb   rc   rB   Nc                     t         |   ||||       | j                  j                          d | _        t        dd       | _        d| _        y )Nr$   F)rp   r@   rq   rr   _handling_futurer   _context
_did_throwr|   s        r7   r@   zRoute.__init__>  sF     	t[9++-BF*./?*Fr6   c                 L    t        j                         | _        | j                  S r<   )r   r   r   r>   s    r7   _start_handlingzRoute._start_handlingG  s     ' 0$$$r6   donec                 T    | j                   }|sJ d | _         |j                  |       y r<   )r   r   )r?   r   chains      r7   _report_handledzRoute._report_handledK  s*    %%u $r6   c                 2    | j                   st        d      y )NzRoute is already handled!)r   r   r>   s    r7   _check_not_handledzRoute._check_not_handledQ  s    $$344 %r6   c                 "    d| j                    dS )Nz<Route request=r   )requestr>   s    r7   r   zRoute.__repr__U  s     a00r6   c                 2    t        | j                  d         S )Nr   )r   rx   r>   s    r7   r   zRoute.requestX  s    D--i899r6   	errorCodec                 N    K    j                   fd       d {    y 7 w)Nc                  ^    j                  j                  j                  dd i            S )Nabortr   _race_with_page_closerq   r   )r   r?   s   r7   <lambda>zRoute.abort.<locals>.<lambda>^  s/    D..""#Yr6   _handle_route)r?   r   s   ``r7   r   zRoute.abort\  s$       	
 		
 		
   %#%statusr-   bodyr   pathcontentTyper   r&   c           
      f    K    j                   fd       d {    y 7 w)Nc            	      2    j                         S r<   )_inner_fulfill)r   r   r-   r   r   r   r?   r   s   r7   r   zRoute.fulfill.<locals>.<lambda>s  s    D''tT;r6   r   )r?   r   r-   r   r   r   r   r   s   ````````r7   fulfillzRoute.fulfillh  s+         
 	
 	
s   1/1c                 x  K   t        t                     }|"|t        d      t        j                  |      }|r|d= |j                  d      r|d   n|j                  |d<   |j                  d      r|d   n|j                  |d<   ddlm	}	 |X|Vt        ||	      rJ|j                  j                  | j                  u r|j                  |d<   n|j                          d {   }d}
t        |t              r$||d<   d	|d
<   t!        |j#                               }
nt        |t$              r7t'        j(                  |      j+                         |d<   d|d
<   t!        |      }
nT|rR|d= t-        |      j/                         }t'        j(                  |      j+                         |d<   d|d
<   t!        |      }
|j                  di       j1                         D ci c]  \  }}|j3                         t        |      ! }}}|j                  d      r	|d   |d<   n;|rd|d<   n3|r1t5        j6                  t        t-        |                  d   xs d|d<   |
rd|vrt        |
      |d<   t9        |      |d<   | j;                  | j<                  j?                  d|             d {    y 7 c c}}w 7 w)Nz*Can specify either body or json parametersr   r   r-   r   r%   fetchResponseUidr   FisBase64Tr   r   r   zapplication/jsonzapplication/octet-streamzcontent-lengthr   ) r    localsr   
json_utilsr   rR   r   r-   playwright._impl._fetchr&   r   _request_connection
_fetch_uidr   r2   lenr   r4   rS   rT   rU   r   
read_bytesrF   lower	mimetypes
guess_typerG   r   rq   r   )r?   r   r-   r   r   r   r   r   paramsr&   lengthfile_contentkvs                 r7   r   zRoute._inner_fulfillx  s     "&(+HII##D)Dz"$*JJx$8x hoo 8 &,ZZ	%:y!@P@P 9 <|Hk1R$$00D4D4DD191D1DF-.!)0DdC !F6N!&F:'Fe$#--d3::<F6N!%F:YFv:002L#--l;BBDF6N!%F:&F17Ir1J1P1P1RS1RA1779c!f$1RS::m$&,]&;GN#&8GN#$$Sd_5a8V<V N# &g5(+FG$%-g6y((););Iv)NOOO? 1$ T 	Ps2   C"J:$J/%C8J:$J2B(J:)J8*J:2J:callbackc                    K   | j                          	  |        d {    | j                  d       y 7 # t        $ r}d| _        |d }~ww xY wwNT)r   r   r   r   )r?   r  es      r7   r   zRoute._handle_route  sP     !	*  &  	"DOG	s1   A
7 57 A7 	A 	A		AAr+   r,   r.   maxRedirects
maxRetriestimeoutc           
      x    K    j                   j                   fd       d {   S 7 w)Nc            
      r    j                   j                  j                  j                         S )N)r  r  r  )r   r   _inner_fetch)r-   r  r  r,   r.   r?   r  r+   s   r7   r   zRoute.fetch.<locals>.<lambda>  s;    DMM))66)% 7 	r6   )r  wrap_api_call)r?   r+   r,   r-   r.   r  r  r  s   ````````r7   fetchzRoute.fetch  s6      %%33	 	
 
 	
 
s   ):8:c                    K   t        t        t        t                           }| j	                          | j
                  j                  |       | j                  d       y wNF)r   r*   r    r  r   r   r   r   )r?   r+   r,   r-   r.   r   s         r7   fallbackzRoute.fallback  sI      35Efh5OP	!..y9U#s   AA!c                     K   t        t        t        t                           d fd} j	                  |       d {   S 7 w)Nc                  z   K   j                   j                          j                  d       d {    y 7 wr!  )r   r   _inner_continue)r   r?   s   r7   _innerzRoute.continue_.<locals>._inner  s-     LL229=&&u---s   0;9;rA   )r   r*   r    r  r   )r?   r+   r,   r-   r.   r&  r   s   `     @r7   	continue_zRoute.continue_  s<      35Efh5OP		. ''////s   =AAAis_fallbackc                   K   | j                   j                  }| j                  | j                  j	                  d|j
                  |j                  |j                  rt        |j                        nd |j                  -t        j                  |j                        j                         nd |d             d {    y 7 w)Ncontinue)r+   r,   r-   r.   
isFallback)r   r{   r   rq   r   r+   r,   r-   rG   r=   rS   rT   rU   )r?   r(  optionss      r7   r%  zRoute._inner_continue  s     ,,22((MM";;%nn>Eoo)'//:SW #33? (()A)ABIIK!"-
 	
 	
s   B9C;C<Cc                 N    K    j                   fd       d {    y 7 w)Nc                  ^     j                   j                  j                  ddi            S )NredirectNavigationRequestr+   r   r?   r+   s   r7   r   z6Route._redirected_navigation_request.<locals>.<lambda>
  s)    D..""#>Mr6   r   r0  s   ``r7   _redirected_navigation_requestz$Route._redirected_navigation_request  s$       
 	
 	
r   futurec           
      :  K   t        j                  |      }t        |dt        t        j                  | j
                        dt        j                                      | j                  j                         }t        j                  ||gt         j                         d {    |j                         r.|j                         rt        t        |j                               |j                         r t        j                   |d       d {    y y 7 s7 w)N__pw_stack__return_whenT)return_exceptions)r   create_tasksetattrgetattrcurrent_task_loopinspectstackr   r   waitFIRST_COMPLETEDr   	exceptionr   BaseExceptiongather)r?   r2  futtarget_closed_futures       r7   r   zRoute._race_with_page_close  s     !!&)G((4ngmmoV	

  $||AACll&'//
 	
 	
 88:#--/}cmmo66$$&..=== '	
 >s%   B!D#D$A,DDDD)rB   zasyncio.Future[bool]rA   r<   )NNNNNNN)NNNN)F)"r/   r0   r1   r   r2   r
   r@   r   r   r   r   r   r   r_   r   r   intr   r4   r   r   r   r   r   r   r   r  r"  r'  r%  r1  r	   r   r   r   s   @r7   r   r   =  s    " *- 58 GK 	 %D T 51# 1 : : :

S 

D 

 "&"&!%"&

 c3h
 CJ	

 
 CI
 
  
 

$ "&"&!%"&>P>P c3h>P CJ	>P
 >P CI>P >P  >P 
>P@H   "&+/ 

 
 c3h	

 S%(
 
 
 
 

2 "&+/
$
$ 
$ c3h	
$
 S%(
$ 

$ "&+/00 0 c3h	0
 S%(0 
0
 
$ 
*
 
 
>) > >r6   r   loopcoroc                 >    dfd}| j                   |              y )Nc                  F   K   	   d {    y 7 # t         $ r Y y w xY wwr<   )r   )rH  s   r7   _ignore_exceptionz<_create_task_and_ignore_exception.<locals>._ignore_exception%  s$     	JJ 		s(   !  ! 	!!rA   )r8  )rG  rH  rK  s    ` r7   !_create_task_and_ignore_exceptionrL  "  s     	&()r6   c                       e Zd ZddZdeeeef   gef   ddfdZ	dee
e   e
e   gef   ddfdZddZedefd       Zdd	ed
eddfdZdeeef   ddfdZy)ServerWebSocketRoutec                     || _         y r<   )_ws)r?   wss     r7   r@   zServerWebSocketRoute.__init__/  s	    r6   handlerrB   Nc                 &    || j                   _        y r<   )rP  _on_server_messager?   rR  s     r7   
on_messagezServerWebSocketRoute.on_message2  s    &-#r6   c                 &    || j                   _        y r<   )rP  _on_server_closerU  s     r7   on_closezServerWebSocketRoute.on_close5  s    $+!r6   c                     t        d      )Nz>connectToServer must be called on the page-side WebSocketRoute)NotImplementedErrorr>   s    r7   connect_to_serverz&ServerWebSocketRoute.connect_to_server8  s    !L
 	
r6   c                 4    | j                   j                  d   S r   )rP  rx   r>   s    r7   r+   zServerWebSocketRoute.url=  s    xx$$U++r6   codereasonc           
          t        | j                  j                  | j                  j                  j	                  d||dd             y )NcloseServerTr^  r_  wasClean)rL  rP  r<  rq   r   r?   r^  r_  s      r7   closezServerWebSocketRoute.closeA  s>    )HHNNHH"" $ $
	
r6   messagec           	         t        |t              rHt        | j                  j                  | j                  j
                  j                  d|dd             y t        | j                  j                  | j                  j
                  j                  dt        j                  |      j                         dd             y )NsendToServerFrf  r  T)
r   r2   rL  rP  r<  rq   r   rS   rT   rU   r?   rf  s     r7   r   zServerWebSocketRoute.sendN  s    gs#-!!&&"U$K .!!&&" & 0 0 9 @ @ BPTUr6   )rQ  WebSocketRouterA   NN)r/   r0   r1   r@   r   r   r2   r4   r   rV  r   rF  rY  r\  r   r+   re  r   r5   r6   r7   rN  rN  .  s    .(E#u*,=+>+C"D . .,(3-#)G)L M ,RV ,

 ,S , ,
# 
c 
T 
E#u*- $ r6   rN  c            
           e Zd Zdededededdf
 fdZdeddfd	Zdeddfd
ZdeddfdZ	deddfdZ
edefd       ZddededdfdZddZdeeef   ddfdZdeeeef   gef   ddfdZdeee   ee   gef   ddfdZddZ xZS )rk  r`   ra   rb   rc   rB   Nc                    t         |   ||||       | j                  j                          d | _        d | _        d | _        d | _        t        |       | _	        d| _
        | j                  j                  d| j                         | j                  j                  d| j                         | j                  j                  d| j                         | j                  j                  d| j                         y )NFmessageFromPagemessageFromServer	closePagera  )rp   r@   rq   rr   _on_page_message_on_page_closerT  rX  rN  _server
_connectedon_channel_message_from_page_channel_message_from_server_channel_close_page_channel_close_serverr|   s        r7   r@   zWebSocketRoute.__init__a  s     	t[9++-NR 	 QU  	 ,D1*D,K,KL,d.O.OPd&>&>?(B(BCr6   eventc                    | j                   r7| j                  |d   rt        j                  |d                y |d          y | j                  r1t	        | j
                  | j                  j                  d|             y y )Nr  rf  rh  )rr  rS   r   ru  rL  r<  rq   r   r?   r{  s     r7   rw  z)WebSocketRoute._channel_message_from_pagev  su      !!$   y!12 9%
 __-

DMM..~uE r6   c                     | j                   r7| j                  |d   rt        j                  |d                y |d          y t        | j                  | j
                  j                  d|             y )Nr  rf  
sendToPage)rT  rS   r   rL  r<  rq   r   r}  s     r7   rx  z+WebSocketRoute._channel_message_from_server  si    ""##$   y!12 9% .

DMM..|UCr6   c                     | j                   r| j                  |d   |d          y t        | j                  | j                  j	                  d|             y )Nr^  r_  ra  )rs  rL  r<  rq   r   r}  s     r7   ry  z"WebSocketRoute._channel_close_page  sE    fuX?-

DMM..}eDr6   c                     | j                   r| j                  |d   |d          y t        | j                  | j                  j	                  d|             y )Nr^  r_  rq  )rX  rL  r<  rq   r   r}  s     r7   rz  z$WebSocketRoute._channel_close_server  sE      !!%-xA-

DMM..{EBr6   c                      | j                   d   S r   r   r>   s    r7   r+   zWebSocketRoute.url        ''r6   r^  r_  c                    K   	 | j                   j                  d||dd       d {    y 7 # t        $ r Y y w xY ww)Nrq  Trb  )rq   r   r   rd  s      r7   re  zWebSocketRoute.close  sF     	--$$df$O    		s(   >#/ -/ >/ 	;>;>c                     | j                   rt        d      d| _         t        j                  | j                  j                  d             t        d| j                        S )NzAlready connected to the serverTconnectrk  )ru  r   r   r8  rq   r   r   rt  r>   s    r7   r\  z WebSocketRoute.connect_to_server  sK    ??9::DMM..y9:$dll33r6   rf  c           	      4   t        |t              r4t        | j                  | j                  j                  d|dd             y t        | j                  | j                  j                  dt        j                  |      j                         dd             y )Nr  Fri  T)	r   r2   rL  r<  rq   r   rS   rT   rU   rj  s     r7   r   zWebSocketRoute.send  s|    gs#-

"" g5"I .

"" #)#3#3G#<#C#C#E$(	r6   rR  c                     || _         y r<   )rr  rU  s     r7   rV  zWebSocketRoute.on_message  s
     'r6   c                     || _         y r<   )rs  rU  s     r7   rY  zWebSocketRoute.on_close  s
    %r6   c                 p   K   | j                   ry | j                  j                  d       d {    y 7 w)NensureOpened)ru  rq   r   r>   s    r7   _after_handlezWebSocketRoute._after_handle  s(     ??mm  000s   ,646rl  )rB   rk  rA   )r/   r0   r1   r   r2   r
   r@   rw  rx  ry  rz  r   r+   rF  re  r\  r   r4   r   r   r   rV  r   rY  r  r   r   s   @r7   rk  rk  `  s1   D"D*-D58DGKD	D*
 
 

$ 
4 
 $ 4 D  (S ( ( C 4 4E#u*- $ (((E#u*,=+>+C"D ( (&(3-#)G)L M &RV &1r6   rk  c                   d    e Zd Zdee   dedefdZede	d    de	e
   fd       Zdedefd	ZddZy
)WebSocketRouteHandlerbase_urlr+   rR  c                 .    || _         || _        || _        y r<   )	_base_urlr+   rR  )r?   r  r+   rR  s       r7   r@   zWebSocketRouteHandler.__init__  s     "r6   handlersrB   c                 ^   g }d}| D ]  }t        |j                  t              r|j                  d|j                  i       ;t        |j                  t        j
                        r<|j                  |j                  j                  t        |j                        d       d} |rddigS |S )NFglob)regexSource
regexFlagsTz**/*)r   r+   r2   rV   rePatternpatternr"   )r  patternsall_urlsrR  s       r7   prepare_interception_patternsz3WebSocketRouteHandler.prepare_interception_patterns  s     G'++s+ 56GKK4'.{{':':&8&E     V$%%r6   ws_urlc                 D    t        | j                  || j                        S r<   )r!   r  r+   )r?   r  s     r7   matcheszWebSocketRouteHandler.matches  s    4>>6488<<r6   Nc                    K   | j                  |      }t        j                  |      r
| d {    |j                          d {    y 7 7 wr<   )rR  r   iscoroutiner  )r?   websocket_routecoro_or_futures      r7   handlezWebSocketRouteHandler.handle  sF     o6~.   ++--- !-s!   ,AAAAAA)r  rk  rB   N)r/   r0   r1   r   r2   r   r   r@   staticmethodr   r   r  r   r  r  r5   r6   r7   r  r    sm    3-  /	 ./	d ,=c =d =.r6   r  c            
           e Zd Zdededededdf
 fdZdefdZedefd	       Z	ede
fd
       Zedefd       Zedefd       Zedefd       Zede
fd       ZdefdZdefdZdedee   fdZdedee   fdZddZdee   fdZdee   fdZddZdefdZ defdZ!de"fdZ#ede$fd       Z%edd       Z& xZ'S ) r   r`   ra   rb   rc   rB   Nc                    t         |   ||||       | j                  j                          t	        | j
                  d         | _        | j
                  d   }|d   | j                  j                  d<   |d   | j                  j                  d<   |d   | j                  j                  d<   |d   | j                  j                  d<   |d   | j                  j                  d<   |d   | j                  j                  d<   |d	   | j                  j                  d	<   |d
   | j                  j                  d
<   t        t        t        | j
                  d               | _        d | _        t        j                         | _        y )Nr   r   rg   rh   ri   rj   rk   rl   rm   rn   r-   )rp   r@   rq   rr   r   rx   r  rv   rw   r   r   ry   _raw_headers_futurer   r   _finished_future)r?   r`   ra   rb   rc   r   r}   s         r7   r@   zResponse.__init__  sZ    	t[9++-!-d.?.?	.J!K""8,-3K-@k*5;<O5P1239:K3L/006~0Fn-9?@W9X56.4\.Bl+06~0Fn-171Ho.$.t00;<%
! JN 6=nn6Fr6   c                 <    d| j                   d| j                   dS )Nz<Response url=z	 request=r   )r+   r   r>   s    r7   r   zResponse.__repr__  s    |9T\\N!DDr6   c                      | j                   d   S r   r   r>   s    r7   r+   zResponse.url  r  r6   c                 v    | j                   d   dk(  xs& | j                   d   dk\  xr | j                   d   dk  S )Nr   r      i+  r   r>   s    r7   okzResponse.ok  sJ       *a/ 
h'3.U43D3DX3NRU3U	
r6   c                      | j                   d   S )Nr   r   r>   s    r7   r   zResponse.status"  s      **r6   c                      | j                   d   S )N
statusTextr   r>   s    r7   status_textzResponse.status_text&  s      ..r6   c                 6    | j                   j                         S r<   )ry   r-   r>   s    r7   r-   zResponse.headers*  s    ((0022r6   c                      | j                   d   S )NfromServiceWorkerr   r>   s    r7   from_service_workerzResponse.from_service_worker.  s      !455r6   c                 Z   K   | j                          d {   j                         S 7 wr<   r   r>   s    r7   r   zResponse.all_headers2  r   r   c                 Z   K   | j                          d {   j                         S 7 wr<   r   r>   s    r7   r   zResponse.headers_array5  r   r   rD   c                 \   K   | j                          d {   j                  |      S 7 wr<   r   r   s     r7   r   zResponse.header_value8  r   r   c                 \   K   | j                          d {   j                  |      S 7 wr<   )r   get_allr   s     r7   header_valueszResponse.header_values;  s&     **,,55d;;,r   c                 .  K   | j                   snt        j                         | _         t        t        | j
                  j                  d       d {         }| j                   j                  t        |             | j                    d {   S 7 @7 w)NrawResponseHeaders)	r  r   r   r   r   rq   r   r   rw   )r?   r-   s     r7   r   zResponse._actual_headers>  so     '''.~~'7D$<t}}/A/ABV/W)WXG$$//
70CD---- *X-s$   ABB
;BBBBc                 T   K   | j                   j                  d       d {   S 7 w)N
serverAddrrq   r   r>   s    r7   server_addrzResponse.server_addrE  s!     ]]''5555   (&(c                 T   K   | j                   j                  d       d {   S 7 w)NsecurityDetailsr  r>   s    r7   security_detailszResponse.security_detailsH  s"     ]]''(9::::r  c                 j   K   d fd}t        j                   |             }t        j                  t        t        t
        t         j                  t         j                  f       j                  |g      t         j                         d {    |j                         r| d {    y y 7  7 w)Nc                  j   K    j                   j                          d {    t        d      7 w)NzTarget closed)r  r   r   r>   s   r7   on_finishedz&Response.finished.<locals>.on_finishedL  s-     --55777(( 8s   313r5  rA   )r   r8  r?  r   r   r   Taskr   r  r@  r   )r?   r  on_finished_tasks   `  r7   finishedzResponse.finishedK  s     	) #..{}=llU7<<789&&(89  //
 	
 	
   """" #	
 #s$   BB3B/B3(B1)B31B3c                 ~   K   | j                   j                  d       d {   }t        j                  |      S 7 w)Nr   )rq   r   rS   r   )r?   binarys     r7   r   zResponse.body[  s3     }}))&11'' 2s   =;=c                 ^   K   | j                          d {   }|j                         S 7 wr<   )r   rU   )r?   contents     r7   textzResponse.text_  s&     		#~~ $s   -+-c                 d   K   t        j                  | j                          d {         S 7 wr<   )r   r   r  r>   s    r7   r   zResponse.jsonc  s!     zz		+,,+s   #0.	0c                     | j                   S r<   )r  r>   s    r7   r   zResponse.requestf  s    }}r6   c                 .    | j                   j                  S r<   )r  r   r>   s    r7   r   zResponse.framej  s    }}"""r6   r   rA   r   )(r/   r0   r1   r   r2   r
   r@   r   r   r+   r   r  rF  r   r  r   r-   r  r   r   r   r   r   r   r  r   r   r  r   r  r  r4   r   r  r   r   r_   r   r   r   r   s   @r7   r   r     s   G"G*-G58GGKG	G*E# E (S ( ( 
D 
 
 + + + /S / / 3 3 3 6T 6 687 8>\ >8s 8x} 8< <S	 <.68J#7 6;(A ;# (E ( C  -C -    # #r6   r   c            
            e Zd Z edddd      Zdededed	ed
df
 fdZd
efdZ	e
d
efd       Z	 	 ddededed
efdZ	 ddededed
efdZdeded
dfdZdeded
dfdZd
efdZddZ xZS )	WebSocketre  framereceived	framesentsocketerror)CloseFrameReceived	FrameSentr   r`   ra   rb   rc   rB   Nc                 T    t            ||||       d _        t        d|       _         j
                  j                  d fd        j
                  j                  d fd        j
                  j                  d fd        j
                  j                  d	 fd
       y )NFr(   	frameSentc                 4    j                  | d   | d         S Nopcoder   )_on_frame_sentr  r?   s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s    4..vh/?Pr6   frameReceivedc                 4    j                  | d   | d         S r  )_on_frame_receivedr  s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s    4226(3CVF^Tr6   socketErrorc                 ^    j                  t        j                  j                  | d         S )Nerror)emitr  Eventsr   r  s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s     499Y%5%5%;%;VG_Mr6   re  c                 $    j                         S r<   )	_on_closer  s    r7   r   z$WebSocket.__init__.<locals>.<lambda>  s    1Ar6   )rp   r@   
_is_closedr   r   rq   rv  r|   s   `    r7   r@   zWebSocket.__init__w  s     	t[9&&)
P	
 	T	
 	M	
 	"ABr6   c                 "    d| j                   dS )Nz<WebSocket url=r   )r+   r>   s    r7   r   zWebSocket.__repr__  s     A..r6   c                      | j                   d   S r   r   r>   s    r7   r+   zWebSocket.url  r  r6   r{  	predicater  c                     |2t        t         j                        j                  j	                         }t         d| d      }|j                  t        t        |      d| d| d       |t        j                  j                  k7  r4|j                   t        j                  j                  t        d             |t        j                  j                  k7  r4|j                   t        j                  j                  t        d             |j                   j                  d fd	       |j                   ||       t        |j!                               S )
Nzweb_socket.expect_event()zTimeout z%ms exceeded while waiting for event ""zSocket closedzSocket errorre  c                  8     j                   j                         S r<   )r   _close_error_with_reasonr>   s   r7   r   z(WebSocket.expect_event.<locals>.<lambda>  s    )L)L)Nr6   )r   r   _parent_timeout_settingsr  r#   reject_on_timeoutr   r  r  r  reject_on_eventr   r   wait_for_eventr   result)r?   r{  r  r  waiters   `    r7   expect_eventzWebSocket.expect_event  s    ?3-??GGIG 8qAB   wiDUG1M	
 I$$***""4)9)9)?)?AWXI$$***""4)9)9)?)?~AVWJJ!N	
 	dE95&v}}77r6   c                    K   | j                  |||      4 d {   }	 d d d       d {     d {   S 7 7 # 1 d {  7  sw Y    xY w7 wr<   )r  )r?   r{  r  r  
event_infos        r7   r  zWebSocket.wait_for_event  sL      $$UIw??: @? @????sF   A:A>A<	AAAAAAAAr  r   c                     |dk(  r>| j                  t        j                  j                  t	        j
                  |             y |dk(  r+| j                  t        j                  j                  |       y y N      )r  r  r  r  rS   r   r?   r  r   s      r7   r  zWebSocket._on_frame_sent  sT    Q;IIi&&00&2B2B42HIq[IIi&&00$7 r6   c                     |dk(  r>| j                  t        j                  j                  t	        j
                  |             y |dk(  r+| j                  t        j                  j                  |       y y r  )r  r  r  r  rS   r   r  s      r7   r  zWebSocket._on_frame_received  sT    Q;IIi&&44f6F6Ft6LMq[IIi&&44d; r6   c                     | j                   S r<   )r  r>   s    r7   	is_closedzWebSocket.is_closed  s    r6   c                 f    d| _         | j                  t        j                  j                  |        y r  )r  r  r  r  r  r>   s    r7   r  zWebSocket._on_close  s#    		)""(($/r6   rl  rA   )r/   r0   r1   r   r  r   r2   r
   r@   r   r   r+   r   r   r   r  r   r  rF  r  r  r   r  r  r   r   s   @r7   r  r  o  s   %	FC"C*-C58CGKC	C(/# / (S ( ( #	88 8 	8
 
!80 HL  %- ?D 	 8S 8 8 8< <C <D <4 0r6   r  c                       e Zd ZdeddfdZedeeef   dd fd       Zdede	e   fdZ
dedee   fdZdeeef   fd	Zdefd
Zy)rw   r-   rB   Nc                     || _         t        t              | _        |D ](  }d| j                  |d   j	                            |d   <   * y )NTrD   rE   )_headers_arrayr   r   _headers_mapr  )r?   r-   headers      r7   r@   zRawHeaders.__init__  sG    %8CD8IFIMDfVn2245fWoF r6   c                 *    t        t        |             S r<   )rw   rG   )r-   s    r7   r   z#RawHeaders._from_headers_dict_lossy  s    +G455r6   rD   c                 z    | j                  |      }|sy |j                         dk(  rdnd}|j                  |      S )Nz
set-cookier   z, )r  r  r   )r?   rD   values	separators       r7   rR   zRawHeaders.get  s9    d# JJLL8Dd	~~f%%r6   c                 j    t        | j                  |j                            j                               S r<   )listr  r  keysr   s     r7   r  zRawHeaders.get_all  s'    D%%djjl388:;;r6   c                     i }| j                   j                         D ]$  }t        t        | j	                  |            ||<   & |S r<   )r  r  r   r2   rR   )r?   r  rD   s      r7   r-   zRawHeaders.headers  s=    %%**,DTXXd^4F4L -r6   c                     | j                   S r<   )r  r>   s    r7   r   zRawHeaders.headers_array  s    """r6   )r/   r0   r1   r   r@   r  r
   r2   r   r   rR   r   r  r-   r   r5   r6   r7   rw   rw     s    N N N 6$sCx. 6\ 6 6& & &<C <DI <c3h #| #r6   rw   )Kr   rS   r=  r   r  r  r  collectionsr   pathlibr   typesr   typingr   r   r   r	   r
   r   r   r   r   r   urllibr    playwright._impl._api_structuresr   r   r   r   r   r   r   playwright._impl._connectionr   r   r   playwright._impl._errorsr   'playwright._impl._event_context_managerr   playwright._impl._helperr   r   r   r    r!   playwright._impl._str_utilsr"   playwright._impl._waiterr#   !playwright._impl._browser_contextr$   r  r&   playwright._impl._framer'   playwright._impl._pager(   r*   r:   r2   rG   r]   r_   r   AbstractEventLooprL  rN  rk  r  r   r  rw   r5   r6   r7   <module>r(     so         	 #  !      
 + K  ; +@3-+*% *6 6tCH~ ,  &7!89d4S>"#Dy*l y*xb>L b>J	*

#
#	*+4	*		*/ /do1\ o1d). ).Xn#| n#bR0 R0j# #r6   