Ë
    hKêjXe  ã                   óî  — 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 d dlm	Z	 	  e	«       Z
d„ ZeZdAd„Ze
fd	„Zd
„ Zd„ Ze
j#                  dddd«      d„ «       Zd„ Zd„ Zd„ Ze
j#                  ddd«      d„ «       Ze
j#                  d«      d„ «       Ze
j#                  dd«      d„ «       ZdZ ej4                  dej6                  «      Ze
j#                  dd «      d!„ «       Ze
j#                  d"«      d#„ «       Zd$Z ed%e«       d&Z  ed%e «       d'Z! ed(e!«       d)Z" ed(e"«       e
j#                  d*«      d+„ «       Z#d,Z$ ed-e$«       d.Z% ed/e%«       e
j#                  d0«      d1„ «       Z&d2Z' ed/e'«       e
j#                  d3«      d4„ «       Z(d5Z)e
j#                  d6«      d7„ «       Z*e
j#                  d8«      d9„ «       Z+d:Z, ed;e,«       d<Z- ed=e-«       d>Z. ed=e.«       e
j#                  d?«      d@„ «       Z/y)Bé    N)Úunquote_plus)Úurlparse)Ú
PackageURL)ÚNoRouteAvailable)ÚRouterc                 óh   — | r	 t         j                  | «      S y# t        $ r t        | «      cY S w xY w)zE
    Return a PackageURL inferred from the `url` string or None.
    N)Úpurl_routerÚprocessr   Úbuild_generic_purl)Úurls    ú`/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/packageurl/contrib/url2purl.pyÚurl2purlr   0   s@   € ñ ð	+Ü×&Ñ& sÓ+Ð+ð øô  ò 	+ô & cÓ*Ò*ð	+ús   „ š1°1c                 óè  — t        |«      }t        j                  |t        j                  «      }|j	                  |«      }|sy |j                  «       j                  «       D ��ci c]  \  }}|t        j                  v sŒ||“Œ }}}|xs i }|j                  «       j                  d«      }	|	r|j                  d|	i«       |rd|v r|d   j                  |«       n||d<   t        | fi |¤ŽS c c}}w )NÚversion_prefixÚ
qualifiers)r   ÚreÚcompileÚVERBOSEÚmatchÚ	groupdictÚitemsr   Ú_fieldsÚgetÚupdate)
Útype_Úpatternr   r   Úcompiled_patternr   ÚfieldÚvalueÚ	purl_datar   s
             r   Úpurl_from_patternr!   @   sð   € Ü
�sÓ
€CÜ—z‘z '¬2¯:©:Ó6ÐØ×"Ñ" 3Ó'€EáØð */¯©Ó):×)@Ñ)@Ó)B÷Ù%˜ ÀeÌz×OaÑOaÒFaˆˆu‰ð€Iñ ð Ò!˜r€Jà—_‘_Ó&×*Ñ*Ð+;Ó<€NÙØ×ÑÐ+¨^Ð<Ô=áØ˜9Ñ$Ø�lÑ#×*Ñ*¨:Õ6à&0ˆI�lÑ#ä�eÑ)˜yÑ)Ð)ùó!s   Á%C.Â C.c                 ó8   ‡ ‡— ˆˆ fd„}|j                  ‰|«       y)z+
    Register a pattern with its type.
    c                 ó   •— t        ‰‰| «      S ©N©r!   )r   r   r   s    €€r   Úendpointz"register_pattern.<locals>.endpoint`   s   ø€ Ü  ¨°Ó5Ð5ó    N)Úappend)r   r   Úrouterr&   s   ``  r   Úregister_patternr*   [   s   ù€ õ
6ð ‡M�M�'˜8Õ$r'   c                 óŽ   — t        t        | «      j                  «      }|j                  d«      D �cg c]  }|sŒ|‘Œ	 }}|S c c}w )z=
    Return a list of path segments from a `url` string.
    ú/)r   r   ÚpathÚsplit)r   r-   ÚsegÚsegmentss       r   Úget_path_segmentsr1   f   s?   € ô œ ›×*Ñ*Ó+€DØ#Ÿz™z¨#›Ö6˜²#’Ð6€HÐ6Ø€Oùò 7s
   ²AºAc                 ó¬   — t        | «      }|j                  r=|j                  r0|j                  r#t	        | «      }|r|d   }t        d|d| i¬«      S yyyy)z¡
    Return a PackageURL from `uri`, if `uri` is a parsable URL, or None

    `uri` is assumed to be a download URL, e.g. https://example.com/example.tar.gz
    éÿÿÿÿÚgenericÚdownload_url©ÚtypeÚnamer   N)r   ÚschemeÚnetlocr-   r1   r   )ÚuriÚ
parsed_uriÚuri_path_segmentsÚ	file_names       r   r   r   o   sb   € ô ˜#“€JØ×Ò˜Z×.Ò.°:·?²?ä-¨cÓ2ÐÙØ)¨"Ñ-ˆIÜ 9°9È.ÐZ]ÐI^Ô_Ð_ð ð 4CÐ.Ðr'   zhttps?://registry.npmjs.*/.*z https?://registry.yarnpkg.com/.*z"https?://(www\.)?npmjs.*/package.*z&https?://(www\.)?yarnpkg.com/package.*c                 óT   — d| v rt        | «      S d| v rt        | «      S t        | «      S )Nú	/package/z/-/)Úbuild_npm_web_purlÚbuild_npm_download_purlÚbuild_npm_api_purl)r;   s    r   Úbuild_npm_purlrD   ~   s4   € ð �cÑÜ! #Ó&Ð&Ø	�#‰Ü& sÓ+Ð+ä! #Ó&Ð&r'   c                 ól  — t        t        | «      j                  «      }|j                  d«      D �cg c]  }|sŒ|‘Œ	 }}t	        |«      dk  ry t	        |«      dk(  rt        d|d   |d   |d   ¬«      S |d   j                  d«      rt        d|d   |d   ¬	«      S t        d|d   |d   ¬
«      S c c}w )Nr,   é   é   Únpmr   é   )Ú	namespacer8   Úversionú@)rJ   r8   ©r8   rK   )r   r   r-   r.   Úlenr   Ú
startswith)r;   r-   r/   r0   s       r   rC   rC   Ž   s¹   € Üœ ›×*Ñ*Ó+€DØ#Ÿz™z¨#›Ö6˜²#’Ð6€HÐ6ä
ˆ8ƒ}�qÒØô ˆ8ƒ}˜ÒÜ˜%¨8°A©;¸XÀa¹[ÐRZÐ[\ÑR]Ô^Ð^ð ��{×Ñ˜cÔ"Ü˜%¨8°A©;¸XÀa¹[ÔIÐIô �e (¨1¡+°xÀ±{ÔCÐCùò 7s
   ²B1ºB1c                 ó�  — t        t        | «      j                  «      }|j                  d«      D �cg c]  }|sŒ|dk7  sŒ|‘Œ }}t	        |«      }|dk(  r|\  }}}n|dk(  rd }|\  }}ny t
        j                  j                  |«      \  }}	|j                  |d«      }
|
j                  d«      r|
dd  }
t        d|||
«      S c c}w )Nr,   ú-rG   rF   Ú rI   rH   )
r   r   r-   r.   rN   ÚosÚsplitextÚreplacerO   r   )r;   r-   r/   r0   Úlen_segmentsrJ   r8   ÚfilenameÚbase_filenameÚextrK   s              r   rB   rB   ¡   sÐ   € Üœ ›×*Ñ*Ó+€DØ#Ÿz™z¨#›ÖE˜²#¸#À»*’ÐE€HÐEÜ�x“=€Lð �qÒØ$,Ñ!ˆ	�4™ð 
˜Ò	Øˆ	Ø!‰ˆ‰hð 	äŸ™×)Ñ)¨(Ó3Ñ€M�3Ø×#Ñ# D¨"Ó-€GØ×Ñ˜#ÔØ˜!˜"�+ˆä�e˜Y¨¨gÓ6Ð6ùò) Fs   ²CºCÁ Cc                 ó¨  — t        t        | «      j                  «      }|j                  d«      r|dd  }|j	                  d«      D �cg c]  }|sŒ|‘Œ	 }}t        |«      }d x}}|dk(  r|d   }|d   }|d   }nG|dk(  rd }|d   }|d   }n5|dk(  r|d   }|d   }n%|dk(  rt        |«      dkD  r|d   d   d	k7  r|d   }ny t        d
|||«      S c c}w )Nr@   é	   r,   é   r   rI   rG   rF   rL   rH   )r   r   r-   rO   r.   rN   r   )r;   r-   r/   r0   rV   rJ   rK   r8   s           r   rA   rA   º   s  € Üœ ›×*Ñ*Ó+€DØ‡��{Ô#Ø�A�Bˆxˆà#Ÿz™z¨#›Ö6˜²#’Ð6€HÐ6Ü�x“=€LØÐ€I�ð �qÒØ˜Q‘Kˆ	Ø˜‰{ˆØ˜1‘+‰ð 
˜Ò	Øˆ	Ø˜‰{ˆØ˜1‘+‰ð 
˜Ò	Ø˜Q‘Kˆ	Ø˜‰{‰ð 
˜Ò	œs 8›}¨qÒ0°X¸a±[À±^ÀsÒ5JØ˜‰{‰ð 	ä�e˜Y¨¨gÓ6Ð6ùò9 7s   ÁCÁCz"https?://repo1.maven.org/maven2/.*z$https?://central.maven.org/maven2/.*z maven-index://repo1.maven.org/.*c                 óü  — t        t        | «      j                  «      }|j                  d«      D �cg c]  }|sŒ|dk7  sŒ|‘Œ }}t	        |«      dk  ry |dd  \  }}||v }d }|r|j                  «       }|d   }|d   }	dj                  |d d «      }
i }|rS|	› d|› �}|j                  |«      \  }}}|j                  d«      \  }}}|sy |j                  d«      |d<   d	}||v r||d
<   t        d|
|	||«      S c c}w )Nr,   Úmaven2rG   éþÿÿÿr3   ú.rQ   Ú
classifier)
ÚaarÚearÚmarÚpomÚrarÚrpmÚsarztar.gzÚwarÚzipr7   Úmaven)r   r   r-   r.   rN   ÚpopÚjoinÚ
rpartitionÚ	partitionÚstripr   )r;   r-   r/   r0   Úbefore_last_segmentÚlast_segmentÚhas_filenamerW   rK   r8   rJ   r   Úname_versionÚ_Úclassifier_extra   Ú	extensionÚvalid_typess                     r   Úbuild_maven_purlry   Þ   s/  € ô œ ›×*Ñ*Ó+€DØ#Ÿz™z¨#›ÖJ˜²#¸#À»/’ÐJ€HÐJä
ˆ8ƒ}�qÒØà(0°°¨Ñ%Ð˜Ø&¨,Ð6€Là€HÙØ—<‘<“>ˆà�r‰l€GØ�B‰<€DØ—‘˜ # 2˜Ó'€IØ€JáØ˜˜q  	Ð*ˆØ'×2Ñ2°<Ó@Ñˆˆ1ˆnØ#1×#;Ñ#;¸CÓ#@Ñ ˆ
�A�yÙØà#-×#3Ñ#3°CÓ#8ˆ
�<Ñ à_ˆØ˜Ñ#Ø!*ˆJ�vÑä�g˜y¨$°¸ÓDÐDùò= Ks   ²C9ºC9Á C9z)https?://rubygems.org/(downloads|gems)/.*c                 ó    — d}t        d|| «      S )NzL^https?://rubygems.org/(downloads|gems)/(?P<name>.+)-(?P<version>.+)(\.gem)$Úgemr%   )r;   Úrubygems_patterns     r   Úbuild_rubygems_purlr}     s   € ð 	Xð ô ˜UÐ$4°cÓ:Ð:r'   zhttps?://cran.r-project.org/.*z+https?://packagemanager.rstudio.com/cran/.*c                 ó8   — d}i }d| vr| |d<   t        d|| |«      S )Nzw^https?://(cran\.r-project\.org|packagemanager\.rstudio\.com/cran)/.*?src/contrib/(?P<name>.+)_(?P<version>.+)\.tar.gz$z//cran.r-project.org/r5   Úcranr%   )r;   Úcran_patternr   s      r   Úbuild_cran_purlr�     s2   € ð
 N€LØ€JØ cÑ)Ø%(ˆ
�>Ñ"Ü˜V \°3¸
ÓCÐCr'   zP(?P<name>(\w\.?)+(-\w+)*)-(?P<version>.+)\.(zip|tar.gz|tar.bz2|tgz|egg|rpm|exe)$zu^(?P<namever>(?P<name>.+?)-(?P<version>.*?))((-(?P<build>\d[^-]*?))?-(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?)\.whl)$z'https?://pypi.org/(packages|project)/.+z,https?://.+python.+org/(packages|project)/.*c                 ó–  — t        t        | «      j                  «      }|j                  d«      }|d   }|j	                  d«      rCt
        j                  |«      }|r,t        d|j                  d«      |j                  d«      ¬«      S |d   d	k(  r)t        d|d
   t        |«      dkD  r
|d   ¬«      S d ¬«      S t        dt        |«      S )Nr,   r3   z.whlÚpypir8   rK   rM   rI   ÚprojectrF   rG   )r   r   r-   r.   ÚendswithÚwheel_file_rer   r   ÚgrouprN   r!   Úpypi_pattern)r;   r-   r0   rr   r   s        r   Úbuild_pypi_purlr‰   9  sÐ   € ô
 œ ›×*Ñ*Ó+€DØ�z‰z˜#‹€HØ˜B‘<€Lð ×Ñ˜VÔ$Ü×#Ñ# LÓ1ˆÙÜØØ—[‘[ Ó(ØŸ™ IÓ.ôð ð ��{�iÒÜØØ˜!‘Ü#& x£=°1Ò#4�H˜Q‘Kô
ð 	
ð ;?ô
ð 	
ô ˜V¤\°<Ó@Ð@r'   z"https?://packagist.org/packages/.*c                 ó    — d}t        d|| «      S )Nz]^https?://packagist\.org/packages/(?P<namespace>[^/]+)/(?P<name>[^\#]+?)(\#(?P<version>.+))?$Úcomposerr%   )r;   Úcomposer_patterns     r   Úbuild_composer_purlr�   W  s   € ð xÐÜ˜ZÐ)9¸3Ó?Ð?r'   zG^https?://.*nuget.org/(api/v2/)?packages?/(?P<name>.+)/(?P<version>.+)$ÚnugetzP^https?://api.nuget.org/v3-flatcontainer/(?P<name>.+)/(?P<version>.+)/.*(nupkg)$zŠ^https?://.*sourceforge.net/projects/(?P<name>.+)/files/(?i:(?P=name)/)?v?(?P<version>[0-9\.]+)/(?i:(?P=name)).*(?P=version).*(/download)$Úsourceforgezj^https?://.*sourceforge.net/projects/(?P<name>.+)/files/(?i:(?P=name))_*(?P<version>[0-9_]+).*(/download)$z%https?://.*sourceforge.net/project/.*c                 óÀ   — d}t        d|| «      }|sL| j                  d«      }t        |«      dk\  r-|d   }|j                  d«      }|r|d   }t        d|d| i¬	«      }|S )
Nz‹^https?://.*sourceforge.net/projects?/(?P<namespace>([^/]+))/(OldFiles/)?(?P<name>.+)/(?P<version>[v0-9\.]+)/(?P=name).*(?P=version).*[^/]$r�   z	/project/rF   rI   r,   r   r5   r6   )r!   r.   rN   r   )r;   Úsourceforge_patternÚsourceforge_purlÚ	split_uriÚremaining_uri_pathÚremaining_uri_path_segmentsÚproject_names          r   Úbuild_sourceforge_purlr—   ”  s‡   € ð	ð ô )¨Ð8KÈSÓQÐáð —I‘I˜kÓ*ˆ	ô ˆy‹>˜QÒà!*¨1¡Ðà*<×*BÑ*BÀ3Ó*GÐ'Ù*Ø:¸1Ñ=�Ü#-Ø&¨\À~ÐWZÐF[ô$Ð ð Ðr'   zK^https?://crates.io/api/v1/crates/(?P<name>.+)/(?P<version>.+)(\/download)$Úcargozkhttps?://raw.githubusercontent.com/(?P<namespace>[^/]+)/(?P<name>[^/]+)/(?P<version>[^/]+)/(?P<subpath>.*)$Úgithubz!https?://api.github\.com/repos/.*c                 óØ   — t        | «      }t        |«      dk\  sy|d   }|d   }d}t        |«      dk(  r|d   dk7  r|d   }t        |«      dk(  r|d   dk(  r|d   }t        d|||¬	«      S )
a  
    Return a PackageURL object from GitHub API `url`.
    For example:
    https://api.github.com/repos/nexB/scancode-toolkit/commits/40593af0df6c8378d2b180324b97cb439fa11d66
    https://api.github.com/repos/nexB/scancode-toolkit/
    and returns a `PackageURL` object
    rG   NrI   rF   r\   Úcommitsé   r™   )r7   rJ   r8   rK   )r1   rN   r   )r   r0   rJ   r8   rK   s        r   Úbuild_github_api_purlr�   Ë  s‰   € ô ! Ó%€Hä�‹M˜QÒØØ˜‘€IØ�A‰;€DØ€Gô ˆ8ƒ}˜Ò˜h q™k¨YÒ6Ø˜1‘+ˆô ˆ8ƒ}˜Ò˜h q™k¨YÒ6Ø˜1‘+ˆä˜8¨y¸tÈWÔUÐUr'   zkhttps?://codeload.github.com/(?P<namespace>.+)/(?P<name>.+)/(zip|tar.gz|tar.bz2|tgz)/(.*/)*(?P<version>.+)$zhttps?://github\.com/.*c                 óÚ  — d}d}d}d}d}d}d}d}||||||||f}	|	D ]7  }
t        j                  |
| «      }i }|sŒ|
|k(  r| |d	<   t        d
|
| |¬«      c S  t        | «      }t	        |«      dk\  sy|d   }|d   }d}d}t	        |«      dk\  r!|d   dk7  r|d   }dj                  |dd «      }t	        |«      dk\  r!|d   dk(  r|d   }dj                  |dd «      }t        d
||||¬«      S )z7
    Return a PackageURL object from GitHub `url`.
    znhttps?://github.com/(?P<namespace>.+)/(?P<name>.+)/archive/refs/tags/(?P<version>.+).(zip|tar.gz|tar.bz2|.tgz)z}https?://github.com/(?P<namespace>.+)/(?P<name>.+)/archive/(.*/)*((?P=name)(-|_|@))?(?P<version>.+).(zip|tar.gz|tar.bz2|.tgz)zxhttps?://github.com/downloads/(?P<namespace>.+)/(?P<name>.+)/((?P=name)(-|@)?)?(?P<version>.+).(zip|tar.gz|tar.bz2|.tgz)zZhttps?://github.com/(?P<namespace>.+)/(?P<name>.+)/raw/(?P<version>[^/]+)/(?P<subpath>.*)$z[https?://github.com/(?P<namespace>.+)/(?P<name>.+)/blob/(?P<version>[^/]+)/(?P<subpath>.*)$z[https?://github.com/(?P<namespace>.+)/(?P<name>.+)/releases/download/(?P<version>[^/]+)/.*$z8https?://github.com/(?P<namespace>.+)/(?P<name>.+).(git)zahttps?://github.com/(?P<namespace>[^/]+)/(?P<name>[^/]+)/commit/(?P<version>[0-9a-fA-F]{7,40})/?$r5   r™   )r   r   r   r   rF   Nr   rI   rG   Útreer,   r\   ©r7   rJ   r8   rK   Úsubpath)r   Úsearchr!   r1   rN   rm   r   )r   Úarchive_tags_patternÚarchive_patternÚdownload_patternÚraw_patternÚblob_patternÚreleases_download_patternÚgit_patternÚcommit_patternÚpatternsr   Úmatchesr   r0   rJ   r8   rK   r¡   s                     r   Úbuild_github_purlr­   ò  sƒ  € ð	5ð ð	5ð ð	5ð ð	4ð ð	5ð ð	5ð ð N€Kð	Yð ð 	ØØØØØ!ØØð	€Hð ò ˆÜ—)‘)˜G SÓ)ˆØˆ
ÚØÐ3Ò3Ø-0�
˜>Ñ*Ü$Ø¨°SÀZôò ðô ! Ó%€HÜˆx‹=˜AÒØà˜‘€IØ�A‰;€DØ€GØ€Gô ˆ8ƒ}˜Ò˜h q™k¨VÒ3Ø˜1‘+ˆØ—(‘(˜8 A B˜<Ó(ˆô ˆ8ƒ}˜Ò˜h q™k¨VÒ3Ø˜1‘+ˆØ—(‘(˜8 A B˜<Ó(ˆäØØØØØôð r'   zehttps?://bitbucket.org/(?P<namespace>[^/]+)/(?P<name>[^/]+)/commits/(?P<version>[0-9a-fA-F]{7,64})/?$zhttps?://bitbucket\.org/.*c                 óB  — t        j                  t        | «      }|r>t        d|j	                  d«      |j	                  d«      |j	                  d«      i d¬«      S t        | «      }t        |«      dk\  sy|d	   }|d
   }d}t        j                  || «      }i }|r| |d<   t        d|||¬«      S d}d}	t        |«      dk\  r!|d   dk7  r|d   }dj                  |dd «      }	t        |«      dk\  r!|d   dk(  r|d   }dj                  |dd «      }	t        d||||	¬«      S )aW  
    Return a PackageURL object from BitBucket `url`.
    For example:
    https://bitbucket.org/TG1999/first_repo/src/master or
    https://bitbucket.org/TG1999/first_repo/src or
    https://bitbucket.org/TG1999/first_repo/src/master/new_folder
    https://bitbucket.org/TG1999/first_repo/commits/16a60c4a74ef477cd8c16ca82442eaab2fbe8c86
    Ú	bitbucketrJ   r8   rK   rR   ©r7   rJ   r8   rK   r   r¡   rF   Nr   rI   zqhttps?://bitbucket.org/(?P<namespace>.+)/(?P<name>.+)/downloads/(?P<version>.+).(zip|tar.gz|tar.bz2|.tgz|exe|msi)r5   ©r7   rJ   r8   r   rG   Úsrcr,   r\   r    )r   r¢   Úbitbucket_commit_patternr   r‡   r1   rN   rm   )
r   Úcommit_matcher0   rJ   r8   Úbitbucket_download_patternr¬   r   rK   r¡   s
             r   Úbuild_bitbucket_purlr¶   `  sX  € ô —I‘IÔ6¸Ó<€MÙÜØØ#×)Ñ)¨+Ó6Ø×$Ñ$ VÓ,Ø!×'Ñ'¨	Ó2ØØô
ð 	
ô ! Ó%€Häˆx‹=˜AÒØØ˜‘€IØ�A‰;€Dð	=ð ô
 �i‰iÐ2°CÓ8€Gà€JÙØ%(ˆ
�>Ñ"Ü˜{°iÀdÐWaÔbÐbà€GØ€Gô ˆ8ƒ}˜Ò˜h q™k¨UÒ2Ø˜1‘+ˆØ—(‘(˜8 A B˜<Ó(ˆô ˆ8ƒ}˜Ò˜h q™k¨UÒ2Ø˜1‘+ˆØ—(‘(˜8 A B˜<Ó(ˆäØØØØØôð r'   z&https?://gitlab\.com/(?!.*/archive/).*c                 óþ  — d}t        j                  || «      }|r>t        d|j                  d«      |j                  d«      |j                  d«      i d¬«      S t	        | «      }t        |«      dk\  sy	|d
   }|d   }d	}d	}t        |«      dk\  r)|d   dk7  r!|d   dk7  r|d   }dj                  |dd	 «      }t        |«      dk\  r)|d   dk(  r!|d   dk(  r|d   }dj                  |dd	 «      }t        d||||¬«      S )aq  
    Return a PackageURL object from Gitlab `url`.
    For example:
    https://gitlab.com/TG1999/firebase/-/tree/1a122122/views
    https://gitlab.com/TG1999/firebase/-/tree
    https://gitlab.com/TG1999/firebase/-/master
    https://gitlab.com/tg1999/Firebase/-/tree/master
    https://gitlab.com/tg1999/Firebase/-/commit/bf04e5f289885cf2f20a92b387bcc6df33e30809
    zchttps?://gitlab.com/(?P<namespace>[^/]+)/(?P<name>[^/]+)/-/commit/(?P<version>[0-9a-fA-F]{7,64})/?$ÚgitlabrJ   r8   rK   rR   r°   rF   Nr   rI   rG   rQ   rŸ   r,   rœ   r\   r    )r   r¢   r   r‡   r1   rN   rm   )r   rª   r´   r0   rJ   r8   rK   r¡   s           r   Úbuild_gitlab_purlr¹   ž  s6  € ð	-ð ô —I‘I˜n¨cÓ2€MÙÜØØ#×)Ñ)¨+Ó6Ø×$Ñ$ VÓ,Ø!×'Ñ'¨	Ó2ØØô
ð 	
ô ! Ó%€Häˆx‹=˜AÒØØ˜‘€IØ�A‰;€DØ€GØ€Gô 	ˆH‹˜Ò ¨¡¨sÒ 2°xÀ±{ÀfÒ7LØ˜1‘+ˆØ—(‘(˜8 A B˜<Ó(ˆô ˆ8ƒ}˜Ò˜x¨™{¨cÒ1°h¸q±kÀVÒ6KØ˜1‘+ˆØ—(‘(˜8 A B˜<Ó(ˆäØØØØØôð r'   zk^https?://gitlab.com/(?P<namespace>.+)/(?P<name>.+)/-/archive/(?P<version>.+)/(?P=name)-(?P=version).*[^/]$r¸   z`^https?://hackage.haskell.org/package/(?P<name>.+)-(?P<version>.+)/(?P=name)-(?P=version).*[^/]$ÚhackagezF^https?://hackage.haskell.org/package/(?P<name>.+)-(?P<version>[^/]+)/zShttps?://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/.*c                 ó„   — | j                  d«      \  }}|r*|j                  d«      }|r|d   }t        dd|d| i¬«      S y y )NzPhttps://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/r,   r   r4   zcode.google.comr5   r±   )r.   r   )r;   ru   Úremaining_uriÚsplit_remaining_urir8   s        r   Ú&build_generic_google_code_archive_purlr¾   ó  se   € ð —y‘yØZóÑ€A€}ñ Ø+×1Ñ1°#Ó6ÐáØ& qÑ)ˆDÜØØ+ØØ*¨CÐ0ô	ð ð ð r'   r$   )0rS   r   Úurllib.parser   r   Ú
packageurlr   Úpackageurl.contrib.router   r   r	   r   Úget_purlr!   r*   r1   r   ÚrouterD   rC   rB   rA   ry   r}   r�   rˆ   r   r   r†   r‰   r�   Únuget_www_patternÚnuget_api_patternÚsourceforge_download_patternÚ sourceforge_download_pattern_bisr—   Úcargo_patternÚgithub_raw_content_patternr�   Úgithub_codeload_patternr­   r³   r¶   r¹   Úgitlab_archive_patternÚhackage_download_patternÚhackage_project_patternr¾   © r'   r   ú<module>rÏ      s   ðó6 
Û 	Ý %Ý !å !Ý 5Ý +ðñ ‹h€ò
+ð €ó*ð6 -8ó %òò`ð ×ÑØ"Ø&Ø)Ø-ó	ñ'óð'òDò&7ò2!7ðH ×ÑØ(Ø*Ø&óñ
 Eóð
 EðH ×ÑÐ>Ó?ñ;ó @ð;ð" ×ÑØ$Ø1óñDó	ðDð c€ð �—
‘
ðð ‡J�Jó	€ð ×ÑØ-Ø2óñAó	ðAð4 ×ÑÐ7Ó8ñ
@ó 9ð
@ð _Ð á �Ð+Ô ,ð
ð ñ �Ð+Ô ,ðð ñ �Ð <Ô =ð
ð !ñ �Ð @Ô Að ×ÑÐ:Ó;ñ$ó <ð$ðP _€á �˜-Ô (ð
+ð ñ
 �Ð5Ô 6ð ×ÑÐ7Ó8ñVó 9ðVð<ð ñ �Ð2Ô 3ð ×ÑÐ-Ó.ñcó /ðcðPVð ð ×ÑÐ0Ó1ñ:ó 2ð:ðz ×ÑÐ<Ó=ñ5ó >ð5ðtð ñ �Ð1Ô 2ð
ð ñ �Ð4Ô 5ð dÐ á �Ð3Ô 4ð ×ÑØYóñóñr'   