§
    °õiX  ã            	       óx  — 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 d dlZd dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  e j        e¦  «        Zi ej        d“ej        d“ej        d“ej        d“ej        d“ej         d“ej!        d“ej"        d“ej#        d“ej$        d“ej%        d“ej&        d“ej'        d“ej(        d“ej)        d“ej*        d“ej+        d“i ej,        d“ej-        d“ej.        d“ej/        d“ej0        d “ej1        d!“ej2        d"“ej3        d#“ej4        d$“ej5        d%“ej6        d&“ej7        d'“ej8        d(“ej9        d)“ej:        d*“ej;        d+“ej<        d,“¥i ej=        d-“ej>        d.“ej?        d/“ej@        d0“ejA        d1“ejB        d2“ejC        d3“ejD        d4“ejE        d5“ejF        d6“ejG        d7“ejH        d8“ejI        d9“ejJ        d:“ejK        d;“ejL        d<“ejM        d=“¥i ejN        d>“ejO        d?“ejP        d@“ejQ        dA“ejR        dB“ejS        dC“ejT        dD“ejU        dE“ejV        dF“ejW        dG“ejX        dH“ejY        dI“ejZ        dJ“ej[        dK“ej\        dL“ej]        dM“ej^        dN“¥i ej_        dO“ej`        dP“eja        dQ“ejb        dR“ejc        dS“ejd        dT“eje        dU“ejf        dV“ejg        dW“ejh        dX“eji        dY“ejj        dZ“ejk        d[“ejl        d\“ejm        d]“ejn        d^“ejo        d_“¥ejp        d`ejq        daejr        dbejs        dci¥Zt G dd„ de¦  «        ZudS )fé    N)Ú	b64encode)ÚOptional)Úparse)ÚunquoteÚurlparse)Ú__version__)Úutils)ÚClientConfig)ÚCommand)Ú	ErrorCode)ÚPOSTz/session)ÚDELETEz/session/$sessionId)ÚGETú/session/$sessionId/window)r   z"/session/$sessionId/window/handles)r   ú/session/$sessionId/url)r   z/session/$sessionId/forward)r   z/session/$sessionId/back)r   z/session/$sessionId/refresh)r   z /session/$sessionId/execute/sync)r   z!/session/$sessionId/execute/async)r   r   )r   z/session/$sessionId/title)r   z/session/$sessionId/source)r   z/session/$sessionId/screenshot)r   z*/session/$sessionId/element/$id/screenshot)r   z/session/$sessionId/element)r   z/session/$sessionId/elements)r   z"/session/$sessionId/element/active)r   z'/session/$sessionId/element/$id/element)r   z(/session/$sessionId/element/$id/elements)r   z%/session/$sessionId/element/$id/click)r   z%/session/$sessionId/element/$id/clear)r   z$/session/$sessionId/element/$id/text)r   z%/session/$sessionId/element/$id/value)r   z$/session/$sessionId/element/$id/name)r   z(/session/$sessionId/element/$id/selected)r   z'/session/$sessionId/element/$id/enabled)r   z$/session/$sessionId/element/$id/rect)r   z//session/$sessionId/element/$id/attribute/$name)r   z./session/$sessionId/element/$id/property/$name)r   z,/session/$sessionId/element/$id/computedrole)r   z-/session/$sessionId/element/$id/computedlabel)r   z&/session/$sessionId/element/$id/shadow)r   z,/session/$sessionId/shadow/$shadowId/element)r   z-/session/$sessionId/shadow/$shadowId/elements)r   ú/session/$sessionId/cookie)r   r   )r   ú /session/$sessionId/cookie/$name)r   r   )r   r   )r   z/session/$sessionId/frame)r   z /session/$sessionId/frame/parent)r   r   )r   z/session/$sessionId/window/new)r   r   )r   z1/session/$sessionId/element/$id/css/$propertyName)r   z!/session/$sessionId/execute_async)r   ú/session/$sessionId/timeouts)r   r   )r   z!/session/$sessionId/alert/dismiss)r   z /session/$sessionId/alert/accept)r   ú/session/$sessionId/alert/text)r   r   )r   ú/session/$sessionId/actions)r   r   )r   ú/session/$sessionId/window/rect)r   r   )r   z#/session/$sessionId/window/maximize)r   ú/session/$sessionId/orientation)r   r   )r   ú&/session/$sessionId/network_connection)r   r   )r   z/session/$sessionId/se/log)r   z /session/$sessionId/se/log/types)r   ú/session/$sessionId/context)r   z/session/$sessionId/contexts)r   r   )r   z%/session/$sessionId/window/fullscreen)r   z#/session/$sessionId/window/minimize)r   z/session/$sessionId/print)r   z*/session/$sessionId/webauthn/authenticator)r   z;/session/$sessionId/webauthn/authenticator/$authenticatorId)r   zF/session/$sessionId/webauthn/authenticator/$authenticatorId/credential)r   úG/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials)r   zU/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials/$credentialId)r   r   )r   z>/session/$sessionId/webauthn/authenticator/$authenticatorId/uv)r   z/session/$sessionId/se/file)r   ú/session/$sessionId/se/files)r   r   )r   r   )r   z"/session/$sessionId/fedcm/gettitle)r   z'/session/$sessionId/fedcm/getdialogtype)r   z%/session/$sessionId/fedcm/accountlist)r   z+/session/$sessionId/fedcm/clickdialogbutton)r   z&/session/$sessionId/fedcm/canceldialog)r   z'/session/$sessionId/fedcm/selectaccount)r   z)/session/$sessionId/fedcm/setdelayenabled)r   z'/session/$sessionId/fedcm/resetcooldownc                   ó‚  — e Zd ZU dZdZee         ed<   ddlZddl	Z	ddl
Z
e	                     ¦   «         Zdej        v re                     d¦  «        ne
                     ¦   «         ZdZee         ed<   ej        Zedk    rdZdZd	e› d
e› d�Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z ed(d„¦   «         Z!d„ Z"d„ Z#d„ Z$	 	 	 	 	 	 d)dee         dee%         dee%         dee%         dee&         dee         fd„Z'i Z(d„ Z)d efd!„Z*d"„ Z+d*d#e&fd$„Z,d%„ Z-d+d#e&fd'„Z.dS ),ÚRemoteConnectionz¹A connection with the Remote WebDriver server.

    Communicates with the server using the WebDriver wire protocol:
    https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
    NÚbrowser_namer   ÚREQUESTS_CA_BUNDLEÚ_client_configÚdarwinÚmacz	selenium/z	 (python ú)c                 ó   — | j         S ©N)r!   ©Úselfs    úw/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/selenium/webdriver/remote/remote_connection.pyÚclient_configzRemoteConnection.client_config¦   s   € àÔ"Ð"ó    c                 óR   — t          j        dt          d¬¦  «         | j        j        S )zÕReturns timeout value in seconds for all http requests made to the Remote Connection.

        Returns:
            Timeout value in seconds for all http requests made to the
            Remote Connection
        zWget_timeout() in RemoteConnection is deprecated, get timeout from client_config insteadé   ©Ú
stacklevel©ÚwarningsÚwarnÚDeprecationWarningr!   Útimeout©Úclss    r)   Úget_timeoutzRemoteConnection.get_timeoutª   s4   € õ 	ŒØeÝØð	
ñ 	
ô 	
ð 	
ð
 Ô!Ô)Ð)r+   c                 óV   — t          j        dt          d¬¦  «         || j        _        dS )zuOverride the default timeout.

        Args:
            timeout: timeout value for http requests in seconds
        zUset_timeout() in RemoteConnection is deprecated, set timeout in client_config insteadr-   r.   Nr0   )r6   r4   s     r)   Úset_timeoutzRemoteConnection.set_timeout¹   s9   € õ 	ŒØcÝØð	
ñ 	
ô 	
ð 	
ð
 &-ˆÔÔ"Ð"Ð"r+   c                 óp   — t          j        dt          d¬¦  «         | j                             ¦   «          dS )zAReset the http request timeout to socket._GLOBAL_DEFAULT_TIMEOUT.z_reset_timeout() in RemoteConnection is deprecated, use reset_timeout() in client_config insteadr-   r.   N)r1   r2   r3   r!   Úreset_timeoutr5   s    r)   r;   zRemoteConnection.reset_timeoutÇ   sC   € õ 	ŒØmÝØð	
ñ 	
ô 	
ð 	
ð
 	Ô×(Ò(Ñ*Ô*Ð*Ð*Ð*r+   c                 óR   — t          j        dt          d¬¦  «         | j        j        S )a-  Returns paths of the .pem encoded certificate to verify connection to command executor.

        Returns:
            Paths of the .pem encoded certificate to verify connection to
            command executor. Defaults to certifi.where() or
            REQUESTS_CA_BUNDLE env variable if set.
        zhget_certificate_bundle_path() in RemoteConnection is deprecated, get ca_certs from client_config insteadr-   r.   ©r1   r2   r3   r!   Úca_certsr5   s    r)   Úget_certificate_bundle_pathz,RemoteConnection.get_certificate_bundle_pathÑ   s4   € õ 	ŒØvÝØð	
ñ 	
ô 	
ð 	
ð
 Ô!Ô*Ð*r+   c                 óV   — t          j        dt          d¬¦  «         || j        _        dS )zïSet the path to the certificate bundle to verify connection to
        command executor. Can also be set to None to disable certificate
        validation.

        Args:
            path: path of a .pem encoded certificate chain.
        zfset_certificate_bundle_path() in RemoteConnection is deprecated, set ca_certs in client_config insteadr-   r.   Nr=   )r6   Úpaths     r)   Úset_certificate_bundle_pathz,RemoteConnection.set_certificate_bundle_pathá   s9   € õ 	ŒØtÝØð	
ñ 	
ô 	
ð 	
ð
 '+ˆÔÔ#Ð#Ð#r+   Fc                 ó‚  — dd| j         dœ}|j        rrt          j        dd¬¦  «         t	          |j        › d|j        › �                     ¦   «         ¦  «        }|                     dd	|                     ¦   «         › �i¦  «         |r|                     d
di¦  «         | j	        r|                     | j	        ¦  «         |S )z§Get headers for remote request.

        Args:
            parsed_url: The parsed url
            keep_alive: Is this a keep-alive connection (default: False)
        zapplication/jsonzapplication/json;charset=UTF-8)ÚAcceptúContent-Typez
User-AgentzREmbedding username and password in URL could be insecure, use ClientConfig insteadr-   r.   ú:ÚAuthorizationzBasic Ú
Connectionz
keep-alive)
Ú
user_agentÚusernamer1   r2   r   ÚpasswordÚencodeÚupdateÚdecodeÚextra_headers)r6   Ú
parsed_urlÚ
keep_aliveÚheadersÚbase64strings        r)   Úget_remote_connection_headersz.RemoteConnection.get_remote_connection_headersñ   sç   € ð )Ø<Øœ.ð
ð 
ˆð Ôð 	PÝŒMØdÐqrðñ ô ð õ %¨
Ô(;Ð%SÐ%S¸jÔ>QÐ%SÐ%S×%ZÒ%ZÑ%\Ô%\Ñ]Ô]ˆLØ�NŠN˜OÐ-M°l×6IÒ6IÑ6KÔ6KÐ-MÐ-MÐNÑOÔOÐOàð 	9Ø�NŠN˜L¨,Ð7Ñ8Ô8Ð8àÔð 	.Ø�NŠN˜3Ô,Ñ-Ô-Ð-àˆr+   c                 óR   — t          | j        ¦  «        }|j        r	|j        rdS d S d S )NT)r   Ú
_proxy_urlrJ   rK   )r(   rP   s     r)   Ú_identify_http_proxy_authz*RemoteConnection._identify_http_proxy_auth  s?   € Ý˜dœoÑ.Ô.ˆ
ØÔð 	 :Ô#6ð 	Ø�4ð	ð 	ð 	ð 	r+   c                 ó†   — t          | j        ¦  «        }|j        › d|j        › d|j        › �}|j        › d|j        › �}||fS )Nz://rF   )r   rV   ÚschemeÚhostnameÚportrJ   rK   )r(   rP   Úproxy_without_authÚauths       r)   Ú_separate_http_proxy_authz*RemoteConnection._separate_http_proxy_auth  sY   € Ý˜dœoÑ.Ô.ˆ
Ø *Ô 1Ð]Ð]°jÔ6IÐ]Ð]ÈJÌOÐ]Ð]ÐØÔ%Ð=Ð=¨
Ô(;Ð=Ð=ˆØ! 4Ð'Ð'r+   c                 óÊ  — d| j         j        i}|                     | j         j                             di ¦  «        ¦  «         | j         j        r)d|d<   t          j        t          j        j	        ¦  «         n | j         j
        rd|d<   | j         j
        |d<   | j        r¶| j                             ¦   «                              d¦  «        rdd	lm}  || j        fi |¤ŽS |                      ¦   «         rK|                      ¦   «         \  | _        | _        t          j        t)          | j        ¦  «        ¬
¦  «        |d<   t          j        | j        fi |¤ŽS t          j        di |¤ŽS )Nr4   Úinit_args_for_pool_managerÚ	CERT_NONEÚ	cert_reqsÚCERT_REQUIREDr>   Úsockr   )ÚSOCKSProxyManager)Úproxy_basic_authÚproxy_headers© )r!   r4   rM   r`   ÚgetÚignore_certificatesÚurllib3Údisable_warningsÚ
exceptionsÚInsecureRequestWarningr>   rV   ÚlowerÚ
startswithÚurllib3.contrib.socksre   rW   r^   Ú_basic_proxy_authÚmake_headersr   ÚProxyManagerÚPoolManager)r(   Úpool_manager_init_argsre   s      r)   Ú_get_connection_managerz(RemoteConnection._get_connection_manager  s•  € Ø"+¨TÔ-@Ô-HÐ!IÐØ×%Ò%ØÔÔ:×>Ò>Ð?[Ð]_Ñ`Ô`ñ	
ô 	
ð 	
ð ÔÔ2ð 	NØ2=Ð" ;Ñ/ÝÔ$¥WÔ%7Ô%NÑOÔOÐOÐOØÔ Ô)ð 	NØ2AÐ" ;Ñ/Ø15Ô1DÔ1MÐ" :Ñ.àŒ?ð 
	SØŒ×$Ò$Ñ&Ô&×1Ò1°&Ñ9Ô9ð TØCÐCÐCÐCÐCÐCà(Ð(¨¬ÐSÐSÐ<RÐSÐSÐSØ×-Ò-Ñ/Ô/ð Ø:>×:XÒ:XÑ:ZÔ:ZÑ7�” Ô!7Ý:AÔ:NÝ%,¨TÔ-CÑ%DÔ%Dð;ñ ;ô ;Ð& Ñ7õ Ô'¨¬ÐRÐRÐ;QÐRÐRÐRåÔ"Ð<Ð<Ð%;Ð<Ð<Ð<r+   TÚremote_server_addrrQ   Úignore_proxyrj   r`   r*   c                 ó  — |pt          ||||¬¦  «        | _        | j        j        t          _        | j        j        t          _        | j        t          _        | j        j        pt          j        t          _        | j        j        pt          j        t          _        |rt          j
        dt          d¬¦  «         |st          j
        dt          d¬¦  «         |rt          j
        dt          d¬¦  «         |rt          j
        dt          d¬¦  «         |r$t          j
        dt          d¬¦  «         d | _        n| j                             ¦   «         | _        | j        j        r|                      ¦   «         | _        t"          | _        d S )	N)rx   rQ   rj   r`   z\setting remote_server_addr in RemoteConnection() is deprecated, set in client_config insteadr-   r.   zTsetting keep_alive in RemoteConnection() is deprecated, set in client_config insteadz]setting ignore_certificates in RemoteConnection() is deprecated, set in client_config insteadzdsetting init_args_for_pool_manager in RemoteConnection() is deprecated, set in client_config insteadzVsetting ignore_proxy in RemoteConnection() is deprecated, set in client_config instead)r
   r!   r4   r   Ú_timeoutr>   Ú	_ca_certsrO   rI   r1   r2   r3   rV   Úget_proxy_urlrQ   rw   Ú_connÚremote_commandsÚ	_commands)r(   rx   rQ   ry   rj   r`   r*   s          r)   Ú__init__zRemoteConnection.__init__5  s²  € ð ,ð 
­|Ø1Ø!Ø 3Ø'Að	0
ñ 0
ô 0
ˆÔð %)Ô$7Ô$?ÕÔ!Ø%)Ô%8Ô%AÕÔ"Ø*.Ô*=ÕÔ'Ø)-Ô)<Ô)JÐ)lÕN^ÔNlÕÔ&Ø&*Ô&9Ô&DÐ&cÕHXÔHcÕÔ#àð 	ÝŒMØnÝ"Øðñ ô ð ð ð 	ÝŒMØfÝ"Øðñ ô ð ð ð 	ÝŒMØoÝ"Øðñ ô ð ð &ð 	ÝŒMØvÝ"Øðñ ô ð ð ð 	BÝŒMØhÝ"Øðñ ô ð ð
 #ˆDŒOˆOà"Ô1×?Ò?ÑAÔAˆDŒOàÔÔ)ð 	8Ø×5Ò5Ñ7Ô7ˆDŒJÝ(ˆŒˆˆr+   c                 ó   — ||f| j         |<   dS )zRegister a new command.N)r€   )r(   ÚnameÚmethodÚurls       r)   Úadd_commandzRemoteConnection.add_commandx  s   € à &¨˜}ˆŒ�tÑÐÐr+   rƒ   c                 ó6   — | j                              |¦  «        S )z Retrieve a command if it exists.)r€   ri   )r(   rƒ   s     r)   Úget_commandzRemoteConnection.get_command|  s   € àŒ~×!Ò! $Ñ'Ô'Ð'r+   c                 óp  — | j                              |¦  «        p| j                             |¦  «        }|€J d|› �¦   «         ‚|d         }t          j        |¦  «                             |¦  «        }d„ |                     d¦  «        D ¦   «         }t          |t          ¦  «        r
|r|D ]}||= Œt          j
        |¦  «        }| j        j        › |› �}	|                      |¦  «        }
t                               d|d         |	t!          |
¦  «        ¦  «         |                      |d         |	|¬¦  «        S )	aq  Send a command to the remote server.

        Any path substitutions required for the URL mapped to the command should be
        included in the command parameters.

        Args:
            command: A string specifying the command to execute.
            params: A dictionary of named parameters to send with the command as
                its JSON payload.
        NzUnrecognised command é   c                 óL   — h | ]!}|                      d ¦  «        ¯|dd…         ’Œ"S )ú$rŠ   N©rp   )Ú.0Úwords     r)   ú	<setcomp>z+RemoteConnection.execute.<locals>.<setcomp>�  s2   € ÐaÐaÐa¨$ÈDÏOÊOÐ\_ÑL`ÔL`Ða˜T ! " "œXÐaÐaÐar+   ú/z%s %s %sr   )Úbody)r€   ri   Úextra_commandsÚstringÚTemplateÚ
substituteÚsplitÚ
isinstanceÚdictr	   Ú	dump_jsonr!   rx   Ú_trim_large_entriesÚLOGGERÚdebugÚstrÚ_request)r(   ÚcommandÚparamsÚcommand_infoÚpath_stringrA   Úsubstitute_paramsr�   Údatar…   Útrimmeds              r)   ÚexecutezRemoteConnection.execute€  s<  € ð ”~×)Ò)¨'Ñ2Ô2ÐV°dÔ6I×6MÒ6MÈgÑ6VÔ6VˆØÐ'Ð'Ð)JÀÐ)JÐ)JÑ'Ô'Ð'Ø" 1”oˆÝŒ˜{Ñ+Ô+×6Ò6°vÑ>Ô>ˆØaÐa°+×2CÒ2CÀCÑ2HÔ2HÐaÑaÔaÐÝ�f�dÑ#Ô#ð 	!Ð(9ð 	!Ø)ð !ð !�Ø˜4�L�LÝŒ˜vÑ&Ô&ˆØÔ$Ô7Ð?¸Ð?Ð?ˆØ×*Ò*¨6Ñ2Ô2ˆÝ�Š�Z ¨a¤°#µs¸7±|´|ÑDÔDÐDØ�}Š}˜\¨!œ_¨c¸ˆ}Ñ=Ô=Ð=r+   Úreturnc                 óÔ  — t          j        |¦  «        }|                      || j        j        ¦  «        }| j                             ¦   «         }|r|                     |¦  «         |r|dvrd}| j        j        r1| j                             ||||| j        j	        ¬¦  «        }|j
        }nY|                      ¦   «         }	|	5 }
|
                     ||||| j        j	        ¬¦  «        }ddd¦  «         n# 1 swxY w Y   |j
        }|j                             d¦  «        }t                               d|j
        ||j        ¦  «         	 d|cxk    rdk     r`n n]|                      d|j                             d	d¦  «        ¦  «        t                               d
¦  «         |                     ¦   «          S |dk    r3|ddœt                               d
¦  «         |                     ¦   «          S |dk    rN||s|j        n|                     ¦   «         dœt                               d
¦  «         |                     ¦   «          S g }|j                             dd¦  «        r.|j                             dd¦  «                             d¦  «        }t/          d„ |D ¦   «         ¦  «        sß	 t1          j        |                     ¦   «         ¦  «        }n~# t4          $ rq d|cxk     rdk     rn nt6          j        }nt6          j        }||                     ¦   «         dœcY t                               d
¦  «         |                     ¦   «          S w xY wd|vrd|d<   |t                               d
¦  «         |                     ¦   «          S d|dœ}|t                               d
¦  «         |                     ¦   «          S # t                               d
¦  «         |                     ¦   «          w xY w)aq  Send an HTTP request to the remote server.

        Args:
            method: A string for the HTTP method to send the request with.
            url: A string for the URL to send the request to.
            body: A string for request body. Ignored unless method is POST or PUT.

        Returns:
            A dictionary with the server's parsed JSON response.
        )r   ÚPUTN)r’   rR   r4   zUTF-8z1Remote response: status=%s | data=%s | headers=%si,  i0  r   ÚlocationzFinished Requesti‘  zAuthorization Required)ÚstatusÚvaluei�  rE   ú;c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )z	image/pngr�   )rŽ   Úxs     r)   ú
<listcomp>z-RemoteConnection._request.<locals>.<listcomp>Â  s$   € ÐHÐHÐH°a˜Ÿš [Ñ1Ô1ÐHÐHÐHr+   éÇ   r­   r   )r   r   rT   r!   rQ   Úget_auth_headerrM   r~   Úrequestr4   r¬   rw   r¥   rN   rœ   r�   rR   rŸ   ri   ÚcloseÚreasonÚstripr—   Úanyr	   Ú	load_jsonÚ
ValueErrorr   ÚSUCCESSÚUNKNOWN_ERROR)r(   r„   r…   r’   rP   rR   Úauth_headerÚresponseÚ
statuscodeÚconnÚhttpr¥   Úcontent_typer¬   s                 r)   rŸ   zRemoteConnection._request™  sU  € õ ”^ CÑ(Ô(ˆ
Ø×4Ò4°ZÀÔATÔA_Ñ`Ô`ˆØÔ)×9Ò9Ñ;Ô;ˆàð 	(Ø�NŠN˜;Ñ'Ô'Ð'àð 	�F /Ð1Ð1ØˆDàÔÔ)ð 	)Ø”z×)Ò)¨&°#¸DÈ'Ð[_Ô[nÔ[vÐ)ÑwÔwˆHØ!œˆJˆJà×/Ò/Ñ1Ô1ˆDØð v˜ØŸ<š<¨°¸$ÈÐY]ÔYlÔYt˜<ÑuÔu�ðvð vð vñ vô vð vð vð vð vð vð vøøøð vð vð vð và!œˆJØŒ}×#Ò# GÑ,Ô,ˆÝ�ŠÐHÈ(Ì/Ð[_ÐaiÔaqÑrÔrÐrð	Ø�jÐ&Ð&Ò&Ð& 3Ò&Ð&Ð&Ð&Ð&Ø—}’} U¨HÔ,<×,@Ò,@ÀÈTÑ,RÔ,RÑSÔSõ4 �LŠLÐ+Ñ,Ô,Ð,Ø�NŠNÑÔÐÐð5 ˜SÒ Ð Ø",Ð7OÐPÐPõ0 �LŠLÐ+Ñ,Ô,Ð,Ø�NŠNÑÔÐÐð1 ˜SÒ Ð Ø",ÈdÐ7d°x´°ÐX\×XbÒXbÑXdÔXdÐeÐeõ, �LŠLÐ+Ñ,Ô,Ð,Ø�NŠNÑÔÐÐð- ˆLØÔ×#Ò# N°DÑ9Ô9ð UØ'Ô/×3Ò3°NÀDÑIÔI×OÒOÐPSÑTÔT�ÝÐHÐH¸<ÐHÑHÔHÑIÔIð ðEÝ œ?¨4¯:ª:©<¬<Ñ8Ô8�D�DøÝ!ð Eð Eð EØ˜ZÐ-Ð-Ò-Ð-¨#Ò-Ð-Ð-Ð-Ð-Ý!*Ô!2˜˜å!*Ô!8˜Ø&,°t·z²z±|´|ÐDÐDÐDÐDõ �LŠLÐ+Ñ,Ô,Ð,Ø�NŠNÑÔÐÐð!Eøøøð  $Ð&Ð&Ø$(�D˜‘MØõ �LŠLÐ+Ñ,Ô,Ð,Ø�NŠNÑÔÐÐð	  ¨$Ð/Ð/ˆDØå�LŠLÐ+Ñ,Ô,Ð,Ø�NŠNÑÔÐÐøõ �LŠLÐ+Ñ,Ô,Ð,Ø�NŠNÑÔÐÐøøøs\   Ã %C1Ã1C5Ã8C5Å>N7 Æ2
N7 Ç+%N7 È?A$N7 Ê$&K Ë
N7 ËA
MÌN7 ÍMÍN7 ÎN7 Î70O'c                 ó\   — t          | d¦  «        r| j                             ¦   «          dS dS )z<Clean up resources when finished with the remote_connection.r~   N)Úhasattrr~   Úclearr'   s    r)   rµ   zRemoteConnection.close×  s8   € å�4˜Ñ!Ô!ð 	ØŒJ×ÒÑÔÐÐÐð	ð 	r+   éd   c                 ó  — i }|                      ¦   «         D ]r\  }}t          |t          ¦  «        r|                      ||¦  «        ||<   Œ4t          |t          ¦  «        r$t          |¦  «        |k    r|d|…         dz   ||<   Œm|||<   Œs|S )a   Truncate string values in a dictionary if they exceed max_length.

        Args:
            input_dict: Dictionary with potentially large values
            max_length: Maximum allowed length of string values

        Returns:
            Dictionary with truncated string values
        Nz...)Úitemsr˜   r™   r›   rž   Úlen)r(   Ú
input_dictÚ
max_lengthÚoutput_dictionaryÚkeyr­   s         r)   r›   z$RemoteConnection._trim_large_entriesÜ  s«   € ð ÐØ$×*Ò*Ñ,Ô,ð 	/ð 	/‰JˆC�Ý˜%¥Ñ&Ô&ð /Ø)-×)AÒ)AÀ%ÈÑ)TÔ)TÐ! #Ñ&Ð&Ý˜E¥3Ñ'Ô'ð /­C°©J¬J¸Ò,CÐ,CØ).¨{°
¨{Ô);¸eÑ)CÐ! #Ñ&Ð&à).Ð! #Ñ&Ð&à Ð r+   )F)NTFFNNr&   )rÆ   )/Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   rž   Ú__annotations__ÚosÚsocketÚcertifiÚgetdefaulttimeoutr{   ÚenvironÚgetenvÚwherer|   r!   r
   ÚsysÚplatformÚsystemrO   r   rI   Úpropertyr*   Úclassmethodr7   r9   r;   r?   rB   rT   rW   r^   rw   Úboolr™   r�   r“   r†   rˆ   r§   rŸ   rµ   r›   rh   r+   r)   r   r   Œ   sÛ  € € € € € € ðð ð #'€L�(˜3”-Ð&Ð&Ñ&à€I€I€IØ€M€M€Mà€N€N€Nà×'Ò'Ñ)Ô)€HØ3GÈ2Ì:Ð3UÐ3U�—	’	Ð.Ñ/Ô/Ð/Ð[b×[hÒ[hÑ[jÔ[j€IØ-1€N�H˜\Ô*Ð1Ð1Ñ1àŒ\€FØ�ÒÐØˆð €MØ<˜[Ð<Ð<°6Ð<Ð<Ð<€Jàð#ð #ñ „Xð#ð ð*ð *ñ „[ð*ð ð-ð -ñ „[ð-ð ð+ð +ñ „[ð+ð ð+ð +ñ „[ð+ð ð+ð +ñ „[ð+ð ðð ð ñ „[ðð:ð ð ð
(ð (ð (ð=ð =ð =ð: -1Ø%)Ø',Ø.3Ø59Ø04ð?)ð ?)à$ SœMð?)ð ˜T”Nð?)ð ˜t”nð	?)ð
 & dœ^ð?)ð %-¨T¤Nð?)ð   Ô-ð?)ð ?)ð ?)ð ?)ðB €Nð-ð -ð -ð( ð (ð (ð (ð (ð>ð >ð >ð2<ð <°$ð <ð <ð <ð <ð|ð ð ð
!ð !Àð !ð !ð !ð !ð !ð !r+   r   )vÚloggingr”   rÚ   r1   Úbase64r   Útypingr   Úurllibr   Úurllib.parser   r   rk   Úseleniumr   Úselenium.webdriver.remoter	   Ú'selenium.webdriver.remote.client_configr
   Ú!selenium.webdriver.remote.commandr   Ú&selenium.webdriver.remote.errorhandlerr   Ú	getLoggerrÎ   rœ   ÚNEW_SESSIONÚQUITÚW3C_GET_CURRENT_WINDOW_HANDLEÚW3C_GET_WINDOW_HANDLESr   Ú
GO_FORWARDÚGO_BACKÚREFRESHÚW3C_EXECUTE_SCRIPTÚW3C_EXECUTE_SCRIPT_ASYNCÚGET_CURRENT_URLÚ	GET_TITLEÚGET_PAGE_SOURCEÚ
SCREENSHOTÚELEMENT_SCREENSHOTÚFIND_ELEMENTÚFIND_ELEMENTSÚW3C_GET_ACTIVE_ELEMENTÚFIND_CHILD_ELEMENTÚFIND_CHILD_ELEMENTSÚCLICK_ELEMENTÚCLEAR_ELEMENTÚGET_ELEMENT_TEXTÚSEND_KEYS_TO_ELEMENTÚGET_ELEMENT_TAG_NAMEÚIS_ELEMENT_SELECTEDÚIS_ELEMENT_ENABLEDÚGET_ELEMENT_RECTÚGET_ELEMENT_ATTRIBUTEÚGET_ELEMENT_PROPERTYÚGET_ELEMENT_ARIA_ROLEÚGET_ELEMENT_ARIA_LABELÚGET_SHADOW_ROOTÚFIND_ELEMENT_FROM_SHADOW_ROOTÚFIND_ELEMENTS_FROM_SHADOW_ROOTÚGET_ALL_COOKIESÚ
ADD_COOKIEÚ
GET_COOKIEÚDELETE_ALL_COOKIESÚDELETE_COOKIEÚSWITCH_TO_FRAMEÚSWITCH_TO_PARENT_FRAMEÚSWITCH_TO_WINDOWÚ
NEW_WINDOWÚCLOSEÚ!GET_ELEMENT_VALUE_OF_CSS_PROPERTYÚEXECUTE_ASYNC_SCRIPTÚSET_TIMEOUTSÚGET_TIMEOUTSÚW3C_DISMISS_ALERTÚW3C_ACCEPT_ALERTÚW3C_SET_ALERT_VALUEÚW3C_GET_ALERT_TEXTÚW3C_ACTIONSÚW3C_CLEAR_ACTIONSÚSET_WINDOW_RECTÚGET_WINDOW_RECTÚW3C_MAXIMIZE_WINDOWÚSET_SCREEN_ORIENTATIONÚGET_SCREEN_ORIENTATIONÚGET_NETWORK_CONNECTIONÚSET_NETWORK_CONNECTIONÚGET_LOGÚGET_AVAILABLE_LOG_TYPESÚCURRENT_CONTEXT_HANDLEÚCONTEXT_HANDLESÚSWITCH_TO_CONTEXTÚFULLSCREEN_WINDOWÚMINIMIZE_WINDOWÚ
PRINT_PAGEÚADD_VIRTUAL_AUTHENTICATORÚREMOVE_VIRTUAL_AUTHENTICATORÚADD_CREDENTIALÚGET_CREDENTIALSÚREMOVE_CREDENTIALÚREMOVE_ALL_CREDENTIALSÚSET_USER_VERIFIEDÚUPLOAD_FILEÚGET_DOWNLOADABLE_FILESÚDOWNLOAD_FILEÚDELETE_DOWNLOADABLE_FILESÚGET_FEDCM_TITLEÚGET_FEDCM_DIALOG_TYPEÚGET_FEDCM_ACCOUNT_LISTÚCLICK_FEDCM_DIALOG_BUTTONÚCANCEL_FEDCM_DIALOGÚSELECT_FEDCM_ACCOUNTÚSET_FEDCM_DELAYÚRESET_FEDCM_COOLDOWNr   r   rh   r+   r)   ú<module>rC     s¤  ðð$ €€€Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à €€€à  Ð  Ð  Ð  Ð  Ð  Ø +Ð +Ð +Ð +Ð +Ð +Ø @Ð @Ð @Ð @Ð @Ð @Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø <Ð <Ð <Ð <Ð <Ð <à	ˆÔ	˜8Ñ	$Ô	$€ðdØÔÐ-ðdà„LÐ3ðdð Ô)Ð+Pðdð Ô"Ð$Qð	dð
 „KÐ4ðdð ÔÐ?ðdð „OÐ9ðdð „OÐ<ðdð ÔÐ Lðdð Ô$Ð&Sðdð ÔÐ?ðdð ÔÐ;ðdð ÔÐBðdð ÔÐAðdð ÔÐ Uðdð  ÔÐAð!dð" ÔÐCð#dð dð$ Ô"Ð$Qð%dð& ÔÐ Sð'dð( ÔÐ!Uð)dð* ÔÐLð+dð, ÔÐLð-dð. ÔÐMð/dð0 Ô Ð"Sð1dð2 Ô Ð"Qð3dð4 ÔÐ!Tð5dð6 ÔÐ Rð7dð8 ÔÐMð9dð: Ô!Ð#]ð;dð< Ô Ð"[ð=dð> Ô!Ð#Zð?dð@ Ô"Ð$\ðAdðB ÔÐNðCdðD Ô)Ð+cðEdð dð dðF Ô*Ð,eðGdðH ÔÐBðIdðJ ÔÐ>ðKdðL ÔÐCðMdðN ÔÐ HðOdðP ÔÐIðQdðR ÔÐBðSdðT Ô"Ð$PðUdðV ÔÐDðWdðX ÔÐBðYdðZ „MÐ;ð[dð\ Ô-Ð/kð]dð^ Ô Ð"Oð_dð` ÔÐBðadðb ÔÐAðcdðd ÔÐLðedðf ÔÐJðgdð dð dðh ÔÐ!Kðidðj ÔÐ Iðkdðl ÔÐ@ðmdðn ÔÐHðodðp ÔÐHðqdðr ÔÐGðsdðt ÔÐ!Pðudðv Ô"Ð$Oðwdðx Ô"Ð$Nðydðz Ô"Ð$Uð{dð| Ô"Ð$Vð}dð~ „OÐ;ðdð@ Ô#Ð%PðAdðB Ô"Ð$JðCdðD ÔÐDðEdðF ÔÐFðGdðH ÔÐPðIdð dð dðJ ÔÐLðKdðL ÔÐ=ðMdðN Ô%Ð']ðOdðP Ô(ð +ðQdðX ÔÐnðYdðZ ÔÐoð[dð\ Ôð  ð]dðd Ô"ð %ðedðl ÔÐiðmdðn ÔÐ@ðodðp Ô"Ð$Kðqdðr ÔÐCðsdðt Ô%Ð'Qðudðx ÔÐJðydðz Ô!Ð#Uð{dð| Ô"Ð$Tð}dð~ Ô%Ð'^ðdð dð@ ÔÐ!SØÔ Ð"UØÔÐRØÔ Ð"UðGdð d€ðNc!ð c!ð c!ð c!ð c!ñ c!ô c!ð c!ð c!ð c!r+   