a
    ñ»jÒ  ã                   @   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
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ƒZ0G d.d/„ d/eƒZ1G d0d1„ d1eƒZ2G d2d3„ d3eƒZ3G d4d5„ d5eƒZ4G d6d7„ d7eƒZ5dS )8zÜ
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)	ÚExtendedRegexLexerÚ
RegexLexerÚdefaultÚwordsÚbygroupsÚincludeÚusingÚthisÚ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ÚUnixConfigLexerÚCaddyfileLexerc                   @   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.*$)Úrootr7   r8   c                 C   s:   |   d¡}|dk rdS | d dkr6| |d  dkr6dS dS )	NÚ
é   Fr   ú[é   ú]gš™™™™™é?)Úfind)ÚtextZnpos© rC   ú=E:\soccer\ml_env\Lib\site-packages\pygments/lexers/configs.pyÚanalyse_textJ   s    
zIniLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚurlÚversion_addedr   r   ÚSingler   r   r   Ú	Attributer   r   r   ÚtokensrE   rC   rC   rC   rD   r      sN   þÿýÿòÿüÿüé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.16r;   ú	^[ \t]*\nz
^(#.*)(\n)ú(\[[^\]\n]+\])(\n)zG([-A-Za-z0-9]+)(\[[^\] \t=]+\])?([ \t]*)(=)([ \t]*)([^\n]*)([ \t\n]*\n)c                 C   s2   |   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©rB   rC   rC   rD   rE   i   s
    
zDesktopLexer.analyse_textN)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r   r   r   rP   r   r   rQ   Ú	Namespacer   r   rR   rE   rC   rC   rC   rD   r   S   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*.scoperT   rU   z^([;#].*)(\n)rV   z*([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\\)(\n)r8   z&([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\n)z([ \t]*)([^\n]*)(\\)(\n)z([ \t]*)([^\n]*)(\n)r9   ©r;   r8   c                 C   s2   |   d¡rdS t d| d d… tj¡d ur.dS dS )Nz[Unit]rW   z^\[Unit\][ \t]*$rX   rY   rZ   r[   r`   rC   rC   rD   rE   •   s
    
zSystemdLexer.analyse_textN)rF   rG   rH   rI   rJ   rN   rK   rL   rO   r   r   r   rP   r   r   rQ   r   r   r   rR   rE   rC   rC   rC   rD   r   q   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.*r5   r6   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)r8   z(.*?)([ \t]*)(=)([ \t]*)ú-r9   z1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+)ú.+rd   c                 C   s
   |   d¡S )NzWindows Registry Editor)r\   r`   rC   rC   rD   rE   Ã   s    zRegeditLexer.analyse_textN)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r   r   r   rP   r   r   r   r   ÚBuiltinrQ   ÚVariabler   r   r   r   rR   rE   rC   rC   rC   rD   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]*))r9   r8   ú[^\S\n]+r9   z[^\\\n]+z(\\\n)([^\S\n]*)z
\\([\s\S]))r;   rp   r8   rq   N)rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   rP   r   r   r   rQ   r   r   r   r   ÚEscaperR   rC   rC   rC   rD   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?   r4   Ú{Ú}z(?:\t| z\t| {z})z.*\nrC   )ÚlevelZ	tab_widthZspace_repeatZlevel_repeatrC   rC   rD   Ú
_rx_indentÿ   s    rz   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-configrg   )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)rz   r   ÚDoc©ry   rC   rC   rD   Ú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)rz   r   r   r   r   r€   rC   rC   rD   Ú	do_indent(  s    ýzKconfigLexer.do_indentr5   ú#.*?\n)ZmainmenuÚconfigr}   ÚchoiceZ	endchoiceÚcommentZmenuZ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=   ru   r?   r9   )	r;   r“   Zindent7Zindent6Zindent5Zindent4Zindent3Zindent2Zindent1N)rF   rG   rH   rI   rJ   rK   rO   rL   rM   rN   Úflagsr�   r„   r   r   rP   r   r   r   rj   r   r   r   ÚIntegerr   ÚDoubler   r   rR   rC   rC   rC   rD   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+r5   z\$[{(]Úinterpolú\\.r9   ro   Ú.ú#pushz[})]z	[^${()}]+z\)ú,)r;   r¢   r¥   r    N)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r   r   r   r   r   ÚFunctionr   rk   ÚTyper   ÚReservedr   r   ÚClassÚDeclarationr   ÚFloatr›   ÚInterpolrs   rR   rC   rC   rC   rD   r   a  sn   ÿþÿ
ÿÿÿç
û

ýüØ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.6r5   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*r8   z\.+z\\\nz\n+r9   z\\rr   ú\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!"([^"\\]*(?:\\([\s\S])[^"\\]*)*)"z	[^\s"\\]+rd   N)rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r]   r_   Ú
IGNORECASErš   r   r   r   r   ÚTagr   rj   r   r   ÚOtherr   rœ   rR   rC   rC   rC   rD   r    ž  sB   ÿÿ
øýóõ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)ºZ
access_logZaclZalways_directZannounce_hostZannounce_periodZannounce_portZannounce_toZanonymize_headersZappend_domainZas_whois_serverZauth_param_basicZauthenticate_childrenZauthenticate_programZauthenticate_ttlZbroken_postsZbuffered_logsZcache_access_logZcache_announceÚ	cache_dirZcache_dns_programZcache_effective_groupZcache_effective_userZ
cache_hostZcache_host_aclZcache_host_domainZ	cache_logZ	cache_memZcache_mem_highZcache_mem_lowZ	cache_mgrZcachemgr_passwdZ
cache_peerZcache_peer_accessZcache_replacement_policyZcache_stoplistZcache_stoplist_patternZcache_store_logZ
cache_swapZcache_swap_highZcache_swap_logZcache_swap_lowZ	client_dbZclient_lifetimeZclient_netmaskÚconnect_timeoutZcoredump_dirZdead_peer_timeoutZdebug_optionsZdelay_accessZdelay_classZdelay_initial_bucket_levelZdelay_parametersZdelay_poolsZ	deny_infoZdns_childrenZdns_defnamesZdns_nameserversZdns_testnamesZemulate_httpd_logZerr_html_textZfake_user_agentZfirewall_ipZforwarded_forZforward_snmpd_portZfqdncache_sizeZftpget_optionsZftpget_programZftp_list_widthZftp_passiveZftp_userZhalf_closed_clientsZheader_accessZheader_replaceZhierarchy_stoplistZhigh_response_time_warningZhigh_page_fault_warningZ
hosts_fileZ	htcp_portZhttp_accessZhttp_anonymizerZhttpd_accelZhttpd_accel_hostZhttpd_accel_portZhttpd_accel_uses_host_headerZhttpd_accel_with_proxyZ	http_portZhttp_reply_accessZ
icp_accessZicp_hit_staleZicp_portZicp_query_timeoutZident_lookupZident_lookup_accessZident_timeoutZincoming_http_averageZincoming_icp_averageZinside_firewallZipcache_highZipcache_lowZipcache_sizeZlocal_domainZlocal_ipZlogfile_rotateZlog_fqdnZlog_icp_queriesZlog_mime_hdrsZmaximum_object_sizeZmaximum_single_addr_triesZmcast_groupsZmcast_icp_query_timeoutZmcast_miss_addrZmcast_miss_encode_keyZmcast_miss_portZmemory_poolsZmemory_pools_limitZmemory_replacement_policyZ
mime_tableZmin_http_poll_cntZmin_icp_poll_cntZminimum_direct_hopsZminimum_object_sizeZminimum_retry_timeoutZmiss_accessZnegative_dns_ttlZnegative_ttlZneighbor_timeoutZneighbor_type_domainZ
netdb_highZ	netdb_lowZnetdb_ping_periodZnetdb_ping_rateZnever_directÚno_cacheZpassthrough_proxyZpconn_timeoutZpid_filenameZpinger_programZpositive_dns_ttlZprefer_directÚ
proxy_authZproxy_auth_realmZ
query_icmpZquick_abortZquick_abort_maxZquick_abort_minZquick_abort_pctZrange_offset_limitÚread_timeoutZredirect_childrenZredirect_programZredirect_rewrites_host_headerZreference_ageZrefresh_patternZreload_into_imsZrequest_body_max_sizeZrequest_sizeÚrequest_timeoutZshutdown_lifetimeZsingle_parent_bypassZsiteselect_timeoutZsnmp_accessZsnmp_incoming_addressZ	snmp_portZsource_pingZ	ssl_proxyZstore_avg_object_sizeZstore_objects_per_bucketZstrip_query_termsZswap_level1_dirsZswap_level2_dirsZtcp_incoming_addressZtcp_outgoing_addressZtcp_recv_bufsizeZtest_reachabilityZudp_hit_objZudp_hit_obj_sizeZudp_incoming_addressZudp_outgoing_addressZunique_hostnameZunlinkd_programZuri_whitespaceZuseragent_logZvisible_hostnameZ
wais_relayZwais_relay_hostZwais_relay_port)z
proxy-onlyÚweightÚttlzno-queryr   zround-robinzmulticast-responderÚonÚoffÚallZdenyZallowZviaÚparentz	no-digestÚheapZlruÚrealmÚchildrenÚq1Úq2ZcredentialsttlÚnoneÚdisableZoffline_toggleZdiskd)ÚshutdownÚinfoZ	parameterZserver_listZclient_listr»   )ÚobjectsZ
vm_objectsZutilizationZipcacheZ	fqdncacheZdnsZ
redirectorÚioZreply_headersZfiledescriptorsZnetdb)ÚstatusÚenablerÏ   Úclear)Z	url_regexZurlpath_regexZreferer_regexÚportÚprotoZreq_mime_typeZrep_mime_typeÚmethodZbrowserÚuserÚsrcÚdstÚtimeZ	dstdomainÚidentZsnmp_communityz(\d+|0x[0-9a-f]+)ú(z(\.z){3})z([0-9a-f]{0,4})z(:z){1,7})ú|ú)z(/(z|\d+))?r5   ú#rˆ   r�   ©Úprefixr’   zstats/zlog/ú=z(?:\b\d+\b(?:-\b\d+|%)?)r•   z	\s*TAG:.*r9   ri   )r;   rˆ   N)&rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r]   r¶   rš   ÚkeywordsÚoptsZactionsZactions_statsZactions_logZaclsZ
ipv4_groupZipv4Z
ipv6_groupZipv6Zbare_ipÚipr   r   r   r   r   ÚConstantr   r   r¯   r   rs   r   rR   rC   rC   rC   rD   r!   É  sJ   ;ô
ýñ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ú;r9   ú#.*\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;#]*r5   z[$;])r;   rð   rì   rí   N)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r   r   r   r   r   r   ra   r   rP   ré   rk   r   r›   r   ÚRegexr   rR   rC   rC   rC   rD   r"   J  sF   ý
ýýÿòð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ë   r;   rò   z/\S*z[a-zA-Z._-]+rµ   r”   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r5   N)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r   rP   r   r   r   r   rj   r   r   rœ   r   rR   rC   rC   rC   rD   r#   x  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*)r;   ú#.*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)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   Z	_keywordsZ_bash_keywordsZ_lbr]   r¶   r_   rš   r   r   r   r   r   r   r   r   rR   rC   rC   rC   rD   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ÚproviderZprovisionerÚresourceÚvariablez({})rà   )	r¢   ÚnumberÚboolÚlistÚtupleÚmapÚsetÚobjectÚnull)	ÚabsÚceilÚfloorÚlogÚmaxZmixZparseintÚpowZsignum)ZchompÚformatZ
formatlistr~   ÚjoinÚlowerÚregexZregexallÚreplaceÚsplitZstrrevÚsubstrÚtitleZtrimZ
trimprefixZ
trimsuffixZ	trimspaceÚupper)ZalltrueZanytrueZ	chunklistZcoalesceZcoalescelistÚcompactÚconcatÚcontainsZdistinctÚelementÚflattenÚindexÚkeysÚlengthr	  Úlookupr  Z	matchkeysÚmergerŽ   ÚreverseZsetintersectionZ
setproductZsetsubtractZsetunionÚsliceÚsortÚsumZ	transposeÚvaluesZzipmap)Zbase64decodeZbase64encodeZ
base64gzipZ	csvdecodeZ
jsondecodeZ
jsonencodeZtextdecodebase64Ztextencodebase64Ú	urlencodeZ
yamldecodeZ
yamlencode)	ÚabspathÚdirnameZ
pathexpandÚbasenameÚfileZ
fileexistsZfilesetZ
filebase64Ztemplatefile)Ú
formatdateZtimeaddÚ	timestamp)Zbase64sha256Zbase64sha512ZbcryptZfilebase64sha256Zfilebase64sha512Zfilemd5Zfilesha1Z
filesha256Z
filesha512Úmd5Z
rsadecryptÚsha1Úsha256Úsha512ÚuuidZuuidv5)ZcidrhostZcidrnetmaskZ
cidrsubnetZcidrsubnets)	ZcanÚdefaultsZtoboolÚtolistZtomapZtonumberZtosetZ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 ]~}|r¦| ¡  ¡ }n| ¡  ¡ }||k�r|D ]}|  ¡ tj| ¡ fV  qÀ|  ¡ tj| ¡ fV  | ¡ |_ �q0q�| |¡ q�|D ]}|  ¡ t| ¡ fV  �qt|j
ƒ|_d S )Nr?   ru   r=   T)Ústartr   Úgroupr   Ú	DelimiterÚposÚendÚHeredocr
   ÚfinditerrB   ÚstripÚrstripÚappendr   Úlen)	ÚselfÚmatchÚctxr<  ZhdnameZtolerantÚlinesÚcheckZamatchrC   rC   rD   Úheredoc_callbackò  s0    




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\*/r9   z[*/]ro   r5   ú(\\)(\n))r;   rM  rQ  rR  rˆ   rN  N)4rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   Úclassesr  r  Z
classes_reÚtypesZnumeric_functionsZstring_functionsZcollection_functionsZencoding_functionsZfilesystem_functionsZdate_time_functionsZhash_crypto_functionsZip_network_functionsZtype_conversion_functionsÚbuiltinsZbuiltins_rerL  r   r   r   rœ   r   r   ré   r   r«   r   r   Ú	MultilinerP   r   rj   r   r   rQ   r   rª   r¬   r­   rk   r   rR   rC   rC   rC   rD   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#:|]+Únamesr5   ro   r9   ú:Údefsú\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*rƒ   ú(#)([0-9]+)rå   r  z	[^\s:=#]+z\\072z[^:\\]+r§   ©r;   r[  r]  r  N)rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   r   r·   r   r   rQ   r   r   r   r   r­   r   rR   rC   rC   rC   rD   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[  r5   ro   r9   z(,)([ \t]*)r]  r^  z[^,|]+z\n[ \t]+rƒ   r_  rå   r  z	[^\s,=#]+z\\[,\\]z[^\\,]+r§   r`  N)rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   r   r·   r   r   r   rQ   r   r   r­   r   rR   rC   rC   rC   rD   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Úinterpr5   z[^${}#=:\n.]+r§   z\$\$z\$\{Úcurlyrî   r9   r¤   ro   z[^${}#\n\s]+)r;   rg  rh  rf  N)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r   rP   r   r   rQ   r   r·   r   r   r   r   r   r°   rR   rC   rC   rC   rD   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ÿ   r;   re  z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ur�   r‘   r5   r§   N)rF   rG   rH   rI   rJ   rN   rK   rL   rM   rO   r   rP   r   r   r   r   rQ   r   r   rk   r   rR   rC   rC   rC   rD   r)   ÷  s2   ÿÿûú	åÿ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§   r5   r¦   z[^"]r9   z[^/]z[^*)]r¨   z\*\)z[)*])r;   r¢   r  rˆ   N)rF   rG   rH   rI   rJ   rN   rK   rL   rO   r   r   ra   r   r   r®   rk   rj   r   r«   r   rW  r   r   rœ   ró   rs   rR   rC   rC   rC   rD   r*   0  sB   


ô
ý
ý

üçr*   c                   @   s<  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dej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.iorm  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
                  )?
                )?
              r5   rú   rp   z(=)(\s*)r8   z\[\[?ú	table-keyz[A-Za-z0-9_-]+r¡   úbasic-stringú'úliteral-stringz\.z\]\]?r9   ú[ \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""")r9   úmultiline-basic-string)r9   rr  z''')r9   úmultiline-literal-string)r9   rt  z
true|falseú\[)r9   Úarrayrï   )r9   úinline-tabler©   ú\]rî   rq   z[^"\\]+z.*?'rS  z[^']+z5\\x[0-9a-fA-F]{2}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}r¦   )r;   rp   rq  r8   ry  rz  rr  rt  rv  rw  rq   N)#rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   Ú_timeÚ	_datetimer   r   rP   r   r   r   r   r   r   rœ   r   r   ÚDater   r¯   ÚBinÚOctÚHexr›   ré   r   rs   rR   rC   rC   rC   rD   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]*)$rN  z[^\{\}\[\],\s]+Úinline_valuer©   r{  r9   ro   z[^\{\}\[\],:\s]+r\  Úinline_dict_valuerî   rƒ   rï   rx  ru  )r;   r†  r…  rˆ  r‡  rN  N)rF   rG   rH   rI   rJ   rN   rK   rL   rO   r   r   r   r   r   r   r·   r   r   rR   rC   rC   rC   rD   r,     sX   à#ú	ûûýÿÂ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]+))\bru  z
(?!^\s*%).z(.+?(?=^\s*%))|(.*)r9   )r;   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)rB   ÚresultrC   rC   rD   rE   u  s    zSingularityLexer.analyse_textN)rF   rG   rH   rI   rJ   rN   rK   rL   rO   r]   r¶   r_   ÚDOTALLrš   Ú_headersrŒ  Z_appsectr   r   ÚHeadingr   r   r   r   r   r   r   rR   rE   rC   rC   rC   rD   r-   V  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.12r;   rZ  ro   r\  r”   z"((?!\n)[a-zA-Z0-9\_\-\s\(\),]){2,}z[^:\n]+N)rF   rG   rH   rI   rJ   rK   rL   rN   rO   r   r   r   r   r   r   rR   rC   rC   rC   rD   r.   ‚  s   úÿr.   c                   @   sò   e Zd ZdZdZdZddgZdgZdZdZ	dd	 
e	¡ d
 eeeƒfdefdejfdeeejeeƒejeejƒfdejfdefdejfdejdfdejdfdefdefgdejfdejfdejfdejdfdejfgdejfdejdfgdœZdS )r/   zU
    Lexer for Caddyfile, the configuration file format of the Caddy web server.
    Z	Caddyfilez&https://caddyserver.com/docs/caddyfileZ	caddyfileZcaddyz2.21)!ÚabortZacme_serverÚ
basic_authÚbindÚencodeÚerrorZfile_serverZforward_authÚhandleZhandle_errorsZhandle_pathÚheaderÚimportZinvoker  r  ZmetricsZphp_fastcgiÚpushZredirÚrequest_bodyZrequest_headerZrespondZreverse_proxyZrewriter;   ZrouteZ	templatesÚtlsÚtracingZ	try_filesÚuriÚvarsz((?:\A|\s*\n)[ \t]*)(rà   z)\br5   rú   z;(<<)([a-zA-Z_]\w*)(.*\n)((?:.*\n)*?)([ \t]*)(\2)(?=[ \t]*$)z\{[^{}\s]+\}z[(){}]z@[\w.-]+r¡   r¢   ú`Úbacktickz'\d+(?:\.\d+)?[a-zA-Z]*(?=[\s#{}()"`]|$)z[^\s#{}()"`]+r¦   z[^"\\{]+r9   r§   z[^`]+)r;   r¢   r¢  N) rF   rG   rH   rI   rJ   rN   rK   rL   rO   Z
directivesr  r   r   r   r   rP   r   r   r>  r   r	   rA  r   rk   r   Ú	Decoratorrœ   ÚBacktickr   r   rs   rR   rC   rC   rC   rD   r/   �  sF   ÿ
ÿÿ

å
û
þÛr/   )6rI   r]   Zpygments.lexerr   r   r   r   r   r   r   r	   r
   Zpygments.tokenr   r   r   r   r   r   r   r   r   r   r   r   Zpygments.lexers.shellr   Zpygments.lexers.datar   Ú__all__r   r   r   r   r   rz   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   rC   rC   rC   rD   Ú<module>   sB   
,8	6,*8N=+ .# *//99, )R,