§
    :›ji  ã                  óÌ   — d dl 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Zd dlZn# e$ r	 d	Zd dlZY nw xY w ej        d
¦  «        Zdd„Zdd„Zdd„Zd d„Zd!d„Zd"d„ZdS )#é    )ÚannotationsN)Úunescape)ÚAny)Úunquoteé   )ÚDuckDuckGoSearchExceptionTFz<.*?>Úobjr   ÚreturnÚstrc                ó  — 	 t           r2t          j        | t          j        ¬¦  «                             ¦   «         nt          j        | dd¬¦  «        S # t          $ r,}t          t          |¦  «        j	        › d|› �¦  «        |‚d }~ww xY w)N)ÚoptionFé   )Úensure_asciiÚindentú: )
Ú
HAS_ORJSONÚorjsonÚdumpsÚOPT_INDENT_2ÚdecodeÚjsonÚ	Exceptionr   ÚtypeÚ__name__©r	   Úexs     úT/home/lighthouse/health/venv/lib/python3.11/site-packages/duckduckgo_search/utils.pyÚ
json_dumpsr      sš   € ðNõ ð?�FŒL˜¥VÔ%8Ð9Ñ9Ô9×@Ò@ÑBÔBÐBå”˜C¨e¸AÐ>Ñ>Ô>ð	
øõ
 ð Nð Nð NÝ'­4°©8¬8Ô+<Ð(DÐ(DÀÐ(DÐ(DÑEÔEÈ2ÐMøøøøðNøøøs   ‚AA Á
BÁ'BÂBústr | bytesc                óÔ   — 	 t           rt          j        | ¦  «        nt          j        | ¦  «        S # t          $ r,}t          t          |¦  «        j        › d|› �¦  «        |‚d }~ww xY w)Nr   )r   r   Úloadsr   r   r   r   r   r   s     r   Ú
json_loadsr"      st   € ðNÝ$.ÐC�vŒ|˜CÑ Ô Ð µD´J¸s±O´OÐCøÝð Nð Nð NÝ'­4°©8¬8Ô+<Ð(DÐ(DÀÐ(DÐ(DÑEÔEÈ2ÐMøøøøðNøøøs   ‚.1 ±
A'»'A"Á"A'Ú
html_bytesÚbytesÚkeywordsc                óò   — dD ]b\  }}}	 |                       |¦  «        |z   }|                       ||¦  «        }| ||…                              ¦   «         c S # t          $ r Y Œ_w xY wt          d|›d�¦  «        ‚)zExtract vqd from html bytes.))s   vqd="é   ó   ")s   vqd=é   ó   &)s   vqd='r'   ó   'z_extract_vqd() keywords=z Could not extract vqd.)Úindexr   Ú
ValueErrorr   )r#   r%   Úc1Úc1_lenÚc2ÚstartÚends          r   Ú_extract_vqdr3   &   s¦   € ðð 
ð 
‰ˆˆF�Bð
	Ø×$Ò$ RÑ(Ô(¨6Ñ1ˆEØ×"Ò" 2 uÑ-Ô-ˆCØ˜e C˜iÔ(×/Ò/Ñ1Ô1Ð1Ð1Ð1øÝð 	ð 	ð 	ØˆDð	øøøå
#Ð$X°hÐ$XÐ$XÐ$XÑ
YÔ
YÐYs   ŠA	AÁ
A#Á"A#Úraw_htmlc                óZ   — | r(t          t                               d| ¦  «        ¦  «        ndS )z)Strip HTML tags from the raw_html string.Ú )r   ÚREGEX_STRIP_TAGSÚsub)r4   s    r   Ú
_normalizer9   6   s+   € à;CÐK�8Õ$×(Ò(¨¨XÑ6Ô6Ñ7Ô7Ð7ÈÐKó    Úurlc                óP   — | r#t          | ¦  «                             dd¦  «        ndS )z(Unquote URL and replace spaces with '+'.ú ú+r6   )r   Úreplace)r;   s    r   Ú_normalize_urlr@   ;   s(   € à-0Ð8�7�3‰<Œ<×Ò  SÑ)Ô)Ð)°bÐ8r:   Úproxyú
str | Nonec                ó   — | dk    rdn| S )z.Expand "tb" to a full proxy URL if applicable.Útbzsocks5://127.0.0.1:9150© )rA   s    r   Ú_expand_proxy_tb_aliasrF   @   s   € à(-°ª¨Ð$Ð$¸5Ð@r:   )r	   r   r
   r   )r	   r   r
   r   )r#   r$   r%   r   r
   r   )r4   r   r
   r   )r;   r   r
   r   )rA   rB   r
   rB   )Ú
__future__r   ÚreÚhtmlr   Útypingr   Úurllib.parser   Ú
exceptionsr   r   r   ÚImportErrorr   Úcompiler7   r   r"   r3   r9   r@   rF   rE   r:   r   ú<module>rO      sV  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à 1Ð 1Ð 1Ð 1Ð 1Ð 1ðØ€JØ€M€M€M€MøØð ð ð Ø€JØ€K€K€K€K€Kðøøøð �2”:˜gÑ&Ô&Ð ðNð Nð Nð NðNð Nð Nð NðZð Zð Zð Zð Lð Lð Lð Lð
9ð 9ð 9ð 9ð
Að Að Að Að Að As   ¤+ «9¸9