o
    \h                     @   s  d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ g dZG dd	 d	eZG d
d deZG dd deZG dd deZ G dd deZ!dd Z"G dd deZ#G dd deZ$G dd deZ%G dd deZ&G dd deZ'G dd deZ(G d d! d!eZ)G d"d# d#eZ*G d$d% d%eZ+G d&d' d'eZ,G d(d) d)eZ-G d*d+ d+eZ.G d,d- d-eZ/G d.d/ d/eZ0G d0d1 d1eZ1G d2d3 d3eZ2G d4d5 d5eZ3dS )6z
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexer
RegexLexerdefaultwordsbygroupsincludeusingline_re)TextCommentOperatorKeywordNameStringNumberPunctuation
WhitespaceLiteralErrorGeneric)	BashLexer)	JsonLexer)IniLexerSystemdLexerDesktopLexerRegeditLexerPropertiesLexerKconfigLexerCfengine3LexerApacheConfLexerSquidConfLexerNginxConfLexerLighttpdConfLexerDockerLexerTerraformLexerTermcapLexerTerminfoLexerPkgConfigLexerPacmanConfLexerAugeasLexer	TOMLLexerNestedTextLexerSingularityLexerUnixConfigLexerc                   @   s   e Zd ZdZdZg dZg dZddgZdZdZ	d	e
fd
ejfdeee
fdeeje
ee
edfdeeje
ee
eee
dfdeeje
ee
efdejfgdeeee
dfd
ejfdedfgd	e
fdee
eee
fdedfgdZdd ZdS )r   z5
    Lexer for configuration files in INI style.
    INI)inicfgdosini)z*.iniz*.cfgz*.infz.editorconfigz
text/x-iniztext/infz&https://en.wikipedia.org/wiki/INI_file \s+[;#].*z(\[.*?\])([ \t]*)$z!(.*?)([ \t]*)([=:])([ \t]*)(["'])quoted_valuez.(.*?)([ \t]*)([=:])([ \t]*)([^;#\n]*)(\\)(\s+)valuez6(.*?)([ \t]*)([=:])([ \t]*)([^ ;#\n]*(?: +[^ ;#\n]+)*)z(.+?)$z([^"'\n]*)(["'])(\s*)#pop$z(\s*)(.*)(\\)([ \t]*)z.*$)rootr5   r6   c                 C   s:   |  d}|dk rdS | d dkr| |d  dkrdS dS )	N
   Fr   [   ]g?)find)textnpos rB   Z/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/pygments/lexers/configs.pyanalyse_textI   s   
zIniLexer.analyse_textN)__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedr   r   Singler   r   r   	Attributer   r   r
   tokensrD   rB   rB   rB   rC   r      sP    r   c                   @   sx   e Zd ZdZdZdZdgZdgZdgZdZ	dd	e
fd
eeje
fdeee
fdeejeje
ee
ee
fgiZdd ZdS )r   z#
    Lexer for .desktop files.
    zDesktop filezXhttps://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.htmldesktopz	*.desktopzapplication/x-desktop2.16r9   	^[ \t]*\nz
^(#.*)(\n)(\[[^\]\n]+\])(\n)zG([-A-Za-z0-9]+)(\[[^\] \t=]+\])?([ \t]*)(=)([ \t]*)([^\n]*)([ \t\n]*\n)c                 C   2   |  drdS td| d d tjd urdS dS )Nz[Desktop Entry]      ?z^\[Desktop Entry\][ \t]*$  ?        
startswithresearch	MULTILINEr@   rB   rB   rC   rD   h   
   
zDesktopLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   r   r   rO   r   r   rP   	Namespacer   r   rQ   rD   rB   rB   rB   rC   r   R   s$    
r   c                   @   s   e Zd ZdZdZdZdgZg dZdZde	fde
eje	fd	e
ee	fd
e
eje	ee	eee	dfde
eje	ee	ee	fgde
eje	fde
e	eee	fde
e	ee	dfgdZdd ZdS )r   z'
    Lexer for systemd unit files.
    SystemdzDhttps://www.freedesktop.org/software/systemd/man/systemd.syntax.htmlsystemd)z	*.servicez*.socketz*.devicez*.mountz*.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scoperS   rT   z^([;#].*)(\n)rU   z*([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\\)(\n)r6   z&([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\n)z([ \t]*)([^\n]*)(\\)(\n)z([ \t]*)([^\n]*)(\n)r7   r9   r6   c                 C   rV   )Nz[Unit]rW   z^\[Unit\][ \t]*$rX   rY   rZ   r[   r`   rB   rB   rC   rD      ra   zSystemdLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r   r   r   rO   r   r   rP   r   r   r
   rQ   rD   rB   rB   rB   rC   r   p   s<    r   c                   @   s   e Zd ZdZdZdZdgZdgZdgZdZ	de
fd	efd
ejfdeeeejefdeejeeedfdeejeeedfgdedfdeejeedfdedfedgdZdd ZdS )r   z?
    Lexer for Windows Registry files produced by regedit.
    regz8http://en.wikipedia.org/wiki/Windows_Registry#.REG_filesregistryz*.regztext/x-windows-registry1.6zWindows Registry Editor.*r3   r4   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)r6   z(.*?)([ \t]*)(=)([ \t]*)-r7   z1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+).+re   c                 C   s
   |  dS )NzWindows Registry Editor)r\   r`   rB   rB   rC   rD      s   
zRegeditLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r
   r   r   rO   r   r   r   r   BuiltinrP   Variabler   r   r   r   rQ   rD   rB   rB   rB   rC   r      s@    r   c                   @   s   e Zd ZdZdZddgZdgZdgZdZdZ	d	e
jfd
efdefedgdejfeddeeeedfdedfd
edfgdefedd
edfgdeejefdejfgdZdS )r   z
    Lexer for configuration files in Java's properties format.

    Note: trailing whitespace counts as part of the value as per spec
    
Properties
propertiesjpropertiesz*.propertiesztext/x-java-propertiesz)https://en.wikipedia.org/wiki/.propertiesz1.4z[!#].*|/{2}.*\nz	^[^\S\n]+keyz
[^\\:=\s]+escapesz([^\S\n]*)([:=])([^\S\n]*))r7   r6   [^\S\n]+r7   z[^\\\n]+z(\\\n)([^\S\n]*)z\\(.|\n))r9   rq   r6   rr   N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   rO   r   r   r   rP   r   r   r   r   EscaperQ   rB   rB   rB   rC   r      s<    


r   c                 C   sP   d}|dkr	d}nd|d  }| dkrd}nd|  d}d	| d
| d| dS )N      +z{1,%d}r=   r2   {}z(?:\t| z\t| {z})z.*\nrB   )level	tab_widthspace_repeatlevel_repeatrB   rB   rC   
_rx_indent   s   r~   c                   @   s  e Zd ZdZdZg dZdZg dZdgZdZ	dZ
d	d
 Zdd Zdefdejfedddefdedfdejfdefdefdejfdejfdejfdefgdefededededed ed!ed"ed#g	ededededed ed!ed"d$	Zd%S )&r   z(
    For Linux-style Kconfig files.
    Kconfig)kconfig
menuconfigzlinux-configzkernel-configrh   )zKconfig*z*Config.in*zexternal.in*zstandard-modules.inztext/x-kconfigzChttps://www.kernel.org/doc/html/latest/kbuild/kconfig-language.htmlr   c                 C   s   t | tjd|  fS )Nindent)r~   r   Docrz   rB   rB   rC   call_indent#  s   zKconfigLexer.call_indentc                 C   s   t | tjfdtftdgS )N\s*\n#pop:2)r~   r   r   r
   r   r   rB   rB   rC   	do_indent'  s   zKconfigLexer.do_indentr3   #.*?\n)mainmenuconfigr   choice	endchoicecommentmenuendmenuz
visible ififendifsourcepromptselectz
depends onr   rangeoption\bsuffixz(---help---|help)[\t ]*\nhelpz;(bool|tristate|string|hex|int|defconfig_list|modules|env)\bz[!=&|]z[()][0-9]+z'(''|[^'])*'z"(""|[^"])*"\S+r               r;   rv   r=   r7   )	r9   r   indent7indent6indent5indent4indent3indent2indent1N)rE   rF   rG   rH   rI   rJ   rN   rK   rL   rM   flagsr   r   r   r   rO   r   r   r   rk   r   r   r   Integerr   Doubler
   r   rQ   rB   rB   rB   rC   r     s^    
r   c                   @   sv  e Zd ZdZdZdZddgZdgZg ZdZ	de
fd	eeeeeefd
eeeeeejedfdeeeeeejfdeeejeeejeeefdeejeeefdedfdeejefdeejefdeejefdejfdefdefdefdejfdejfdejfdefgdejdfdejfdedfd efd!efgdejd"fd#ejdfd$ejfgd%edfd&efdejfdefgd'Zd(S ))r   z+
    Lexer for CFEngine3 policy files.
    	CFEngine3zhttp://cfengine.org	cfengine3cf3z*.cfz1.5r   z(body)(\s+)(\S+)(\s+)(control)z%(body|bundle)(\s+)(\S+)(\s+)(\w+)(\()arglistz!(body|bundle)(\s+)(\S+)(\s+)(\w+)z7(")([^"]+)(")(\s+)(string|slist|int|real)(\s*)(=>)(\s*)z(\S+)(\s*)(=>)(\s*)"stringz	(\w+)(\()z([\w.!&|()]+)(::)z(\w+)(:)z@[{(][^)}]+[})]z[(){},;]z=>z->z\d+\.\d+\d+\w+r3   z\$[{(]interpol\\.r7   rp   .#pushz[})]z	[^${()}]+z\),)r9   r   r   r   N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   r   r   r   r   Functionr   rl   Typer   Reservedr
   r   ClassDeclarationr   Floatr   Interpolrt   rQ   rB   rB   rB   rC   r   `  sp    




r   c                   @   s   e Zd ZdZdZg dZg dZdgZdZdZ	e
je
jB Zdefd	efd
eejeeejfdeejejfdejdfdefgdefdedfdefdefdefdefdejfdefdejfdefg
dZdS )r   zT
    Lexer for configuration files following the Apache config file
    format.
    
ApacheConf)
apacheconfaconfapache)z	.htaccesszapache.confzapache2.confztext/x-apacheconfz6https://httpd.apache.org/docs/current/configuring.htmlz0.6r3   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*r6   z\.+z\\\nz\n+r7   z\\rs   \d+\.\d+\.\d+\.\d+(?:/\d+)?r   z/([*a-z0-9][*\w./-]+)z(on|off|none|any|all|double|email|dns|min|minimal|os|productonly|full|emerg|alert|crit|error|warn|notice|info|debug|registry|script|inetd|standalone|user|group)\bz"([^"\\]*(?:\\(.|\n)[^"\\]*)*)"z	[^\s"\\]+re   N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r]   r_   
IGNORECASEr   r   r   r   r   Tagr   rk   r
   r   Otherr   r   rQ   rB   rB   rB   rC   r     sD    

r   c                   @   sB  e Zd ZdZdZdZg dZdgZdgZdZ	e
jZdZd	Zd
ZdZdZdZdZde de dZdZde de dZde de dZe de dZdefdedfeedddefeedddejfeedddefeedddefeedd defeedddefee j!fd!e fd"e"fgd#ej#d$fd%ed$fe$d$gd&Z%d'S )(r    z.
    Lexer for squid configuration files.
    	SquidConfzhttp://www.squid-cache.org/)	squidconf
squid.confsquidr   ztext/x-squidconfz0.9)
access_logaclalways_directannounce_hostannounce_periodannounce_portannounce_toanonymize_headersappend_domainas_whois_serverauth_param_basicauthenticate_childrenauthenticate_programauthenticate_ttlbroken_postsbuffered_logscache_access_logcache_announce	cache_dircache_dns_programcache_effective_groupcache_effective_user
cache_hostcache_host_aclcache_host_domain	cache_log	cache_memcache_mem_highcache_mem_low	cache_mgrcachemgr_passwd
cache_peercache_peer_accesscache_replacement_policycache_stoplistcache_stoplist_patterncache_store_log
cache_swapcache_swap_highcache_swap_logcache_swap_low	client_dbclient_lifetimeclient_netmaskconnect_timeoutcoredump_dirdead_peer_timeoutdebug_optionsdelay_accessdelay_classdelay_initial_bucket_leveldelay_parametersdelay_pools	deny_infodns_childrendns_defnamesdns_nameserversdns_testnamesemulate_httpd_logerr_html_textfake_user_agentfirewall_ipforwarded_forforward_snmpd_portfqdncache_sizeftpget_optionsftpget_programftp_list_widthftp_passiveftp_userhalf_closed_clientsheader_accessheader_replacehierarchy_stoplisthigh_response_time_warninghigh_page_fault_warning
hosts_file	htcp_porthttp_accesshttp_anonymizerhttpd_accelhttpd_accel_hosthttpd_accel_porthttpd_accel_uses_host_headerhttpd_accel_with_proxy	http_porthttp_reply_access
icp_accessicp_hit_staleicp_porticp_query_timeoutident_lookupident_lookup_accessident_timeoutincoming_http_averageincoming_icp_averageinside_firewallipcache_highipcache_lowipcache_sizelocal_domainlocal_iplogfile_rotatelog_fqdnlog_icp_querieslog_mime_hdrsmaximum_object_sizemaximum_single_addr_triesmcast_groupsmcast_icp_query_timeoutmcast_miss_addrmcast_miss_encode_keymcast_miss_portmemory_poolsmemory_pools_limitmemory_replacement_policy
mime_tablemin_http_poll_cntmin_icp_poll_cntminimum_direct_hopsminimum_object_sizeminimum_retry_timeoutmiss_accessnegative_dns_ttlnegative_ttlneighbor_timeoutneighbor_type_domain
netdb_high	netdb_lownetdb_ping_periodnetdb_ping_ratenever_directno_cachepassthrough_proxypconn_timeoutpid_filenamepinger_programpositive_dns_ttlprefer_direct
proxy_authproxy_auth_realm
query_icmpquick_abortquick_abort_maxquick_abort_minquick_abort_pctrange_offset_limitread_timeoutredirect_childrenredirect_programredirect_rewrites_host_headerreference_agerefresh_patternreload_into_imsrequest_body_max_sizerequest_sizerequest_timeoutshutdown_lifetimesingle_parent_bypasssiteselect_timeoutsnmp_accesssnmp_incoming_address	snmp_portsource_ping	ssl_proxystore_avg_object_sizestore_objects_per_bucketstrip_query_termsswap_level1_dirsswap_level2_dirstcp_incoming_addresstcp_outgoing_addresstcp_recv_bufsizetest_reachabilityudp_hit_objudp_hit_obj_sizeudp_incoming_addressudp_outgoing_addressunique_hostnameunlinkd_programuri_whitespaceuseragent_logvisible_hostname
wais_relaywais_relay_hostwais_relay_port)z
proxy-onlyweightttlzno-queryr   zround-robinzmulticast-responderonoffalldenyallowviaparentz	no-digestheaplrurealmchildrenq1q2credentialsttlnonedisableoffline_togglediskd)shutdowninfo	parameterserver_listclient_listr   )objects
vm_objectsutilizationipcache	fqdncachedns
redirectorioreply_headersfiledescriptorsnetdb)statusenabler  clear)	url_regexurlpath_regexreferer_regexportprotoreq_mime_typerep_mime_typemethodbrowserusersrcdsttime	dstdomainidentsnmp_communityz(\d+|0x[0-9a-f]+)(z(\.z){3})z([0-9a-f]{0,4})z(:z){1,7})|)z(/(z|\d+))?r3   #r   r   prefixr   zstats/zlog/=z(?:\b\d+\b(?:-\b\d+|%)?)r   z	\s*TAG:.*r7   rj   )r9   r   N)&rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r]   r   r   keywordsoptsactionsactions_statsactions_logacls
ipv4_groupipv4
ipv6_groupipv6bare_ipipr   r   r   r   r   Constantr   r   r   r
   rt   r   rQ   rB   rB   rB   rC   r      sL    ;

r    c                   @   s   e Zd ZdZdZdZdgZdgZdgZdZ	de
eeefd	ed
fedgdedfd	ejd
fedgdedfdedfedgdejfdejfdejfde
eeejfdefdejfde
eeejfdefdefdefdefdefgdZdS ) r!   z.
    Lexer for Nginx configuration files.
    zNginx configuration filezhttp://nginx.net/nginxz
nginx.confztext/x-nginx-conf0.11z(include)(\s+)([^\s;]+)z[^\s;#]+stmtbase\}r   \{block;r7   #.*\nzon|offz\$[^\s;#()]+z([a-z0-9.-]+)(:)([0-9]+)z[a-z-]+/[a-z-+]+z[0-9]+[km]?\bz(~)(\s*)([^\s{]+)z[:=~]z[^\s;#{}$]+z	/[^\s;#]*r3   z[$;])r9   r  r  r  N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   r   r   r   r   r   rb   r   rO   r  rl   r   r   r   Regexr
   rQ   rB   rB   rB   rC   r!   I  sH    

r!   c                   @   sz   e Zd ZdZdZdZddgZdgZdgZdZ	d	d
e
jfdefdefdefdefdefdejfdefdejfdefg
iZdS )r"   z1
    Lexer for Lighttpd configuration files.
    zLighttpd configuration filezhttp://lighttpd.net/lighttpdlightyzlighttpd.confztext/x-lighttpd-confr  r9   r  z/\S*z[a-zA-Z._-]+r   r   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r3   N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   rO   r   r   r   r   rk   r   r   r   r   rQ   rB   rB   rB   rC   r"   w  s*    r"   c                   @   s  e Zd ZdZdZdZddgZddgZdgZd	Z	d
Z
dZdZejejB Zddefdeeeeeeeefde deeeeefde de deeeeefde deeeeeeefde de deeeeefde
 deeeefde deeefdeefg	iZdS )r#   z/
    Lexer for Docker configuration files.
    Dockerzhttp://docker.iodocker
dockerfile
Dockerfilez*.dockerztext/x-dockerfile-configz2.0z-(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)z-(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)z(?:\s*\\?\s*)r9   #.*z1(FROM)([ \t]*)(\S*)([ \t]*)(?:(AS)([ \t]*)(\S*))?z(ONBUILD)(\s+)(r  z(HEALTHCHECK)(\s+)((z	--\w+=\w+z)*)z#(VOLUME|ENTRYPOINT|CMD|SHELL)(\s+)(z
)(\[.*?\])z(LABEL|ENV|ARG)(\s+)((z\w+=\w+r  z|VOLUME)\b(\s+)(.*)z)(\s+)z(.*\\\n)*.+N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   	_keywords_bash_keywords_lbr]   r   r_   r   r   r   r   r   r   r   r   r   rQ   rB   rB   rB   rC   r#     s@    

r#   c                   @   s  e Zd ZdZdZdZg dZddgZddgZd	Z	d
Z
dde
ZdZdZdZdZdZdZdZdZdZdZee e e e e e e e ZddeZdd Zededdeejfedddde j!feeddde"j#feded d!e$fgd"e%j&d#fd$e%j'fedd%ee(e j)e(e*e(e+fd&ee(e j,e(e*e(fd'ee(e-jje(e*e(fed( ee j.e+fd)ee+e j)e+fed* ee"j/e(e j0e(e j1e(e+fd+efg
d,ee j1fd-ee j1fgd.e+fgd/e%j&fd0e%j&d1fd2e%j&d3fd4e%j&fgd5e(fd6e(fd7ee2e(fgd8Z3d9S ):r$   z-
    Lexer for terraformi ``.tf`` files.
    	Terraformzhttps://www.terraform.io/)	terraformtfhclz*.tfz*.hclzapplication/x-tfzapplication/x-terraform2.1)backenddatamoduleoutputproviderprovisionerresourcevariablez({})r  )	r   numberboollisttuplemapsetobjectnull)	absceilfloorlogmaxmixparseintpowsignum)chompformat
formatlistr   joinlowerregexregexallreplacesplitstrrevsubstrtitletrim
trimprefix
trimsuffix	trimspaceupper)alltrueanytrue	chunklistcoalescecoalescelistcompactconcatcontainsdistinctelementflattenindexkeyslengthr  lookupr  	matchkeysmerger   reversesetintersection
setproductsetsubtractsetunionslicesortsum	transposevalueszipmap)base64decodebase64encode
base64gzip	csvdecode
jsondecode
jsonencodetextdecodebase64textencodebase64	urlencode
yamldecode
yamlencode)	abspathdirname
pathexpandbasenamefile
fileexistsfileset
filebase64templatefile)
formatdatetimeadd	timestamp)base64sha256base64sha512bcryptfilebase64sha256filebase64sha512filemd5filesha1
filesha256
filesha512md5
rsadecryptsha1sha256sha512uuiduuidv5)cidrhostcidrnetmask
cidrsubnetcidrsubnets)	candefaultstobooltolisttomaptonumbertosettostringtryc           	      c   s:   | d}|t|dfV  | dtj|dfV  | d|_|d|_|jtj|dfV  | |_|d}d}g }t	|j
|jD ]<}|rT|  }n|  }||kr|D ]}|  tj| fV  q`|  tj| fV  | |_ n|| qI|D ]}|  t| fV  qt|j
|_d S )Nr=   rv   r;   T)startr   groupr   	DelimiterposendHeredocr	   finditerr@   striprstripappendr   len)	selfmatchctxrd  hdnametolerantlinescheckamatchrB   rB   rC   heredoc_callback  s2   



zTerraformLexer.heredoc_callbackbasic
whitespacez(".*"))truefalser   r  
identifierpunctuationr   z\s*/\*r   z\s*(#|//).*\nz'(\s*)([0-9a-zA-Z-_]+)(\s*)(=?)(\s*)(\{)z"(\s*)([0-9a-zA-Z-_]+)(\s*)(=)(\s*)z(\s*)("\S+")(\s*)([=:])(\s*)z(\()z(\[)([a-z_,\s]+)(\])z8(\s+)("[0-9a-zA-Z-_]+")?(\s*)("[0-9a-zA-Z-_]+")(\s+)(\{)z(<<-?)\s*([a-zA-Z_]\w*)(.*?\n)z\b(var\.[0-9a-zA-Z-_\.\[\]]+)\bz.\b([0-9a-zA-Z-_\[\]]+\.[0-9a-zA-Z-_\.\[\]]+)\bz[\[\]()\{\},.?:!=]z[^*/]z/\*r   z\*/r7   z[*/]rp   r3   (\\)(\n))r9   rx  r|  r}  r   ry  N)4rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   classesr  r  
classes_retypesnumeric_functionsstring_functionscollection_functionsencoding_functionsfilesystem_functionsdate_time_functionshash_crypto_functionsip_network_functionstype_conversion_functionsbuiltinsbuiltins_rerw  r   r   r   r   r   r   r  r   r   r   r   	MultilinerO   r   rk   r   r   rP   r   r   r   r   rl   r
   rQ   rB   rB   rB   rC   r$     s    	'
"


r$   c                	   @   s   e Zd ZdZdZdgZddgZg ZdZdZ	de
fdejd	fd
efgdedfdedfdefdejfgdeeefdedfdeeefdedfdefdejfgdefdedfdefdefgdZdS )r%   zR
    Lexer for termcap database source.

    This is very simple and minimal.
    Termcaptermcapztermcap.srcz%https://en.wikipedia.org/wiki/Termcapr  ^#.*z
^[^\s#:|]+namesr3   rp   r7   :defs\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*r   (#)([0-9]+)r  r  z	[^\s:=#]+z\\072z[^:\\]+r   r9   r  r  r  N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   r   r   r   r   rP   r   r
   r   r   r   r   rQ   rB   rB   rB   rC   r%   _  s<    	
	
r%   c                
   @   s   e Zd ZdZdZdgZddgZg ZdZdZ	de
fdejd	fd
efgdedfdeeedfdefdejfgdefdedfdeeefdedfdeeefdejfgdefdeeedfdefdefgdZdS )r&   zS
    Lexer for terminfo database source.

    This is very simple and minimal.
    Terminfoterminfozterminfo.srcz&https://en.wikipedia.org/wiki/Terminfor  z^#.*$z
^[^\s#,|]+r  r3   rp   r7   z(,)([ \t]*)r  r  z[^,|]+z\n[ \t]+r   r  r  r  z	[^\s,=#]+z\\[,\\]z[^\\,]+r   r  N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   r   r   r   r   r   rP   r   r   r   r   rQ   rB   rB   rB   rC   r&     s<    	
	
r&   c                
   @   s   e Zd ZdZdZdZdgZdgZg ZdZ	de
jfdeejefd	eejed
feddefdefdefgdefdejdfgdejdfdejfgedde
jdfdedfdefdefdefgdZdS )r'   ze
    Lexer for pkg-config
    (see also `manual page <http://linux.die.net/man/1/pkg-config>`_).
    	PkgConfigz4http://www.freedesktop.org/wiki/Software/pkg-config/	pkgconfigz*.pcr  #.*$z	^(\w+)(=)z^([\w.]+)(:)spvalueinterpr3   z[^${}#=:\n.]+r   z\$\$z\$\{curlyr  r7   r   rp   z[^${}#\n\s]+)r9   r  r  r  N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   rO   r   r   rP   r   r   r   r   r   r
   r   r   rQ   rB   rB   rB   rC   r'     s@    



r'   c                	   @   s   e Zd ZdZdZdZdgZdgZg ZdZ	dde
jfd	eeeefd
eejeefdeeejefedddejfdefdefgiZdS )r(   a@  
    Lexer for pacman.conf.

    Actually, IniLexer works almost fine for this format,
    but it yield error token. It is because pacman.conf has
    a form without assignment like:

        UseSyslog
        Color
        TotalDownload
        CheckSpace
        VerbosePkgLists

    These are flags to switch on.
    
PacmanConfz3https://www.archlinux.org/pacman/pacman.conf.5.html
pacmanconfzpacman.confr  r9   r  z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ur   r   r3   r   N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   rO   r   r   r   r   rP   r   r   rl   r
   rQ   rB   rB   rB   rC   r(     s4    	r(   c                   @   s   e Zd ZdZdZdZdgZdgZdZde	e
jeejfde	e
jeejfd	e	ejefd
e	eejee
jefdejdfdefdefdejdfdejdfde	ejeejfdejfdefgdejfdejfdejdfgdejfdejfdejdfgdejfdejdfdejdfdejfgdZdS ) r)   z
    Lexer for Augeas.
    Augeaszhttp://augeas.netaugeasz*.aug2.4z(module)(\s*)([^\s=]+)z(let)(\s*)([^\s=]+)zV(del|store|value|counter|seq|key|label|autoload|incl|excl|transform|test|get|put)(\s+)z8(\()([^:]+)(\:)(unit|string|regexp|lens|tree|filter)(\))z\(\*r   z[*+\-.;=?|]z
[()\[\]{}]r   r   z\/r  z([A-Z]\w*)(\.)(\w+)r   r3   r   z[^"]r7   z[^/]z[^*)]r   z\*\)z[)*])r9   r   r  r   N)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r   r   rb   r   r   r   rl   rk   r   r   r   r  r   r   r   r  rt   rQ   rB   rB   rB   rC   r)   /  sD    







r)   c                   @   s4  e Zd ZdZdZdgZg dZdgZdZdZ	dZ
d	e
 d
Zdefdejfeddeeedfdedfgdefdejdfdejdfdefgdefdejdfdejdfdefdedfdefgeejdfe
ejdfdejdfdejdfdejdfdejdfdejdfd ejdfd!ejdfd"ejd#fdejd$fd%ejd&fdejd'fd(ejdfd)ed*fd+ed,fgdefdejfd-efd.edfe dgdefeddeeedfd-efd/edfgdejdfed0d1ejfgd2ejdfgd"ejdfd3eej!efed0d1ejfdejfgd%ejdfd4ejfdejfgd5ej!fd6ej!fgd7Z"d8S )9r*   z=
    Lexer for TOML, a simple language for config files.
    TOMLtoml)z*.tomlPipfilezpoetry.lockzapplication/tomlzhttps://toml.ior  z\d\d:\d\d:\d\d(\.\d+)?zm(?x)
                  \d\d\d\d-\d\d-\d\d # date, e.g., 1988-10-27
                (
                  [Tt ] z # optional time
                  (
                    [Zz]|[+-]\d\d:\d\d # optional time offset
                  )?
                )?
              r3   r  rq   z(=)(\s*)r6   z\[\[?	table-keyz[A-Za-z0-9_-]+r   basic-string'literal-stringz\.z\]\]?r7   [ \t]+z [+-]?\d[0-9_]*[eE][+-]?\d[0-9_]*z.[+-]?\d[0-9_]*\.\d[0-9_]*([eE][+-]?\d[0-9_]*)?z[+-]?(inf|nan)z
-?0b[01_]+z-?0o[0-7_]+z-?0x[0-9a-fA-F_]+z[+-]?[0-9_]+z""")r7   multiline-basic-string)r7   r  z''')r7   multiline-literal-string)r7   r  z
true|false\[)r7   arrayr  )r7   inline-tabler   \]r  rr   z[^"\\]+z.*?'r~  z[^']+z#\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}r   )r9   rq   r  r6   r  r  r  r  r  r  rr   N)#rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   _time	_datetimer   r   rO   r   r   r   r   r   r   r   r   r   Dater   r   BinOctHexr   r  r   rt   rQ   rB   rB   rB   rC   r*   [  s    
















&



 
r*   c                   @   sr  e Zd ZdZdZdZddgZdgZdZde	e
efd	e	e
ed
fde	e
edfde	e
efde	e
ee
ee
fde	e
efde	e
ee
ee
fde	e
efde	e
ee
eje
fde	e
ejefde	e
ejee
ee
fgeddefeddefdedfdedfgeddejfdedfdedfdedfgeddefeddedfded fgedd!ed
fd"edfgd#e
fgd$Zd%S )&r+   z
    Lexer for *NextedText*, a human-friendly data format.

    .. versionchanged:: 2.16
        Added support for *NextedText* v3.0.
    
NestedTextzhttps://nestedtext.org
nestedtextntz*.ntz2.9z^([ ]*)(#.*)$z^([ ]*)(\{)inline_dictz^([ ]*)(\[)inline_listz^([ ]*)(>)$z^([ ]*)(>)( )(.*?)([ \t]*)$z^([ ]*)(-)$z^([ ]*)(-)( )(.*?)([ \t]*)$z^([ ]*)(:)$z^([ ]*)(:)( )([^\n]*?)([ \t]*)$z^([ ]*)([^\{\[\s].*?)(:)$z)^([ ]*)([^\{\[\s].*?)(:)( )(.*?)([ \t]*)$ry  z[^\{\}\[\],\s]+inline_valuer   r  r7   rp   z[^\{\}\[\],:\s]+r  inline_dict_valuer  r   r  r  r  )r9   r  r  r  r  ry  N)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r   r   r   r   r
   r   r   r   r   rQ   rB   rB   rB   rC   r+     sZ    #	
r+   c                   @   s   e Zd ZdZdZdZdgZddgZdZe	j
e	jB e	jB ZdZdZd	Zeeejed
feeejed
feeeeefdefdefdefdefgdeedfgdZdd ZdS )r,   z1
    Lexer for Singularity definition files.
    SingularityzAhttps://www.sylabs.io/guides/3.0/user-guide/definition_files.htmlsingularityz*.defz2.6zS^(\s*)(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)zT^(%(?:pre|post|setup|environment|help|labels|test|runscript|files|startscript))(\s*)z6^(%app(?:install|help|run|labels|env|test|files))(\s*)scriptz	\s*#.*?\nz"\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\br  z
(?!^\s*%).z(.+?(?=^\s*%))|(.*)r7   )r9   r  c                 C   s>   d}t d| t jr|d7 }t tjdd | r|d7 }|S )zlThis is a quite simple script file, but there are a few keywords
        which seem unique to this language.r   z&\b(?:osversion|includecmd|mirrorurl)\bg      ?r=   Ng\(\?)r]   r^   r   r,   _section)r@   resultrB   rB   rC   rD   t  s   zSingularityLexer.analyse_textN)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r]   r   r_   DOTALLr   _headersr  _appsectr   r   Headingr   r   r
   r   r   r   r   rQ   rD   rB   rB   rB   rC   r,   U  s.    
r,   c                   @   sT   e Zd ZdZdZddgZg ZdZdZdde	fd	e
fd
efdefdefdefgiZdS )r-   z
    Lexer for Unix/Linux config files using colon-separated values, e.g.

    * ``/etc/group``
    * ``/etc/passwd``
    * ``/etc/shadow``
    zUnix/Linux config files
unixconfiglinuxconfigzUhttps://en.wikipedia.org/wiki/Configuration_file#Unix_and_Unix-like_operating_systemsz2.12r9   r  rp   r  r   z"((?!\n)[a-zA-Z0-9\_\-\s\(\),]){2,}z[^:\n]+N)rE   rF   rG   rH   rI   rJ   rK   rM   rN   r   r   r   r   r
   r   rQ   rB   rB   rB   rC   r-     s     r-   )4rH   r]   pygments.lexerr   r   r   r   r   r   r   r	   pygments.tokenr
   r   r   r   r   r   r   r   r   r   r   r   pygments.lexers.shellr   pygments.lexers.datar   __all__r   r   r   r   r   r~   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   rB   rB   rB   rC   <module>   sB    
(86,*8N=+ .# *//99, )R,