
    hg                         d Z ddlZddlZddlmZ ddlmZ  G d dej                  Z ej        dej	                  Z
ded	efd
Zded	eeef         fdZdS )z,
Parse scheme, host and port from a string.
    N)Tuple)checkc                   >    e Zd ZU eed<   ej        eef         ed<   dS )
ServerSpecschemeaddressN)__name__
__module____qualname__str__annotations__typingr   int     j/var/www/fb-scrape/myenv/lib/python3.11/site-packages/seleniumwire/thirdparty/mitmproxy/net/server_spec.pyr   r      s2         KKK\#s(######r   r   a  
        ^
        (?:(?P<scheme>\w+)://)?  # scheme is optional
        (?P<host>[^:/]+|\[.+\])  # hostname can be DNS name, IPv4, or IPv6 address.
        (?::(?P<port>\d+))?  #  port is optional
        /?  #  we allow a trailing backslash, but no path
        $
        server_specreturnc                    t                               |           }|s"t          d                    |                     |                    d          pd}|dvr"t          d                    |                    |                    d          }|                    d          r|                    d          r
|d	d
         }t          j        |	                    d                    s"t          d                    |                    |                    d          r#t          |                    d                    }n2	 ddd|         }n%# t          $ r}t          d|           |d}~ww xY wt          j        |          s"t          d                    |                    t          |||f          S )z
    Parses a server mode specification, e.g.:

        - http://example.com/
        - example.org
        - example.com:443

    Raises:
        ValueError, if the server specification is invalid.
    z Invalid server specification: {}r   https)httpr   socks4socks5socks5hzInvalid server scheme: {}host[]   idnazInvalid hostname: {}portP   i  )r   r   z&You need to specify a port when using NzInvalid port: {})server_spec_rematch
ValueErrorformatgroup
startswithendswithr   is_valid_hostencoder   KeyErroris_valid_portr   )r   mr   r   r!   es         r   parser0      s    	[))A Q;BB;OOPPP WWX)'FEEE4;;FCCDDD776??Ds c 2 2 AbDzt{{62233 >/66t<<===wwv W1776??##	W--f5DD 	W 	W 	WNfNNOOUVV	Wt$$ :+22488999ftTl+++s   E 
E5E00E5modec                 X    |                      dd          \  } }| t          |          fS )z
    Parse a mitmproxy mode specification, which is usually just (reverse|upstream):server-spec

    Returns:
        A (mode, server_spec) tuple.

    Raises:
        ValueError, if the specification is invalid.
    :r   )maxsplit)splitr0   )r1   r   s     r   parse_with_moder6   E   s1     

3
33D+{####r   )__doc__rer   r   %seleniumwire.thirdparty.mitmproxy.netr   
NamedTupler   compileVERBOSEr#   r   r0   r6   r   r   r   <module>r=      s     
			        7 7 7 7 7 7$ $ $ $ $" $ $ $
  J
 
%,s %,z %, %, %, %,P$# $%Z"8 $ $ $ $ $ $r   