
    ͆ho`              
      l   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
Jr  S SKJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJrJr  S SKJr  S SKJ r   S SK!J"r#J$r$J%r%  S SK&J'r'J(r(  SSK)J*r*  SSK+J,r,  Sr- " S S\\*   5      r.\R^                  " S5      r0SSSSSSSSSS.	r1g)    )annotationsN)ForeStyle)FutureThreadPoolExecutorwait)sha1)ExtraScriptValue)MkDocsConfig)PluginError)
BasePluginevent_priority)FileFiles)is_error_template)Match)ParseResulturlparseunquote)Elementtostring   )PrivacyConfig)FragmentParser   c                  ,   \ rS rSrS r\" S5      S 5       r\" S5      S 5       rS r\" S5      S 5       r	\" S5      S	 5       r
\" S
5      S 5       rSS jrSSS jjrSS jrSS jrSS jrS S jrS!S"S jjrS#S jrS$S jrSS jrS%S jrS&S jrSrg)'PrivacyPlugin6   c                8   [        UR                  =(       d    S5      U l        U R                  R                  (       d  g [        U R                  R                  5      U l        / U l        [        / 5      U l
        SSS.U R                  R                  EU l        g )N z-url\(\s*([\"']?)(?P<url>http?[^)'\"]+)\1\s*\)z1[\"'](?P<url>http[^\"']+\.(?:css|js(?:on)?))[\"'].css.js)r   site_urlsiteconfigenabledr   concurrencypool	pool_jobsr   assetsassets_expr_map)selfr&   s     W/opt/services/DDDS/venv/lib/python3.13/site-packages/material/plugins/privacy/plugin.py	on_configPrivacyPlugin.on_config9   sw    V__23	{{"" 't{{'>'>?	') BiDG 
 kk)) 
    ic                  U R                   R                  (       d  g U R                   R                  (       d  g UR                  5        H  nS nU R	                  U5       H  nU R                  XS5      (       a  M  U R                  XRSS9nSUR                  ;   d  M=  UR                  (       a  MP  [        UR                  5       5      nXbR                  ;  d  Mz  UR                  R                  U5        M     U(       d  M  U R                  R                  U5        UR                  U5        M     UR                   H6  n[        U5      nU R                  U5      (       a  M&  U R                  XRSS9  M8     UR                   H`  n[!        U["        5      (       a  [        U5      n[        UR                  5      nU R                  U5      (       a  MP  U R                  XRSS9  Mb     g )NT
concurrentzmermaid.min.js)r&   r'   r+   media_files_parse_media_is_excluded_queuepathr$   r
   geturlextra_javascriptappendremove	extra_cssr   
isinstancestr)r-   filesr&   	initiatorfileurlscriptr9   s           r.   on_filesPrivacyPlugin.on_filesL   sy   {{"" {{!! **,ID ((3((88;;s;FD (3883FOOO!1#**,!?!)@)@@"33::6B 4 t""9-Y'- -2 $$D4.C$$S))Cd; % --F&#&&)&1 6;;'C$$S))Cd; .r1   c                  U R                   R                  (       d  g U R                   R                  (       d  g [        R                  " SU[        R
                  [        R                  -  S9 H`  nU R                  U5      n[        UR                  S5      5      nU R                  XrR                  5      (       a  MP  U R                  XsSS9  Mb     g )Nz<img[^>]+src=['\"]?http[^>]+>flagssrcTr3   )r&   r'   r+   refindallIM_parse_fragmentr   getr7   rC   r8   )r-   htmlpager&   rA   matchelrD   s           r.   on_page_contentPrivacyPlugin.on_page_content   s    {{"" {{!! ZZ,"$$+
E %%e,B 266%=)C$$S))44Cd;
r1   c               f    U R                   R                  (       d  g [        U R                  5        g N)r&   r'   r   r*   )r-   envr&   rA   s       r.   on_envPrivacyPlugin.on_env   s     {{"" 	T^^r1   ic                   U R                   R                  (       d  g UR                  S5      (       d  g [        X#R                  UR
                  S5      nU R                  XU5      $ )Nz.htmlF)r&   r'   endswithr   docs_dirsite_dir_parse_html)r-   output_contenttemplate_namer&   rB   s        r.   on_post_templatePrivacyPlugin.on_post_template   sS    {{"" %%g.. %P	6BBr1   c               r    U R                   R                  (       d  g U R                  XR                  U5      $ rY   )r&   r'   ra   rC   )r-   outputrS   r&   s       r.   on_post_pagePrivacyPlugin.on_post_page   s+    {{"" 		6::r1   2   c               p   U R                   R                  (       d  g [        U R                  5        U R                  R	                  5         U R
                   H  n[        R                  " UR                  5      u  p4US;   aA  U R                  R                  U R                  R                  U R                  U5      5        Ml  [        R                  R                  UR                   5      (       d  M  UR#                  5         M     [        U R                  5        U R                  R%                  5         g )Nr!   )r&   r'   r   r*   clearr+   	posixpathsplitextdest_urir<   r)   submit_patchosr9   existsabs_src_path	copy_fileshutdown)r-   r&   rC   _	extensions        r.   on_post_buildPrivacyPlugin.on_post_build   s    {{"" 	T^^ KKD$--dmm<LAO+%%dii&6&6KK'  77>>$"3"344NN$   	T^^		r1   c                    UR                   =(       d    U R                  R                   nX R                  R                   :g  $ rY   )hostnamer%   )r-   rD   r|   s      r.   _is_externalPrivacyPlugin._is_external   s-    <<5499#5#599----r1   Nc                   U R                  U5      (       d  gU R                  R                  (       d  gSnU(       aM  SR                  [        R
                  [        R                  SUR                   S3[        R                  /5      nU R                  R                  (       d*  [        R                  SUR                  5        SU 35        gg)NTr    zin 'z' zExternal file:  F)r}   r&   r+   joinr   WHITEr   DIMsrc_uri	RESET_ALLassets_fetchlogwarningr:   )r-   rD   rB   vias       r.   r7   PrivacyPlugin._is_excluded   s      %% {{!! ''

EIIy((), C {{''KK/#**,q>? r1   c                    [        5       nUR                  U5        UR                  5         [        UR                  [
        5      (       a  UR                  $ [        SU-   5      e)Nz7Couldn't parse due to possible syntax error in HTML: 

)r   feedcloser?   resultr   r   )r-   fragmentparsers      r.   rP   PrivacyPlugin._parse_fragment   sV    !H fmmW--==  G
 	
r1   c           	        [         R                  " UR                  5      u  p#X0R                  ;  a  / $ UR                  (       d  / $ [
        R                  " U R                  U   [
        R                  [
        R                  -  S9n[        UR                  SS9 n[
        R                  " XER                  5       5      nU Vs/ s H  n[        UR                  S5      5      PM     snsS S S 5        $ s  snf ! , (       d  f       g = f)NrI   	utf-8-sigencodingrD   )rm   rn   ro   r,   rt   rL   compilerN   rO   openfinditerreadr   group)r-   rB   rw   rx   exprfresultsr   s           r.   r6   PrivacyPlugin._parse_media  s     )))*<*<=000I %%I zz$..y9244"$$;O)(([AQkk$1G@GHfHV\\%01H BAH BAs   )C:$C5)C:5C::
Dc                   ^ ^^^ SUU4S jjmSUUUU 4S jjn[         R                  " SXA[         R                  [         R                  -  S9$ )Nc                   > [        TR                  5      (       aI  [        TR                  =(       d    S5      n[        R
                  " UR                  U R                  5      $ U R                  T5      $ )N/)	r   r   r   r$   rm   r   r9   rD   url_relative_to)rC   baser&   rB   s     r.   resolve*PrivacyPlugin._parse_html.<locals>.resolve%  sQ     !2!233 637 ~~dii::++I66r1   c                n  > TR                  U R                  5       5      nUR                  S:X  a  [        UR	                  S5      5      nTR                  UT5      (       dP  UR	                  SS5      nUS:X  a  gUS;   a1  TR                  UT5      nU(       a  UR                  ST" U5      5        UR                  S:X  d  UR                  S:X  ab  [        UR	                  S	5      5      nTR                  UT5      (       d1  TR                  UT5      nU(       a  UR                  S	T" U5      5        UR                  S
:X  ab  [        UR	                  S5      5      nTR                  UT5      (       d1  TR                  UT5      nU(       a  UR                  ST" U5      5        TR                  U5      $ )Nlinkhrefrelr    
preconnect)iconpreload
stylesheetrE   imgrK   image)	rP   r   tagr   rQ   r7   r8   set_print)	rT   rU   rD   r   rC   r&   rB   r   r-   s	        r.   replace*PrivacyPlugin._parse_html.<locals>.replace-  sc   %%ekkm4B vvrvvf~.((i88&&+C l*! ??#{{37FF674=9 vv!RVVu_rvve}-((i88;;sF3Dugdm4 vv rvvf~.((i88;;sF3Dvwt}5 ;;r?"r1   zF<(?:(?:a|link|image)[^>]+href|(?:script|img)[^>]+src)=['\"]?http[^>]+>rI   )rC   r   rT   r   )rL   subrN   rO   )r-   rg   rB   r&   r   r   s   ` `` @r.   ra   PrivacyPlugin._parse_html"  s?    	7 	7$	# $	#N vvURTTBDD[
 	
r1   c                    SnUR                    H5  n[        UR                   U   [        5      (       a  M'  X!R                   U'   M7     [        USS9nUR	                  SS5      R	                  SU S3S5      $ )	N__temp__unicoder   z />>z=""r    )attribr?   r@   r   r   )r-   rU   tempnamedatas        r.   r   PrivacyPlugin._print_  si    IIDbiios33"&		$ 
 y1||E3'//#dV2CCr1   c                   U R                  U5      n[        R                  " U R                  R                  U5      nU R
                  R                  U5      nU(       d  U R                  XB5      nUR                  5       Ul	        [        R                  " UR                  5      u  pxU(       aG  U(       a@  U R                  R                  U R                  R                  U R                   Xb5      5        OU R!                  Xb5      (       d  g U R
                  R                  UR"                  5      (       d  U R
                  R                  U5        UR$                  (       a"  U=R                  SUR$                   3-  sl	        U$ )N#)_path_from_urlrm   r   r&   assets_fetch_dirr+   get_file_from_path_path_to_filer:   rD   rn   r9   r*   r<   r)   rp   _fetchr   r   )	r-   rD   r&   r4   r9   fullrC   rw   rx   s	            r.   r8   PrivacyPlugin._queuej  s   ""3'~~dkk::DA {{--d3 %%d3Dzz|DH %--chh7LAZ%%dii&6&6KK'  {{400 ;;11$,,??""4( <<HH!CLL>**H r1   c                   [         R                  R                  UR                  5      (       a  U R                  R
                  (       Gd6  UR                  n[        R                  SUR                   35         [        R                  " UR                  SSR                  / SQ5      0[        S9nUR                  5         UR                   S	   R#                  S
5      S   n[$        R                  U5      nU(       a  UR'                  U5      (       d  X7-  nU R)                  X4R*                  5        X1R                  :w  a?   [         R,                  " [         R                  R/                  U5      UR                  5        [         R                  R9                  UR                  5      u  p[         R                  R                  UR                  5      (       a  [         R                  R;                  UR                  5      Ul        [         R                  R9                  UR                  5      u  pUR<                  R'                  U5      (       d?  U=R6                  U-  sl        U=R>                  U-  sl        U=R<                  U-  sl        UR>                  Ul        U RA                  U5       H+  n
U RC                  X5      (       a  M  U RE                  XSS9  M-     g! [         a/  n[        R                  SUR                   SU 35         S nAgS nAff = f! [0         aQ  nUR2                  [2        R4                  :w  a"  [        R                  SUR6                   35        X1l         S nAGNS nAff = f)NzDownloading external file: z
User-Agentr   )z)Mozilla/5.0 (Windows NT 10.0; Win64; x64)z&AppleWebKit/537.36 (KHTML, like Gecko)z"Chrome/98.0.4758.102 Safari/537.36)headerstimeoutzCouldn't retrieve z: Fzcontent-type;r   zCouldn't create symbolic link: Tr3   )#rr   r9   isfilert   r&   cacher   inforD   requestsrQ   r   DEFAULT_TIMEOUT_IN_SECSraise_for_status	Exceptionr   r   split
extensionsr^   _save_to_filecontentsymlinkbasenameOSErrorerrnoEEXISTr   rn   realpathabs_dest_pathro   r6   r7   r8   )r-   rC   r&   r9   reserrormimerx   erw   rD   s              r.   r   PrivacyPlugin._fetch  s    ww~~d//008I8I8I$$D HH2488*=>llHH %chh' 4" $$& ;;~.44S9!<D"t,Iy!9!9! t[[1(((-JJrww//5t7H7HI ww''(9(9:77>>$++,, " 0 01B1B CD77++D,=,=>LA %%..y99	) *""i/" == $$T*C$$S//Cd; +
 m  0
"UGDE$  
-ww%,,.=dll^L )-%%
-s2   :AK$ >L  $
L.%LL 
M;*AM66M;c           	       ^ ^ [        TR                  SS9 nSUU 4S jjn[        R                  " TR                  5      u  pE[
        R                  " T R                  U   [
        R                  [
        R                  -  5      nT R                  TR                  UR                  X2R                  5       5      5        S S S 5        g ! , (       d  f       g = f)Nr   r   c                  > U R                  S5      nTR                  [        U5      5      n[        R                  " TR
                  R                  U5      nTR                  R                  U5      nU(       d  [        R                  " [        R                  R	                  TR
                  R                  U5      5      n[        R                  " [        R                  " U5      U5      nTR                  R                  U5      nU(       d+  [        R                  S5        [         R"                  " S5        UR$                  R'                  S5      (       a:  [        R                  " TR(                  R+                  5       UR$                  5      nOUR-                  T5      nU R                  5       R/                  X5      $ )NrD   zxFile not found. This is likely a bug in the built-in privacy plugin. Please create an issue with a minimal reproduction.r   r#   )r   r   r   rm   r   r&   r   r+   r   rr   readlinkr9   	cache_dirdirnamer   r   sysexitrD   r^   r%   r:   r   r   )	rT   valuer9   r   rC   r   rD   rB   r-   s	          r.   r   %PrivacyPlugin._patch.<locals>.replace  s8   E* **8E?; ~~dkk&B&BDI {{55d;;;rww||DKK4I4I4'PQD$>>)*;*;D*A4HD  ;;99$?D II(
 HHQK 88$$U++#..)9)9);TXXFC ..y9C {{},,U88r1   r   )r   rt   rm   rn   ro   rL   r   r,   rN   rO   r   r   r   r   )r-   rB   r   r   rw   rx   r   s   ``     r.   rq   PrivacyPlugin._patch  s    )(([AQ%9 %9P %--i.@.@ALA::d229=rttbdd{KD ''&&(+_ BAAs   B(C
Cc                   [         R                  " UR                  5      n[        R                  " SSU5      nUR
                  (       aV  [         R                  " U5      u  p4[        UR
                  R                  S5      5      R                  5       S S nU SU U 3nUR                  SSSUS9nUR                  5       SS  $ )	Nz/\.z/_utf-8   .r    )schemequeryr   r9      )rm   normpathr9   rL   r   r   rn   r	   encode	hexdigest_replacer:   )r-   rD   r9   r   rx   digests         r.   r   PrivacyPlugin._path_from_url'  s    !!#((+vvfdD) 99'006OD #))**734>>@!DFV1VHYK0D llBr$lOzz|ABr1   c                    [        [        R                  " U R                  R                  [        U5      5      [        R                  R                  U R                  R                  5      UR                  S5      $ )NF)r   rm   r   r&   r   r   rr   r9   abspathr   r`   )r-   r9   r&   s      r.   r   PrivacyPlugin._path_to_file:  sO    NN4;;77GGGOODKK112OO	
 	
r1   c                   [         R                  " [         R                  R                  U5      SS9  [	        U[
        5      (       a  [        US5      n[        US5       nUR                  U5        S S S 5        g ! , (       d  f       g = f)NT)exist_okr   wb)	rr   makedirsr9   r   r?   r@   bytesr   write)r-   r9   r   r   s       r.   r   PrivacyPlugin._save_to_fileC  sZ    
BGGOOD)d;gs##GW-G$GGG s    A;;
B	)r+   r,   r)   r*   r%   )rD   URLrY   )rD   r  rB   zFile | None)r   r@   )rB   r   returnz	list[URL])rg   r@   rB   r   r&   r   )rU   r   )F)rD   r  r&   r   )rC   r   r&   r   )rB   r   )r9   r@   r&   r   )r9   r@   r   zstr | bytes)__name__
__module____qualname____firstlineno__r/   r   rF   rV   r[   rd   rh   ry   r}   r7   rP   r6   ra   r   r8   r   rq   r   r   r   __static_attributes__ r1   r.   r   r   6   s    
& D0< 0<l D< <* C
C 
C C; ; B @.
8
(I(5
zD*ZSl3t &
r1   r   zmkdocs.material.privacyr#   z.avifz.gifz.jpgz.pngz.svgz.webpr"   )	zapplication/javascriptz
image/avifz	image/gifz
image/jpegz	image/pngzimage/svg+xmlz
image/webpztext/javascriptztext/css)2
__future__r   r   loggingrr   rm   rL   r   r   coloramar   r   concurrent.futuresr   r   r   hashlibr	   mkdocs.config.config_optionsr
   mkdocs.config.defaultsr   mkdocs.exceptionsr   mkdocs.pluginsr   r   mkdocs.structure.filesr   r   mkdocs.utilsr   r   urllib.parser   r  r   r   xml.etree.ElementTreer   r   r&   r   r   r   r   r   	getLoggerr   r   r  r1   r.   <module>r     s   * #   	  	  
   ? ?  9 / ) 5 . *  > > 3 ! " RJ}- Rr 12 $

r1   