2025-05-30 11:06:08 +02:00
/ * P r i s m J S 1 . 3 0 . 0
https : //prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+bash+c+csharp+cpp+docker+elixir+erlang+go+go-module+ini+java+json+kotlin+lua+makefile+markup-templating+nginx+nix+perl+php+promql+python+r+jsx+tsx+ruby+rust+scala+sql+swift+typescript&plugins=show-invisibles+show-language+toolbar+copy-to-clipboard */
var _self = "undefined" != typeof window ? window : "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope ? self : { } , Prism = function ( e ) { var n = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i , t = 0 , r = { } , a = { manual : e . Prism && e . Prism . manual , disableWorkerMessageHandler : e . Prism && e . Prism . disableWorkerMessageHandler , util : { encode : function e ( n ) { return n instanceof i ? new i ( n . type , e ( n . content ) , n . alias ) : Array . isArray ( n ) ? n . map ( e ) : n . replace ( /&/g , "&" ) . replace ( /</g , "<" ) . replace ( /\u00a0/g , " " ) } , type : function ( e ) { return Object . prototype . toString . call ( e ) . slice ( 8 , - 1 ) } , objId : function ( e ) { return e . _ _id || Object . defineProperty ( e , "__id" , { value : ++ t } ) , e . _ _id } , clone : function e ( n , t ) { var r , i ; switch ( t = t || { } , a . util . type ( n ) ) { case "Object" : if ( i = a . util . objId ( n ) , t [ i ] ) return t [ i ] ; for ( var l in r = { } , t [ i ] = r , n ) n . hasOwnProperty ( l ) && ( r [ l ] = e ( n [ l ] , t ) ) ; return r ; case "Array" : return i = a . util . objId ( n ) , t [ i ] ? t [ i ] : ( r = [ ] , t [ i ] = r , n . forEach ( ( function ( n , a ) { r [ a ] = e ( n , t ) } ) ) , r ) ; default : return n } } , getLanguage : function ( e ) { for ( ; e ; ) { var t = n . exec ( e . className ) ; if ( t ) return t [ 1 ] . toLowerCase ( ) ; e = e . parentElement } return "none" } , setLanguage : function ( e , t ) { e . className = e . className . replace ( RegExp ( n , "gi" ) , "" ) , e . classList . add ( "language-" + t ) } , currentScript : function ( ) { if ( "undefined" == typeof document ) return null ; if ( document . currentScript && "SCRIPT" === document . currentScript . tagName ) return document . currentScript ; try { throw new Error } catch ( r ) { var e = ( /at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i . exec ( r . stack ) || [ ] ) [ 1 ] ; if ( e ) { var n = document . getElementsByTagName ( "script" ) ; for ( var t in n ) if ( n [ t ] . src == e ) return n [ t ] } return null } } , isActive : function ( e , n , t ) { for ( var r = "no-" + n ; e ; ) { var a = e . classList ; if ( a . contains ( n ) ) return ! 0 ; if ( a . contains ( r ) ) return ! 1 ; e = e . parentElement } return ! ! t } } , languages : { plain : r , plaintext : r , text : r , txt : r , extend : function ( e , n ) { var t = a . util . clone ( a . languages [ e ] ) ; for ( var r in n ) t [ r ] = n [ r ] ; return t } , insertBefore : function ( e , n , t , r ) { var i = ( r = r || a . languages ) [ e ] , l = { } ; for ( var o in i ) if ( i . hasOwnProperty ( o ) ) { if ( o == n ) for ( var s in t ) t . hasOwnProperty ( s ) && ( l [ s ] = t [ s ] ) ; t . hasOwnProperty ( o ) || ( l [ o ] = i [ o ] ) } var u = r [ e ] ; return r [ e ] = l , a . languages . DFS ( a . languages , ( function ( n , t ) { t === u && n != e && ( this [ n ] = l ) } ) ) , l } , DFS : function e ( n , t , r , i ) { i = i || { } ; var l = a . util . objId ; for ( var o in n ) if ( n . hasOwnProperty ( o ) ) { t . call ( n , o , n [ o ] , r || o ) ; var s = n [ o ] , u = a . util . type ( s ) ; "Object" !== u || i [ l ( s ) ] ? "Array" !== u || i [ l ( s ) ] || ( i [ l ( s ) ] = ! 0 , e ( s , t , o , i ) ) : ( i [ l ( s ) ] = ! 0 , e ( s , t , null , i ) ) } } } , plugins : { } , highlightAll : function ( e , n ) { a . highlightAllUnder ( document , e , n ) } , highlightAllUnder : function ( e , n , t ) { var r = { callback : t , container : e , selector : 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code' } ; a . hooks . run ( "before-highlightall" , r ) , r . elements = Array . prototype . slice . apply ( r . container . querySelectorAll ( r . selector ) ) , a . hooks . run ( "before-all-elements-highlight" , r ) ; for ( var i , l = 0 ; i = r . elements [ l ++ ] ; ) a . highlightElement ( i , ! 0 === n , r . callback ) } , highlightElement : function ( n , t , r ) { var i = a . util . getLanguage ( n ) , l = a . languages [ i ] ; a . util . setLanguage ( n , i ) ; var o = n . parentElement ; o && "pre" === o . nodeName . toLowerCase ( ) && a . util . setLanguage ( o , i ) ; var s = { element : n , language : i , grammar : l , code : n . textContent } ; function u ( e ) { s . highlightedCode = e , a . hooks . run ( "before-insert" , s ) , s . element . innerHTML = s . highlightedCode , a . hooks . run ( "after-highlight" , s ) , a . hooks . run ( "complete" , s ) , r && r . call ( s . element ) } if ( a . hooks . run ( "before-sanity-check" , s ) , ( o = s . element . parentElement ) && "pre" === o . nodeName . toLowerCase ( ) && ! o . hasAttribute ( "tabindex" ) && o . setAttribute ( "tabindex" , "0" ) , ! s . code ) return a . hooks . run ( "complete" , s ) , void ( r && r . call ( s . element ) ) ; if ( a . hooks . run ( "before-highlight" , s ) , s . grammar ) if ( t && e . Worker ) { var c = new Worker ( a . filename ) ; c . onmessage = function ( e ) { u ( e . data ) } , c . postMessage ( JSON . stringify ( { language : s . language , code : s . code , immediateClose : ! 0 } ) ) } else u ( a . highlight ( s . code , s . grammar , s . language ) ) ; else u ( a . util . encode ( s . code ) ) } , highlight : function ( e , n , t ) { var r = { code : e , grammar : n , language : t } ; if ( a . hooks . run ( "before-tokenize" , r ) , ! r . grammar ) throw new Error ( 'The language "' + r . language + '" has no grammar.' ) ; return r . tokens = a . tokenize ( r . code , r . grammar ) , a . hooks . run ( "after-tokenize" , r ) , i . stringify ( a . util . encode ( r . tokens ) , r . language ) } ,
2023-12-27 11:23:52 +01:00
Prism . languages . markup = { comment : { pattern : /<!--(?:(?!<!--)[\s\S])*?-->/ , greedy : ! 0 } , prolog : { pattern : /<\?[\s\S]+?\?>/ , greedy : ! 0 } , doctype : { pattern : /<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i , greedy : ! 0 , inside : { "internal-subset" : { pattern : /(^[^\[]*\[)[\s\S]+(?=\]>$)/ , lookbehind : ! 0 , greedy : ! 0 , inside : null } , string : { pattern : /"[^"]*"|'[^']*'/ , greedy : ! 0 } , punctuation : /^<!|>$|[[\]]/ , "doctype-tag" : /^DOCTYPE/i , name : /[^\s<>'"]+/ } } , cdata : { pattern : /<!\[CDATA\[[\s\S]*?\]\]>/i , greedy : ! 0 } , tag : { pattern : /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/ , greedy : ! 0 , inside : { tag : { pattern : /^<\/?[^\s>\/]+/ , inside : { punctuation : /^<\/?/ , namespace : /^[^\s>\/:]+:/ } } , "special-attr" : [ ] , "attr-value" : { pattern : /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/ , inside : { punctuation : [ { pattern : /^=/ , alias : "attr-equals" } , { pattern : /^(\s*)["']|["']$/ , lookbehind : ! 0 } ] } } , punctuation : /\/?>/ , "attr-name" : { pattern : /[^\s>\/]+/ , inside : { namespace : /^[^\s>\/:]+:/ } } } } , entity : [ { pattern : /&[\da-z]{1,8};/i , alias : "named-entity" } , /&#x?[\da-f]{1,8};/i ] } , Prism . languages . markup . tag . inside [ "attr-value" ] . inside . entity = Prism . languages . markup . entity , Prism . languages . markup . doctype . inside [ "internal-subset" ] . inside = Prism . languages . markup , Prism . hooks . add ( "wrap" , ( function ( a ) { "entity" === a . type && ( a . attributes . title = a . content . replace ( /&/ , "&" ) ) } ) ) , Object . defineProperty ( Prism . languages . markup . tag , "addInlined" , { value : function ( a , e ) { var s = { } ; s [ "language-" + e ] = { pattern : /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i , lookbehind : ! 0 , inside : Prism . languages [ e ] } , s . cdata = /^<!\[CDATA\[|\]\]>$/i ; var t = { "included-cdata" : { pattern : /<!\[CDATA\[[\s\S]*?\]\]>/i , inside : s } } ; t [ "language-" + e ] = { pattern : /[\s\S]+/ , inside : Prism . languages [ e ] } ; var n = { } ; n [ a ] = { pattern : RegExp ( "(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)" . replace ( /__/g , ( function ( ) { return a } ) ) , "i" ) , lookbehind : ! 0 , greedy : ! 0 , inside : t } , Prism . languages . insertBefore ( "markup" , "cdata" , n ) } } ) , Object . defineProperty ( Prism . languages . markup . tag , "addAttribute" , { value : function ( a , e ) { Prism . languages . markup . tag . inside [ "special-attr" ] . push ( { pattern : RegExp ( "(^|[\"'\\s])(?:" + a + ")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))" , "i" ) , lookbehind : ! 0 , inside : { "attr-name" : /^[^\s=]+/ , "attr-value" : { pattern : /=[\s\S]+/ , inside : { value : { pattern : /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/ , lookbehind : ! 0 , alias : [ e , "language-" + e ] , inside : Prism . languages [ e ] } , punctuation : [ { pattern : /^=/ , alias : "attr-equals" } , /"|'/ ] } } } } ) } } ) , Prism . languages . html = Prism . languages . markup , Prism . languages . mathml = Prism . languages . markup , Prism . languages . svg = Prism . languages . markup , Prism . languages . xml = Prism . languages . extend ( "markup" , { } ) , Prism . languages . ssml = Prism . languages . xml , Prism . languages . atom = Prism . languages . xml , Prism . languages . rss = Prism . languages . xml ;
! function ( s ) { var e = /(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/ ; s . languages . css = { comment : /\/\*[\s\S]*?\*\// , atrule : { pattern : RegExp ( "@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|" + e . source + ")*?(?:;|(?=\\s*\\{))" ) , inside : { rule : /^@[\w-]+/ , "selector-function-argument" : { pattern : /(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/ , lookbehind : ! 0 , alias : "selector" } , keyword : { pattern : /(^|[^\w-])(?:and|not|only|or)(?![\w-])/ , lookbehind : ! 0 } } } , url : { pattern : RegExp ( "\\burl\\((?:" + e . source + "|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)" , "i" ) , greedy : ! 0 , inside : { function : /^url/i , punctuation : /^\(|\)$/ , string : { pattern : RegExp ( "^" + e . source + "$" ) , alias : "url" } } } , selector : { pattern : RegExp ( "(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|" + e . source + ")*(?=\\s*\\{)" ) , lookbehind : ! 0 } , string : { pattern : e , greedy : ! 0 } , property : { pattern : /(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i , lookbehind : ! 0 } , important : /!important\b/i , function : { pattern : /(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i , lookbehind : ! 0 } , punctuation : /[(){};:,]/ } , s . languages . css . atrule . inside . rest = s . languages . css ; var t = s . languages . markup ; t && ( t . tag . addInlined ( "style" , "css" ) , t . tag . addAttribute ( "style" , "css" ) ) } ( Prism ) ;
Prism . languages . clike = { comment : [ { pattern : /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/ , lookbehind : ! 0 , greedy : ! 0 } , { pattern : /(^|[^\\:])\/\/.*/ , lookbehind : ! 0 , greedy : ! 0 } ] , string : { pattern : /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/ , greedy : ! 0 } , "class-name" : { pattern : /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i , lookbehind : ! 0 , inside : { punctuation : /[.\\]/ } } , keyword : /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/ , boolean : /\b(?:false|true)\b/ , function : /\b\w+(?=\()/ , number : /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i , operator : /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/ , punctuation : /[{}[\];(),.:]/ } ;
Prism . languages . javascript = Prism . languages . extend ( "clike" , { "class-name" : [ Prism . languages . clike [ "class-name" ] , { pattern : /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/ , lookbehind : ! 0 } ] , keyword : [ { pattern : /((?:^|\})\s*)catch\b/ , lookbehind : ! 0 } , { pattern : /(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/ , lookbehind : ! 0 } ] , function : /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/ , number : { pattern : RegExp ( "(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])" ) , lookbehind : ! 0 } , operator : /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/ } ) , Prism . languages . javascript [ "class-name" ] [ 0 ] . pattern = /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/ , Prism . languages . insertBefore ( "javascript" , "keyword" , { regex : { pattern : RegExp ( "((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))" ) , lookbehind : ! 0 , greedy : ! 0 , inside : { "regex-source" : { pattern : /^(\/)[\s\S]+(?=\/[a-z]*$)/ , lookbehind : ! 0 , alias : "language-regex" , inside : Prism . languages . regex } , "regex-delimiter" : /^\/|\/$/ , "regex-flags" : /^[a-z]+$/ } } , "function-variable" : { pattern : /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/ , alias : "function" } , parameter : [ { pattern : /(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/ , lookbehind : ! 0 , inside : Prism . languages . javascript } , { pattern : /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i , lookbehind : ! 0 , inside : Prism . languages . javascript } , { pattern : /(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/ , lookbehind : ! 0 , inside : Prism . languages . javascript } , { pattern : /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/ , lookbehind : ! 0 , inside : Prism . languages . javascript } ] , constant : /\b[A-Z](?:[A-Z_]|\dx?)*\b/ } ) , Prism . languages . insertBefore ( "javascript" , "string" , { hashbang : { pattern : /^#!.*/ , greedy : ! 0 , alias : "comment" } , "template-string" : { pattern : /`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/ , greedy : ! 0 , inside : { "template-punctuation" : { pattern : /^`|`$/ , alias : "string" } , interpolation : { pattern : /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/ , lookbehind : ! 0 , inside : { "interpolation-punctuation" : { pattern : /^\$\{|\}$/ , alias : "punctuation" } , rest : Prism . languages . javascript } } , string : /[\s\S]+/ } } , "string-property" : { pattern : /((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m , lookbehind : ! 0 , greedy : ! 0 , alias : "property" } } ) , Prism . languages . insertBefore ( "javascript" , "operator" , { "literal-property" : { pattern : / ( ( ? : ^
! function ( e ) { var t = "\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b" , a = { pattern : /(^(["']?)\w+\2)[ \t]+\S.*/ , lookbehind : ! 0 , alias : "punctuation" , inside : null } , n = { bash : a , environment : { pattern : RegExp ( "\\$" + t ) , alias : "constant" } , variable : [ { pattern : /\$?\(\([\s\S]+?\)\)/ , greedy : ! 0 , inside : { variable : [ { pattern : /(^\$\(\([\s\S]+)\)\)/ , lookbehind : ! 0 } , /^\$\(\(/ ] , number : /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/ , operator : /--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/ , punctuation : /\(\(?|\)\)?|,|;/ } } , { pattern : /\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/ , greedy : ! 0 , inside : { variable : /^\$\(|^`|\)$|`$/ } } , { pattern : /\$\{[^}]+\}/ , greedy : ! 0 , inside : { operator : /:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/ , punctuation : /[\[\]]/ , environment : { pattern : RegExp ( "(\\{)" + t ) , lookbehind : ! 0 , alias : "constant" } } } , /\$(?:\w+|[#?*!@$])/ ] , entity : /\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/ } ; e . languages . bash = { shebang : { pattern : /^#!\s*\/.*/ , alias : "important" } , comment : { pattern : /(^|[^"{\\$])#.*/ , lookbehind : ! 0 } , "function-name" : [ { pattern : /(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/ , lookbehind : ! 0 , alias : "function" } , { pattern : /\b[\w-]+(?=\s*\(\s*\)\s*\{)/ , alias : "function" } ] , "for-or-select" : { pattern : /(\b(?:for|select)\s+)\w+(?=\s+in\s)/ , alias : "variable" , lookbehind : ! 0 } , "assign-left" : { pattern : /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/ , inside : { environment : { pattern : RegExp ( "(^|[\\s;|&]|[<>]\\()" + t ) , lookbehind : ! 0 , alias : "constant" } } , alias : "variable" , lookbehind : ! 0 } , parameter : { pattern : /(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/ , alias : "variable" , lookbehind : ! 0 } , string : [ { pattern : /((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/ , lookbehind : ! 0 , greedy : ! 0 , inside : n } , { pattern : /((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/ , lookbehind : ! 0 , greedy : ! 0 , inside : { bash : a } } , { pattern : /(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/ , lookbehind : ! 0 , greedy : ! 0 , inside : n } , { pattern : /(^|[^$\\])'[^']*'/ , lookbehind : ! 0 , greedy : ! 0 } , { pattern : /\$'(?:[^'\\]|\\[\s\S])*'/ , greedy : ! 0 , inside : { entity : n . entity } } ] , environment : { pattern : RegExp ( "\\$?" + t ) , alias : "constant" } , variable : n . variable , function : { pattern : / ( ^ | [ \ s ; | & ] | [ < > ] \ ( ) ( ? : a d d | a p r o p o s | a p t | a p t - c a c h e | a p t - g e t | a p t i t u d e | a s p e l l | a u t o m y s q l b a c k u p | a w k | b a s e n a m e | b a s h | b c | b c o n s o l e | b g | b z i p 2 | c a l | c a r g o | c a t | c f d i s k | c h g r p | c h k c o n f i g | c h m o d | c h o w n | c h r o o t | c k s u m | c l e a r | c m p | c o l u m n | c o m m | c o m p o s e r | c p | c r o n | c r o n t a b | c s p l i t | c u r l | c u t | d a t e | d c | d d | d d r e s c u e | d e b o o t s t r a p | d f | d i f f | d i f f 3 | d i g | d i r | d i r c o l o r s | d i r n a m e | d i r s | d m e s g | d o c k e r | d o c k e r - c o m p o s e | d u | e g r e p | e j e c t | e n v | e t h t o o l | e x p a n d | e x p e c t | e x p r | f d f o r m a t | f d i s k | f g | f g r e p | f i l e | f i n d | f m t | f o l d | f o r m a t | f r e e | f s c k | f t p | f u s e r | g a w k | g i t | g p a r t e d | g r e p | g r o u p a d d | g r o u p d e l | g r o u p m o d | g r o u p s | g r u b - m k c o n f i g | g z i p | h a l t | h e a d | h g | h i s t o r y | h o s t | h o s t n a m e | h t o p | i c o n v | i d | i f c o n f i g | i f d o w n | i f u p | i m p o r t | i n s t a l l | i p | j a v a | j o b s | j o i n | k i l l | k i l l a l l | l e s s | l i n k | l n | l o c a t e | l o g n a m e | l o g r o t a t e | l o o k | l p c | l p r | l p r i n t | l p r i n t d | l p r i n t q | l p r m | l s | l s o f | l y n x | m a k e | m a n | m c | m d a d m | m k c o n f i g | m k d i r | m k e 2 f s | m k f i f o | m k f s | m k i s o f s | m k n o d | m k s w a p | m m v | m o r e | m o s t | m o u n t | m t o o l s
Prism . languages . c = Prism . languages . extend ( "clike" , { comment : { pattern : /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/ , greedy : ! 0 } , string : { pattern : /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/ , greedy : ! 0 } , "class-name" : { pattern : /(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/ , lookbehind : ! 0 } , keyword : /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/ , function : /\b[a-z_]\w*(?=\s*\()/i , number : /(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i , operator : />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/ } ) , Prism . languages . insertBefore ( "c" , "string" , { char : { pattern : /'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/ , greedy : ! 0 } } ) , Prism . languages . insertBefore ( "c" , "string" , { macro : { pattern : /(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im , lookbehind : ! 0 , greedy : ! 0 , alias : "property" , inside : { string : [ { pattern : /^(#\s*include\s*)<[^>]+>/ , lookbehind : ! 0 } , Prism . languages . c . string ] , char : Prism . languages . c . char , comment : Prism . languages . c . comment , "macro-name" : [ { pattern : /(^#\s*define\s+)\w+\b(?!\()/i , lookbehind : ! 0 } , { pattern : /(^#\s*define\s+)\w+\b(?=\()/i , lookbehind : ! 0 , alias : "function" } ] , directive : { pattern : /^(#\s*)[a-z]+/ , lookbehind : ! 0 , alias : "keyword" } , "directive-hash" : /^#/ , punctuation : /##|\\(?=[\r\n])/ , expression : { pattern : /\S[\s\S]*/ , inside : Prism . languages . c } } } } ) , Prism . languages . insertBefore ( "c" , "function" , { constant : /\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/ } ) , delete Prism . languages . c . boolean ;
! function ( e ) { function n ( e , n ) { return e . replace ( /<<(\d+)>>/g , ( function ( e , s ) { return "(?:" + n [ + s ] + ")" } ) ) } function s ( e , s , a ) { return RegExp ( n ( e , s ) , a || "" ) } function a ( e , n ) { for ( var s = 0 ; s < n ; s ++ ) e = e . replace ( /<<self>>/g , ( function ( ) { return "(?:" + e + ")" } ) ) ; return e . replace ( /<<self>>/g , "[^\\s\\S]" ) } var t = "bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void" , r = "class enum interface record struct" , i = "add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)" , o = "abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield" ; function l ( e ) { return "\\b(?:" + e . trim ( ) . replace ( / /g , "|" ) + ")\\b" } var d = l ( r ) , p = RegExp ( l ( t + " " + r + " " + i + " " + o ) ) , c = l ( r + " " + i + " " + o ) , u = l ( t + " " + r + " " + o ) , g = a ( "<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>" , 2 ) , b = a ( "\\((?:[^()]|<<self>>)*\\)" , 2 ) , h = "@?\\b[A-Za-z_]\\w*\\b" , f = n ( "<<0>>(?:\\s*<<1>>)?" , [ h , g ] ) , m = n ( "(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*" , [ c , f ] ) , k = "\\[\\s*(?:,\\s*)*\\]" , y = n ( "<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?" , [ m , k ] ) , w = n ( "[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>" , [ g , b , k ] ) , v = n ( "\\(<<0>>+(?:,<<0>>+)+\\)" , [ w ] ) , x = n ( "(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?" , [ v , m , k ] ) , $ = { keyword : p , punctuation : /[<>()?,.:[\]]/ } , _ = "'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'" , B = '"(?:\\\\.|[^\\\\"\r\n])*"' ; e . languages . csharp = e . languages . extend ( "clike" , { string : [ { pattern : s ( "(^|[^$\\\\])<<0>>" , [ '@"(?:""|\\\\[^]|[^\\\\"])*"(?!")' ] ) , lookbehind : ! 0 , greedy : ! 0 } , { pattern : s ( "(^|[^@$\\\\])<<0>>" , [ B ] ) , lookbehind : ! 0 , greedy : ! 0 } ] , "class-name" : [ { pattern : s ( "(\\busing\\s+static\\s+)<<0>>(?=\\s*;)" , [ m ] ) , lookbehind : ! 0 , inside : $ } , { pattern : s ( "(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)" , [ h , x ] ) , lookbehind : ! 0 , inside : $ } , { pattern : s ( "(\\busing\\s+)<<0>>(?=\\s*=)" , [ h ] ) , lookbehind : ! 0 } , { pattern : s ( "(\\b<<0>>\\s+)<<1>>" , [ d , f ] ) , lookbehind : ! 0 , inside : $ } , { pattern : s ( "(\\bcatch\\s*\\(\\s*)<<0>>" , [ m ] ) , lookbehind : ! 0 , inside : $ } , { pattern : s ( "(\\bwhere\\s+)<<0>>" , [ h ] ) , lookbehind : ! 0 } , { pattern : s ( "(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>" , [ y ] ) , lookbehind : ! 0 , inside : $ } , { pattern : s ( "\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))" , [ x , u , h ] ) , inside : $ } ] , keyword : p , number : /(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i , operator : />>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/ , punctuation : /\?\.?|::|[{}[\];(),.:]/ } ) , e . languages . insertBefore ( "csharp" , "number" , { range : { pattern : /\.\./ , alias : "operator" } } ) , e . languages . insertBefore ( "csharp" , "punctuation" , { "named-parameter" : { pattern : s ( "([(,]\\s*)<<0>>(?=\\s*:)" , [ h ] ) , lookbehind : ! 0 , alias : "punctuation" } } ) , e . languages . insertBefore ( "csharp" , "class-name" , { namespace : { pattern : s ( "(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])" , [ h ] ) , lookbehind : ! 0 , inside : { punctuation : /\./ } } , "type-expression" : { pattern : s ( "(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))" , [ b ] ) , lookbehind : ! 0 , alias : "class-name" , inside : $ } , "return-type" : { pattern : s ( "<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))" , [ x , m ] ) , inside : $ , alias : "class-name" } , "constructor-invocation" : { pattern : s ( "(\\bnew\\s+)<<0>>(?=\\s*[[({])" , [ x ] ) , lookbehind : ! 0 , inside : $ , alias : "class-name" } , "generic-method" : { pattern : s ( "<<0>>\\s*<<1>>(?=\\s*\\()" , [ h , g ] ) , inside : { function : s ( "^<<0>>" , [ h ] ) , generic : { pattern : RegExp ( g ) , alias : "class-name" , inside : $ } } } , "type-list" : { pattern : s ( "\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))" , [ d , f , h , x , p . source , b , "\\bnew\\s*\\(\\s*\\)" ] ) , lookbehind : ! 0 , inside : { " record - a
! function ( e ) { var t = /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/ , n = "\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b" . replace ( /<keyword>/g , ( function ( ) { return t . source } ) ) ; e . languages . cpp = e . languages . extend ( "c" , { "class-name" : [ { pattern : RegExp ( "(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+" . replace ( /<keyword>/g , ( function ( ) { return t . source } ) ) ) , lookbehind : ! 0 } , /\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/ , /\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i , /\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/ ] , keyword : t , number : { pattern : /(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i , greedy : ! 0 } , operator : />>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/ , boolean : /\b(?:false|true)\b/ } ) , e . languages . insertBefore ( "cpp" , "string" , { module : { pattern : RegExp ( '(\\b(?:import|module)\\s+)(?:"(?:\\\\(?:\r\n|[^])|[^"\\\\\r\n])*"|<[^<>\r\n]*>|' + "<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>" . replace ( /<mod-name>/g , ( function ( ) { return n } ) ) + ")" ) , lookbehind : ! 0 , greedy : ! 0 , inside : { string : /^[<"][\s\S]+/ , operator : /:/ , punctuation : /\./ } } , "raw-string" : { pattern : /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/ , alias : "string" , greedy : ! 0 } } ) , e . languages . insertBefore ( "cpp" , "keyword" , { "generic-function" : { pattern : /\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i , inside : { function : /^\w+/ , generic : { pattern : /<[\s\S]+/ , alias : "class-name" , inside : e . languages . cpp } } } } ) , e . languages . insertBefore ( "cpp" , "operator" , { "double-colon" : { pattern : /::/ , alias : "punctuation" } } ) , e . languages . insertBefore ( "cpp" , "class-name" , { "base-clause" : { pattern : /(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/ , lookbehind : ! 0 , greedy : ! 0 , inside : e . languages . extend ( "cpp" , { } ) } } ) , e . languages . insertBefore ( "inside" , "double-colon" , { "class-name" : /\b[a-z_]\w*\b(?!\s*::)/i } , e . languages . cpp [ "base-clause" ] ) } ( Prism ) ;
! function ( e ) { var n = "(?:[ \t]+(?![ \t])(?:<SP_BS>)?|<SP_BS>)" . replace ( /<SP_BS>/g , ( function ( ) { return "\\\\[\r\n](?:\\s|\\\\[\r\n]|#.*(?!.))*(?![\\s#]|\\\\[\r\n])" } ) ) , r = "\"(?:[^\"\\\\\r\n]|\\\\(?:\r\n|[^]))*\"|'(?:[^'\\\\\r\n]|\\\\(?:\r\n|[^]))*'" , t = "--[\\w-]+=(?:<STR>|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)" . replace ( /<STR>/g , ( function ( ) { return r } ) ) , o = { pattern : RegExp ( r ) , greedy : ! 0 } , i = { pattern : /(^[ \t]*)#.*/m , lookbehind : ! 0 , greedy : ! 0 } ; function a ( e , r ) { return e = e . replace ( /<OPT>/g , ( function ( ) { return t } ) ) . replace ( /<SP>/g , ( function ( ) { return n } ) ) , RegExp ( e , r ) } e . languages . docker = { instruction : { pattern : /(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im , lookbehind : ! 0 , greedy : ! 0 , inside : { options : { pattern : a ( "(^(?:ONBUILD<SP>)?\\w+<SP>)<OPT>(?:<SP><OPT>)*" , "i" ) , lookbehind : ! 0 , greedy : ! 0 , inside : { property : { pattern : /(^|\s)--[\w-]+/ , lookbehind : ! 0 } , string : [ o , { pattern : /(=)(?!["'])(?:[^\s\\]|\\.)+/ , lookbehind : ! 0 } ] , operator : /\\$/m , punctuation : /=/ } } , keyword : [ { pattern : a ( "(^(?:ONBUILD<SP>)?HEALTHCHECK<SP>(?:<OPT><SP>)*)(?:CMD|NONE)\\b" , "i" ) , lookbehind : ! 0 , greedy : ! 0 } , { pattern : a ( "(^(?:ONBUILD<SP>)?FROM<SP>(?:<OPT><SP>)*(?!--)[^ \t\\\\]+<SP>)AS" , "i" ) , lookbehind : ! 0 , greedy : ! 0 } , { pattern : a ( "(^ONBUILD<SP>)\\w+" , "i" ) , lookbehind : ! 0 , greedy : ! 0 } , { pattern : /^\w+/ , greedy : ! 0 } ] , comment : i , string : o , variable : /\$(?:\w+|\{[^{}"'\\]*\})/ , operator : /\\$/m } } , comment : i } , e . languages . dockerfile = e . languages . docker } ( Prism ) ;
Prism . languages . elixir = { doc : { pattern : /@(?:doc|moduledoc)\s+(?:("""|''')[\s\S]*?\1|("|')(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2)/ , inside : { attribute : /^@\w+/ , string : /['"][\s\S]+/ } } , comment : { pattern : /#.*/ , greedy : ! 0 } , regex : { pattern : /~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/ , greedy : ! 0 } , string : [ { pattern : /~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|#(?!\{)|[^#\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/ , greedy : ! 0 , inside : { } } , { pattern : /("""|''')[\s\S]*?\1/ , greedy : ! 0 , inside : { } } , { pattern : /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/ , greedy : ! 0 , inside : { } } ] , atom : { pattern : /(^|[^:]):\w+/ , lookbehind : ! 0 , alias : "symbol" } , module : { pattern : /\b[A-Z]\w*\b/ , alias : "class-name" } , "attr-name" : /\b\w+\??:(?!:)/ , argument : { pattern : /(^|[^&])&\d+/ , lookbehind : ! 0 , alias : "variable" } , attribute : { pattern : /@\w+/ , alias : "variable" } , function : /\b[_a-zA-Z]\w*[?!]?(?:(?=\s*(?:\.\s*)?\()|(?=\/\d))/ , number : /\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i , keyword : /\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\b/ , boolean : /\b(?:false|nil|true)\b/ , operator : [ /\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/ , { pattern : /([^<])<(?!<)/ , lookbehind : ! 0 } , { pattern : /([^>])>(?!>)/ , lookbehind : ! 0 } ] , punctuation : /<<|>>|[.,%\[\]{}()]/ } , Prism . languages . elixir . string . forEach ( ( function ( e ) { e . inside = { interpolation : { pattern : /#\{[^}]+\}/ , inside : { delimiter : { pattern : /^#\{|\}$/ , alias : "punctuation" } , rest : Prism . languages . elixir } } } } ) ) ;
Prism . languages . erlang = { comment : /%.+/ , string : { pattern : /"(?:\\.|[^\\"\r\n])*"/ , greedy : ! 0 } , "quoted-function" : { pattern : /'(?:\\.|[^\\'\r\n])+'(?=\()/ , alias : "function" } , "quoted-atom" : { pattern : /'(?:\\.|[^\\'\r\n])+'/ , alias : "atom" } , boolean : /\b(?:false|true)\b/ , keyword : /\b(?:after|begin|case|catch|end|fun|if|of|receive|try|when)\b/ , number : [ /\$\\?./ , /\b\d+#[a-z0-9]+/i , /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i ] , function : /\b[a-z][\w@]*(?=\()/ , variable : { pattern : /(^|[^@])(?:\b|\?)[A-Z_][\w@]*/ , lookbehind : ! 0 } , operator : [ /[=\/<>:]=|=[:\/]=|\+\+?|--?|[=*\/!]|\b(?:and|andalso|band|bnot|bor|bsl|bsr|bxor|div|not|or|orelse|rem|xor)\b/ , { pattern : /(^|[^<])<(?!<)/ , lookbehind : ! 0 } , { pattern : /(^|[^>])>(?!>)/ , lookbehind : ! 0 } ] , atom : /\b[a-z][\w@]*/ , punctuation : /[()[\]{}:;,.#|]|<<|>>/ } ;
Prism . languages . go = Prism . languages . extend ( "clike" , { string : { pattern : /(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/ , lookbehind : ! 0 , greedy : ! 0 } , keyword : /\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/ , boolean : /\b(?:_|false|iota|nil|true)\b/ , number : [ /\b0(?:b[01_]+|o[0-7_]+)i?\b/i , /\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i , /(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i ] , operator : /[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./ , builtin : /\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/ } ) , Prism . languages . insertBefore ( "go" , "string" , { char : { pattern : /'(?:\\.|[^'\\\r\n]){0,10}'/ , greedy : ! 0 } } ) , delete Prism . languages . go [ "class-name" ] ;
Prism . languages [ "go-mod" ] = Prism . languages [ "go-module" ] = { comment : { pattern : /\/\/.*/ , greedy : ! 0 } , version : { pattern : /(^|[\s()[\],])v\d+\.\d+\.\d+(?:[+-][-+.\w]*)?(?![^\s()[\],])/ , lookbehind : ! 0 , alias : "number" } , "go-version" : { pattern : /((?:^|\s)go\s+)\d+(?:\.\d+){1,2}/ , lookbehind : ! 0 , alias : "number" } , keyword : { pattern : /^([ \t]*)(?:exclude|go|module|replace|require|retract)\b/m , lookbehind : ! 0 } , operator : /=>/ , punctuation : /[()[\],]/ } ;
Prism . languages . ini = { comment : { pattern : /(^[ \f\t\v]*)[#;][^\n\r]*/m , lookbehind : ! 0 } , section : { pattern : /(^[ \f\t\v]*)\[[^\n\r\]]*\]?/m , lookbehind : ! 0 , inside : { "section-name" : { pattern : /(^\[[ \f\t\v]*)[^ \f\t\v\]]+(?:[ \f\t\v]+[^ \f\t\v\]]+)*/ , lookbehind : ! 0 , alias : "selector" } , punctuation : /\[|\]/ } } , key : { pattern : /(^[ \f\t\v]*)[^ \f\n\r\t\v=]+(?:[ \f\t\v]+[^ \f\n\r\t\v=]+)*(?=[ \f\t\v]*=)/m , lookbehind : ! 0 , alias : "attr-name" } , value : { pattern : /(=[ \f\t\v]*)[^ \f\n\r\t\v]+(?:[ \f\t\v]+[^ \f\n\r\t\v]+)*/ , lookbehind : ! 0 , alias : "attr-value" , inside : { "inner-value" : { pattern : /^("|').+(?=\1$)/ , lookbehind : ! 0 } } } , punctuation : /=/ } ;
! function ( e ) { var n = /\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/ , t = "(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*" , s = { pattern : RegExp ( "(^|[^\\w.])" + t + "[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b" ) , lookbehind : ! 0 , inside : { namespace : { pattern : /^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/ , inside : { punctuation : /\./ } } , punctuation : /\./ } } ; e . languages . java = e . languages . extend ( "clike" , { string : { pattern : /(^|[^\\])"(?:\\.|[^"\\\r\n])*"/ , lookbehind : ! 0 , greedy : ! 0 } , "class-name" : [ s , { pattern : RegExp ( "(^|[^\\w.])" + t + "[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)" ) , lookbehind : ! 0 , inside : s . inside } , { pattern : RegExp ( "(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)" + t + "[A-Z]\\w*\\b" ) , lookbehind : ! 0 , inside : s . inside } ] , keyword : n , function : [ e . languages . clike . function , { pattern : /(::\s*)[a-z_]\w*/ , lookbehind : ! 0 } ] , number : /\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i , operator : { pattern : /(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m , lookbehind : ! 0 } , constant : /\b[A-Z][A-Z_\d]+\b/ } ) , e . languages . insertBefore ( "java" , "string" , { "triple-quoted-string" : { pattern : /"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/ , greedy : ! 0 , alias : "string" } , char : { pattern : /'(?:\\.|[^'\\\r\n]){1,6}'/ , greedy : ! 0 } } ) , e . languages . insertBefore ( "java" , "class-name" , { annotation : { pattern : /(^|[^.])@\w+(?:\s*\.\s*\w+)*/ , lookbehind : ! 0 , alias : "punctuation" } , generics : { pattern : /<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/ , inside : { "class-name" : s , keyword : n , punctuation : /[<>(),.:]/ , operator : /[?&|]/ } } , import : [ { pattern : RegExp ( "(\\bimport\\s+)" + t + "(?:[A-Z]\\w*|\\*)(?=\\s*;)" ) , lookbehind : ! 0 , inside : { namespace : s . inside . namespace , punctuation : /\./ , operator : /\*/ , "class-name" : /\w+/ } } , { pattern : RegExp ( "(\\bimport\\s+static\\s+)" + t + "(?:\\w+|\\*)(?=\\s*;)" ) , lookbehind : ! 0 , alias : "static" , inside : { namespace : s . inside . namespace , static : /\b\w+$/ , punctuation : /\./ , operator : /\*/ , "class-name" : /\w+/ } } ] , namespace : { pattern : RegExp ( "(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?" . replace ( /<keyword>/g , ( function ( ) { return n . source } ) ) ) , lookbehind : ! 0 , inside : { punctuation : /\./ } } } ) } ( Prism ) ;
Prism . languages . json = { property : { pattern : /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/ , lookbehind : ! 0 , greedy : ! 0 } , string : { pattern : /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/ , lookbehind : ! 0 , greedy : ! 0 } , comment : { pattern : /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/ , greedy : ! 0 } , number : /-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i , punctuation : /[{}[\],]/ , operator : /:/ , boolean : /\b(?:false|true)\b/ , null : { pattern : /\bnull\b/ , alias : "keyword" } } , Prism . languages . webmanifest = Prism . languages . json ;
! function ( n ) { n . languages . kotlin = n . languages . extend ( "clike" , { keyword : { pattern : /(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/ , lookbehind : ! 0 } , function : [ { pattern : /(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/ , greedy : ! 0 } , { pattern : /(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/ , lookbehind : ! 0 , greedy : ! 0 } ] , number : /\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/ , operator : /\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/ } ) , delete n . languages . kotlin [ "class-name" ] ; var e = { "interpolation-punctuation" : { pattern : /^\$\{?|\}$/ , alias : "punctuation" } , expression : { pattern : /[\s\S]+/ , inside : n . languages . kotlin } } ; n . languages . insertBefore ( "kotlin" , "string" , { "string-literal" : [ { pattern : /"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/ , alias : "multiline" , inside : { interpolation : { pattern : /\$(?:[a-z_]\w*|\{[^{}]*\})/i , inside : e } , string : /[\s\S]+/ } } , { pattern : /"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/ , alias : "singleline" , inside : { interpolation : { pattern : /((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i , lookbehind : ! 0 , inside : e } , string : /[\s\S]+/ } } ] , char : { pattern : /'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/ , greedy : ! 0 } } ) , delete n . languages . kotlin . string , n . languages . insertBefore ( "kotlin" , "keyword" , { annotation : { pattern : /\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/ , alias : "builtin" } } ) , n . languages . insertBefore ( "kotlin" , "function" , { label : { pattern : /\b\w+@|@\w+\b/ , alias : "symbol" } } ) , n . languages . kt = n . languages . kotlin , n . languages . kts = n . languages . kotlin } ( Prism ) ;
Prism . languages . lua = { comment : /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m , string : { pattern : /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[^z]))*\1|\[(=*)\[[\s\S]*?\]\2\]/ , greedy : ! 0 } , number : /\b0x[a-f\d]+(?:\.[a-f\d]*)?(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|(?:\.\d*)?(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i , keyword : /\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/ , function : /(?!\d)\w+(?=\s*(?:[({]))/ , operator : [ /[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/ , { pattern : /(^|[^.])\.\.(?!\.)/ , lookbehind : ! 0 } ] , punctuation : /[\[\](){},;]|\.+|:+/ } ;
Prism . languages . makefile = { comment : { pattern : /(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/ , lookbehind : ! 0 } , string : { pattern : /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/ , greedy : ! 0 } , "builtin-target" : { pattern : /\.[A-Z][^:#=\s]+(?=\s*:(?!=))/ , alias : "builtin" } , target : { pattern : /^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m , alias : "symbol" , inside : { variable : /\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/ } } , variable : /\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/ , keyword : /-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/ , function : { pattern : /(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/ , lookbehind : ! 0 } , operator : /(?:::|[?:+!])?=|[|@]/ , punctuation : /[:;(){}]/ } ;
! function ( e ) { function n ( e , n ) { return "___" + e . toUpperCase ( ) + n + "___" } Object . defineProperties ( e . languages [ "markup-templating" ] = { } , { buildPlaceholders : { value : function ( t , a , r , o ) { if ( t . language === a ) { var c = t . tokenStack = [ ] ; t . code = t . code . replace ( r , ( function ( e ) { if ( "function" == typeof o && ! o ( e ) ) return e ; for ( var r , i = c . length ; - 1 !== t . code . indexOf ( r = n ( a , i ) ) ; ) ++ i ; return c [ i ] = e , r } ) ) , t . grammar = e . languages . markup } } } , tokenizePlaceholders : { value : function ( t , a ) { if ( t . language === a && t . tokenStack ) { t . grammar = e . languages [ a ] ; var r = 0 , o = Object . keys ( t . tokenStack ) ; ! function c ( i ) { for ( var u = 0 ; u < i . length && ! ( r >= o . length ) ; u ++ ) { var g = i [ u ] ; if ( "string" == typeof g || g . content && "string" == typeof g . content ) { var l = o [ r ] , s = t . tokenStack [ l ] , f = "string" == typeof g ? g : g . content , p = n ( a , l ) , k = f . indexOf ( p ) ; if ( k > - 1 ) { ++ r ; var m = f . substring ( 0 , k ) , d = new e . Token ( a , e . tokenize ( s , t . grammar ) , "language-" + a , s ) , h = f . substring ( k + p . length ) , v = [ ] ; m && v . push . apply ( v , c ( [ m ] ) ) , v . push ( d ) , h && v . push . apply ( v , c ( [ h ] ) ) , "string" == typeof g ? i . splice . apply ( i , [ u , 1 ] . concat ( v ) ) : g . content = v } } else g . content && c ( g . content ) } return i } ( t . tokens ) } } } } ) } ( Prism ) ;
! function ( e ) { var n = /\$(?:\w[a-z\d]*(?:_[^\x00-\x1F\s"'\\()$]*)?|\{[^}\s"'\\]+\})/i ; e . languages . nginx = { comment : { pattern : /(^|[\s{};])#.*/ , lookbehind : ! 0 , greedy : ! 0 } , directive : { pattern : /(^|\s)\w(?:[^;{}"'\\\s]|\\.|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\s+(?:#.*(?!.)|(?![#\s])))*?(?=\s*[;{])/ , lookbehind : ! 0 , greedy : ! 0 , inside : { string : { pattern : /((?:^|[^\\])(?:\\\\)*)(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/ , lookbehind : ! 0 , greedy : ! 0 , inside : { escape : { pattern : /\\["'\\nrt]/ , alias : "entity" } , variable : n } } , comment : { pattern : /(\s)#.*/ , lookbehind : ! 0 , greedy : ! 0 } , keyword : { pattern : /^\S+/ , greedy : ! 0 } , boolean : { pattern : /(\s)(?:off|on)(?!\S)/ , lookbehind : ! 0 } , number : { pattern : /(\s)\d+[a-z]*(?!\S)/i , lookbehind : ! 0 } , variable : n } } , punctuation : /[{};]/ } } ( Prism ) ;
Prism . languages . nix = { comment : { pattern : /\/\*[\s\S]*?\*\/|#.*/ , greedy : ! 0 } , string : { pattern : /"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/ , greedy : ! 0 , inside : { interpolation : { pattern : /(^|(?:^|(?!'').)[^\\])\$\{(?:[^{}]|\{[^}]*\})*\}/ , lookbehind : ! 0 , inside : null } } } , url : [ /\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/ , { pattern : /([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/ , lookbehind : ! 0 } ] , antiquotation : { pattern : /\$(?=\{)/ , alias : "important" } , number : /\b\d+\b/ , keyword : /\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/ , function : /\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/ , boolean : /\b(?:false|true)\b/ , operator : /[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/ , punctuation : /[{}()[\].,:;]/ } , Prism . languages . nix . string . inside . interpolation . inside = Prism . languages . nix ;
! function ( e ) { var n = "(?:\\((?:[^()\\\\]|\\\\[^])*\\)|\\{(?:[^{}\\\\]|\\\\[^])*\\}|\\[(?:[^[\\]\\\\]|\\\\[^])*\\]|<(?:[^<>\\\\]|\\\\[^])*>)" ; e . languages . perl = { comment : [ { pattern : /(^\s*)=\w[\s\S]*?=cut.*/m , lookbehind : ! 0 , greedy : ! 0 } , { pattern : /(^|[^\\$])#.*/ , lookbehind : ! 0 , greedy : ! 0 } ] , string : [ { pattern : RegExp ( "\\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\\s*(?:" + [ "([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1" , "([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[^])*\\2" , n ] . join ( "|" ) + ")" ) , greedy : ! 0 } , { pattern : /("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/ , greedy : ! 0 } , { pattern : /'(?:[^'\\\r\n]|\\.)*'/ , greedy : ! 0 } ] , regex : [ { pattern : RegExp ( "\\b(?:m|qr)(?![a-zA-Z0-9])\\s*(?:" + [ "([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1" , "([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[^])*\\2" , n ] . join ( "|" ) + ")[msixpodualngc]*" ) , greedy : ! 0 } , { pattern : RegExp ( "(^|[^-])\\b(?:s|tr|y)(?![a-zA-Z0-9])\\s*(?:" + [ "([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[^])*\\2(?:(?!\\2)[^\\\\]|\\\\[^])*\\2" , "([a-zA-Z0-9])(?:(?!\\3)[^\\\\]|\\\\[^])*\\3(?:(?!\\3)[^\\\\]|\\\\[^])*\\3" , n + "\\s*" + n ] . join ( "|" ) + ")[msixpodualngcer]*" ) , lookbehind : ! 0 , greedy : ! 0 } , { pattern : /\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\b))/ , greedy : ! 0 } ] , variable : [ /[&*$@%]\{\^[A-Z]+\}/ , /[&*$@%]\^[A-Z_]/ , /[&*$@%]#?(?=\{)/ , /[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/ , /[&*$@%]\d+/ , /(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/ ] , filehandle : { pattern : /<(?![<=])\S*?>|\b_\b/ , alias : "symbol" } , "v-string" : { pattern : /v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/ , alias : "string" } , function : { pattern : /(\bsub[ \t]+)\w+/ , lookbehind : ! 0 } , keyword : /\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/ , number : /\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/ , operator : /-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\b/ , punctuation : /[{}[\];(),:]/ } } ( Prism ) ;
! function ( e ) { var a = /\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/ , t = [ { pattern : /\b(?:false|true)\b/i , alias : "boolean" } , { pattern : /(::\s*)\b[a-z_]\w*\b(?!\s*\()/i , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i , greedy : ! 0 , lookbehind : ! 0 } , /\b(?:null)\b/i , /\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/ ] , i = /\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i , n = /<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/ , s = /[{}\[\](),:;]/ ; e . languages . php = { delimiter : { pattern : /\?>$|^<\?(?:php(?=\s)|=)?/i , alias : "important" } , comment : a , variable : /\$+(?:\w+\b|(?=\{))/ , package : { pattern : /(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i , lookbehind : ! 0 , inside : { punctuation : /\\/ } } , "class-name-definition" : { pattern : /(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i , lookbehind : ! 0 , alias : "class-name" } , "function-definition" : { pattern : /(\bfunction\s+)[a-z_]\w*(?=\s*\()/i , lookbehind : ! 0 , alias : "function" } , keyword : [ { pattern : /(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i , alias : "type-casting" , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i , alias : "type-hint" , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i , alias : "return-type" , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i , alias : "type-declaration" , greedy : ! 0 } , { pattern : /(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i , alias : "type-declaration" , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /\b(?:parent|self|static)(?=\s*::)/i , alias : "static-context" , greedy : ! 0 } , { pattern : /(\byield\s+)from\b/i , lookbehind : ! 0 } , /\bclass\b/i , { pattern : /((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i , lookbehind : ! 0 } ] , "argument-name" : { pattern : /([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i , lookbehind : ! 0 } , "class-name" : [ { pattern : /(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /(\|\s*)\b[a-z_]\w*(?!\\)\b/i , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i , greedy : ! 0 } , { pattern : /(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i , alias : "class-name-fully-qualified" , greedy : ! 0 , lookbehind : ! 0 , inside : { punctuation : /\\/ } } , { pattern : /(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i , alias : "class-name-fully-qualified" , greedy : ! 0 , inside : { punctuation : /\\/ } } , { pattern : /(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i , alias : "class-name-fully-qualified" , greedy : ! 0 , lookbehind : ! 0 , inside : { punctuation : /\\/ } } , { pattern : /\b[a-z_]\w*(?=\s*\$)/i , alias : "type-declaration" , greedy : ! 0 } , { pattern : /(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i , alias : [ "class-name-fully-qualified" , "type-declaration" ] , greedy : ! 0 , inside : { punctuation : /\\/ } } , { pattern : /\b[a-z_]\w*(?=\s*::)/i , alias : "static-context" , greedy : ! 0 } , { pattern : /(?:\\?\b[a-z_]\w*)+(?=\s*::)/i , alias : [ "class-name-fully-qualified" , "static-context" ] , greedy : ! 0 , inside : { punctuation : /\\/ } } , { pattern : /([(,?]\s*)[a-z_]\w*(?=\s*\$)/i , alias : "type-hint" , greedy : ! 0 , lookbehind : ! 0 } , { pattern : /([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i , alias : [ "class-name-fully-qualified" , "type-hint" ] , greedy : ! 0 , lookbehind : ! 0 , inside : { punctuation : /\\/ } } , { pattern : /(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i , alias : "return-type" , greedy : ! 0 , lookbehind : ! 0 } , { pattern : / ( \ ) \ s * : \ s * ( ? : \ ? \ s * ) ? ) ( ? : \ \ ? \ b [ a - z _ ] \ w * ) + \ b ( ?
! function ( t ) { var n = [ "on" , "ignoring" , "group_right" , "group_left" , "by" , "without" ] , a = [ "sum" , "min" , "max" , "avg" , "group" , "stddev" , "stdvar" , "count" , "count_values" , "bottomk" , "topk" , "quantile" ] . concat ( n , [ "offset" ] ) ; t . languages . promql = { comment : { pattern : /(^[ \t]*)#.*/m , lookbehind : ! 0 } , "vector-match" : { pattern : new RegExp ( "((?:" + n . join ( "|" ) + ")\\s*)\\([^)]*\\)" ) , lookbehind : ! 0 , inside : { "label-key" : { pattern : /\b[^,]+\b/ , alias : "attr-name" } , punctuation : /[(),]/ } } , "context-labels" : { pattern : /\{[^{}]*\}/ , inside : { "label-key" : { pattern : /\b[a-z_]\w*(?=\s*(?:=|![=~]))/ , alias : "attr-name" } , "label-value" : { pattern : /(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/ , greedy : ! 0 , alias : "attr-value" } , punctuation : /\{|\}|=~?|![=~]|,/ } } , "context-range" : [ { pattern : /\[[\w\s:]+\]/ , inside : { punctuation : /\[|\]|:/ , "range-duration" : { pattern : /\b(?:\d+(?:[smhdwy]|ms))+\b/i , alias : "number" } } } , { pattern : /(\boffset\s+)\w+/ , lookbehind : ! 0 , inside : { "range-duration" : { pattern : /\b(?:\d+(?:[smhdwy]|ms))+\b/i , alias : "number" } } } ] , keyword : new RegExp ( "\\b(?:" + a . join ( "|" ) + ")\\b" , "i" ) , function : /\b[a-z_]\w*(?=\s*\()/i , number : /[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i , operator : /[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|or|unless)\b/i , punctuation : /[{};()`,.[\]]/ } } ( Prism ) ;
Prism . languages . python = { comment : { pattern : /(^|[^\\])#.*/ , lookbehind : ! 0 , greedy : ! 0 } , "string-interpolation" : { pattern : /(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i , greedy : ! 0 , inside : { interpolation : { pattern : /((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/ , lookbehind : ! 0 , inside : { "format-spec" : { pattern : /(:)[^:(){}]+(?=\}$)/ , lookbehind : ! 0 } , "conversion-option" : { pattern : // , alias : "punctuation" } , rest : null } } , string : /[\s\S]+/ } } , "triple-quoted-string" : { pattern : /(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i , greedy : ! 0 , alias : "string" } , string : { pattern : /(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i , greedy : ! 0 } , function : { pattern : /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g , lookbehind : ! 0 } , "class-name" : { pattern : /(\bclass\s+)\w+/i , lookbehind : ! 0 } , decorator : { pattern : /(^[\t ]*)@\w+(?:\.\w+)*/m , lookbehind : ! 0 , alias : [ "annotation" , "punctuation" ] , inside : { punctuation : /\./ } } , keyword : /\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/ , builtin : /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/ , boolean : /\b(?:False|None|True)\b/ , number : /\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i , operator : /[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/ , punctuation : /[{}[\];(),.:]/ } , Prism . languages . python [ "string-interpolation" ] . inside . interpolation . inside . rest = Prism . languages . python , Prism . languages . py = Prism . languages . python ;
Prism . languages . r = { comment : /#.*/ , string : { pattern : /(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/ , greedy : ! 0 } , "percent-operator" : { pattern : /%[^%\s]*%/ , alias : "operator" } , boolean : /\b(?:FALSE|TRUE)\b/ , ellipsis : /\.\.(?:\.|\d+)/ , number : [ /\b(?:Inf|NaN)\b/ , /(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+(?:\.\d*)?|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/ ] , keyword : /\b(?:NA|NA_character_|NA_complex_|NA_integer_|NA_real_|NULL|break|else|for|function|if|in|next|repeat|while)\b/ , operator : /->?>?|<(?:=|<?-)?|[>=!]=?|::?|&&?|\|\|?|[+*\/^$@~]/ , punctuation : /[(){}\[\],;]/ } ;
! function ( t ) { var n = t . util . clone ( t . languages . javascript ) , e = "(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})" ; function a ( t , n ) { return t = t . replace ( /<S>/g , ( function ( ) { return "(?:\\s|//.*(?!.)|/\\*(?:[^*]|\\*(?!/))\\*/)" } ) ) . replace ( /<BRACES>/g , ( function ( ) { return "(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})" } ) ) . replace ( /<SPREAD>/g , ( function ( ) { return e } ) ) , RegExp ( t , n ) } e = a ( e ) . source , t . languages . jsx = t . languages . extend ( "markup" , n ) , t . languages . jsx . tag . pattern = a ( "</?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[^]|[^\\\\\"])*\"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s{'\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*/?)?>" ) , t . languages . jsx . tag . inside . tag . pattern = /^<\/?[^\s>\/]*/ , t . languages . jsx . tag . inside [ "attr-value" ] . pattern = /=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/ , t . languages . jsx . tag . inside . tag . inside [ "class-name" ] = /^[A-Z]\w*(?:\.[A-Z]\w*)*$/ , t . languages . jsx . tag . inside . comment = n . comment , t . languages . insertBefore ( "inside" , "attr-name" , { spread : { pattern : a ( "<SPREAD>" ) , inside : t . languages . jsx } } , t . languages . jsx . tag ) , t . languages . insertBefore ( "inside" , "special-attr" , { script : { pattern : a ( "=<BRACES>" ) , alias : "language-javascript" , inside : { "script-punctuation" : { pattern : /^=(?=\{)/ , alias : "punctuation" } , rest : t . languages . jsx } } } , t . languages . jsx . tag ) ; var s = function ( t ) { return t ? "string" == typeof t ? t : "string" == typeof t . content ? t . content : t . content . map ( s ) . join ( "" ) : "" } , g = function ( n ) { for ( var e = [ ] , a = 0 ; a < n . length ; a ++ ) { var o = n [ a ] , i = ! 1 ; if ( "string" != typeof o && ( "tag" === o . type && o . content [ 0 ] && "tag" === o . content [ 0 ] . type ? "</" === o . content [ 0 ] . content [ 0 ] . content ? e . length > 0 && e [ e . length - 1 ] . tagName === s ( o . content [ 0 ] . content [ 1 ] ) && e . pop ( ) : "/>" === o . content [ o . content . length - 1 ] . content || e . push ( { tagName : s ( o . content [ 0 ] . content [ 1 ] ) , openedBraces : 0 } ) : e . length > 0 && "punctuation" === o . type && "{" === o . content ? e [ e . length - 1 ] . openedBraces ++ : e . length > 0 && e [ e . length - 1 ] . openedBraces > 0 && "punctuation" === o . type && "}" === o . content ? e [ e . length - 1 ] . openedBraces -- : i = ! 0 ) , ( i || "string" == typeof o ) && e . length > 0 && 0 === e [ e . length - 1 ] . openedBraces ) { var r = s ( o ) ; a < n . length - 1 && ( "string" == typeof n [ a + 1 ] || "plain-text" === n [ a + 1 ] . type ) && ( r += s ( n [ a + 1 ] ) , n . splice ( a + 1 , 1 ) ) , a > 0 && ( "string" == typeof n [ a - 1 ] || "plain-text" === n [ a - 1 ] . type ) && ( r = s ( n [ a - 1 ] ) + r , n . splice ( a - 1 , 1 ) , a -- ) , n [ a ] = new t . Token ( "plain-text" , r , null , r ) } o . content && "string" != typeof o . content && g ( o . content ) } } ; t . hooks . add ( "after-tokenize" , ( function ( t ) { "jsx" !== t . language && "tsx" !== t . language || g ( t . tokens ) } ) ) } ( Prism ) ;
! function ( e ) { e . languages . typescript = e . languages . extend ( "javascript" , { "class-name" : { pattern : /(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/ , lookbehind : ! 0 , greedy : ! 0 , inside : null } , builtin : /\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/ } ) , e . languages . typescript . keyword . push ( /\b(?:abstract|declare|is|keyof|readonly|require)\b/ , /\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/ , /\btype\b(?=\s*(?:[\{*]|$))/ ) , delete e . languages . typescript . parameter , delete e . languages . typescript [ "literal-property" ] ; var s = e . languages . extend ( "typescript" , { } ) ; delete s [ "class-name" ] , e . languages . typescript [ "class-name" ] . inside = s , e . languages . insertBefore ( "typescript" , "function" , { decorator : { pattern : /@[$\w\xA0-\uFFFF]+/ , inside : { at : { pattern : /^@/ , alias : "operator" } , function : /^[\s\S]+/ } } , "generic-function" : { pattern : /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/ , greedy : ! 0 , inside : { function : /^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/ , generic : { pattern : /<[\s\S]+/ , alias : "class-name" , inside : s } } } } ) , e . languages . ts = e . languages . typescript } ( Prism ) ;
! function ( e ) { var a = e . util . clone ( e . languages . typescript ) ; e . languages . tsx = e . languages . extend ( "jsx" , a ) , delete e . languages . tsx . parameter , delete e . languages . tsx [ "literal-property" ] ; var t = e . languages . tsx . tag ; t . pattern = RegExp ( "(^|[^\\w$]|(?=</))(?:" + t . pattern . source + ")" , t . pattern . flags ) , t . lookbehind = ! 0 } ( Prism ) ;
! function ( e ) { e . languages . ruby = e . languages . extend ( "clike" , { comment : { pattern : /#.*|^=begin\s[\s\S]*?^=end/m , greedy : ! 0 } , "class-name" : { pattern : /(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/ , lookbehind : ! 0 , inside : { punctuation : /[.\\]/ } } , keyword : /\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/ , operator : /\.{2,3}|&\.|===|<?=>|[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/ , punctuation : /[(){}[\].,;]/ } ) , e . languages . insertBefore ( "ruby" , "operator" , { "double-colon" : { pattern : /::/ , alias : "punctuation" } } ) ; var n = { pattern : /((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/ , lookbehind : ! 0 , inside : { content : { pattern : /^(#\{)[\s\S]+(?=\}$)/ , lookbehind : ! 0 , inside : e . languages . ruby } , delimiter : { pattern : /^#\{|\}$/ , alias : "punctuation" } } } ; delete e . languages . ruby . function ; var t = "(?:" + [ "([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1" , "\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)" , "\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}" , "\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]" , "<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>" ] . join ( "|" ) + ")" , i = '(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)' ; e . languages . insertBefore ( "ruby" , "keyword" , { "regex-literal" : [ { pattern : RegExp ( "%r" + t + "[egimnosux]{0,6}" ) , greedy : ! 0 , inside : { interpolation : n , regex : /[\s\S]+/ } } , { pattern : /(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/ , lookbehind : ! 0 , greedy : ! 0 , inside : { interpolation : n , regex : /[\s\S]+/ } } ] , variable : /[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/ , symbol : [ { pattern : RegExp ( "(^|[^:]):" + i ) , lookbehind : ! 0 , greedy : ! 0 } , { pattern : RegExp ( "([\r\n{(,][ \t]*)" + i + "(?=:(?!:))" ) , lookbehind : ! 0 , greedy : ! 0 } ] , "method-definition" : { pattern : /(\bdef\s+)\w+(?:\s*\.\s*\w+)?/ , lookbehind : ! 0 , inside : { function : /\b\w+$/ , keyword : /^self\b/ , "class-name" : /^\w+/ , punctuation : /\./ } } } ) , e . languages . insertBefore ( "ruby" , "string" , { "string-literal" : [ { pattern : RegExp ( "%[qQiIwWs]?" + t ) , greedy : ! 0 , inside : { interpolation : n , string : /[\s\S]+/ } } , { pattern : /("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/ , greedy : ! 0 , inside : { interpolation : n , string : /[\s\S]+/ } } , { pattern : /<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i , alias : "heredoc-string" , greedy : ! 0 , inside : { delimiter : { pattern : /^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i , inside : { symbol : /\b\w+/ , punctuation : /^<<[-~]?/ } } , interpolation : n , string : /[\s\S]+/ } } , { pattern : /<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i , alias : "heredoc-string" , greedy : ! 0 , inside : { delimiter : { pattern : /^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i , inside : { symbol : /\b\w+/ , punctuation : /^<<[-~]?'|'$/ } } , string : /[\s\S]+/ } } ] , "command-literal" : [ { pattern : RegExp ( "%x" + t ) , greedy : ! 0 , inside : { interpolation : n , command : { pattern : /[\s\S]+/ , alias : "string" } } } , { pattern : /`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/ , greedy : ! 0 , inside : { interpolation : n , command : { pattern : /[\s\S]+/ , alias : "string" } } } ] } ) , delete e . languages . ruby . string , e . languages . insertBefore ( "ruby" , "number" , { builtin : /\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/ , constant : /\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/ } ) , e . languages . rb = e . languages . ruby } ( Prism ) ;
! function ( e ) { for ( var a = "/\\*(?:[^*/]|\\*(?!/)|/(?!\\*)|<self>)*\\*/" , t = 0 ; t < 2 ; t ++ ) a = a . replace ( /<self>/g , ( function ( ) { return a } ) ) ; a = a . replace ( /<self>/g , ( function ( ) { return "[^\\s\\S]" } ) ) , e . languages . rust = { comment : [ { pattern : RegExp ( "(^|[^\\\\])" + a ) , lookbehind : ! 0 , greedy : ! 0 } , { pattern : /(^|[^\\:])\/\/.*/ , lookbehind : ! 0 , greedy : ! 0 } ] , string : { pattern : /b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/ , greedy : ! 0 } , char : { pattern : /b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/ , greedy : ! 0 } , attribute : { pattern : /#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/ , greedy : ! 0 , alias : "attr-name" , inside : { string : null } } , "closure-params" : { pattern : /([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/ , lookbehind : ! 0 , greedy : ! 0 , inside : { "closure-punctuation" : { pattern : /^\||\|$/ , alias : "punctuation" } , rest : null } } , "lifetime-annotation" : { pattern : /'\w+/ , alias : "symbol" } , "fragment-specifier" : { pattern : /(\$\w+:)[a-z]+/ , lookbehind : ! 0 , alias : "punctuation" } , variable : /\$\w+/ , "function-definition" : { pattern : /(\bfn\s+)\w+/ , lookbehind : ! 0 , alias : "function" } , "type-definition" : { pattern : /(\b(?:enum|struct|trait|type|union)\s+)\w+/ , lookbehind : ! 0 , alias : "class-name" } , "module-declaration" : [ { pattern : /(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/ , lookbehind : ! 0 , alias : "namespace" } , { pattern : /(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/ , lookbehind : ! 0 , alias : "namespace" , inside : { punctuation : /::/ } } ] , keyword : [ /\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/ , /\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/ ] , function : /\b[a-z_]\w*(?=\s*(?:::\s*<|\())/ , macro : { pattern : /\b\w+!/ , alias : "property" } , constant : /\b[A-Z_][A-Z_\d]+\b/ , "class-name" : /\b[A-Z]\w*\b/ , namespace : { pattern : /(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/ , inside : { punctuation : /::/ } } , number : /\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/ , boolean : /\b(?:false|true)\b/ , punctuation : /->|\.\.=|\.{1,3}|::|[{}[\];(),:]/ , operator : /[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/ } , e . languages . rust [ "closure-params" ] . inside . rest = e . languages . rust , e . languages . rust . attribute . inside . string = e . languages . rust . string } ( Prism ) ;
Prism . languages . scala = Prism . languages . extend ( "java" , { "triple-quoted-string" : { pattern : /"""[\s\S]*?"""/ , greedy : ! 0 , alias : "string" } , string : { pattern : /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/ , greedy : ! 0 } , keyword : /<-|=>|\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\b/ , number : /\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i , builtin : /\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\b/ , symbol : /'[^\d\s\\]\w*/ } ) , Prism . languages . insertBefore ( "scala" , "triple-quoted-string" , { "string-interpolation" : { pattern : /\b[a-z]\w*(?:"""(?:[^$]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*?"""|"(?:[^$"\r\n]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*")/i , greedy : ! 0 , inside : { id : { pattern : /^\w+/ , greedy : ! 0 , alias : "function" } , escape : { pattern : /\\\$"|\$[$"]/ , greedy : ! 0 , alias : "symbol" } , interpolation : { pattern : /\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/ , greedy : ! 0 , inside : { punctuation : /^\$\{?|\}$/ , expression : { pattern : /[\s\S]+/ , inside : Prism . languages . scala } } } , string : /[\s\S]+/ } } } ) , delete Prism . languages . scala [ "class-name" ] , delete Prism . languages . scala . function , delete Prism . languages . scala . constant ;
Prism . languages . sql = { comment : { pattern : /(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/ , lookbehind : ! 0 } , variable : [ { pattern : /@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/ , greedy : ! 0 } , /@[\w.$]+/ ] , string : { pattern : /(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/ , greedy : ! 0 , lookbehind : ! 0 } , identifier : { pattern : /(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/ , greedy : ! 0 , lookbehind : ! 0 , inside : { punctuation : /^`|`$/ } } , function : /\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i , keyword : /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i , boolean : /\b(?:FALSE|NULL|TRUE)\b/i , number : /\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i , operator : /[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i , punctuation : /[;[\]()`,.]/ } ;
Prism . languages . swift = { comment : { pattern : /(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/ , lookbehind : ! 0 , greedy : ! 0 } , "string-literal" : [ { pattern : RegExp ( '(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])' ) , lookbehind : ! 0 , greedy : ! 0 , inside : { interpolation : { pattern : /(\\\()(?:[^()]|\([^()]*\))*(?=\))/ , lookbehind : ! 0 , inside : null } , "interpolation-punctuation" : { pattern : /^\)|\\\($/ , alias : "punctuation" } , punctuation : /\\(?=[\r\n])/ , string : /[\s\S]+/ } } , { pattern : RegExp ( '(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2' ) , lookbehind : ! 0 , greedy : ! 0 , inside : { interpolation : { pattern : /(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/ , lookbehind : ! 0 , inside : null } , "interpolation-punctuation" : { pattern : /^\)|\\#+\($/ , alias : "punctuation" } , string : /[\s\S]+/ } } ] , directive : { pattern : RegExp ( "#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)" ) , alias : "property" , inside : { "directive-name" : /^#\w+/ , boolean : /\b(?:false|true)\b/ , number : /\b\d+(?:\.\d+)*\b/ , operator : /!|&&|\|\||[<>]=?/ , punctuation : /[(),]/ } } , literal : { pattern : /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/ , alias : "constant" } , "other-directive" : { pattern : /#\w+\b/ , alias : "property" } , attribute : { pattern : /@\w+/ , alias : "atrule" } , "function-definition" : { pattern : /(\bfunc\s+)\w+/ , lookbehind : ! 0 , alias : "function" } , label : { pattern : /\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/ , lookbehind : ! 0 , alias : "important" } , keyword : /\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/ , boolean : /\b(?:false|true)\b/ , nil : { pattern : /\bnil\b/ , alias : "constant" } , "short-argument" : /\$\d+\b/ , omit : { pattern : /\b_\b/ , alias : "keyword" } , number : /\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i , "class-name" : /\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/ , function : /\b[a-z_]\w*(?=\s*\()/i , constant : /\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/ , operator : /[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/ , punctuation : /[{}[\]();,.:\\]/ } , Prism . languages . swift [ "string-literal" ] . forEach ( ( function ( e ) { e . inside . interpolation . inside = Prism . languages . swift } ) ) ;
! function ( ) { if ( "undefined" != typeof Prism ) { var r = { tab : /\t/ , crlf : /\r\n/ , lf : /\n/ , cr : /\r/ , space : / / } ; Prism . hooks . add ( "before-highlight" , ( function ( r ) { i ( r . grammar ) } ) ) } function e ( r , a ) { var n = r [ a ] ; switch ( Prism . util . type ( n ) ) { case "RegExp" : var t = { } ; r [ a ] = { pattern : n , inside : t } , i ( t ) ; break ; case "Array" : for ( var f = 0 , s = n . length ; f < s ; f ++ ) e ( n , f ) ; break ; default : i ( t = n . inside || ( n . inside = { } ) ) } } function i ( a ) { if ( a && ! a . tab ) { for ( var n in r ) r . hasOwnProperty ( n ) && ( a [ n ] = r [ n ] ) ; for ( var n in a ) a . hasOwnProperty ( n ) && ! r [ n ] && ( "rest" === n ? i ( a . rest ) : e ( a , n ) ) } } } ( ) ;
! function ( ) { if ( "undefined" != typeof Prism && "undefined" != typeof document ) { var e = [ ] , t = { } , n = function ( ) { } ; Prism . plugins . toolbar = { } ; var a = Prism . plugins . toolbar . registerButton = function ( n , a ) { var r ; r = "function" == typeof a ? a : function ( e ) { var t ; return "function" == typeof a . onClick ? ( ( t = document . createElement ( "button" ) ) . type = "button" , t . addEventListener ( "click" , ( function ( ) { a . onClick . call ( this , e ) } ) ) ) : "string" == typeof a . url ? ( t = document . createElement ( "a" ) ) . href = a . url : t = document . createElement ( "span" ) , a . className && t . classList . add ( a . className ) , t . textContent = a . text , t } , n in t ? console . warn ( 'There is a button with the key "' + n + '" registered already.' ) : e . push ( t [ n ] = r ) } , r = Prism . plugins . toolbar . hook = function ( a ) { var r = a . element . parentNode ; if ( r && /pre/i . test ( r . nodeName ) && ! r . parentNode . classList . contains ( "code-toolbar" ) ) { var o = document . createElement ( "div" ) ; o . classList . add ( "code-toolbar" ) , r . parentNode . insertBefore ( o , r ) , o . appendChild ( r ) ; var i = document . createElement ( "div" ) ; i . classList . add ( "toolbar" ) ; var l = e , d = function ( e ) { for ( ; e ; ) { var t = e . getAttribute ( "data-toolbar-order" ) ; if ( null != t ) return ( t = t . trim ( ) ) . length ? t . split ( /\s*,\s*/g ) : [ ] ; e = e . parentElement } } ( a . element ) ; d && ( l = d . map ( ( function ( e ) { return t [ e ] || n } ) ) ) , l . forEach ( ( function ( e ) { var t = e ( a ) ; if ( t ) { var n = document . createElement ( "div" ) ; n . classList . add ( "toolbar-item" ) , n . appendChild ( t ) , i . appendChild ( n ) } } ) ) , o . appendChild ( i ) } } ; a ( "label" , ( function ( e ) { var t = e . element . parentNode ; if ( t && /pre/i . test ( t . nodeName ) && t . hasAttribute ( "data-label" ) ) { var n , a , r = t . getAttribute ( "data-label" ) ; try { a = document . querySelector ( "template#" + r ) } catch ( e ) { } return a ? n = a . content : ( t . hasAttribute ( "data-url" ) ? ( n = document . createElement ( "a" ) ) . href = t . getAttribute ( "data-url" ) : n = document . createElement ( "span" ) , n . textContent = r ) , n } } ) ) , Prism . hooks . add ( "complete" , r ) } } ( ) ;
! function ( ) { if ( "undefined" != typeof Prism && "undefined" != typeof document ) if ( Prism . plugins . toolbar ) { var e = { none : "Plain text" , plain : "Plain text" , plaintext : "Plain text" , text : "Plain text" , txt : "Plain text" , html : "HTML" , xml : "XML" , svg : "SVG" , mathml : "MathML" , ssml : "SSML" , rss : "RSS" , css : "CSS" , clike : "C-like" , js : "JavaScript" , abap : "ABAP" , abnf : "ABNF" , al : "AL" , antlr4 : "ANTLR4" , g4 : "ANTLR4" , apacheconf : "Apache Configuration" , apl : "APL" , aql : "AQL" , ino : "Arduino" , arff : "ARFF" , armasm : "ARM Assembly" , "arm-asm" : "ARM Assembly" , art : "Arturo" , asciidoc : "AsciiDoc" , adoc : "AsciiDoc" , aspnet : "ASP.NET (C#)" , asm6502 : "6502 Assembly" , asmatmel : "Atmel AVR Assembly" , autohotkey : "AutoHotkey" , autoit : "AutoIt" , avisynth : "AviSynth" , avs : "AviSynth" , "avro-idl" : "Avro IDL" , avdl : "Avro IDL" , awk : "AWK" , gawk : "GAWK" , sh : "Shell" , basic : "BASIC" , bbcode : "BBcode" , bbj : "BBj" , bnf : "BNF" , rbnf : "RBNF" , bqn : "BQN" , bsl : "BSL (1C:Enterprise)" , oscript : "OneScript" , csharp : "C#" , cs : "C#" , dotnet : "C#" , cpp : "C++" , cfscript : "CFScript" , cfc : "CFScript" , cil : "CIL" , cilkc : "Cilk/C" , "cilk-c" : "Cilk/C" , cilkcpp : "Cilk/C++" , "cilk-cpp" : "Cilk/C++" , cilk : "Cilk/C++" , cmake : "CMake" , cobol : "COBOL" , coffee : "CoffeeScript" , conc : "Concurnas" , csp : "Content-Security-Policy" , "css-extras" : "CSS Extras" , csv : "CSV" , cue : "CUE" , dataweave : "DataWeave" , dax : "DAX" , django : "Django/Jinja2" , jinja2 : "Django/Jinja2" , "dns-zone-file" : "DNS zone file" , "dns-zone" : "DNS zone file" , dockerfile : "Docker" , dot : "DOT (Graphviz)" , gv : "DOT (Graphviz)" , ebnf : "EBNF" , editorconfig : "EditorConfig" , ejs : "EJS" , etlua : "Embedded Lua templating" , erb : "ERB" , "excel-formula" : "Excel Formula" , xlsx : "Excel Formula" , xls : "Excel Formula" , fsharp : "F#" , "firestore-security-rules" : "Firestore security rules" , ftl : "FreeMarker Template Language" , gml : "GameMaker Language" , gamemakerlanguage : "GameMaker Language" , gap : "GAP (CAS)" , gcode : "G-code" , gdscript : "GDScript" , gedcom : "GEDCOM" , gettext : "gettext" , po : "gettext" , glsl : "GLSL" , gn : "GN" , gni : "GN" , "linker-script" : "GNU Linker Script" , ld : "GNU Linker Script" , "go-module" : "Go module" , "go-mod" : "Go module" , graphql : "GraphQL" , hbs : "Handlebars" , hs : "Haskell" , hcl : "HCL" , hlsl : "HLSL" , http : "HTTP" , hpkp : "HTTP Public-Key-Pins" , hsts : "HTTP Strict-Transport-Security" , ichigojam : "IchigoJam" , "icu-message-format" : "ICU Message Format" , idr : "Idris" , ignore : ".ignore" , gitignore : ".gitignore" , hgignore : ".hgignore" , npmignore : ".npmignore" , inform7 : "Inform 7" , javadoc : "JavaDoc" , javadoclike : "JavaDoc-like" , javastacktrace : "Java stack trace" , jq : "JQ" , jsdoc : "JSDoc" , "js-extras" : "JS Extras" , json : "JSON" , webmanifest : "Web App Manifest" , json5 : "JSON5" , jsonp : "JSONP" , jsstacktrace : "JS stack trace" , "js-templates" : "JS Templates" , keepalived : "Keepalived Configure" , kts : "Kotlin Script" , kt : "Kotlin" , kumir : "KuMir (КуМир)" , kum : "KuMir (КуМир)" , latex : "LaTeX" , tex : "TeX" , context : "ConTeXt" , lilypond : "LilyPond" , ly : "LilyPond" , emacs : "Lisp" , elisp : "Lisp" , "emacs-lisp" : "Lisp" , llvm : "LLVM IR" , log : "Log file" , lolcode : "LOLCODE" , magma : "Magma (CAS)" , md : "Markdown" , "markup-templating" : "Markup templating" , matlab : "MATLAB" , maxscript : "MAXScript" , mel : "MEL" , metafont : "METAFONT" , mongodb : "MongoDB" , moon : "MoonScript" , n1ql : "N1QL" , n4js : "N4JS" , n4jsd : "N4JS" , "nand2tetris-hdl" : "Nand To Tetris HDL" , naniscript : "Naninovel Script" , nani : "Naninovel Script" , nasm : "NASM" , neon : "NEON" , nginx : "nginx" , nsis : "NSIS" , objectivec : "Objective-C" , objc : "Objective-C" , ocaml : "OCaml" , opencl : "OpenCL" , openqasm : "OpenQasm" , qasm : "OpenQasm" , parigp : "PARI/GP" , objectpascal : "Object Pascal" , psl : "PATROL Scripting Language" , pcaxis : "PC-Axis" , px : "PC-Axis" , peoplecode : "PeopleCode" , pcode : "PeopleCode" , php : "PHP" , phpdoc : "PHPDoc" , "php-extras" : "PHP Extras" , "plant-uml" : "PlantUML" , plantuml : "PlantUML" , plsql : "PL/SQL" , powerquery : "PowerQuery" , pq : "PowerQuery" , mscript : "PowerQuery" , powershell : "PowerShell" , promql : "PromQL" , properties : ".properties" , protobuf : "Protocol Buffers" , purebasic : "PureBasic" , pbfasm : "PureBasic" , purs : "PureScript" , py : "Python" , qsharp : "Q#" , qs : "Q#" , q : "Q (kdb+ database)" , qml : "QML" , rkt : "Racket" , cshtml : "Razor C#" , razor : "Razor C#" , jsx : "React JSX" , tsx : "React TSX" , renpy : "Ren'py" , rpy : "Ren'py" , res : "ReScript" , rest : "reST (reStructuredText)" , robotframework : "Robot Framework" , robot : "Robot Framework" , rb : "Ruby" , sas : "SAS" , sass : "Sass (Sass)" , scs
! function ( ) { function t ( t ) { var e = document . createElement ( "textarea" ) ; e . value = t . getText ( ) , e . style . top = "0" , e . style . left = "0" , e . style . position = "fixed" , document . body . appendChild ( e ) , e . focus ( ) , e . select ( ) ; try { var o = document . execCommand ( "copy" ) ; setTimeout ( ( function ( ) { o ? t . success ( ) : t . error ( ) } ) , 1 ) } catch ( e ) { setTimeout ( ( function ( ) { t . error ( e ) } ) , 1 ) } document . body . removeChild ( e ) } "undefined" != typeof Prism && "undefined" != typeof document && ( Prism . plugins . toolbar ? Prism . plugins . toolbar . registerButton ( "copy-to-clipboard" , ( function ( e ) { var o = e . element , n = function ( t ) { var e = { copy : "Copy" , "copy-error" : "Press Ctrl+C to copy" , "copy-success" : "Copied!" , "copy-timeout" : 5e3 } ; for ( var o in e ) { for ( var n = "data-prismjs-" + o , c = t ; c && ! c . hasAttribute ( n ) ; ) c = c . parentElement ; c && ( e [ o ] = c . getAttribute ( n ) ) } return e } ( o ) , c = document . createElement ( "button" ) ; c . className = "copy-to-clipboard-button" , c . setAttribute ( "type" , "button" ) ; var r = document . createElement ( "span" ) ; return c . appendChild ( r ) , u ( "copy" ) , function ( e , o ) { e . addEventListener ( "click" , ( function ( ) { ! function ( e ) { navigator . clipboard ? navigator . clipboard . writeText ( e . getText ( ) ) . then ( e . success , ( function ( ) { t ( e ) } ) ) : t ( e ) } ( o ) } ) ) } ( c , { getText : function ( ) { return o . textContent } , success : function ( ) { u ( "copy-success" ) , i ( ) } , error : function ( ) { u ( "copy-error" ) , setTimeout ( ( function ( ) { ! function ( t ) { window . getSelection ( ) . selectAllChildren ( t ) } ( o ) } ) , 1 ) , i ( ) } } ) , c ; function i ( ) { setTimeout ( ( function ( ) { u ( "copy" ) } ) , n [ "copy-timeout" ] ) } function u ( t ) { r . textContent = n [ t ] , c . setAttribute ( "data-copy-state" , t ) } } ) ) : console . warn ( "Copy to Clipboard plugin loaded before Toolbar plugin." ) ) } ( ) ;