ó
    Ð]j
  ã                  óÊ   • S SK Jr  S SKJr  S SKJr  S SKrS SKJrJ	r	J
r
Jr  S SKrSSKJr  SrSS	 jrSS
 jr\R$                  " S5      r\R$                  " S5      rSSS jjrg)é    )Úannotations)ÚCallable)ÚsuppressN)ÚquoteÚunquoteÚurlparseÚ
urlunparseé   )Ú	_punycode)zhttp:zhttps:zmailto:c                ó˜  • [         R                  " U SS9nUR                  (       aj  UR                  (       a  UR                  [        ;   aE  [        [        5         UR                  [        R                  " UR                  5      S9nSSS5        [         R                  " [         R                  " U5      5      $ ! , (       d  f       N8= f)zfNormalize destination URLs in links

::

    [label]:   destination   'title'
            ^^^^^^^^^^^
T©Úslashes_denote_host©ÚhostnameN)ÚmdurlÚparser   ÚprotocolÚRECODE_HOSTNAME_FORr   Ú	ExceptionÚ_replacer   Úto_asciiÚencodeÚformat©ÚurlÚparseds     Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/markdown_it/common/normalize_url.pyÚnormalizeLinkr      s   € ô �[Š[˜°$Ñ7€Fð ‡‡Ø�O�O˜vŸ™Ô2EÓEä”iÕ Ø—_‘_¬i×.@Ò.@ÀÇÁÓ.Q�_ÐRˆF÷ !ô �<Š<œŸš VÓ,Ó-Ð-÷ !Õ ús   Á.B;Â;
C	c                ó¼  • [         R                  " U SS9nUR                  (       aj  UR                  (       a  UR                  [        ;   aE  [        [        5         UR                  [        R                  " UR                  5      S9nSSS5        [         R                  " [         R                  " U5      [         R                  S-   5      $ ! , (       d  f       NJ= f)zCNormalize autolink content

::

    <destination>
     ~~~~~~~~~~~
Tr   r   NÚ%)r   r   r   r   r   r   r   r   r   Ú
to_unicodeÚdecoder   ÚDECODE_DEFAULT_CHARSr   s     r   ÚnormalizeLinkTextr$   (   sŒ   € ô �[Š[˜°$Ñ7€Fð ‡‡Ø�O�O˜vŸ™Ô2EÓEä”iÕ Ø—_‘_¬i×.BÒ.BÀ6Ç?Á?Ó.S�_ÐTˆF÷ !ô �<Š<œŸš VÓ,¬e×.HÑ.HÈ3Ñ.NÓOÐO÷	 !Õ ús   Á.CÃ
Cz!^(vbscript|javascript|file|data):z!^data:image\/(gif|png|jpeg|webp);c                óÈ   • Ub  U" U 5      $ U R                  5       R                  5       n [        R                  U 5      (       a  [	        [
        R                  U 5      5      $ S$ )züValidate URL link is allowed in output.

This validator can prohibit more than really needed to prevent XSS.
It's a tradeoff to keep code simple and to be secure by default.

Note: url should be normalized at this point, and existing entities decoded.
T)ÚstripÚlowerÚBAD_PROTO_REÚsearchÚboolÚGOOD_DATA_RE)r   Ú	validators     r   ÚvalidateLinkr-   F   sS   € ð ÑÙ˜‹~ÐØ
�)‰)‹+×
Ñ
Ó
€CÜ-9×-@Ñ-@À×-EÑ-EŒ4”×#Ñ# CÓ(Ó)ÐOÈ4ÐOó    )r   ÚstrÚreturnr/   )N)r   r/   r,   zCallable[[str], bool] | Noner0   r*   )Ú
__future__r   Úcollections.abcr   Ú
contextlibr   ÚreÚurllib.parser   r   r   r	   r   Ú r   r   r   r$   Úcompiler(   r+   r-   © r.   r   Ú<module>r9      sT   ðÝ "å $Ý Û 	ß =Ó =ã å à4Ð ô.ô2Pð4 �zŠzÐ>Ó?€Ø�zŠzÐ>Ó?€÷Pr.   