
    i
              
          d dl Z d dlZd dlmZmZ d dlmZmZ ddlm	Z	 dZ
dZ ej                  e
      Z ej                  eej                        Z ej                  e
j!                  d	            Z ej                  ej!                  d	      ej                        Zd
 Z e j(                  eee      Z e j(                  eee      Zd Zdedee	eeee   ee   f   fdZy)    N)OptionalTuple)urlparseunquote   )	ProxyTypez[^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$a  ^(?:(?:(?:[A-F0-9]{1,4}:){6}|(?=(?:[A-F0-9]{0,4}:){0,6}(?:[0-9]{1,3}\.){3}[0-9]{1,3}$)(([0-9A-F]{1,4}:){0,5}|:)((:[0-9A-F]{1,4}){1,5}:|:)|::(?:[A-F0-9]{1,4}:){5})(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])|(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}|(?=(?:[A-F0-9]{0,4}:){0,7}[A-F0-9]{0,4}$)(([0-9A-F]{1,4}:){1,7}|:)((:[0-9A-F]{1,4}){1,7}|:)|(?:[A-F0-9]{1,4}:){7}:|:(:[A-F0-9]{1,4}){7})$)flagsasciic                    t        |t              rt        | j                  |            S t        |t        t
        t        f      rt        |j                  |            S t        dj                  |t        |                  )Nz{} [{}] is not a str or bytes)

isinstancestrboolmatchbytes	bytearray
memoryview	TypeErrorformattype)regexregexbhosts      H/root/searxng-venv/lib/python3.12/site-packages/python_socks/_helpers.py_is_ip_addressr       sh     $EKK%&&	D5)Z8	9FLL&''+224dD
 	
    c                 2    t        |       xs t        |       S )N)is_ipv4_addressis_ipv6_address)r   s    r   is_ip_addressr   1   s    4 9OD$99r   urlreturnc                    t        |       }|j                  }|dk(  rt        j                  }n:|dk(  rt        j                  }n$|dk(  rt        j
                  }nt        d|       |j                  }|st        d      	 |j                  }|J 	 	 t        |j                        t        |j                        }}|||||fS # t        t        t        f$ r}t        d      |d }~ww xY w# t        t        f$ r d\  }}Y Ew xY w)Nsocks5socks4httpzInvalid scheme component: zEmpty host componentzInvalid port component) r&   )r   schemer   SOCKS5SOCKS4HTTP
ValueErrorhostnameportr   AssertionErrorr   usernamepasswordAttributeError)	r    parsedr'   
proxy_typer   r-   er/   r0   s	            r   parse_proxy_urlr5   5   s	   c]F]]F%%
	8	%%
	6	^^
5fX>????D/00:{{$%foo68P( tT8X55 	>2 :129:
 I& $#($s*   C *C- C*C%%C*-DD)	functoolsretypingr   r   urllib.parser   r   _typesr   _ipv4_pattern_ipv6_patterncompile_ipv4_regex
IGNORECASE_ipv6_regexencode_ipv4_regexb_ipv6_regexbr   partialr   r   r   r   intr5    r   r   <module>rG      s     	 " * 1    bjj'bjjbmm<rzz-..w78rzz-..w7r}}M

 $)##NKN#)##NKN:6 6y#sHSM8TW='X!Y 6r   