"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var I,v;function Q(){if(v)return I;v=1;function D(n){return new RegExp(n.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function S(n){return n?typeof n=="string"?n:n.source:null}function i(n){return e("(?=",n,")")}function e(...n){return n.map(s=>S(s)).join("")}function w(n){const o=n[n.length-1];return typeof o=="object"&&o.constructor===Object?(n.splice(n.length-1,1),o):{}}function t(...n){return"("+(w(n).capture?"":"?:")+n.map(u=>S(u)).join("|")+")"}function U(n){const o=["abstract","and","as","assert","base","begin","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","extern","finally","fixed","for","fun","function","global","if","in","inherit","inline","interface","internal","lazy","let","match","member","module","mutable","namespace","new","of","open","or","override","private","public","rec","return","static","struct","then","to","try","type","upcast","use","val","void","when","while","with","yield"],s={scope:"keyword",match:/\b(yield|return|let|do|match|use)!/},u=["if","else","endif","line","nowarn","light","r","i","I","load","time","help","quit"],B=["true","false","null","Some","None","Ok","Error","infinity","infinityf","nan","nanf"],Y=["__LINE__","__SOURCE_DIRECTORY__","__SOURCE_FILE__"],k=["bool","byte","sbyte","int8","int16","int32","uint8","uint16","uint32","int","uint","int64","uint64","nativeint","unativeint","decimal","float","double","float32","single","char","string","unit","bigint","option","voption","list","array","seq","byref","exn","inref","nativeptr","obj","outref","voidptr","Result"],a={keyword:o,literal:B,built_in:["not","ref","raise","reraise","dict","readOnlyDict","set","get","enum","sizeof","typeof","typedefof","nameof","nullArg","invalidArg","invalidOp","id","fst","snd","ignore","lock","using","box","unbox","tryUnbox","printf","printfn","sprintf","eprintf","eprintfn","fprintf","fprintfn","failwith","failwithf"],"variable.constant":Y},E={variants:[n.COMMENT(/\(\*(?!\))/,/\*\)/,{contains:["self"]}),n.C_LINE_COMMENT_MODE]},F=/[a-zA-Z_](\w|')*/,r={scope:"variable",begin:/``/,end:/``/},N=/\B('|\^)/,_={scope:"symbol",variants:[{match:e(N,/``.*?``/)},{match:e(N,n.UNDERSCORE_IDENT_RE)}],relevance:0},b=function({includeEqual:d}){let c;d?c="!%&*+-/<=>@^|~?":c="!%&*+-/<>@^|~?";const $=Array.from(c),h=e("[",...$.map(D),"]"),A=t(h,/\./),q=e(A,i(A)),W=t(e(q,A,"*"),e(h,"+"));return{scope:"operator",match:t(W,/:\?>/,/:\?/,/:>/,/:=/,/::?/,/\$/),relevance:0}},m=b({includeEqual:!0}),G=b({includeEqual:!1}),g=function(d,c){return{begin:e(d,i(e(/\s*/,t(/\w/,/'/,/\^/,/#/,/``/,/\(/,/{\|/)))),beginScope:c,end:i(t(/\n/,/=/)),relevance:0,keywords:n.inherit(a,{type:k}),contains:[E,_,n.inherit(r,{scope:null}),G]}},R=g(/:/,"operator"),x=g(/\bof\b/,"keyword"),H={begin:[/(^|\s+)/,/type/,/\s+/,F],beginScope:{2:"keyword",4:"title.class"},end:i(/\(|=|$/),keywords:a,contains:[E,n.inherit(r,{scope:null}),_,{scope:"operator",match:/<|>/},R]},y={scope:"computation-expression",match:/\b[_a-z]\w*(?=\s*\{)/},C={begin:[/^\s*/,e(/#/,t(...u)),/\b/],beginScope:{2:"meta"},end:i(/\s|$/)},p={variants:[n.BINARY_NUMBER_MODE,n.C_NUMBER_MODE]},f={scope:"string",begin:/"/,end:/"/,contains:[n.BACKSLASH_ESCAPE]},O={scope:"string",begin:/@"/,end:/"/,contains:[{match:/""/},n.BACKSLASH_ESCAPE]},P={scope:"string",begin:/"""/,end:/"""/,relevance:2},l={scope:"subst",begin:/\{/,end:/\}/,keywords:a},L={scope:"string",begin:/\$"/,end:/"/,contains:[{match:/\{\{/},{match:/\}\}/},n.BACKSLASH_ESCAPE,l]},M={scope:"string",begin:/(\$@|@\$)"/,end:/"/,contains:[{match:/\{\{/},{match:/\}\}/},{match:/""/},n.BACKSLASH_ESCAPE,l]},K={scope:"string",begin:/\$"""/,end:/"""/,contains:[{match:/\{\{/},{match:/\}\}/},l],relevance:2},T={scope:"string",match:e(/'/,t(/[^\\']/,/\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8})/),/'/)};return l.contains=[M,L,O,f,T,s,E,r,R,y,C,p,_,m],{name:"F#",aliases:["fs","f#"],keywords:a,illegal:/\/\*/,classNameAliases:{"computation-expression":"keyword"},contains:[s,{variants:[K,M,L,P,O,f,T]},E,r,H,{scope:"meta",begin:/\[</,end:/>\]/,relevance:2,contains:[r,P,O,f,T,p]},x,R,y,C,p,_,m]}}return I=U,I}exports.__require=Q;
