{"version":3,"sources":["webpack:///./node_modules/brace/mode/actionscript.js","webpack:///./node_modules/brace/mode/ada.js","webpack:///./node_modules/brace/mode/apache_conf.js","webpack:///./node_modules/brace/mode/asciidoc.js","webpack:///./node_modules/brace/mode/assembly_x86.js","webpack:///./node_modules/brace/mode/batchfile.js","webpack:///./node_modules/brace/mode/c_cpp.js","webpack:///./node_modules/brace/mode/clojure.js","webpack:///./node_modules/brace/mode/cobol.js","webpack:///./node_modules/brace/mode/coffee.js","webpack:///./node_modules/brace/mode/csharp.js","webpack:///./node_modules/brace/mode/css.js","webpack:///./node_modules/brace/mode/d.js","webpack:///./node_modules/brace/mode/dart.js","webpack:///./node_modules/brace/mode/diff.js","webpack:///./node_modules/brace/mode/django.js","webpack:///./node_modules/brace/mode/dockerfile.js","webpack:///./node_modules/brace/mode/dot.js","webpack:///./node_modules/brace/mode/ejs.js","webpack:///./node_modules/brace/mode/elixir.js","webpack:///./node_modules/brace/mode/elm.js","webpack:///./node_modules/brace/mode/erlang.js","webpack:///./node_modules/brace/mode/fortran.js","webpack:///./node_modules/brace/mode/gitignore.js","webpack:///./node_modules/brace/mode/glsl.js","webpack:///./node_modules/brace/mode/gobstones.js","webpack:///./node_modules/brace/mode/golang.js","webpack:///./node_modules/brace/mode/graphqlschema.js","webpack:///./node_modules/brace/mode/groovy.js","webpack:///./node_modules/brace/mode/haml.js","webpack:///./node_modules/brace/mode/handlebars.js","webpack:///./node_modules/brace/mode/haskell.js","webpack:///./node_modules/brace/mode/haxe.js","webpack:///./node_modules/brace/mode/hjson.js","webpack:///./node_modules/brace/mode/html.js","webpack:///./node_modules/brace/mode/ini.js","webpack:///./node_modules/brace/mode/jade.js","webpack:///./node_modules/brace/mode/java.js","webpack:///./node_modules/brace/mode/javascript.js","webpack:///./node_modules/brace/mode/json.js","webpack:///./node_modules/brace/mode/jsp.js","webpack:///./node_modules/brace/mode/jsx.js","webpack:///./node_modules/brace/mode/julia.js","webpack:///./node_modules/brace/mode/kotlin.js","webpack:///./node_modules/brace/mode/latex.js","webpack:///./node_modules/brace/mode/less.js","webpack:///./node_modules/brace/mode/lisp.js","webpack:///./node_modules/brace/mode/livescript.js","webpack:///./node_modules/brace/mode/lua.js","webpack:///./node_modules/brace/mode/makefile.js","webpack:///./node_modules/brace/mode/markdown.js","webpack:///./node_modules/brace/mode/matlab.js","webpack:///./node_modules/brace/mode/mel.js","webpack:///./node_modules/brace/mode/mysql.js","webpack:///./node_modules/brace/mode/nix.js","webpack:///./node_modules/brace/mode/nsis.js","webpack:///./node_modules/brace/mode/objectivec.js","webpack:///./node_modules/brace/mode/ocaml.js","webpack:///./node_modules/brace/mode/pascal.js","webpack:///./node_modules/brace/mode/perl.js","webpack:///./node_modules/brace/mode/pgsql.js","webpack:///./node_modules/brace/mode/php.js","webpack:///./node_modules/brace/mode/powershell.js","webpack:///./node_modules/brace/mode/prolog.js","webpack:///./node_modules/brace/mode/protobuf.js","webpack:///./node_modules/brace/mode/python.js","webpack:///./node_modules/brace/mode/r.js","webpack:///./node_modules/brace/mode/rdoc.js","webpack:///./node_modules/brace/mode/rst.js","webpack:///./node_modules/brace/mode/ruby.js","webpack:///./node_modules/brace/mode/rust.js","webpack:///./node_modules/brace/mode/sass.js","webpack:///./node_modules/brace/mode/scad.js","webpack:///./node_modules/brace/mode/scala.js","webpack:///./node_modules/brace/mode/scheme.js","webpack:///./node_modules/brace/mode/scss.js","webpack:///./node_modules/brace/mode/sh.js","webpack:///./node_modules/brace/mode/sjs.js","webpack:///./node_modules/brace/mode/smarty.js","webpack:///./node_modules/brace/mode/sql.js","webpack:///./node_modules/brace/mode/stylus.js","webpack:///./node_modules/brace/mode/svg.js","webpack:///./node_modules/brace/mode/swift.js","webpack:///./node_modules/brace/mode/tcl.js","webpack:///./node_modules/brace/mode/tex.js","webpack:///./node_modules/brace/mode/textile.js","webpack:///./node_modules/brace/mode/toml.js","webpack:///./node_modules/brace/mode/tsx.js","webpack:///./node_modules/brace/mode/twig.js","webpack:///./node_modules/brace/mode/typescript.js","webpack:///./node_modules/brace/mode/vala.js","webpack:///./node_modules/brace/mode/vbscript.js","webpack:///./node_modules/brace/mode/verilog.js","webpack:///./node_modules/brace/mode/vhdl.js","webpack:///./node_modules/brace/mode/xml.js","webpack:///./node_modules/brace/mode/yaml.js"],"names":["ace","define","acequire","exports","module","oop","TextHighlightRules","ActionScriptHighlightRules","this","$rules","start","token","regex","push","next","defaultToken","push_","normalizeRules","metaData","fileTypes","keyEquivalent","name","scopeName","inherits","Range","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","RegExp","source","replace","foldingStopMarker","end","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","session","foldStyle","row","line","getLine","test","fw","getFoldWidgetRange","forceMultiline","match","getCommentRegionBlock","i","index","openingBracketBlock","range","getCommentFoldRange","length","isMultiLine","getSectionRange","closingBracketBlock","startIndent","search","startRow","startColumn","endRow","maxRow","getLength","indent","subRange","re","depth","m","exec","call","prototype","TextMode","Mode","HighlightRules","foldingRules","$behaviour","$defaultBehaviour","lineCommentStart","blockComment","$id","AdaHighlightRules","keywordMapper","createKeywordMapper","ApacheConfHighlightRules","caseInsensitive","AsciidocHighlightRules","quoteRule","ch","include","identifierRe","noEscape","tokenMap","macro","tableBlock","titleUnderline","singleLineTitle","pageBreak","option","otherBlock","literal","optionalTitle","escape","link","state","stateRules","rule","args","concat","filter","x","splice","apply","singleLineHeadingRe","bgTokenizer","getState","levels","getTokenType","startHeadingLevel","getLevel","value","endColumn","lastIndexOf","getTokens","type","level","indexOf","Infinity","AsciidocFoldMode","getNextLineIndent","tab","Array","join","$getIndent","AssemblyX86HighlightRules","indentationBlock","startLevel","prev","prevIndent","nextIndent","foldWidgets","BatchFileHighlightRules","variable","DocCommentHighlightRules","getTagRule","getStartRule","getEndRule","cFunctions","c_cppHighlightRules","$keywords","escapeRe","formatRe","stateName","embedRules","MatchingBraceOutdent","checkOutdent","input","autoOutdent","doc","column","openBracePos","findMatchingBracket","CstyleBehaviour","CStyleFoldMode","$outdent","tokenizedLine","getTokenizer","getLineTokens","tokens","endState","ClojureHighlightRules","MatchingParensOutdent","minorIndentFunctions","$toIndent","str","split","map","$calculateIndent","isParen","baseIndent","delta","substring","iBefore","fn","undefined","CobolHighlightRules","CoffeeHighlightRules","identifier","illegal","functionRule","stringEscape","onMatch","val","stack","unshift","shift","heregex","comment","Rules","Outdent","WorkerClient","indenter","createWorker","worker","attachToDocument","getDocument","on","e","setAnnotations","data","clearAnnotations","CSharpHighlightRules","CFoldMode","usingRe","getFoldWidgetRangeBase","getFoldWidgetBase","getUsingStatementBlock","getRegionBlock","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","url","strings","consumeLineEnd","escapes","propertyMap","CssCompletions","completionsDefined","defineCompletions","document","style","createElement","toLowerCase","hasOwnProperty","getCompletions","pos","prefix","getTokenAt","substr","getPropertyValueCompletions","getPropertyCompletions","Object","keys","property","caption","snippet","meta","score","Number","MAX_VALUE","values","Behaviour","TokenIterator","CssBehaviour","inherit","add","action","editor","text","cursor","getCursorPosition","iterator","getCurrentToken","stepBackward","selection","selected","getTextRange","$completer","DHighlightRules","storages","stringEscapesSeq","operators","currentState","firstLineMatch","DartHighlightRules","stringfill","CMode","DiffHighlightRules","flag","regExpList","regList","slice","l","fromPoints","JavaScriptHighlightRules","options","escapedRe","comments","noES6","no_regex","nextState","jsx","JSX","tagRegex","jsxTag","offset","charAt","jsxJsRule","jsxAttributes","reference","$quotes","results","XmlHighlightRules","normalize","processing_instruction","doctype","int_subset","cdata","attr_reference","tag","tag_whitespace","whitespace","string","attributes","attribute_value","constructor","embedTagRules","lang","tagMap","createMap","a","button","form","img","label","script","select","textarea","table","tbody","td","tfoot","th","tr","HtmlHighlightRules","addRules","group","tag_stuff","getRules","is","XmlBehaviour","quote","getSelectionRange","getWrapBehavioursEnabled","rightChar","rightSpace","position","firstChar","lastChar","tokenEnd","getCurrentTokenColumn","stepForward","tokenRow","getCurrentTokenRow","tokenColumn","element","voidElements","nextToken","getTabString","defaultMode","subModes","$getMode","key","$tryMode","mode","optionalEndTags","mixin","Tag","tagName","closing","selfClosing","_getFirstTagInLine","_findEndTagInLine","getCommentFoldWidget","_readTagForward","_readTagBackward","_pop","top","pop","firstTag","MixedFoldMode","XmlFoldMode","optionalTags","globalAttributes","attributeMap","elements","findTagName","HtmlCompletions","getTagCompletions","getAttributeCompletions","getAttributeValueCompletions","getHTMLEntityCompletions","attribute","attributeName","findAttributeName","JavaScriptMode","CssMode","HtmlFoldMode","fragmentContext","createModeDelegates","arrayToMap","context","HtmlMode","DjangoHighlightRules","DjangoHtmlHighlightRules","merge","reservedKeywords","languageConstructs","ShHighlightRules","splitRegex","rules","heredoc","indentedHeredoc","integer","variables","outdents","trim","last","remove","DockerfileHighlightRules","startRules","ShMode","DotHighlightRules","keywords","DotFoldMode","constantOtherSymbol","constantNumericHex","qString","qqString","tString","constantNumericFloat","RubyHighlightRules","instanceVariable","startingClassOrMethod","startingDoBlock","startingConditional","prevLine","EjsHighlightRules","ElixirHighlightRules","TODO","originalRegex","todo","ElmHighlightRules","smallRe","largeRe","idRe","markdown","docComment","stringGap","nestable","ErlangHighlightRules","FortranHighlightRules","strPre","pointFloat","floatNumber","GitignoreHighlightRules","glslHighlightRules","forEach","GobstonesHighlightRules","GolangHighlightRules","stringEscapeRe","GraphQLSchemaHighlightRules","GroovyHighlightRules","RubyExports","HamlHighlightRules","getKeywords","pop2","HandlebarsHighlightRules","hbs","handlebars","HtmlBehaviour","HaskellHighlightRules","HaxeHighlightRules","HjsonHighlightRules","IniHighlightRules","startName","escaped","escapeRegExp","github_embed","MarkdownHighlightRules","ScssHighlightRules","properties","browserPrefix","prefixProperties","ret","ln","functions","constants","colors","tags","LessHighlightRules","keywordList","first","second","mixin_embed","JadeHighlightRules","JavaHighlightRules","JsonHighlightRules","JspHighlightRules","endRules","JsxHighlightRules","buildinConstants","reserved","JuliaHighlightRules","KotlinHighlightRules","LatexHighlightRules","keywordLevels","latexBlock","latexSection","returnRange","stream","dir","getType","step","getCurrentTokenRange","stackDepth","LatexFoldMode","braces","getMatching","lead","startToken","LispHighlightRules","LiveScriptMode","keywordend","superclass","sub","sup","fun","extended","extend$","obj","src","own","import$","displayName","that","$tokenizer","Tokenizer","ref$","qdoc","qqdoc","qstring","qqstring","js","words","LuaHighlightRules","isStart","isEnd","luaBlock","indentKeywords","LuaFoldMode","outdentKeywords","getNetIndentLevel","prevTokens","expectedIndent","outdentRows","ShHighlightFile","MakefileHighlightRules","$indentWithTabs","heading","isHeading","XmlMode","MarkdownFoldMode","marker","parseInt","MatlabHighlightRules","noQstring","MELHighlightRules","MysqlHighlightRules","NixHighlightRules","NSISHighlightRules","C_Highlight_File","CHighlightRules","ObjectiveCHighlightRules","escapedConstRe","cObj","cRules","r","bracketed_content","OcamlHighlightRules","toggleCommentLines","outdent","PascalHighlightRules","PerlHighlightRules","lineStartOnly","PythonHighlightRules","PgsqlHighlightRules","sqlRules","PhpLangHighlightRules","builtinFunctions","builtinConstants","builtinVariables","futureReserved","currentSate","PhpHighlightRules","functionMap","variableMap","PhpCompletions","getFunctionCompletions","getVariableCompletions","getArrayKeyCompletions","func","docHTML","unicode","PhpMode","opts","tokenRe","packages","L","Mn","Mc","Nd","Pc","nonTokenRe","inline","inlinePhp","PowershellHighlightRules","PrologHighlightRules","ProtobufHighlightRules","markers","PythonFoldMode","TexHighlightRules","textClass","RHighlightRules","rdRules","RDocHighlightRules","suppressHighlighting","RSTHighlightRules","endStringSuffix","startStringPrefix","RustHighlightRules","SassHighlightRules","Math","max","scadHighlightRules","ScalaHighlightRules","SchemeHighlightRules","SJSHighlightRules","parent","contextAware","f","isContextAware","ctxBegin","ctxEnd","block_arguments","function_arguments","bstring","embeddableRules","String","string_interp","bstring_interp_single","bstring_interp_single_call","JSMode","SmartyHighlightRules","smartyRules","smartyStart","SqlHighlightRules","StylusHighlightRules","SvgHighlightRules","SwiftHighlightRules","interpolation","interpStart","mainRule","multiline","open","error","Boolean","close","TclHighlightRules","allowAutoInsert","TextileHighlightRules","TomlHighlightRules","TypeScriptHighlightRules","JSRules","jsMode","tsMode","$highlightRuleConfig","TwigHighlightRules","ValaHighlightRules","push_disabled","VBScriptHighlightRules","VerilogHighlightRules","VHDLHighlightRules","YamlHighlightRules"],"mappings":"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BACPC,MAAO,qLACT,CAAED,MAAO,+BACPC,MAAO,0CACT,CAAED,MAAO,yBACPC,MAAO,uDACT,CAAED,MAAO,0BACPC,MAAO,kEACT,CAAED,MAAO,kCACPC,MAAO,4DACT,CAAED,MAAO,yBACPC,MAAO,0DACT,CAAED,MAAO,6BACPC,MAAO,2GACT,CAAED,MAAO,yBACPC,MAAO,2CACT,CAAED,MAAO,gCACPC,MAAO,0MACT,CAAED,MAAO,4BACPC,MAAO,sCACT,CAAED,MAAO,yBACPC,MAAO,qCACT,CAAED,MAAO,6BACPC,MAAO,wDACT,CAAED,MAAO,gCACPC,MAAO,8CACT,CAAED,MAAO,gCACPC,MAAO,gCACT,CAAED,MAAO,6BACPC,MAAO,kCACT,CAAED,MAAO,0BACPC,MAAO,2CACT,CAAED,MAAO,6BACPC,MAAO,uFACT,CAAED,MAAO,2BACPC,MAAO,kIACT,CAAED,MAAO,0BACPC,MAAO,2KACT,CAAED,MAAO,yBACPC,MAAO,gFACT,CAAED,MAAO,+BACPC,MAAO,qIACT,CAAED,MAAO,0BACPC,MAAO,2QACT,CAAED,MAAO,0BACPC,MAAO,mHACT,CAAED,MAAO,iCACPC,MAAO,wEACT,CAAED,MAAO,4BACPC,MAAO,6DACT,CAAED,MAAO,2BACPC,MAAO,sRACT,CAAED,MAAO,6BACPC,MAAO,gIACT,CAAED,MAAO,8BACPC,MAAO,qEACT,CAAED,MAAO,wBACPC,MAAO,iCACT,CAAED,MAAO,yBACPC,MAAO,imBACT,CAAED,MAAO,+BACPC,MAAO,8EACT,CAAED,MAAO,iCACPC,MAAO,+FACT,CAAED,MACC,CAAE,yBACA,OACA,6BACA,OACA,0BACA,QACHC,MAAO,mEACT,CAAED,MACC,CAAE,kCACA,0BACA,2BACA,mCACHC,MAAO,seACT,CAAED,MAAO,CAAE,8BAA+B,QACxCC,MAAO,wDACT,CAAED,MAAO,2BACPC,MAAO,kCACP2E,iBAAiB,GACnB,CAAE5E,MAAO,8BAA+BC,MAAO,cAC/C,CAAED,MACC,CAAE,OACA,yCACA,yBACA,yCACA,QACHC,MAAO,+BAE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F,MAAO,2CACPC,MAAO,KACPE,KAAM,OACR,CAAEH,MACC,CAAE,sCACA,2CACHC,MAAO,WACT,CAAE+E,QAAS,6BACX,CAAEA,QAAS,oBACX,CAAE5E,aAAc,mCACxB,aACC,CAAE,CAAEJ,MACC,CAAE,0CACA,uCACA,mCACA,uCACA,mCACA,oCACHC,MAAO,iEACT,CAAED,MAAO,mCACPC,MAAO,iBACT,CAAED,MACC,CAAE,0CACA,6BACHC,MAAO,cACT,CAAED,MAAO,mCAAoCC,MAAO,UACvD,WACC,CAAE,CAAED,MAAO,wCACPC,MAAO,OACPI,MACC,CAAE,CAAEL,MAAO,iCACPC,MAAO,IACPE,KAAM,OACR,CAAEC,aAAc,qCACxB,oBACC,CAAE,CAAEJ,MACC,CAAE,+BACA,6CACA,+BACA,0CACA,+BACA,iDACA,+BACA,+CACA,+BACA,2CACHC,MAAO,qEACPC,KACC,CAAE,CAAEF,MACC,CAAE,+CACA,+BACA,4CACHC,MAAO,mBACPE,KAAM,OACR,CAAE6E,QAAS,oBACX,CAAE5E,aAAc,kCACrB,CAAEJ,MAAO,+BACPC,MAAO,uDACPC,KACC,CAAE,CAAEF,MACC,CAAE,+CACA,+BACA,4CACHC,MAAO,mBACPE,KAAM,OACR,CAAEH,MACC,CAAE,OACA,6CACA,OACA,0CACA,OACA,iDACA,OACA,+CACA,OACA,kDACHC,MAAO,uEACPC,KACC,CAAE,CAAEF,MACC,CAAE,+CACA,OACA,2CACHC,MAAO,iBACPE,KAAM,OACR,CAAEH,MAAO,0CAA2CC,MAAO,KAC3D,CAAE+E,QAAS,sBAChB,CAAEhF,MAAO,sCACPC,MAAO,2BACT,CAAE+E,QAAS,oBACX,CAAE5E,aAAc,mCACxB,aACC,CAAE,CAAEJ,MACC,CAAE,wBACA,6CACA,wBACA,mCACA,wBACA,kDACHC,MAAO,oDACPC,KACC,CAAE,CAAEF,MACC,CAAE,+CACA,wBACA,4CACHC,MAAO,oBACPE,KAAM,OACR,CAAE6E,QAAS,oBACX,CAAE5E,aAAc,2BACrB,CAAEJ,MACC,CAAE,wBACA,6CACA,wBACA,mCACA,wBACA,4CACHC,MAAO,qDACZ,mBACC,CAAE,CAAE+E,QAAS,YACX,CAAEA,QAAS,iBACX,CAAEA,QAAS,gBACX,CAAEA,QAAS,eACX,CAAEA,QAAS,YACX,CAAEA,QAAS,qBACX,CAAEA,QAAS,kBACX,CAAEA,QAAS,UACX,CAAEA,QAAS,SACX,CAAEA,QAAS,WACX,CAAEA,QAAS,6BACX,CAAEA,QAAS,cACX,CAAEA,QAAS,WACX,CAAEA,QAAS,SACX,CAAEA,QAAS,WACX,CAAEA,QAAS,sBACX,CAAEA,QAAS,cACd,cACC,CAAE,CAAEhF,MAAO,4BACPC,MAAO,WACPC,KACC,CAAE,CAAEF,MAAO,6BACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,oCACX,CAAEA,QAAS,oBACX,CAAE5E,aAAc,+BACrB,CAAEJ,MAAO,8BACPC,MAAO,aACPC,KACC,CAAE,CAAEF,MAAO,6BACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,oCACX,CAAEA,QAAS,oBACX,CAAE5E,aAAc,iCACrB,CAAEJ,MAAO,iCACPC,MAAO,gBACPC,KACC,CAAE,CAAEF,MAAO,6BACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,oCACX,CAAEA,QAAS,oBACX,CAAE5E,aAAc,oCACrB,CAAEJ,MACC,CAAE,6BACA,OACA,uCACA,OACA,+CACA,OACA,8BACA,OACA,+CACHC,MAAO,yFACT,CAAED,MAAO,6BACPC,MAAO,YACPC,KACC,CAAE,CAAEF,MAAO,6BACPC,MAAO,YACPE,KAAM,OACR,CAAEH,MAAO,OACPC,MAAO,UACPC,KACC,CAAE,CAAEF,MAAO,uCACPC,MAAO,kBACPE,KAAM,OACR,CAAE6E,QAAS,8BAChB,CAAEA,QAAS,oBACX,CAAE5E,aAAc,gCACrB,CAAEJ,MAAO,6BACPC,MAAO,YACPC,KACC,CAAE,CAAEF,MAAO,6BACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,oCACX,CAAEA,QAAS,oBACX,CAAE5E,aAAc,gCACrB,CAAEJ,MAAO,+BACPC,MAAO,cACPC,KACC,CAAE,CAAEF,MAAO,6BACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,oCACX,CAAEA,QAAS,oBACX,CAAE5E,aAAc,kCACrB,CAAEJ,MAAO,+BACPC,MAAO,cACPC,KACC,CAAE,CAAEF,MAAO,6BACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,oBACX,CAAE5E,aAAc,mCACxB,YACC,CAAE,CAAEJ,MACC,CAAE,uBACA,yCACA,wBACHC,MAAO,oDACPC,KACC,CAAE,CAAEF,MAAO,yCACPC,MAAO,MACPE,KAAM,OACR,CAAEH,MAAO,CAAE,OAAQ,8BAA+B,QAChDC,MAAO,qDACT,CAAED,MAAO,OACPC,MAAO,UACPC,KACC,CAAE,CAAEF,MAAO,uCACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,6BACX,CAAEA,QAAS,8BAChB,CAAEA,QAAS,oBACX,CAAE5E,aAAc,2BACxB,iBACC,CAAE,CAAEJ,MAAO,4BACPC,MAAO,6FACPC,KACC,CAAE,CAAEF,MAAO,+CACPC,MAAO,MACPE,KAAM,OACR,CAAEH,MACC,CAAE,uCACA,OACA,+CACA,OACA,oCACA,OACA,kDACHC,MAAO,8NACPC,KACC,CAAE,CAAEF,MAAO,OAAQC,MAAO,UAAWE,KAAM,OACzC,CAAEH,MAAO,0CAA2CC,MAAO,KAC3D,CAAE+E,QAAS,sBAChB,CAAEhF,MACC,CAAE,uCACA,OACA,+CACA,OACA,8BACA,OACA,kDACHC,MAAO,4FACPC,KACC,CAAE,CAAEF,MAAO,OAAQC,MAAO,UAAWE,KAAM,OACzC,CAAEH,MAAO,0CAA2CC,MAAO,KAC3D,CAAE+E,QAAS,sBAChB,CAAE5E,aAAc,gCACxB,2BACC,CAAE,CAAEJ,MACC,CAAE,+BACA,6CACA,+BACA,0CACA,+BACA,iDACA,+BACA,uCACA,+BACA,2CACHC,MAAO,kFACPC,KACC,CAAE,CAAEF,MACC,CAAE,+CACA,+BACA,4CACHC,MAAO,mBACPE,KAAM,OACR,CAAE6E,QAAS,2BACX,CAAE5E,aAAc,kCACrB,CAAEJ,MACC,CAAE,+BACA,6CACA,+BACA,0CACA,+BACA,kDACHC,MAAO,sCACPC,KACC,CAAE,CAAEF,MACC,CAAE,+CACA,+BACA,4CACHC,MAAO,mBACPE,KAAM,OACR,CAAE6E,QAAS,2BACX,CAAE5E,aAAc,mCACxB,mCACC,CAAE,CAAEJ,MACC,CAAE,gDACA,uCACA,4CACHC,MAAO,iBACZ,0BACC,CAAE,CAAED,MAAO,2CACPC,MAAO,MACPC,KACC,CAAE,CAAEF,MAAO,yCACPC,MAAO,MACPE,KAAM,OACR,CAAEH,MACC,CAAE,8BACA,OACA,+CACHC,MAAO,yCACPC,KACC,CAAE,CAAEF,MAAO,oCACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,sBAChB,CAAEA,QAAS,oBACX,CAAE5E,aAAc,0CACxB,2BACC,CAAE,CAAEJ,MAAO,OACPC,MAAO,UACPC,KACC,CAAE,CAAEF,MAAO,gDACPC,MAAO,KACPE,KAAM,OACR,CAAEH,MAAO,iDACPC,MAAO,MACPC,KACC,CAAE,CAAEF,MAAO,+CACPC,MAAO,MACPE,KAAM,OACR,CAAEH,MAAO,0CAA2CC,MAAO,KAC3D,CAAE+E,QAAS,sBAChB,CAAEhF,MAAO,sCAAuCC,MAAO,OACvD,CAAE+E,QAAS,sBAChB,CAAEhF,MAAO,2CACPC,MAAO,KACT,CAAE+E,QAAS,qBACd,wBACC,CAAE,CAAEhF,MAAO,mDACPC,MAAO,MACPC,KACC,CAAE,CAAEF,MAAO,+BACPC,MAAO,UACPE,KAAM,OACR,CAAEH,MACC,CAAE,8BACA,yCACA,OACA,sCACHC,MAAO,oDACPC,KACC,CAAE,CAAEF,MAAO,4CACPC,MAAO,YACPE,KAAM,OACR,CAAE6E,QAAS,sBAChB,CAAEhF,MACC,CAAE,8BACA,OACA,6CACHC,MAAO,+CACT,CAAE+E,QAAS,oBACX,CAAE5E,aAAc,mCACxB,4BACC,CAAE,CAAEJ,MAAO,0CACPC,MAAO,IACPC,KACC,CAAE,CAAEF,MAAO,OAAQC,MAAO,aAAcE,KAAM,OAC5C,CAAEH,MACC,CAAE,sBACA,qCACA,qCACA,+BACA,gDACHC,MAAO,mGACjB,WACC,CAAE,CAAED,MAAO,yBACPC,MAAO,mFACZ,QACC,CAAE,CAAED,MAAO,2CACPC,MAAO,MACPC,KACC,CAAE,CAAEF,MAAO,yCACPC,MAAO,MACPE,KAAM,OACR,CAAEH,MAAO,oCACPC,MAAO,gBACT,CAAE+E,QAAS,oBACX,CAAE5E,aAAc,iCACxB,mBACC,CAAE,CAAEJ,MACC,CAAE,8BACA,6CACA,8BACA,yCACA,8BACA,iDACA,8BACA,oCACA,8BACA,+CACA,8BACA,4CACHC,MAAO,kFACT,CAAED,MACC,CAAE,+BACA,6CACA,+BACA,0CACA,+BACA,iDACA,+BACA,oCACA,+BACA,+CACA,+BACA,4CACHC,MAAO,mFACT,CAAED,MACC,CAAE,8BACA,6CACA,8BACA,yCACA,8BACA,iDACA,8BACA,oCACA,8BACA,+CACA,8BACA,4CACHC,MAAO,mFACZ,eACC,CAAE,CAAED,MACC,CAAE,gCACA,0BACA,qCACHC,MAAO,oCACZ,oBACC,CAAE,CAAED,MACC,CAAE,+BACA,6CACA,+BACA,0CACA,+BACA,iDACA,+BACA,kDACA,+BACA,+CACA,+BACA,4CACHC,MAAO,yFACZ,UACC,CAAE,CAAED,MAAO,OACPC,MAAO,UACPC,KACC,CAAE,CAAEF,MAAO,OAAQC,MAAO,UAAWE,KAAM,OACzC,CAAEH,MACC,CAAE,gCACA,6CACA,gCACA,+CACHC,MAAO,6CACT,CAAED,MACC,CAAE,yCACA,4CACA,0CACHC,MAAO,kBACT,CAAED,MACC,CAAE,yCACA,4CACA,0CACHC,MAAO,kBACT,CAAED,MACC,CAAE,yCACA,4CACA,0CACHC,MAAO,kBACT,CAAED,MACC,CAAE,yCACA,4CACA,0CACHC,MAAO,kBACT,CAAED,MACC,CAAE,yCACA,4CACA,0CACHC,MAAO,kBACT,CAAED,MACC,CAAE,yCACA,4CACA,0CACHC,MAAO,kBACT,CAAED,MACC,CAAE,wCACA,4CACA,yCACHC,MAAO,kBACT,CAAED,MACC,CAAE,yCACA,4CACA,0CACHC,MAAO,kBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,iBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,qBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,8CACA,4CACA,+CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MACC,CAAE,0CACA,4CACA,2CACHC,MAAO,yBACT,CAAED,MAAO,iCACPC,MAAO,qBACT,CAAED,MAAO,0CACPC,MAAO,WACjB,4BACC,CAAE,CAAED,MAAO,8CACPC,MAAO,MACPC,KACC,CAAE,CAAEF,MAAO,4CACPC,MAAO,MACPE,KAAM,OACR,CAAE6E,QAAS,oBACX,CAAE5E,aAAc,oCACxB,oBACC,CAAE,CAAEJ,MACC,CAAE,+BACA,6CACA,+BACA,0CACA,+BACA,iDACA,+BACA,kDACA,+BACA,2CACHC,MAAO,kFACPC,KACC,CAAE,CAAEF,MACC,CAAE,iDACA,+BACA,+CACA,+BACA,4CACHC,MAAO,8BACPE,KAAM,OACR,CAAE6E,QAAS,yBACX,CAAE5E,aAAc,mCACxB,gBACC,CAAE,CAAEJ,MACC,CAAE,iCACA,2BACA,uCACA,2BACA,4CACA,2BACA,+BACHC,MAAO,wFACT,CAAED,MACC,CAAE,iCACA,2BACA,wCACHC,MAAO,yCACPC,KACC,CAAE,CAAEF,MAAO,iDACPC,MAAO,MACPE,KAAM,OACR,CAAE6E,QAAS,yBACX,CAAE5E,aAAc,+BACxB,UACC,CAAE,CAAEJ,MAAO,6CACPC,MAAO,IACPC,KACC,CAAE,CAAEF,MAAO,2CACPC,MAAO,IACPE,KAAM,OACR,CAAEH,MACC,CAAE,uCACA,mCACA,uCACA,mCACA,oCACHC,MAAO,4DACT,CAAED,MAAO,gCAAiCC,MAAO,cACjD,CAAED,MACC,CAAE,4CACA,iDACA,oCACA,iDACA,iDACA,oCACA,iDACA,iDACA,iDACA,oCACA,qCACHC,MAAO,2GACT,CAAED,MACC,CAAE,4CACA,iDACA,oCACA,qCACHC,MAAO,4CACT,CAAED,MAAO,gCAAiCC,MAAO,OACjD,CAAEG,aAAc,kCACxB,qBACC,CAAE,CAAEJ,MAAO,mCACPC,MAAO,4DACZ,oBACC,CAAE,CAAED,MAAO,kCACPC,MAAO,+EACZ,SACC,CAAE,CAAED,MAAO,4CACPC,MAAO,MACPC,KACC,CAAE,CAAEF,MAAO,0CACPC,MAAO,MACPE,KAAM,OACR,CAAEH,MAAO,qCAAsCC,MAAO,KACtD,CAAE+E,QAAS,oBACX,CAAE5E,aAAc,kCACxB,YACC,CAAE,CAAE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AM,CAAC,CACHF,MAAO,OACPC,MAAO,mBACPE,KAAM,OACP,CACCH,MAAO,qCACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,gBACPE,KAAM,OACP,CACC6E,QAAS,kBAEd,CACChF,MAAO,OACPC,MAAO,KACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,KACPE,KAAM,OACP,CACC6E,QAAS,oBAGlB,CACChF,MAAO,CAAC,8BAA+B,QACvCC,MAAO,uBACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,mBACPE,KAAM,OACP,CACCH,MAAO,OACPC,MAAO,KACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,KACPE,KAAM,OACP,CACC6E,QAAS,iBAEd,CACChF,MAAO,qCACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,gBACPE,KAAM,OACP,CACC6E,QAAS,kBAEd,CACChF,MAAO,OACPC,MAAO,KACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,KACPE,KAAM,OACP,CACC6E,QAAS,qBAIrB,WAAY,CAAC,CACThF,MAAO,CACH,OACA,uBACA,OACA,wBAEJC,MAAO,0CAEX,YAAa,CAAC,CACVD,MAAO,0BACPC,MAAO,uMACR,CACCD,MAAO,yCACPC,MAAO,mCACR,CACCD,MAAO,yBACPC,MAAO,iEACR,CACCD,MAAO,0BACPC,MAAO,2BACR,CACCD,MAAO,qCACPC,MAAO,2BACR,CACCD,MAAO,qCACPC,MAAO,KACR,CACCD,MAAO,sCACPC,MAAO,KACR,CACCD,MAAO,8BACPC,MAAO,MACR,CACCD,MAAO,8CACPC,MAAO,aACR,CACCD,MAAO,qCACPC,MAAO,iBACR,CACCD,MAAO,4CACPC,MAAO,mBACR,CACCD,MAAO,kCACPC,MAAO,aACR,CACCD,MAAO,gCACPC,MAAO,QACR,CACCD,MAAO,gCACPC,MAAO,MAEX,cAAe,CAAC,CACZD,MAAO,uBACPC,MAAO,iBACR,CACCD,MAAO,OACPC,MAAO,KACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,KACPE,KAAM,OACP,CACC6E,QAAS,kBAGjB,cAAe,CAAC,CACZhF,MAAO,sCACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,aACPE,KAAM,OACP,CACC6E,QAAS,YAEd,CACChF,MAAO,sCACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,WACPE,KAAM,OACP,CACC6E,QAAS,kBAEd,CACCA,QAAS,aACV,CACChF,MAAO,qCACPC,MAAO,QAEX,cAAe,CAAC,CACZ+E,QAAS,eACV,CACCA,QAAS,aACV,CACCA,QAAS,YACV,CACCA,QAAS,cACV,CACCA,QAAS,cACV,CACCA,QAAS,wBACV,CACCA,QAAS,iBAEb,WAAY,CAAC,CACThF,MAAO,6CACPC,MAAO,MACPC,KAAM,CAAC,CACHF,MAAO,2CACPC,MAAO,MACPE,KAAM,OACP,CACCH,MAAO,qCACPC,MAAO,sBACR,CACCD,MAAO,mCACPC,MAAO,OACR,CACCG,aAAc,gCAEnB,CACCJ,MAAO,6CACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,2CACPC,MAAO,IACPE,KAAM,OACP,CACCH,MAAO,qCACPC,MAAO,sBACR,CACCD,MAAO,mCACPC,MAAO,OACR,CACCG,aAAc,iCAEnB,CACCJ,MAAO,6CACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,2CACPC,MAAO,IACPE,KAAM,OACP,CACCH,MAAO,mCACPC,MAAO,OACR,CACCG,aAAc,iCAEnB,CACCJ,MAAO,6CACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,2CACPC,MAAO,IACPE,KAAM,OACP,CACCC,aAAc,kCAGtB,YAAa,CAAC,CACVJ,MAAO,OACPC,MAAO,cACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,QACPE,KAAM,OACP,CACCH,MAAO,uBACPC,MAAO,YACR,CACCD,MAAO,OACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,IACPE,KAAM,OACP,CACC6E,QAAS,eAEd,CACCA,QAAS,mBAGjB,SAAU,CAAC,CACPhF,MAAO,8BACPC,MAAO,iFACR,CACCD,MAAO,oCACPC,MAAO,iGACR,CACCD,MAAO,CACH,yCACA,QAEJC,MAAO,0BACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,IACPE,KAAM,OACP,CACC6E,QAAS,UACV,CACCA,QAAS,eAEd,CACChF,MAAO,OACPC,MAAO,OACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,IACPE,KAAM,OACP,CACC6E,QAAS,UACV,CACCA,QAAS,eAEd,CACChF,MAAO,CAAC,gCAAiC,QACzCC,MAAO,UACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,KACPE,KAAM,OACP,CACC6E,QAAS,kBAEd,CACChF,MAAO,OACPC,MAAO,KACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,KACPE,KAAM,OACP,CACC6E,QAAS,iBAEd,CACChF,MAAO,OACPC,MAAO,KACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,KACPE,KAAM,OACP,CACC6E,QAAS,YAEd,CACChF,MAAO,sCACPC,MAAO,OAEX,aAAc,CAAC,CACXD,MAAO,OACPC,MAAO,qBACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,YACPE,KAAM,OACP,CACCH,MAAO,uBACPC,MAAO,kBACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,YACPE,KAAM,OACP,CACCH,MAAO,OACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,IACPE,KAAM,OACP,CACC6E,QAAS,eAEd,CACChF,MAAO,CAAC,OAAQ,+BAChBC,MAAO,+BAEZ,CACCD,MAAO,sCACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,UACPE,KAAM,OACP,CACC6E,QAAS,UACV,CACCA,QAAS,0BAEd,CACChF,MAAO,qCACPC,MAAO,IACPC,KAAM,CAAC,CACHF,MAAO,OACPC,MAAO,QACPE,KAAM,OACP,CACC6E,QAAS,gBACV,CACCA,QAAS,8BAMzBnF,KAAKS,kBAGT+e,EAAqB9e,SAAW,CAC5BC,UAAW,CAAC,KAAM,OAClBE,KAAM,SACNC,UAAW,iBAIfjB,EAAIkB,SAASye,EAAsB1f,GAEnCH,EAAQ6f,qBAAuBA,KAG/BhgB,IAAIC,OAAO,0BAA0B,CAAC,UAAU,UAAU,SAAS,cAAc,YAAY,+BAA+B,SAASC,EAAUC,EAASC,GACxJ,aAEA,IAAIC,EAAMH,EAAS,iBACfsB,EAAQtB,EAAS,eAAesB,MAChCC,EAAevB,EAAS,eAAewB,SAEvCA,EAAWvB,EAAQuB,SAAW,SAASC,GACnCA,IACAnB,KAAKoB,mBAAqB,IAAIC,OAC1BrB,KAAKoB,mBAAmBE,OAAOC,QAAQ,YAAa,IAAMJ,EAAajB,QAE3EF,KAAKwB,kBAAoB,IAAIH,OACzBrB,KAAKwB,kBAAkBF,OAAOC,QAAQ,YAAa,IAAMJ,EAAaM,QAIlF5B,EAAIkB,SAASG,EAAUD,GAEvB,WAEIjB,KAAKoB,mBAAqB,mCAC1BpB,KAAKwB,kBAAoB,uCACzBxB,KAAK0B,yBAA0B,uBAC/B1B,KAAK2B,yBAA2B,2BAChC3B,KAAK4B,cAAgB,4BACrB5B,KAAK6B,mBAAqB7B,KAAK8B,cAC/B9B,KAAK8B,cAAgB,SAASC,EAASC,EAAWC,GAC9C,IAAIC,EAAOH,EAAQI,QAAQF,GAE3B,GAAIjC,KAAK0B,yBAAyBU,KAAKF,KAC9BlC,KAAK4B,cAAcQ,KAAKF,KAAUlC,KAAK2B,yBAAyBS,KAAKF,GACtE,MAAO,GAGf,IAAIG,EAAKrC,KAAK6B,mBAAmBE,EAASC,EAAWC,GAErD,OAAKI,GAAMrC,KAAK4B,cAAcQ,KAAKF,GACxB,QAEJG,GAGXrC,KAAKsC,mBAAqB,SAASP,EAASC,EAAWC,EAAKM,GACxD,IA2BIC,EA3BAN,EAAOH,EAAQI,QAAQF,GAE3B,GAAIjC,KAAK4B,cAAcQ,KAAKF,GACxB,OAAOlC,KAAKyC,sBAAsBV,EAASG,EAAMD,GAGrD,GADIO,EAAQN,EAAKM,MAAMxC,KAAKoB,oBACjB,CACP,IAAIsB,EAAIF,EAAMG,MAEd,GAAIH,EAAM,GACN,OAAOxC,KAAK4C,oBAAoBb,EAASS,EAAM,GAAIP,EAAKS,GAE5D,IAAIG,EAAQd,EAAQe,oBAAoBb,EAAKS,EAAIF,EAAM,GAAGO,OAAQ,GASlE,OAPIF,IAAUA,EAAMG,gBACZT,EACAM,EAAQ7C,KAAKiD,gBAAgBlB,EAASE,GAClB,OAAbD,IACPa,EAAQ,OAGTA,EAGX,GAAkB,cAAdb,IAGAQ,EAAQN,EAAKM,MAAMxC,KAAKwB,oBACjB,CACHkB,EAAIF,EAAMG,MAAQH,EAAM,GAAGO,OAE/B,OAAIP,EAAM,GACCxC,KAAKkD,oBAAoBnB,EAASS,EAAM,GAAIP,EAAKS,GAErDX,EAAQe,oBAAoBb,EAAKS,GAAI,KAIpD1C,KAAKiD,gBAAkB,SAASlB,EAASE,GAQrC,IAPA,IAAIC,EAAOH,EAAQI,QAAQF,GACvBkB,EAAcjB,EAAKkB,OAAO,MAC1BC,EAAWpB,EACXqB,EAAcpB,EAAKa,OAEnBQ,EADJtB,GAAY,EAERuB,EAASzB,EAAQ0B,cACZxB,EAAMuB,GAAQ,CAEnB,IAAIE,GADJxB,EAAOH,EAAQI,QAAQF,IACLmB,OAAO,MACzB,IAAgB,IAAZM,EAAJ,CAEA,GAAKP,EAAcO,EACf,MACJ,IAAIC,EAAW3D,KAAKsC,mBAAmBP,EAAS,MAAOE,GAEvD,GAAI0B,EAAU,CACV,GAAIA,EAASzD,MAAM+B,KAAOoB,EACtB,MACG,GAAIM,EAASX,cAChBf,EAAM0B,EAASlC,IAAIQ,SAChB,GAAIkB,GAAeO,EACtB,MAGRH,EAAStB,GAGb,OAAO,IAAIjB,EAAMqC,EAAUC,EAAaC,EAAQxB,EAAQI,QAAQoB,GAAQR,SAE5E/C,KAAKyC,sBAAwB,SAASV,EAASG,EAAMD,GAOjD,IANA,IAAIqB,EAAcpB,EAAKkB,OAAO,QAC1BI,EAASzB,EAAQ0B,YACjBJ,EAAWpB,EAEX2B,EAAK,uCACLC,EAAQ,IACH5B,EAAMuB,GAAQ,CACnBtB,EAAOH,EAAQI,QAAQF,GACvB,IAAI6B,EAAIF,EAAGG,KAAK7B,GAChB,GAAK4B,IACDA,EAAE,GAAID,IACLA,KAEAA,GAAO,MAIhB,GADa5B,EACAoB,EACT,OAAO,IAAIrC,EAAMqC,EAAUC,EAFlBrB,EAEuCC,EAAKa,UAI9DiB,KAAK9C,EAAS+C,cAIjBzE,IAAIC,OAAO,kBAAkB,CAAC,UAAU,UAAU,SAAS,cAAc,gBAAgB,kCAAkC,4BAA4B,SAASC,EAAUC,EAASC,GACnL,aAEA,IAAIC,EAAMH,EAAS,cACfwE,EAAWxE,EAAS,UAAUyE,KAC9Bqb,EAAuB9f,EAAS,4BAA4B8f,qBAC5Dte,EAAWxB,EAAS,oBAAoBwB,SAExCiD,EAAO,WACPnE,KAAKoE,eAAiBob,EACtBxf,KAAKqE,aAAe,IAAInD,GAE5BrB,EAAIkB,SAASoD,EAAMD,GAEnB,WACIlE,KAAK0E,IAAM,mBACZV,KAAKG,EAAKF,WAEbtE,EAAQwE,KAAOA,M,kBChxBf3E,IAAIC,OAAO,iCAAiC,CAAC,UAAU,UAAU,SAAS,cAAc,kCAAkC,SAASC,EAAUC,EAASC,GACtJ,aAEA,IAAIC,EAAMH,EAAS,cACfI,EAAqBJ,EAAS,0BAA0BI,mBAExD2f,EAAsB,WAEtBzf,KAAKC,OAAS,CACV,MAAU,CAAC,CACPE,MAAQ,UACRC,MAAQ,QACT,CACCD,MAAQ,CAAC,UAAW,SAAU,qBAAsB,SAAU,SAAU,eAAgB,UACxFC,MAAQ,iFACT,CACCD,MAAQ,CAAC,UAAU,SAAU,qBAAsB,UACnDC,MAAQ,yDACT,CACCD,MAAQ,CAAC,eAAgB,SAAU,qBAAsB,UACzDC,MAAQ,8BACRE,KAAO,YACP,CACAH,MAAQ,CAAC,eAAgB,SAAU,qBAAsB,UACzDC,MAAQ,gCACRE,KAAO,cACP,CACAH,MAAQ,CAAC,eAAgB,SAAU,qBAAsB,UACzDC,MAAQ,sCACT,CACCD,MAAQ,eACRC,MAAQ,cACRE,KAAO,CAAC,CACJH,MAAQ,CAAC,mBAAoB,SAAU,oBACvCC,MAAQ,mBACRE,KAAO,WAEZ,CACCH,MAAQ,eACRC,MAAQ,iBACT,CACCD,MAAQ,SACRC,MAAQ,SACT,CACCD,MAAQ,SACRC,MAAQ,WACT,CACCD,MAAQ,4BACRC,MAAQ,kBACT,CACCD,MAAQ,SACRC,MAAQ,WACRE,KAAQ,aAEZ,SAAa,CAAC,CACVH,MAAQ,UACRC,MAAQ,QACT,CACCD,MAAQ,SACRC,MAAQ,WACRE,KAAQ,SACT,CACCH,MAAQ,4BACRC,MAAQ,+BACT,CACCD,MAAQ,QACRC,MAAQ,SACRE,KAAO,SACR,CACCC,aAAe,WAEnB,SAAY,CAAC,CACTJ,MAAQ,CAAC,eAAgB,SAAU,qBAAsB,UACzDC,MAAQ,4BACRE,KAAO,SACR,CACCC,aAAe,SAEnB,WAAc,CAAC,CACXJ,MAAQ,CAAC,eAAgB,SAAU,qBAAsB,UACzDC,MAAQ,8BACRE,KAAO,SACR,CACCC,aAAe,UAIvBP,KAAKS,kBAETZ,EAAIkB,SAAS0e,EAAqB3f,GAElCH,EAAQ8f,oBAAsBA,KAI9BjgB,IAAIC,OAAO,yBAAyB,CAAC,UAAU,UAAU,SAAS,cAAc,6BAA6B,YAAY,uBAAuB,SAASC,EAAUC,EAASC,GAC5K,aAEA,IAAIC,EAAMH,EAAS,iBACfuB,EAAevB,EAAS,eAAewB,SACvCF,EAAQtB,EAAS,eAAesB,MAChC4O,EAAgBlQ,EAAS,wBAAwBkQ,cACjD8P,EAAgB,CAChB,iBAAkB,EAClB,cAAe,EACf,qBAAsB,EACtB,kBAAmB,EACnB,eAAgB,EAChB,YAAa,EACb,YAAa,EACb,SAAU,EACV,UAAW,EACX,QAAS,IAGTxe,EAAWvB,EAAQuB,SAAW,aAElCrB,EAAIkB,SAASG,EAAUD,GAEvB,WAEIjB,KAAKoB,mBAAqB,0EAC1BpB,KAAKwB,kBAAoB,sBAEzBxB,KAAKsC,mBAAqB,SAASP,EAASC,EAAWC,GACnD,IAWIO,EAXAN,EAAOH,EAAQyH,IAAIrH,QAAQF,GAE/B,OADIO,EAAQxC,KAAKoB,mBAAmB2C,KAAK7B,IAEjCM,EAAM,GACCxC,KAAK2f,WAAW5d,EAASE,EAAKO,EAAM,GAAGO,OAAS,GACvDP,EAAM,GACCxC,KAAK4f,aAAa7d,EAASE,EAAKO,EAAM,GAAGO,OAAS,GAEtD/C,KAAK4C,oBAAoBb,EAAS,IAAKE,EAAKO,EAAMG,QAGzDH,EAAQxC,KAAKwB,kBAAkBuC,KAAK7B,IAEhCM,EAAM,GACCxC,KAAK2f,WAAW5d,EAASE,EAAKO,EAAM,GAAGO,OAAS,GAEpD/C,KAAKkD,oBAAoBnB,EAAS,IAAKE,EAAKO,EAAMG,MAAQH,EAAM,GAAGO,aAJ9E,GAQJ/C,KAAK2f,WAAa,SAAS5d,EAASE,EAAKwH,EAAQoW,GAC7C,IAAItF,EAAW,CACX,UAAW,EACX,SAAU,GAGVuF,EAAS,IAAIlQ,EAAc7N,EAASE,EAAKwH,GACzCtJ,EAAQ2f,EAAOxP,kBACnB,GAAKnQ,IAAyB,gBAAdA,EAAMmH,MAAwC,6BAAdnH,EAAMmH,MAAtD,CAGA,IACIyY,EAAMxF,EADApa,EAAM+G,OAGZ8Y,EAAU,WACV,IACI1Y,EAAqB,UADbwY,EAAO/J,cACFzO,KAAkBwY,EAAO/J,cAAc7O,MAAQ,GAMhE,OALa,IAAT6Y,IACAD,EAAOvP,eACHjJ,GACAwY,EAAOvP,gBAERjJ,GAEPqE,EAAQ,CAACqU,KACT1c,GAAuB,IAATyc,EAAaD,EAAOhK,wBAA0B/T,EAAQI,QAAQF,GAAKc,OACjFM,EAAWpB,EAGf,IADA6d,EAAOG,MAAgB,IAATF,EAAaD,EAAOvP,aAAeuP,EAAO/J,YAClD5V,EAAQ2f,EAAOG,QACjB,GAAK9f,IAAyB,gBAAdA,EAAMmH,MAAwC,6BAAdnH,EAAMmH,MAAtD,CAEA,IAAIC,EAAQgT,EAASpa,EAAM+G,OAC3B,GAAKK,EAAL,CAEA,IAAID,EAAO0Y,IACX,GAAIzY,IAAUwY,EACVpU,EAAMC,QAAQtE,QACb,GAAIqE,EAAME,UAAYvE,IAASqE,EAAM5I,OACtC,OAGR,IAAI4I,EAAM5I,OAAV,CAQA,GALW,GAAPgd,IACAD,EAAOvP,eACPuP,EAAOvP,gBAGPsP,EACA,OAAOC,EAAOI,uBAEdje,EAAM6d,EAAO7J,qBACjB,OAAa,IAAT8J,EACO,IAAI/e,EAAMiB,EAAKF,EAAQI,QAAQF,GAAKc,OAAQM,EAAUC,GAEtD,IAAItC,EAAMqC,EAAUC,EAAarB,EAAK6d,EAAOhK,4BAG5D9V,KAAK4f,aAAe,SAAS7d,EAASE,EAAKwH,GACvC,IAAIqW,EAAS,IAAIlQ,EAAc7N,EAASE,EAAKwH,GACzCtJ,EAAQ2f,EAAOxP,kBACnB,GAAKnQ,GAAuB,gBAAdA,EAAMmH,KAApB,CAOA,IAJA,IAAIY,EAAawX,EAAcvf,EAAM+G,QAAU,EAC3CiZ,EAAa,EACb5c,EAAStB,EAEP9B,EAAQ2f,EAAO/J,eACjB,GAAmB,iBAAf5V,EAAMmH,KAAV,CAEA,IAAIC,EAAQmY,EAAcvf,EAAM+G,QAAU,EAE1C,GAAIK,GAAS,GAIT,GAHK4Y,IACD5c,EAASuc,EAAO7J,qBAAuB,IAC3CkK,GAAuB,GAAT5Y,EAAa,GAAM,GAChB,EACb,WACD,GAAIA,GAASW,EAChB,MAMR,IAHKiY,IACD5c,EAASuc,EAAO7J,qBAAuB,GAEpC1S,EAAStB,IAAQ,KAAKG,KAAKL,EAAQI,QAAQoB,KAC9CA,IAEJ,OAAO,IAAIvC,EACPiB,EAAKF,EAAQI,QAAQF,GAAKc,OAC1BQ,EAAQxB,EAAQI,QAAQoB,GAAQR,WAIzCiB,KAAK9C,EAAS+C,cAIjBzE,IAAIC,OAAO,iBAAiB,CAAC,UAAU,UAAU,SAAS,cAAc,gBAAgB,iCAAiC,4BAA4B,2BAA2B,SAASC,EAAUC,EAASC,GAC5M,aAEA,IAAIC,EAAMH,EAAS,cACfwE,EAAWxE,EAAS,UAAUyE,KAC9Bsb,EAAsB/f,EAAS,2BAA2B+f,oBAC1D7V,EAAkBlK,EAAS,sBAAsBkK,gBACjDwW,EAAgB1gB,EAAS,mBAAmBwB,SAE5CiD,EAAO,WACPnE,KAAKoE,eAAiBqb,EACtBzf,KAAKqE,aAAe,IAAI+b,EACxBpgB,KAAKsE,WAAa,IAAIsF,EAAgB,CAAEyW,QAAQ,KAEpDxgB,EAAIkB,SAASoD,EAAMD,GAEnB,WACIlE,KAAKsH,KAAO,OAEZtH,KAAKwE,iBAAmB,IAExBxE,KAAK0E,IAAM,iBAEX1E,KAAKsgB,YAAc,SAASve,EAASE,EAAKwH,GAC3ByB,MAAPjJ,IACAA,EAAMF,EAAQyO,UAAU+P,MACV,iBAAPte,IACPwH,EAASxH,EAAIwH,OACbxH,EAAMA,EAAIA,KAGd,IAAIue,EAAaze,EAAQ8M,WAAW5M,EAAKwH,GACzC,GAAK+W,EAEL,MAAwB,WAApBA,EAAWtZ,OAA0C,SAApBsZ,EAAWtZ,MACrClH,KAAKqE,aAAasb,WAAW5d,EAASE,EAAKwH,GAAQ,QAD9D,IAILzF,KAAKG,EAAKF,WAEbtE,EAAQwE,KAAOA,M,kBC9Rf3E,IAAIC,OAAO,+BAA+B,CAAC,UAAU,UAAU,SAAS,cAAc,eAAe,kCAAkC,SAASC,EAAUC,EAASC,GACnK,aAEA,IAAIC,EAAMH,EAAS,cAEfI,GADOJ,EAAS,eACKA,EAAS,0BAA0BI,oBACxDsN,EAAczN,EAAQyN,YAAc,04EACpCC,EAAkB1N,EAAQ0N,gBAAkB,qCAC5CC,EAAkB3N,EAAQ2N,gBAAkB,gmEAC5CC,EAAuB5N,EAAQ4N,qBAAuB,g8CACtDC,EAAuB7N,EAAQ6N,qBAAuB,+KAEtDC,EAAQ9N,EAAQ8N,MAAQ,iDACxBC,EAAiB/N,EAAQ+N,eAAiB,6EAC1CC,EAAiBhO,EAAQgO,cAAiB,kQAE1CC,EAAoB,WAEpB,IAAIhJ,EAAgB5E,KAAK6E,oBAAoB,CACzC,mBAAoBwI,EACpB,mBAAoBC,EACpB,eAAgBF,EAChB,yBAA0BG,EAC1B,yBAA0BC,GAC3B,QAAQ,GAEXxN,KAAKC,OAAS,CACV,MAAU,CAAC,CACPkF,QAAU,CAAC,UAAW,MAAO,aAC9B,CACChF,MAAO,eACPC,MAAO,MACPE,KAAO,WACR,CACCH,MAAO,eACPC,MAAO,OACR,CACCD,MAAO,SACPC,MAAO,IACPE,KAAO,SACR,CACCH,MAAO,UACPC,MAAO,gBACR,CACCD,MAAO,UACPC,MAAO,KACR,CACCD,MAAO,WACPC,MAAO,kBACR,CACCD,MAAO,SACPC,MAAO,gBACR,CACCD,MAAQ,mBACRC,MAAQqN,GACT,CACCtN,MAAO,WACPC,MAAO,eACR,CACC2E,iBAAiB,IAGrB,MAAS,CAAC,CACNI,QAAU,CAAC,UAAW,MAAO,aAC9B,CACChF,MAAO,eACPC,MAAO,MACPE,KAAO,SACR,CACCH,MAAO,eACPC,MAAO,MACPE,KAAO,SACR,CACCH,MAAO,SACPC,MAAO,IACPE,KAAO,SACR,CACCH,MAAO,UACPC,MAAO,gNAKX,SAAa,CAAC,CACVD,MAAO,UACPC,MAAO,SACPC,KAAM,CAAC,CACHF,MAAQ,UACRC,MAAQ,SACRE,KAAO,OACR,CACCC,aAAe,cAIvB,QAAY,CAAC,CACTH,MAAQ,sBACRD,MAAQ,QACT,CACCA,MAAQ,eACRC,MAAQ,MACRE,KAAO,SACR,CACC6E,QAAU,CAAC,UAAW,MAAO,aAC9B,CACChF,MAAQ,CAAC,mBAAoB,WAC7BC,MAAQ,IAAMqN,EAAQ,oFACvB,CACCtN,MAAQ,mBACRC,MAAQqN,GACT,CACCtN,MAAQ,mBACRC,MAAQ,gBACT,CACCD,MAAQ,mBACRC,MAAQ,gBACT,CACCD,MAAQ,CAAC,cAAe,kDACxBC,MAAQsN,GACT,CACCvN,MAAQ,CAAC,cAAe,gDACxBC,MAAQuN,GACT,CACCxI,QAAS,OACV,CACChF,MAAQyE,EACRxE,MAAQ,iCACT,CACC2E,iBAAiB,IAGrB8I,IAAK,CAAC,CACF1N,MAAQ,mBACRC,MAAQ,uCACRC,KAAM,CAAC,CACHF,MAAQ,mBACRC,MAAQ,MACRE,KAAO,OACR,CACCC,aAAc,aAItBuN,QAAS,CAAC,CACN3N,MAAQ,eACRC,MAAQ,IACRC,KAAO,CAAC,CACJF,MAAQ,aACRC,MAAQ,MACRE,KAAM,OACP,CACC6E,QAAU,WACX,CACChF,MAAQ,2BACRC,MAAQ,MACR2N,gBAAgB,GACjB,CACCxN,aAAc,YAEnB,CACCJ,MAAQ,eACRC,MAAQ,IACRC,KAAO,CAAC,CACJF,MAAQ,aACRC,MAAQ,MACRE,KAAM,OACP,CACC6E,QAAU,WACX,CACChF,MAAQ,2BACRC,MAAQ,MACR2N,gBAAgB,GACjB,CACCxN,aAAc,aAGtByN,QAAS,CAAC,CACN7N,MAAQ,2BACRC,MAAQ,qCAKhBJ,KAAKS,kBAGTZ,EAAIkB,SAAS6M,EAAmB9N,GAEhCH,EAAQiO,kBAAoBA,KAI5BpO,IAAIC,OAAO,gCAAgC,CAAC,UAAU,UAAU,SAAS,cAAc,gCAAgC,iCAAiC,SAASC,EAAUC,EAASC,GACpL,aAEA,IAAIC,EAAMH,EAAS,cACfI,EAAqBJ,EAAS,0BAA0BI,mBACxD8N,EAAoBlO,EAAS,yBAE7Bgf,EAAqB,WAGrB,IAAIC,EAAc,wJAIdpE,EAAWoE,EAAYlU,MAAM,KAE7BwT,EAAarQ,EAAkBR,YAAY3C,MAAM,KAEjD7F,EAAgB5E,KAAK6E,oBAAoB,CACzC,mBAAoB+I,EAAkBN,gBACtC,QAAWqR,EACX,yBAA0B/Q,EAAkBL,qBAC5C,yBAA0BK,EAAkBJ,sBAC7C,cAAc,GAEbC,EAAQ,yCAEZzN,KAAKC,OAAS,CACV,MAAU,CACN,CACIE,MAAQ,UACRC,MAAQ,aAEZ,CACID,MAAQ,UACRC,MAAQ,SACRE,KAAO,WACR,CACCH,MAAQ,SACRC,MAAQ,sCACT,CACCD,MAAQ,SACRC,MAAQ,sCACT,CACCD,MAAQ,CAAC,mBAAoB,WAC7BC,MAAQ,IAAMqN,EAAQ,oFACvB,CACCtN,MAAQ,mBACRC,MAAQ,gBACT,CACCD,MAAQ,mBACRC,MAAQ,gBACT,CACCD,MAAQ,mBACRC,MAAQqN,GACT,CACCtN,MAAQ,CAAC,mBAAoB,eAAgB,SAAU,gBACvDC,MAAQ,uBACT,CACCD,MAAQ,CAAC,mBAAoB,gBAC7BC,MAAQ,gCACT,CACCD,MAAQ,SAAS+G,GACb,OAAIqT,EAAS/S,QAAQN,EAAMsH,gBAAkB,EAClC,UAEA,YAEfpO,MAAQ,8BACT,CACCD,MAAQ,WACRC,MAAQ,iCACT,CACCD,MAAQ,SAASye,EAAOC,GACpB,OAAGZ,EAAWzW,QAAQoX,EAAMpQ,gBAAkB,EACnC,CAAC,wBAAyB,QAG1B,CAAC,+BAAgC,SAGhDpO,MAAQ,wBACT,CACCD,MAAQ,UACRC,MAAQ,KACT,CACCD,MAAQyE,EACRxE,MAAQ,6BACT,CACCD,MAAO,oBACPC,MAAO,gBACR,CACCD,MAAO,oBACPC,MAAO,kBACR,CACCD,MAAO,oBACPC,MAAO,sBACR,CACCD,MAAO,WACPC,MAAO,eACR,CACCD,MAAQ,mBACRC,MAAQ,8BACT,CACCD,MAAQ,eACRC,MAAQ,SACT,CACCD,MAAQ,eACRC,MAAQ,WACT,CACCD,MAAQ,OACRC,MAAQ,QACT,CACC2E,iBAAiB,IAGzB,QAAY,CACR,CACI5E,MAAQ,UACRC,MAAQ,SACRE,KAAO,SACR,CACCC,aAAe,aAI3BP,KAAKS,kBAGTZ,EAAIkB,SAAS2d,EAAoB5e,GAEjCH,EAAQ+e,mBAAqBA,KAI7Blf,IAAIC,OAAO,kCAAkC,CAAC,UAAU,UAAU,SAAS,cAAc,SAASC,EAAUC,EAASC,GACrH,aAEA,IAAIoB,EAAQtB,EAAS,YAAYsB,MAE7BoI,EAAuB,cAE3B,WAEIpJ,KAAKqJ,aAAe,SAASnH,EAAMoH,GAC/B,QAAM,QAAQlH,KAAKF,IAGZ,SAASE,KAAKkH,IAGzBtJ,KAAKuJ,YAAc,SAASC,EAAKvH,GAC7B,IACIO,EADOgH,EAAIrH,QAAQF,GACNO,MAAM,YAEvB,IAAKA,EAAO,OAAO,EAEnB,IAAIiH,EAASjH,EAAM,GAAGO,OAClB2G,EAAeF,EAAIG,oBAAoB,CAAC1H,IAAKA,EAAKwH,OAAQA,IAE9D,IAAKC,GAAgBA,EAAazH,KAAOA,EAAK,OAAO,EAErD,IAAIyB,EAAS1D,KAAK+H,WAAWyB,EAAIrH,QAAQuH,EAAazH,MACtDuH,EAAIjI,QAAQ,IAAIP,EAAMiB,EAAK,EAAGA,EAAKwH,EAAO,GAAI/F,IAGlD1D,KAAK+H,WAAa,SAAS7F,GACvB,OAAOA,EAAKM,MAAM,QAAQ,MAG/BwB,KAAKoF,EAAqBnF,WAE7BtE,EAAQyJ,qBAAuBA,KAG/B5J,IAAIC,OAAO,yBAAyB,CAAC,UAAU,UAAU,SAAS,cAAc,qBAAqB,4BAA4B,uBAAuB,SAASC,EAAUC,EAASC,GACpL,aAEA,IAAIC,EAAMH,EAAS,iBAEfkK,GADYlK,EAAS,gBAAgBiQ,UACnBjQ,EAAS,YAAYkK,iBACvCgG,EAAgBlQ,EAAS,wBAAwBkQ,cAEjDC,EAAe,WAEf7P,KAAK8P,QAAQlG,GAEb5J,KAAK+P,IAAI,QAAS,aAAa,SAAU7J,EAAO8J,EAAQC,EAAQlO,EAASmO,GACrE,GAAa,MAATA,EAAc,CACd,IAAIC,EAASF,EAAOG,oBAChBC,EAAW,IAAIT,EAAc7N,EAASoO,EAAOlO,IAAKkO,EAAO1G,QACzDtJ,EAAQkQ,EAASC,kBAIrB,GAHInQ,GAASA,EAAM+G,MAAM1E,MAAM,SAC3BrC,EAAQkQ,EAASE,gBAEjBpQ,GAAwB,iBAAfA,EAAMmH,KAAyB,CACxC,IAAIpF,EAAOH,EAAQyH,IAAIrH,QAAQgO,EAAOlO,KAEtC,GAAkB,MADFC,EAAK6I,UAAUoF,EAAO1G,OAAQ0G,EAAO1G,OAAS,GAE1D,MAAO,CACJyG,KAAM,GACNM,UAAW,CAAC,EAAG,IAGtB,IAAKtO,EAAK6I,UAAUoF,EAAO1G,QAAQjH,MAAM,SACrC,MAAO,CACJ0N,KAAM,KACNM,UAAW,CAAC,EAAG,SAOlCxQ,KAAK+P,IAAI,QAAS,YAAY,SAAU7J,EAAO8J,EAAQC,EAAQlO,EAASc,GACpE,IAAI4N,EAAW1O,EAAQyH,IAAIkH,aAAa7N,GACxC,IAAKA,EAAMG,eAA8B,MAAbyN,EAAkB,CAC1C,IAAIN,EAASF,EAAOG,oBAChBC,EAAW,IAAIT,EAAc7N,EAASoO,EAAOlO,IAAKkO,EAAO1G,QACzDtJ,EAAQkQ,EAASC,kBAIrB,GAHInQ,GAASA,EAAM+G,MAAM1E,MAAM,SAC3BrC,EAAQkQ,EAASE,gBAEjBpQ,GAAwB,iBAAfA,EAAMmH,KAGf,GAAkB,MAFPvF,EAAQyH,IAAIrH,QAAQU,EAAM3C,MAAM+B,KACtB8I,UAAUlI,EAAMpB,IAAIgI,OAAQ5G,EAAMpB,IAAIgI,OAAS,GAGhE,OADA5G,EAAMpB,IAAIgI,SACH5G,MAMvB7C,KAAK+P,IAAI,YAAa,aAAa,SAAU7J,EAAO8J,EAAQC,EAAQlO,EAASmO,GACzE,GAAa,MAATA,EAAc,CACd,IAAIC,EAASF,EAAOG,oBAGpB,GAAkB,MAFPrO,EAAQyH,IAAIrH,QAAQgO,EAAOlO,KACjB8I,UAAUoF,EAAO1G,OAAQ0G,EAAO1G,OAAS,GAE1D,MAAO,CACJyG,KAAM,GACNM,UAAW,CAAC,EAAG,SAOlC3Q,EAAIkB,SAAS8O,EAAcjG,GAE3BjK,EAAQkQ,aAAeA,KAGvBrQ,IAAIC,OAAO,2BAA2B,CAAC,UAAU,UAAU,WAAW,SAASC,EAAUC,EAASC,GAClG,aAEA,IAAIqO,EAAc,CACd,WAAc,CAAC,MAAO,GACtB,mBAAoB,CAAC,MAAO,EAAG,YAAe,EAAG,MAAS,GAC1D,mBAAoB,CAAC,aAAc,GACnC,oBAAqB,CAAC,OAAU,EAAG,WAAY,EAAG,WAAY,EAAG,YAAa,EAAG,QAAW,GAC5F,sBAAuB,CAAC,OAAS,EAAG,OAAS,EAAG,KAAO,EAAG,MAAQ,EAAG,IAAM,EAAG,QAAU,GACxF,wBAAyB,CAAC,OAAU,EAAG,MAAS,GAChD,kBAAmB,CAAC,MAAS,EAAG,QAAW,GAC3C,kBAAmB,CAAC,aAAc,EAAG,cAAe,EAAG,cAAe,GACtE,oBAAqB,CAAC,aAAc,EAAG,cAAe,EAAG,cAAe,GACxE,OAAU,CAAC,WAAY,EAAG,YAAa,EAAG,YAAa,EAAG,MAAO,GACjE,eAAgB,CAAC,MAAO,GACxB,eAAgB,CAAC,MAAQ,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,QAAU,EAAG,MAAQ,EAAG,KAAO,EAAG,OAAS,EAAG,OAAS,GAC/I,kBAAmB,CAAC,SAAY,EAAG,SAAY,GAC/C,OAAU,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GAClC,MAAS,CAAC,KAAQ,EAAG,MAAS,EAAG,KAAQ,EAAG,KAAQ,GACpD,MAAS,CAAC,MAAO,EAAG,gBAAiB,GACrC,OAAU,CAAC,QAAW,EAAG,QAAW,EAAG,KAAQ,EAAG,KAAQ,EAAG,KAAQ,EAAG,KAAQ,EAAG,SAAY,EAAG,WAAY,EAAG,YAAa,EAAG,WAAY,EAAG,YAAa,EAAG,WAAY,EAAG,YAAa,EAAG,WAAY,EAAG,YAAa,GAC3N,QAAW,CAAC,KAAQ,EAAG,MAAS,EAAG,OAAU,EAAG,eAAgB,EAAG,aAAc,GACjF,cAAe,CAAC,KAAQ,EAAG,KAAQ,GACnC,MAAS,CAAC,KAAQ,EAAG,MAAS,EAAG,KAAQ,GACzC,cAAe,CAAC,MAAQ,EAAE,gBAAgB,EAAE,SAAW,EAAE,cAAc,EAAE,QAAU,EAAE,QAAU,EAAE,UAAY,EAAE,aAAa,EAAG,WAAW,EAAE,OAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,QAAW,GACvM,YAAa,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACrC,cAAe,CAAC,KAAQ,EAAG,OAAU,GACrC,aAAc,CAAC,OAAU,EAAG,OAAU,GACtC,eAAgB,CAAC,OAAU,EAAG,aAAc,GAC5C,OAAU,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GAClC,KAAQ,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GAChC,iBAAkB,CAAC,OAAU,GAC7B,cAAe,CAAC,OAAU,GAC1B,kBAAmB,CAAC,KAAQ,EAAG,KAAQ,EAAG,OAAU,EAAG,OAAU,EAAG,QAAW,EAAG,uBAAwB,EAAG,cAAe,EAAG,cAAe,EAAG,cAAe,EAAG,cAAe,EAAG,cAAe,EAAG,SAAY,EAAG,cAAe,EAAG,cAAe,GACvP,OAAU,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GAClC,eAAgB,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACxC,cAAe,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACvC,aAAc,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACtC,gBAAiB,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACzC,aAAc,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACtC,YAAa,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACrC,aAAc,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACtC,YAAa,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACrC,SAAY,CAAC,OAAU,EAAG,QAAW,EAAG,KAAQ,EAAG,OAAU,GAC7D,aAAc,CAAC,OAAU,EAAG,QAAW,EAAG,KAAQ,EAAG,OAAU,GAC/D,aAAc,CAAC,OAAU,EAAG,QAAW,EAAG,KAAQ,EAAG,OAAU,GAC/D,QAAW,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACnC,cAAe,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACvC,gBAAiB,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACzC,iBAAkB,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GAC1C,eAAgB,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACxC,mBAAoB,CAAC,KAAQ,EAAG,OAAU,EAAG,MAAS,EAAG,KAAQ,EAAG,MAAS,GAC7E,oBAAqB,CAAC,KAAQ,EAAG,OAAU,EAAG,MAAS,EAAG,KAAQ,EAAG,MAAS,GAC9E,SAAY,CAAC,SAAY,EAAG,SAAY,EAAG,MAAS,EAAG,OAAU,GACjE,MAAS,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACjC,eAAgB,CAAC,MAAS,EAAG,KAAQ,GACrC,kBAAmB,CAAC,KAAQ,EAAG,UAAa,EAAG,eAAgB,EAAG,MAAS,GAC3E,aAAc,CAAC,KAAQ,EAAG,MAAS,EAAG,OAAU,EAAG,QAAW,GAC9D,iBAAkB,CAAC,WAAc,EAAG,UAAa,EAAG,UAAa,EAAG,KAAQ,GAC5E,IAAO,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GAC/B,iBAAkB,CAAC,IAAO,EAAG,OAAU,GACvC,WAAc,CAAC,OAAU,EAAG,QAAW,GACvC,cAAe,CAAC,OAAU,EAAG,OAAU,EAAG,IAAO,EAAG,WAAY,EAAG,WAAY,GAC/E,MAAS,CAAC,GAAM,EAAG,GAAM,EAAG,IAAK,GACjC,eAAgB,CAAC,OAAU,GAC3B,OAAU,CAAC,uBAAwB,GAEnC,cAAe,CAAC,qBAAsB,GACtC,gBAAiB,CAAC,gBAAiB,EAAG,KAAQ,EAAG,SAAY,GAC7D,qBAAsB,EACtB,8BAA+B,EAC/B,iCAAkC,EAClC,6BAA8B,EAC9B,gCAAiC,EACjC,wBAAyB,EACzB,kCAAmC,EACnC,iCAAkC,EAClC,qCAAsC,EACtC,oCAAqC,EACrC,kBAAmB,EACnB,qBAAsB,EACtB,UAAa,CAAC,iBAAkB,EAAG,eAAgB,GACnD,iBAAkB,CAAC,iBAAkB,EAAG,eAAgB,GACxD,oBAAqB,CAAC,iBAAkB,EAAG,eAAgB,IAG3DC,EAAiB,cAIrB,WAEIlO,KAAKmO,oBAAqB,EAE1BnO,KAAKoO,kBAAoB,WACrB,GAAIC,SAAU,CACV,IAAIC,EAAQD,SAASE,cAAc,KAAKD,MAExC,IAAK,IAAI5L,KAAK4L,EACV,GAAwB,iBAAbA,EAAM5L,GAAjB,CAGA,IAAI7B,EAAO6B,EAAEnB,QAAQ,UAAU,SAASiF,GACpC,MAAO,IAAMA,EAAEgI,iBAGdP,EAAYQ,eAAe5N,KAC5BoN,EAAYpN,GAAQ,IAIhCb,KAAKmO,oBAAqB,GAG9BnO,KAAK0O,eAAiB,SAASxI,EAAOnE,EAAS4M,EAAKC,GAOhD,GANK5O,KAAKmO,oBACNnO,KAAKoO,qBAGGrM,EAAQ8M,WAAWF,EAAI1M,IAAK0M,EAAIlF,QAGxC,MAAO,GACX,GAAY,YAARvD,EAAkB,CAClB,IAAIhE,EAAOH,EAAQI,QAAQwM,EAAI1M,KAAK6M,OAAO,EAAGH,EAAIlF,QAClD,MAAI,UAAUrH,KAAKF,IACf,mBAAmBE,KAAKF,GAEjBlC,KAAK+O,4BAA4B7I,EAAOnE,EAAS4M,EAAKC,IAEtD5O,KAAKgP,uBAAuB9I,EAAOnE,EAAS4M,EAAKC,GAIhE,MAAO,IAGX5O,KAAKgP,uBAAyB,SAAS9I,EAAOnE,EAAS4M,EAAKC,GAExD,OADiBK,OAAOC,KAAKjB,GACXvD,KAAI,SAASyE,GAC3B,MAAO,CACHC,QAASD,EACTE,QAASF,EAAW,QACpBG,KAAM,WACNC,MAAOC,OAAOC,eAK1BzP,KAAK+O,4BAA8B,SAAS7I,EAAOnE,EAAS4M,EAAKC,GAC7D,IAAI1M,EAAOH,EAAQI,QAAQwM,EAAI1M,KAAK6M,OAAO,EAAGH,EAAIlF,QAC9C0F,GAAY,mBAAmBpL,KAAK7B,IAAS,IAAI,GAErD,IAAKiN,EACD,MAAO,GACX,IAAIO,EAAS,GAIb,OAHIP,KAAYlB,GAAgD,iBAA1BA,EAAYkB,KAC9CO,EAAST,OAAOC,KAAKjB,EAAYkB,KAE9BO,EAAOhF,KAAI,SAASxD,GACvB,MAAO,CACHkI,QAASlI,EACTmI,QAASnI,EACToI,KAAM,iBACNC,MAAOC,OAAOC,iBAK3BzL,KAAKkK,EAAejK,WAEvBtE,EAAQuO,eAAiBA,KAGzB1O,IAAIC,OAAO,0BAA0B,CAAC,UAAU,UAAU,SAAS,cAAc,YAAY,+BAA+B,SAASC,EAAUC,EAASC,GACxJ,aAEA,IAAIC,EAAMH,EAAS,iBACfsB,EAAQtB,EAAS,eAAesB,MAChCC,EAAevB,EAAS,eAAewB,SAEvCA,EAAWvB,EAAQuB,SAAW,SAASC,GACnCA,IACAnB,KAAKoB,mBAAqB,IAAIC,OAC1BrB,KAAKoB,mBAAmBE,OAAOC,QAAQ,YAAa,IAAMJ,EAAajB,QAE3EF,KAAKwB,kBAAoB,IAAIH,OACzBrB,KAAKwB,kBAAkBF,OAAOC,QAAQ,YAAa,IAAMJ,EAAaM,QAIlF5B,EAAIkB,SAASG,EAAUD,GAEvB,WAEIjB,KAAKoB,mBAAqB,mCAC1BpB,KAAKwB,kBAAoB,uCACzBxB,KAAK0B,yBAA0B,uBAC/B1B,KAAK2B,yBAA2B,2BAChC3B,KAAK4B,cAAgB,4BACrB5B,KAAK6B,mBAAqB7B,KAAK8B,cAC/B9B,KAAK8B,cAAgB,SAASC,EAASC,EAAWC,GAC9C,IAAIC,EAAOH,EAAQI,QAAQF,GAE3B,GAAIjC,KAAK0B,yBAAyBU,KAAKF,KAC9BlC,KAAK4B,cAAcQ,KAAKF,KAAUlC,KAAK2B,yBAAyBS,KAAKF,GACtE,MAAO,GAGf,IAAIG,EAAKrC,KAAK6B,mBAAmBE,EAASC,EAAWC,GAErD,OAAKI,GAAMrC,KAAK4B,cAAcQ,KAAKF,GACxB,QAEJG,GAGXrC,KAAKsC,mBAAqB,SAASP,EAASC,EAAWC,EAAKM,GACxD,IA2BIC,EA3BAN,EAAOH,EAAQI,QAAQF,GAE3B,GAAIjC,KAAK4B,cAAcQ,KAAKF,GACxB,OAAOlC,KAAKyC,sBAAsBV,EAASG,EAAMD,GAGrD,GADIO,EAAQN,EAAKM,MAAMxC,KAAKoB,oBACjB,CACP,IAAIsB,EAAIF,EAAMG,MAEd,GAAIH,EAAM,GACN,OAAOxC,KAAK4C,oBAAoBb,EAASS,EAAM,GAAIP,EAAKS,GAE5D,IAAIG,EAAQd,EAAQe,oBAAoBb,EAAKS,EAAIF,EAAM,GAAGO,OAAQ,GASlE,OAPIF,IAAUA,EAAMG,gBACZT,EACAM,EAAQ7C,KAAKiD,gBAAgBlB,EAASE,GAClB,OAAbD,IACPa,EAAQ,OAGTA,EAGX,GAAkB,cAAdb,IAGAQ,EAAQN,EAAKM,MAAMxC,KAAKwB,oBACjB,CACHkB,EAAIF,EAAMG,MAAQH,EAAM,GAAGO,OAE/B,OAAIP,EAAM,GACCxC,KAAKkD,oBAAoBnB,EAASS,EAAM,GAAIP,EAAKS,GAErDX,EAAQe,oBAAoBb,EAAKS,GAAI,KAIpD1C,KAAKiD,gBAAkB,SAASlB,EAASE,GAQrC,IAPA,IAAIC,EAAOH,EAAQI,QAAQF,GACvBkB,EAAcjB,EAAKkB,OAAO,MAC1BC,EAAWpB,EACXqB,EAAcpB,EAAKa,OAEnBQ,EADJtB,GAAY,EAERuB,EAASzB,EAAQ0B,cACZxB,EAAMuB,GAAQ,CAEnB,IAAIE,GADJxB,EAAOH,EAAQI,QAAQF,IACLmB,OAAO,MACzB,IAAgB,IAAZM,EAAJ,CAEA,GAAKP,EAAcO,EACf,MACJ,IAAIC,EAAW3D,KAAKsC,mBAAmBP,EAAS,MAAOE,GAEvD,GAAI0B,EAAU,CACV,GAAIA,EAASzD,MAAM+B,KAAOoB,EACtB,MACG,GAAIM,EAASX,cAChBf,EAAM0B,EAASlC,IAAIQ,SAChB,GAAIkB,GAAeO,EACtB,MAGRH,EAAStB,GAGb,OAAO,IAAIjB,EAAMqC,EAAUC,EAAaC,EAAQxB,EAAQI,QAAQoB,GAAQR,SAE5E/C,KAAKyC,sBAAwB,SAASV,EAASG,EAAMD,GAOjD,IANA,IAAIqB,EAAcpB,EAAKkB,OAAO,QAC1BI,EAASzB,EAAQ0B,YACjBJ,EAAWpB,EAEX2B,EAAK,uCACLC,EAAQ,IACH5B,EAAMuB,GAAQ,CACnBtB,EAAOH,EAAQI,QAAQF,GACvB,IAAI6B,EAAIF,EAAGG,KAAK7B,GAChB,GAAK4B,IACDA,EAAE,GAAID,IACLA,KAEAA,GAAO,MAIhB,GADa5B,EACAoB,EACT,OAAO,IAAIrC,EAAMqC,EAAUC,EAFlBrB,EAEuCC,EAAKa,UAI9DiB,KAAK9C,EAAS+C,cAIjBzE,IAAIC,OAAO,gBAAgB,CAAC,UAAU,UAAU,SAAS,cAAc,gBAAgB,gCAAgC,kCAAkC,yBAAyB,2BAA2B,4BAA4B,SAASC,EAAUC,EAASC,GACrQ,aAEA,IAAIC,EAAMH,EAAS,cACfwE,EAAWxE,EAAS,UAAUyE,KAC9Bua,EAAqBhf,EAAS,0BAA0Bgf,mBACxDtV,EAAuB1J,EAAS,4BAA4B0J,qBAC5DyG,EAAenQ,EAAS,mBAAmBmQ,aAC3C3B,EAAiBxO,EAAS,qBAAqBwO,eAE/CrE,EAAiBnK,EAAS,oBAAoBwB,SAE9CiD,EAAO,WACPnE,KAAKoE,eAAiBsa,EACtB1e,KAAK8J,SAAW,IAAIV,EACpBpJ,KAAKsE,WAAa,IAAIuL,EACtB7P,KAAK2Q,WAAa,IAAIzC,EACtBlO,KAAKqE,aAAe,IAAIwF,GAE5BhK,EAAIkB,SAASoD,EAAMD,GAEnB,WAEIlE,KAAKwE,iBAAmB,KACxBxE,KAAKyE,aAAe,CAACvE,MAAO,KAAMuB,IAAK,MAEvCzB,KAAK2H,kBAAoB,SAASzB,EAAOhE,EAAM0F,GAC3C,IAAIlE,EAAS1D,KAAK+H,WAAW7F,GACzBgI,EAASlK,KAAKgK,eAAeC,cAAc/H,EAAMgE,GAAOgE,OAC5D,OAAIA,EAAOnH,QAA0C,WAAhCmH,EAAOA,EAAOnH,OAAO,GAAGuE,MAIjCpF,EAAKM,MAAM,eAEnBkB,GAAUkE,GALHlE,GAWf1D,KAAKqJ,aAAe,SAASnD,EAAOhE,EAAMoH,GACtC,OAAOtJ,KAAK8J,SAAST,aAAanH,EAAMoH,IAG5CtJ,KAAKuJ,YAAc,SAASrD,EAAOsD,EAAKvH,GACpCjC,KAAK8J,SAASP,YAAYC,EAAKvH,IAGnCjC,KAAK0O,eAAiB,SAASxI,EAAOnE,EAAS4M,EAAKC,GAChD,OAAO5O,KAAK2Q,WAAWjC,eAAe,UAAW3M,EAAS4M,EAAKC,IAGnE5O,KAAK0E,IAAM,iBACZV,KAAKG,EAAKF,WAEbtE,EAAQwE,KAAOA,M,kBChzBf3E,IAAIC,OAAO,gCAAgC,CAAC,UAAU,UAAU,SAAS,cAAc,kCAAkC,SAASC,EAAUC,EAASC,GACrJ,aAEA,IAAIC,EAAMH,EAAS,cACfI,EAAqBJ,EAAS,0BAA0BI,mBAExD2gB,EAAqB,WACrB,IAKI7b,EAAgB5E,KAAK6E,oBAAoB,CACzC,kBANiB,gCAOjB,mBANkB,gBAOlB,oBANmB,WAOnB,mBANmB,+FAOpB,cAAc,GAEjB7E,KAAKC,OACD,CACJ,MAAS,CACL,CACIE,MAAQ,UACRC,MAAQ,QAEZ,CACID,MAAO,CAAC,kCAAmC,OAAQ,6BACnDC,MAAO,wEAEX,CACID,MAAO,CAAC,iDAAkD,2BAC1DC,MAAO,kCAEX,CACID,MAAO,CAAC,uCAAwC,6BAA8B,wCAC9EC,MAAO,oBAEX,CACID,MAAQ,mBACRC,MAAQ,4DAEZ,CACID,MAAQ,mBACRC,MAAQ,uFAEZ,CACQD,MAAQyE,EACRxE,MAAQ,+BAEhB,CACID,MAAQ,SACRC,MAAQ,SACRE,KAAQ,aAGhB,SAAY,CACR,CACIH,MAAO,iCACPC,MAAO,SAEX,CACID,MAAQ,SACRC,MAAQ,aACT,CACCD,MAAQ,SACRC,MAAQ,QACRE,KAAQ,YACT,CACCH,MAAQ,SACRC,MAAQ,MACRE,KAAQ,YAOpBT,EAAIkB,SAAS0f,EAAoB3gB,GAEjCH,EAAQ8gB,mBAAqBA,KAG7BjhB,IAAIC,OAAO,gBAAgB,CAAC,UAAU,UAAU,SAAS,cAAc,gBAAgB,kCAAkC,SAASC,EAAUC,EAASC,GACrJ,aAEA,IAAIC,EAAMH,EAAS,cACfwE,EAAWxE,EAAS,UAAUyE,KAC9Bsc,EAAqB/gB,EAAS,0BAA0B+gB,mBAExDtc,EAAO,WACPnE,KAAKoE,eAAiBqc,EACtBzgB,KAAKsE,WAAatE,KAAKuE,mBAE3B1E,EAAIkB,SAASoD,EAAMD,GAEnB,WAEIlE,KAAKwE,iBAAmB,IAExBxE,KAAK0E,IAAM,iBACZV,KAAKG,EAAKF,WAEbtE,EAAQwE,KAAOA,M,kBCvGf3E,IAAIC,OAAO,kCAAkC,CAAC,UAAU,UAAU,SAAS,cAAc,SAASC,EAAUC,EAASC,GACrH,aAEA,IAAIoB,EAAQtB,EAAS,YAAYsB,MAE7BoI,EAAuB,cAE3B,WAEIpJ,KAAKqJ,aAAe,SAASnH,EAAMoH,GAC/B,QAAM,QAAQlH,KAAKF,IAGZ,SAASE,KAAKkH,IAGzBtJ,KAAKuJ,YAAc,SAASC,EAAKvH,GAC7B,IACIO,EADOgH,EAAIrH,QAAQF,GACNO,MAAM,YAEvB,IAAKA,EAAO,OAAO,EAEnB,IAAIiH,EAASjH,EAAM,GAAGO,OAClB2G,EAAeF,EAAIG,oBAAoB,CAAC1H,IAAKA,EAAKwH,OAAQA,IAE9D,IAAKC,GAAgBA,EAAazH,KAAOA,EAAK,OAAO,EAErD,IAAIyB,EAAS1D,KAAK+H,WAAWyB,EAAIrH,QAAQuH,EAAazH,MACtDuH,EAAIjI,QAAQ,IAAIP,EAAMiB,EAAK,EAAGA,EAAKwH,EAAO,GAAI/F,IAGlD1D,KAAK+H,WAAa,SAAS7F,GACvB,OAAOA,EAAKM,MAAM,QAAQ,MAG/BwB,KAAKoF,EAAqBnF,WAE7BtE,EAAQyJ,qBAAuBA,KAG/B5J,IAAIC,OAAO,sBAAsB,CAAC,UAAU,UAAU,SAAS,gBAAgB,kCAAkC,kBAAkB,SAASC,EAAUC,EAASC,GAC7J,IAAIyL,EAAYqV,EAAgBC,EAAYxP,EAC5C9F,EAAa,2EACb1L,EAAQwE,KAAOuc,EAAkB,SAASE,GACxC,IAAIzU,EAAUlI,EAuNlB,SAAiB4c,EAAKC,GACpB,SAASC,KAAQA,EAAI9c,WAAa4c,EAAID,WAAaE,GAAK7c,WACvD4c,EAAI5c,UAAY,IAAI8c,GAAKpN,YAAckN,EACb,mBAAhBC,EAAIE,UAAwBF,EAAIE,SAASH,GACpD,OAAOA,EA3NqBI,GA6N9B,SAAiBC,EAAKC,GACpB,IAAIC,EAAM,GAAG3S,eACb,IAAK,IAAIiI,KAAOyK,EAASC,EAAIpd,KAAKmd,EAAKzK,KAAMwK,EAAIxK,GAAOyK,EAAIzK,IAC5D,OAAOwK,EAhO8BG,CAAQX,EAAgBE,IAAYU,YAAc,iBAAkBZ,GAAiBE,GAAY3c,UACpI,SAASyc,IACP,IAAIa,EACJvhB,KAAKwhB,WAAa,IAAK9hB,EAAS,gBAAiB+hB,WAAUf,EAAe1U,QACtEuV,EAAO7hB,EAAS,qCAClBM,KAAK8J,SAAW,IAAIyX,EAAKnY,sBAE3BpJ,KAAK0E,IAAM,sBAwBb,OAtBAyH,EAAW9K,OAAO,4HAA8HgK,EAAa,aAC7JpH,EAAU0D,kBAAoB,SAASzB,EAAOhE,EAAM0F,GAClD,IAAIlE,EAAQwG,EAQZ,OAPAxG,EAAS1D,KAAK+H,WAAW7F,IACzBgI,EAASlK,KAAKwhB,WAAWvX,cAAc/H,EAAMgE,GAAOgE,QACvCnH,QAA6C,YAAnCmH,EAAOA,EAAOnH,OAAS,GAAGuE,MACjC,UAAVpB,GAAqBiG,EAAS/J,KAAKF,KACrCwB,GAAUkE,GAGPlE,GAETO,EAAUO,iBAAmB,IAC7BP,EAAUQ,aAAe,CAACvE,MAAO,MAAOuB,IAAK,OAC7CwC,EAAUoF,aAAe,SAASnD,EAAOhE,EAAMoH,GAC7C,IAAIoY,EACJ,OAAiC,OAAzBA,EAAO1hB,KAAK8J,UAAoB4X,EAAKrY,aAAanH,EAAMoH,QAAS,GAE3ErF,EAAUsF,YAAc,SAASrD,EAAOsD,EAAKvH,GAC3C,IAAIyf,EACJ,OAAiC,OAAzBA,EAAO1hB,KAAK8J,UAAoB4X,EAAKnY,YAAYC,EAAKvH,QAAO,GAEhEye,EAhCuB,CAiC9BhhB,EAAS,gBAAgByE,MAC3Bwc,EAAa,qCACbxP,EAAa,CACX5Q,aAAc,UAEhBmgB,EAAe1U,MAAQ,CACrB9L,MAAO,CACL,CACEC,MAAO,UACPC,MAAO,wUAA0UugB,GAChV,CACDxgB,MAAO,oBACPC,MAAO,mDAAqDugB,GAC3D,CACDxgB,MAAO,kBACPC,MAAO,qFAAuFugB,GAC7F,CACDxgB,MAAO,yBACPC,MAAO,kJAAoJugB,GAC1J,CACDxgB,MAAO,4BACPC,MAAO,mFAAqFugB,GAC3F,CACDxgB,MAAO,oBACPC,MAAO,gDAAkDugB,GACxD,CACDxgB,MAAO,aACPC,MAAOiL,EAAa,iBACnB,CACDlL,MAAO,WACPC,MAAOiL,GACN,CACDlL,MAAO,mBACPC,MAAO,sBACN,CACDD,MAAO,mBACPC,MAAO,mBACPE,KAAM,OACL,CACDH,MAAO,mBACPC,MAAO,UACPE,KAAM,OACL,CACDH,MAAO,SACPC,MAAO,yBACN,CACDD,MAAO,aACPC,MAAO,MACPE,KAAM,QACL,CACDH,MAAO,aACPC,MAAO,MACPE,KAAM,SACL,CACDH,MAAO,SACPC,MAAO,IACPE,KAAM,WACL,CACDH,MAAO,SACPC,MAAO,IACPE,KAAM,YACL,CACDH,MAAO,SACPC,MAAO,IACPE,KAAM,MACL,CACDH,MAAO,SACPC,MAAO,OACPE,KAAM,SACL,CACDH,MAAO,eACPC,MAAO,KACPE,KAAM,WACL,CACDH,MAAO,cACPC,MAAO,OACPE,KAAM,WACL,CACDH,MAAO,UACPC,MAAO,OACN,CACDD,MAAO,eACPC,MAAO,kHACPE,KAAM,OACL,CACDH,MAAO,mBACPC,MAAO,+JACN,CACDD,MAAO,SACPC,MAAO,SACN,CACDD,MAAO,SACPC,MAAO,UACPE,KAAM,OACL,CACDH,MAAO,mBACPC,MAAO,kBACN,CACDD,MAAO,OACPC,MAAO,SAGX0L,QAAS,CACP,CACE3L,MAAO,eACPC,MAAO,qBACPE,KAAM,SACL,CACDH,MAAO,eACPC,MAAO,UACN,CACDD,MAAO,gBACPC,MAAO,gBACN,CACDG,aAAc,iBAGlBmW,IAAK,CACH,CACEvW,MAAO,mBACPC,MAAO,WACN,CACDD,MAAO,aACPC,MAAOiL,EACP/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","file":"syntaxes.acc42e6e3eb9060b53ec.js","sourcesContent":["ace.define(\"ace/mode/actionscript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ActionScriptHighlightRules = function() {\n\n this.$rules = { start: \n [ { token: 'support.class.actionscript.2',\n regex: '\\\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\\\b' },\n { token: 'support.function.actionscript.2',\n regex: '\\\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\\\b' },\n { token: 'support.constant.actionscript.2',\n regex: '\\\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\\\b' },\n { token: 'keyword.control.actionscript.2',\n regex: '\\\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\\\b' },\n { token: 'storage.type.actionscript.2',\n regex: '\\\\b(?:Boolean|Number|String|Void)\\\\b' },\n { token: 'constant.language.actionscript.2',\n regex: '\\\\b(?:null|undefined|true|false)\\\\b' },\n { token: 'constant.numeric.actionscript.2',\n regex: '\\\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\\\.?[0-9]*|\\\\.[0-9]+)(?:(?:e|E)(?:\\\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\\\b' },\n { token: 'punctuation.definition.string.begin.actionscript.2',\n regex: '\"',\n push: \n [ { token: 'punctuation.definition.string.end.actionscript.2',\n regex: '\"',\n next: 'pop' },\n { token: 'constant.character.escape.actionscript.2',\n regex: '\\\\\\\\.' },\n { defaultToken: 'string.quoted.double.actionscript.2' } ] },\n { token: 'punctuation.definition.string.begin.actionscript.2',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.string.end.actionscript.2',\n regex: '\\'',\n next: 'pop' },\n { token: 'constant.character.escape.actionscript.2',\n regex: '\\\\\\\\.' },\n { defaultToken: 'string.quoted.single.actionscript.2' } ] },\n { token: 'support.constant.actionscript.2',\n regex: '\\\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\\\b' },\n { token: 'punctuation.definition.comment.actionscript.2',\n regex: '/\\\\*',\n push: \n [ { token: 'punctuation.definition.comment.actionscript.2',\n regex: '\\\\*/',\n next: 'pop' },\n { defaultToken: 'comment.block.actionscript.2' } ] },\n { token: 'punctuation.definition.comment.actionscript.2',\n regex: '//.*$',\n push_: \n [ { token: 'comment.line.double-slash.actionscript.2',\n regex: '$',\n next: 'pop' },\n { defaultToken: 'comment.line.double-slash.actionscript.2' } ] },\n { token: 'keyword.operator.actionscript.2',\n regex: '\\\\binstanceof\\\\b' },\n { token: 'keyword.operator.symbolic.actionscript.2',\n regex: '[-!%&*+=/?:]' },\n { token: \n [ 'meta.preprocessor.actionscript.2',\n 'punctuation.definition.preprocessor.actionscript.2',\n 'meta.preprocessor.actionscript.2' ],\n regex: '^([ \\\\t]*)(#)([a-zA-Z]+)' },\n { token: \n [ 'storage.type.function.actionscript.2',\n 'meta.function.actionscript.2',\n 'entity.name.function.actionscript.2',\n 'meta.function.actionscript.2',\n 'punctuation.definition.parameters.begin.actionscript.2' ],\n regex: '\\\\b(function)(\\\\s+)([a-zA-Z_]\\\\w*)(\\\\s*)(\\\\()',\n push: \n [ { token: 'punctuation.definition.parameters.end.actionscript.2',\n regex: '\\\\)',\n next: 'pop' },\n { token: 'variable.parameter.function.actionscript.2',\n regex: '[^,)$]+' },\n { defaultToken: 'meta.function.actionscript.2' } ] },\n { token: \n [ 'storage.type.class.actionscript.2',\n 'meta.class.actionscript.2',\n 'entity.name.type.class.actionscript.2',\n 'meta.class.actionscript.2',\n 'storage.modifier.extends.actionscript.2',\n 'meta.class.actionscript.2',\n 'entity.other.inherited-class.actionscript.2' ],\n regex: '\\\\b(class)(\\\\s+)([a-zA-Z_](?:\\\\w|\\\\.)*)(?:(\\\\s+)(extends)(\\\\s+)([a-zA-Z_](?:\\\\w|\\\\.)*))?' } ] };\n \n this.normalizeRules();\n};\n\nActionScriptHighlightRules.metaData = { fileTypes: [ 'as' ],\n keyEquivalent: '^~A',\n name: 'ActionScript',\n scopeName: 'source.actionscript.2' };\n\n\noop.inherits(ActionScriptHighlightRules, TextHighlightRules);\n\nexports.ActionScriptHighlightRules = ActionScriptHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/actionscript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/actionscript_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ActionScriptHighlightRules = acequire(\"./actionscript_highlight_rules\").ActionScriptHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = ActionScriptHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/actionscript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/ada_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar AdaHighlightRules = function() {\nvar keywords = \"abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|\" +\n\"access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|\" +\n\"array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|\" +\n\"body|private|then|if|procedure|type|case|in|protected|constant|interface|until|\" +\n\"|is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor\";\n\n var builtinConstants = (\n \"true|false|null\"\n );\n\n var builtinFunctions = (\n \"count|min|max|avg|sum|rank|now|coalesce|main\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords,\n \"constant.language\": builtinConstants\n }, \"identifier\", true);\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"--.*$\"\n }, {\n token : \"string\", // \" string\n regex : '\".*?\"'\n }, {\n token : \"string\", // ' string\n regex : \"'.*?'\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ]\n };\n};\n\noop.inherits(AdaHighlightRules, TextHighlightRules);\n\nexports.AdaHighlightRules = AdaHighlightRules;\n});\n\nace.define(\"ace/mode/ada\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/ada_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar AdaHighlightRules = acequire(\"./ada_highlight_rules\").AdaHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = AdaHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"--\";\n\n this.$id = \"ace/mode/ada\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/apache_conf_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ApacheConfHighlightRules = function() {\n\n this.$rules = { start: \n [ { token: \n [ 'punctuation.definition.comment.apacheconf',\n 'comment.line.hash.ini',\n 'comment.line.hash.ini' ],\n regex: '^((?:\\\\s)*)(#)(.*$)' },\n { token: \n [ 'punctuation.definition.tag.apacheconf',\n 'entity.tag.apacheconf',\n 'text',\n 'string.value.apacheconf',\n 'punctuation.definition.tag.apacheconf' ],\n regex: '(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\\\s)(.+?))?(>)' },\n { token: \n [ 'punctuation.definition.tag.apacheconf',\n 'entity.tag.apacheconf',\n 'punctuation.definition.tag.apacheconf' ],\n regex: '()' },\n { token: \n [ 'keyword.alias.apacheconf', 'text',\n 'string.regexp.apacheconf', 'text',\n 'string.replacement.apacheconf', 'text' ],\n regex: '(Rewrite(?:Rule|Cond))(\\\\s+)(.+?)(\\\\s+)(.+?)($|\\\\s)' },\n { token: \n [ 'keyword.alias.apacheconf', 'text',\n 'entity.status.apacheconf', 'text',\n 'string.regexp.apacheconf', 'text',\n 'string.path.apacheconf', 'text' ],\n regex: '(RedirectMatch)(?:(\\\\s+)(\\\\d\\\\d\\\\d|permanent|temp|seeother|gone))?(\\\\s+)(.+?)(\\\\s+)(?:(.+?)($|\\\\s))?' },\n { token: \n [ 'keyword.alias.apacheconf', 'text', \n 'entity.status.apacheconf', 'text',\n 'string.path.apacheconf', 'text',\n 'string.path.apacheconf', 'text' ],\n regex: '(Redirect)(?:(\\\\s+)(\\\\d\\\\d\\\\d|permanent|temp|seeother|gone))?(\\\\s+)(.+?)(\\\\s+)(?:(.+?)($|\\\\s))?' },\n { token: \n [ 'keyword.alias.apacheconf', 'text',\n 'string.regexp.apacheconf', 'text',\n 'string.path.apacheconf', 'text' ],\n regex: '(ScriptAliasMatch|AliasMatch)(\\\\s+)(.+?)(\\\\s+)(?:(.+?)(\\\\s))?' },\n { token: \n [ 'keyword.alias.apacheconf', 'text',\n 'string.path.apacheconf', 'text',\n 'string.path.apacheconf', 'text' ],\n regex: '(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\\\s+)(.+?)(\\\\s+)(?:(.+?)($|\\\\s))?' },\n { token: 'keyword.core.apacheconf',\n regex: '\\\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\\\b' },\n { token: 'keyword.mpm.apacheconf',\n regex: '\\\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\\\b' },\n { token: 'keyword.access.apacheconf',\n regex: '\\\\b(?:Allow|Deny|Order)\\\\b' },\n { token: 'keyword.actions.apacheconf',\n regex: '\\\\b(?:Action|Script)\\\\b' },\n { token: 'keyword.alias.apacheconf',\n regex: '\\\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\\\b' },\n { token: 'keyword.auth.apacheconf',\n regex: '\\\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\\\b' },\n { token: 'keyword.auth_anon.apacheconf',\n regex: '\\\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\\\b' },\n { token: 'keyword.auth_dbm.apacheconf',\n regex: '\\\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\\\b' },\n { token: 'keyword.auth_digest.apacheconf',\n regex: '\\\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\\\b' },\n { token: 'keyword.auth_ldap.apacheconf',\n regex: '\\\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\\\b' },\n { token: 'keyword.autoindex.apacheconf',\n regex: '\\\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\\\b' },\n { token: 'keyword.cache.apacheconf',\n regex: '\\\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\\\b' },\n { token: 'keyword.cern_meta.apacheconf',\n regex: '\\\\b(?:MetaDir|MetaFiles|MetaSuffix)\\\\b' },\n { token: 'keyword.cgi.apacheconf',\n regex: '\\\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\\\b' },\n { token: 'keyword.cgid.apacheconf',\n regex: '\\\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\\\b' },\n { token: 'keyword.charset_lite.apacheconf',\n regex: '\\\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\\\b' },\n { token: 'keyword.dav.apacheconf',\n regex: '\\\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\\\b' },\n { token: 'keyword.deflate.apacheconf',\n regex: '\\\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\\\b' },\n { token: 'keyword.dir.apacheconf',\n regex: '\\\\b(?:DirectoryIndex|DirectorySlash)\\\\b' },\n { token: 'keyword.disk_cache.apacheconf',\n regex: '\\\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\\\b' },\n { token: 'keyword.dumpio.apacheconf',\n regex: '\\\\b(?:DumpIOInput|DumpIOOutput)\\\\b' },\n { token: 'keyword.env.apacheconf',\n regex: '\\\\b(?:PassEnv|SetEnv|UnsetEnv)\\\\b' },\n { token: 'keyword.expires.apacheconf',\n regex: '\\\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\\\b' },\n { token: 'keyword.ext_filter.apacheconf',\n regex: '\\\\b(?:ExtFilterDefine|ExtFilterOptions)\\\\b' },\n { token: 'keyword.file_cache.apacheconf',\n regex: '\\\\b(?:CacheFile|MMapFile)\\\\b' },\n { token: 'keyword.headers.apacheconf',\n regex: '\\\\b(?:Header|RequestHeader)\\\\b' },\n { token: 'keyword.imap.apacheconf',\n regex: '\\\\b(?:ImapBase|ImapDefault|ImapMenu)\\\\b' },\n { token: 'keyword.include.apacheconf',\n regex: '\\\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\\\b' },\n { token: 'keyword.isapi.apacheconf',\n regex: '\\\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\\\b' },\n { token: 'keyword.ldap.apacheconf',\n regex: '\\\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\\\b' },\n { token: 'keyword.log.apacheconf',\n regex: '\\\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\\\b' },\n { token: 'keyword.mem_cache.apacheconf',\n regex: '\\\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\\\b' },\n { token: 'keyword.mime.apacheconf',\n regex: '\\\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\\\b' },\n { token: 'keyword.misc.apacheconf',\n regex: '\\\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\\\b' },\n { token: 'keyword.negotiation.apacheconf',\n regex: '\\\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\\\b' },\n { token: 'keyword.nw_ssl.apacheconf',\n regex: '\\\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\\\b' },\n { token: 'keyword.proxy.apacheconf',\n regex: '\\\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\\\b' },\n { token: 'keyword.rewrite.apacheconf',\n regex: '\\\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\\\b' },\n { token: 'keyword.setenvif.apacheconf',\n regex: '\\\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\\\b' },\n { token: 'keyword.so.apacheconf',\n regex: '\\\\b(?:LoadFile|LoadModule)\\\\b' },\n { token: 'keyword.ssl.apacheconf',\n regex: '\\\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\\\b' },\n { token: 'keyword.usertrack.apacheconf',\n regex: '\\\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\\\b' },\n { token: 'keyword.vhost_alias.apacheconf',\n regex: '\\\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\\\b' },\n { token: \n [ 'keyword.php.apacheconf',\n 'text',\n 'entity.property.apacheconf',\n 'text',\n 'string.value.apacheconf',\n 'text' ],\n regex: '\\\\b(php_value|php_flag)\\\\b(?:(\\\\s+)(.+?)(?:(\\\\s+)(.+?))?)?(\\\\s)' },\n { token: \n [ 'punctuation.variable.apacheconf',\n 'variable.env.apacheconf',\n 'variable.misc.apacheconf',\n 'punctuation.variable.apacheconf' ],\n regex: '(%\\\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\\\})' },\n { token: [ 'entity.mime-type.apacheconf', 'text' ],\n regex: '\\\\b((?:text|image|application|video|audio)/.+?)(\\\\s)' },\n { token: 'entity.helper.apacheconf',\n regex: '\\\\b(?:from|unset|set|on|off)\\\\b',\n caseInsensitive: true },\n { token: 'constant.integer.apacheconf', regex: '\\\\b\\\\d+\\\\b' },\n { token: \n [ 'text',\n 'punctuation.definition.flag.apacheconf',\n 'string.flag.apacheconf',\n 'punctuation.definition.flag.apacheconf',\n 'text' ],\n regex: '(\\\\s)(\\\\[)(.*?)(\\\\])(\\\\s)' } ] };\n \n this.normalizeRules();\n};\n\nApacheConfHighlightRules.metaData = { fileTypes: \n [ 'conf',\n 'CONF',\n 'htaccess',\n 'HTACCESS',\n 'htgroups',\n 'HTGROUPS',\n 'htpasswd',\n 'HTPASSWD',\n '.htaccess',\n '.HTACCESS',\n '.htgroups',\n '.HTGROUPS',\n '.htpasswd',\n '.HTPASSWD' ],\n name: 'Apache Conf',\n scopeName: 'source.apacheconf' };\n\n\noop.inherits(ApacheConfHighlightRules, TextHighlightRules);\n\nexports.ApacheConfHighlightRules = ApacheConfHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/apache_conf\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/apache_conf_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ApacheConfHighlightRules = acequire(\"./apache_conf_highlight_rules\").ApacheConfHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = ApacheConfHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"#\";\n this.$id = \"ace/mode/apache_conf\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/asciidoc_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar AsciidocHighlightRules = function() {\n var identifierRe = \"[a-zA-Z\\u00a1-\\uffff]+\\\\b\";\n\n this.$rules = {\n \"start\": [\n {token: \"empty\", regex: /$/},\n {token: \"literal\", regex: /^\\.{4,}\\s*$/, next: \"listingBlock\"},\n {token: \"literal\", regex: /^-{4,}\\s*$/, next: \"literalBlock\"},\n {token: \"string\", regex: /^\\+{4,}\\s*$/, next: \"passthroughBlock\"},\n {token: \"keyword\", regex: /^={4,}\\s*$/},\n {token: \"text\", regex: /^\\s*$/},\n {token: \"empty\", regex: \"\", next: \"dissallowDelimitedBlock\"}\n ],\n\n \"dissallowDelimitedBlock\": [\n {include: \"paragraphEnd\"},\n {token: \"comment\", regex: '^//.+$'},\n {token: \"keyword\", regex: \"^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):\"},\n\n {include: \"listStart\"},\n {token: \"literal\", regex: /^\\s+.+$/, next: \"indentedBlock\"},\n {token: \"empty\", regex: \"\", next: \"text\"}\n ],\n\n \"paragraphEnd\": [\n {token: \"doc.comment\", regex: /^\\/{4,}\\s*$/, next: \"commentBlock\"},\n {token: \"tableBlock\", regex: /^\\s*[|!]=+\\s*$/, next: \"tableBlock\"},\n {token: \"keyword\", regex: /^(?:--|''')\\s*$/, next: \"start\"},\n {token: \"option\", regex: /^\\[.*\\]\\s*$/, next: \"start\"},\n {token: \"pageBreak\", regex: /^>{3,}$/, next: \"start\"},\n {token: \"literal\", regex: /^\\.{4,}\\s*$/, next: \"listingBlock\"},\n {token: \"titleUnderline\", regex: /^(?:={2,}|-{2,}|~{2,}|\\^{2,}|\\+{2,})\\s*$/, next: \"start\"},\n {token: \"singleLineTitle\", regex: /^={1,5}\\s+\\S.*$/, next: \"start\"},\n\n {token: \"otherBlock\", regex: /^(?:\\*{2,}|_{2,})\\s*$/, next: \"start\"},\n {token: \"optionalTitle\", regex: /^\\.[^.\\s].+$/, next: \"start\"}\n ],\n\n \"listStart\": [\n {token: \"keyword\", regex: /^\\s*(?:\\d+\\.|[a-zA-Z]\\.|[ixvmIXVM]+\\)|\\*{1,5}|-|\\.{1,5})\\s/, next: \"listText\"},\n {token: \"meta.tag\", regex: /^.+(?::{2,4}|;;)(?: |$)/, next: \"listText\"},\n {token: \"support.function.list.callout\", regex: /^(?:<\\d+>|\\d+>|>) /, next: \"text\"},\n {token: \"keyword\", regex: /^\\+\\s*$/, next: \"start\"}\n ],\n\n \"text\": [\n {token: [\"link\", \"variable.language\"], regex: /((?:https?:\\/\\/|ftp:\\/\\/|file:\\/\\/|mailto:|callto:)[^\\s\\[]+)(\\[.*?\\])/},\n {token: \"link\", regex: /(?:https?:\\/\\/|ftp:\\/\\/|file:\\/\\/|mailto:|callto:)[^\\s\\[]+/},\n {token: \"link\", regex: /\\b[\\w\\.\\/\\-]+@[\\w\\.\\/\\-]+\\b/},\n {include: \"macros\"},\n {include: \"paragraphEnd\"},\n {token: \"literal\", regex:/\\+{3,}/, next:\"smallPassthrough\"},\n {token: \"escape\", regex: /\\((?:C|TM|R)\\)|\\.{3}|->|<-|=>|<=|&#(?:\\d+|x[a-fA-F\\d]+);|(?: |^)--(?=\\s+\\S)/},\n {token: \"escape\", regex: /\\\\[_*'`+#]|\\\\{2}[_*'`+#]{2}/},\n {token: \"keyword\", regex: /\\s\\+$/},\n {token: \"text\", regex: identifierRe},\n {token: [\"keyword\", \"string\", \"keyword\"],\n regex: /(<<[\\w\\d\\-$]+,)(.*?)(>>|$)/},\n {token: \"keyword\", regex: /<<[\\w\\d\\-$]+,?|>>/},\n {token: \"constant.character\", regex: /\\({2,3}.*?\\){2,3}/},\n {token: \"keyword\", regex: /\\[\\[.+?\\]\\]/},\n {token: \"support\", regex: /^\\[{3}[\\w\\d =\\-]+\\]{3}/},\n\n {include: \"quotes\"},\n {token: \"empty\", regex: /^\\s*$/, next: \"start\"}\n ],\n\n \"listText\": [\n {include: \"listStart\"},\n {include: \"text\"}\n ],\n\n \"indentedBlock\": [\n {token: \"literal\", regex: /^[\\s\\w].+$/, next: \"indentedBlock\"},\n {token: \"literal\", regex: \"\", next: \"start\"}\n ],\n\n \"listingBlock\": [\n {token: \"literal\", regex: /^\\.{4,}\\s*$/, next: \"dissallowDelimitedBlock\"},\n {token: \"constant.numeric\", regex: '<\\\\d+>'},\n {token: \"literal\", regex: '[^<]+'},\n {token: \"literal\", regex: '<'}\n ],\n \"literalBlock\": [\n {token: \"literal\", regex: /^-{4,}\\s*$/, next: \"dissallowDelimitedBlock\"},\n {token: \"constant.numeric\", regex: '<\\\\d+>'},\n {token: \"literal\", regex: '[^<]+'},\n {token: \"literal\", regex: '<'}\n ],\n \"passthroughBlock\": [\n {token: \"literal\", regex: /^\\+{4,}\\s*$/, next: \"dissallowDelimitedBlock\"},\n {token: \"literal\", regex: identifierRe + \"|\\\\d+\"},\n {include: \"macros\"},\n {token: \"literal\", regex: \".\"}\n ],\n\n \"smallPassthrough\": [\n {token: \"literal\", regex: /[+]{3,}/, next: \"dissallowDelimitedBlock\"},\n {token: \"literal\", regex: /^\\s*$/, next: \"dissallowDelimitedBlock\"},\n {token: \"literal\", regex: identifierRe + \"|\\\\d+\"},\n {include: \"macros\"}\n ],\n\n \"commentBlock\": [\n {token: \"doc.comment\", regex: /^\\/{4,}\\s*$/, next: \"dissallowDelimitedBlock\"},\n {token: \"doc.comment\", regex: '^.*$'}\n ],\n \"tableBlock\": [\n {token: \"tableBlock\", regex: /^\\s*\\|={3,}\\s*$/, next: \"dissallowDelimitedBlock\"},\n {token: \"tableBlock\", regex: /^\\s*!={3,}\\s*$/, next: \"innerTableBlock\"},\n {token: \"tableBlock\", regex: /\\|/},\n {include: \"text\", noEscape: true}\n ],\n \"innerTableBlock\": [\n {token: \"tableBlock\", regex: /^\\s*!={3,}\\s*$/, next: \"tableBlock\"},\n {token: \"tableBlock\", regex: /^\\s*|={3,}\\s*$/, next: \"dissallowDelimitedBlock\"},\n {token: \"tableBlock\", regex: /!/}\n ],\n \"macros\": [\n {token: \"macro\", regex: /{[\\w\\-$]+}/},\n {token: [\"text\", \"string\", \"text\", \"constant.character\", \"text\"], regex: /({)([\\w\\-$]+)(:)?(.+)?(})/},\n {token: [\"text\", \"markup.list.macro\", \"keyword\", \"string\"], regex: /(\\w+)(footnote(?:ref)?::?)([^\\s\\[]+)?(\\[.*?\\])?/},\n {token: [\"markup.list.macro\", \"keyword\", \"string\"], regex: /([a-zA-Z\\-][\\w\\.\\/\\-]*::?)([^\\s\\[]+)(\\[.*?\\])?/},\n {token: [\"markup.list.macro\", \"keyword\"], regex: /([a-zA-Z\\-][\\w\\.\\/\\-]+::?)(\\[.*?\\])/},\n {token: \"keyword\", regex: /^:.+?:(?= |$)/}\n ],\n\n \"quotes\": [\n {token: \"string.italic\", regex: /__[^_\\s].*?__/},\n {token: \"string.italic\", regex: quoteRule(\"_\")},\n \n {token: \"keyword.bold\", regex: /\\*\\*[^*\\s].*?\\*\\*/},\n {token: \"keyword.bold\", regex: quoteRule(\"\\\\*\")},\n \n {token: \"literal\", regex: quoteRule(\"\\\\+\")},\n {token: \"literal\", regex: /\\+\\+[^+\\s].*?\\+\\+/},\n {token: \"literal\", regex: /\\$\\$.+?\\$\\$/},\n {token: \"literal\", regex: quoteRule(\"`\")},\n\n {token: \"keyword\", regex: quoteRule(\"^\")},\n {token: \"keyword\", regex: quoteRule(\"~\")},\n {token: \"keyword\", regex: /##?/},\n {token: \"keyword\", regex: /(?:\\B|^)``|\\b''/}\n ]\n\n };\n\n function quoteRule(ch) {\n var prefix = /\\w/.test(ch) ? \"\\\\b\" : \"(?:\\\\B|^)\";\n return prefix + ch + \"[^\" + ch + \"].*?\" + ch + \"(?![\\\\w*])\";\n }\n\n var tokenMap = {\n macro: \"constant.character\",\n tableBlock: \"doc.comment\",\n titleUnderline: \"markup.heading\",\n singleLineTitle: \"markup.heading\",\n pageBreak: \"string\",\n option: \"string.regexp\",\n otherBlock: \"markup.list\",\n literal: \"support.function\",\n optionalTitle: \"constant.numeric\",\n escape: \"constant.language.escape\",\n link: \"markup.underline.list\"\n };\n\n for (var state in this.$rules) {\n var stateRules = this.$rules[state];\n for (var i = stateRules.length; i--; ) {\n var rule = stateRules[i];\n if (rule.include || typeof rule == \"string\") {\n var args = [i, 1].concat(this.$rules[rule.include || rule]);\n if (rule.noEscape) {\n args = args.filter(function(x) {\n return !x.next;\n });\n }\n stateRules.splice.apply(stateRules, args);\n } else if (rule.token in tokenMap) {\n rule.token = tokenMap[rule.token];\n }\n }\n }\n};\noop.inherits(AsciidocHighlightRules, TextHighlightRules);\n\nexports.AsciidocHighlightRules = AsciidocHighlightRules;\n});\n\nace.define(\"ace/mode/folding/asciidoc\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n this.foldingStartMarker = /^(?:\\|={10,}|[\\.\\/=\\-~^+]{4,}\\s*$|={1,5} )/;\n this.singleLineHeadingRe = /^={1,5}(?=\\s+\\S)/;\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (!this.foldingStartMarker.test(line))\n return \"\";\n\n if (line[0] == \"=\") {\n if (this.singleLineHeadingRe.test(line))\n return \"start\";\n if (session.getLine(row - 1).length != session.getLine(row).length)\n return \"\";\n return \"start\";\n }\n if (session.bgTokenizer.getState(row) == \"dissallowDelimitedBlock\")\n return \"end\";\n return \"start\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n if (!line.match(this.foldingStartMarker))\n return;\n\n var token;\n function getTokenType(row) {\n token = session.getTokens(row)[0];\n return token && token.type;\n }\n\n var levels = [\"=\",\"-\",\"~\",\"^\",\"+\"];\n var heading = \"markup.heading\";\n var singleLineHeadingRe = this.singleLineHeadingRe;\n function getLevel() {\n var match = token.value.match(singleLineHeadingRe);\n if (match)\n return match[0].length;\n var level = levels.indexOf(token.value[0]) + 1;\n if (level == 1) {\n if (session.getLine(row - 1).length != session.getLine(row).length)\n return Infinity;\n }\n return level;\n }\n\n if (getTokenType(row) == heading) {\n var startHeadingLevel = getLevel();\n while (++row < maxRow) {\n if (getTokenType(row) != heading)\n continue;\n var level = getLevel();\n if (level <= startHeadingLevel)\n break;\n }\n\n var isSingleLineHeading = token && token.value.match(this.singleLineHeadingRe);\n endRow = isSingleLineHeading ? row - 1 : row - 2;\n\n if (endRow > startRow) {\n while (endRow > startRow && (!getTokenType(endRow) || token.value[0] == \"[\"))\n endRow--;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n } else {\n var state = session.bgTokenizer.getState(row);\n if (state == \"dissallowDelimitedBlock\") {\n while (row -- > 0) {\n if (session.bgTokenizer.getState(row).lastIndexOf(\"Block\") == -1)\n break;\n }\n endRow = row + 1;\n if (endRow < startRow) {\n var endColumn = session.getLine(row).length;\n return new Range(endRow, 5, startRow, startColumn - 5);\n }\n } else {\n while (++row < maxRow) {\n if (session.bgTokenizer.getState(row) == \"dissallowDelimitedBlock\")\n break;\n }\n endRow = row;\n if (endRow > startRow) {\n var endColumn = session.getLine(row).length;\n return new Range(startRow, 5, endRow, endColumn - 5);\n }\n }\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/asciidoc\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/asciidoc_highlight_rules\",\"ace/mode/folding/asciidoc\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar AsciidocHighlightRules = acequire(\"./asciidoc_highlight_rules\").AsciidocHighlightRules;\nvar AsciidocFoldMode = acequire(\"./folding/asciidoc\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = AsciidocHighlightRules;\n \n this.foldingRules = new AsciidocFoldMode(); \n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.type = \"text\";\n this.getNextLineIndent = function(state, line, tab) {\n if (state == \"listblock\") {\n var match = /^((?:.+)?)([-+*][ ]+)/.exec(line);\n if (match) {\n return new Array(match[1].length + 1).join(\" \") + match[2];\n } else {\n return \"\";\n }\n } else {\n return this.$getIndent(line);\n }\n };\n this.$id = \"ace/mode/asciidoc\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/assembly_x86_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar AssemblyX86HighlightRules = function() {\n\n this.$rules = { start: \n [ { token: 'keyword.control.assembly',\n regex: '\\\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\\\b',\n caseInsensitive: true },\n { token: 'variable.parameter.register.assembly',\n regex: '\\\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\\\b',\n caseInsensitive: true },\n { token: 'constant.character.decimal.assembly',\n regex: '\\\\b[0-9]+\\\\b' },\n { token: 'constant.character.hexadecimal.assembly',\n regex: '\\\\b0x[A-F0-9]+\\\\b',\n caseInsensitive: true },\n { token: 'constant.character.hexadecimal.assembly',\n regex: '\\\\b[A-F0-9]+h\\\\b',\n caseInsensitive: true },\n { token: 'string.assembly', regex: /'([^\\\\']|\\\\.)*'/ },\n { token: 'string.assembly', regex: /\"([^\\\\\"]|\\\\.)*\"/ },\n { token: 'support.function.directive.assembly',\n regex: '^\\\\[',\n push: \n [ { token: 'support.function.directive.assembly',\n regex: '\\\\]$',\n next: 'pop' },\n { defaultToken: 'support.function.directive.assembly' } ] },\n { token: \n [ 'support.function.directive.assembly',\n 'support.function.directive.assembly',\n 'entity.name.function.assembly' ],\n regex: '(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)' },\n { token: 'support.function.directive.assembly',\n regex: '^endstruc\\\\b' },\n { token: \n [ 'support.function.directive.assembly',\n 'entity.name.function.assembly',\n 'support.function.directive.assembly',\n 'constant.character.assembly' ],\n regex: '^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)' },\n { token: 'support.function.directive.assembly',\n regex: '^%endmacro' },\n { token: \n [ 'text',\n 'support.function.directive.assembly',\n 'text',\n 'entity.name.function.assembly' ],\n regex: '(\\\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\\\$\\\\$|\\\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)',\n caseInsensitive: true },\n { token: 'support.function.directive.assembly',\n regex: '\\\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\\\b',\n caseInsensitive: true },\n { token: 'entity.name.function.assembly', regex: '^\\\\s*%%[\\\\w.]+?:$' },\n { token: 'entity.name.function.assembly', regex: '^\\\\s*%\\\\$[\\\\w.]+?:$' },\n { token: 'entity.name.function.assembly', regex: '^[\\\\w.]+?:' },\n { token: 'entity.name.function.assembly', regex: '^[\\\\w.]+?\\\\b' },\n { token: 'comment.assembly', regex: ';.*$' } ] \n };\n \n this.normalizeRules();\n};\n\nAssemblyX86HighlightRules.metaData = { fileTypes: [ 'asm' ],\n name: 'Assembly x86',\n scopeName: 'source.assembly' };\n\n\noop.inherits(AssemblyX86HighlightRules, TextHighlightRules);\n\nexports.AssemblyX86HighlightRules = AssemblyX86HighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/assembly_x86\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/assembly_x86_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar AssemblyX86HighlightRules = acequire(\"./assembly_x86_highlight_rules\").AssemblyX86HighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = AssemblyX86HighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \";\";\n this.$id = \"ace/mode/assembly_x86\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/batchfile_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar BatchFileHighlightRules = function() {\n\n this.$rules = { start: \n [ { token: 'keyword.command.dosbatch',\n regex: '\\\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\\\b',\n caseInsensitive: true },\n { token: 'keyword.control.statement.dosbatch',\n regex: '\\\\b(?:goto|call|exit)\\\\b',\n caseInsensitive: true },\n { token: 'keyword.control.conditional.if.dosbatch',\n regex: '\\\\bif\\\\s+not\\\\s+(?:exist|defined|errorlevel|cmdextversion)\\\\b',\n caseInsensitive: true },\n { token: 'keyword.control.conditional.dosbatch',\n regex: '\\\\b(?:if|else)\\\\b',\n caseInsensitive: true },\n { token: 'keyword.control.repeat.dosbatch',\n regex: '\\\\bfor\\\\b',\n caseInsensitive: true },\n { token: 'keyword.operator.dosbatch',\n regex: '\\\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\\\b' },\n { token: ['doc.comment', 'comment'],\n regex: '(?:^|\\\\b)(rem)($|\\\\s.*$)',\n caseInsensitive: true },\n { token: 'comment.line.colons.dosbatch',\n regex: '::.*$' },\n { include: 'variable' },\n { token: 'punctuation.definition.string.begin.shell',\n regex: '\"',\n push: [ \n { token: 'punctuation.definition.string.end.shell', regex: '\"', next: 'pop' },\n { include: 'variable' },\n { defaultToken: 'string.quoted.double.dosbatch' } ] },\n { token: 'keyword.operator.pipe.dosbatch', regex: '[|]' },\n { token: 'keyword.operator.redirect.shell',\n regex: '&>|\\\\d*>&\\\\d*|\\\\d*(?:>>|>|<)|\\\\d*<&|\\\\d*<>' } ],\n variable: [\n { token: 'constant.numeric', regex: '%%\\\\w+|%[*\\\\d]|%\\\\w+%'},\n { token: 'constant.numeric', regex: '%~\\\\d+'},\n { token: ['markup.list', 'constant.other', 'markup.list'],\n regex: '(%)(\\\\w+)(%?)' }]};\n \n this.normalizeRules();\n};\n\nBatchFileHighlightRules.metaData = { name: 'Batch File',\n scopeName: 'source.dosbatch',\n fileTypes: [ 'bat' ] };\n\n\noop.inherits(BatchFileHighlightRules, TextHighlightRules);\n\nexports.BatchFileHighlightRules = BatchFileHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/batchfile\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/batchfile_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar BatchFileHighlightRules = acequire(\"./batchfile_highlight_rules\").BatchFileHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = BatchFileHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"::\";\n this.blockComment = \"\";\n this.$id = \"ace/mode/batchfile\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/c_cpp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar cFunctions = exports.cFunctions = \"\\\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\\\b\";\n\nvar c_cppHighlightRules = function() {\n\n var keywordControls = (\n \"break|case|continue|default|do|else|for|goto|if|_Pragma|\" +\n \"return|switch|while|catch|operator|try|throw|using\"\n );\n \n var storageType = (\n \"asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|\" +\n \"_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|\" +\n \"class|wchar_t|template|char16_t|char32_t\"\n );\n\n var storageModifiers = (\n \"const|extern|register|restrict|static|volatile|inline|private|\" +\n \"protected|public|friend|explicit|virtual|export|mutable|typename|\" +\n \"constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local\"\n );\n\n var keywordOperators = (\n \"and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq\" +\n \"const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace\"\n );\n\n var builtinConstants = (\n \"NULL|true|false|TRUE|FALSE|nullptr\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword.control\" : keywordControls,\n \"storage.type\" : storageType,\n \"storage.modifier\" : storageModifiers,\n \"keyword.operator\" : keywordOperators,\n \"variable.language\": \"this\",\n \"constant.language\": builtinConstants\n }, \"identifier\");\n\n var identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\\\\b\";\n var escapeRe = /\\\\(?:['\"?\\\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}U[a-fA-F\\d]{8}|.)/.source;\n var formatRe = \"%\"\n + /(\\d+\\$)?/.source // field (argument #)\n + /[#0\\- +']*/.source // flags\n + /[,;:_]?/.source // separator character (AltiVec)\n + /((-?\\d+)|\\*(-?\\d+\\$)?)?/.source // minimum field width\n + /(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?/.source // precision\n + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier\n + /(\\[[^\"\\]]+\\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type\n\n this.$rules = { \n \"start\" : [\n {\n token : \"comment\",\n regex : \"//$\",\n next : \"start\"\n }, {\n token : \"comment\",\n regex : \"//\",\n next : \"singleLineComment\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // character\n regex : \"'(?:\" + escapeRe + \"|.)?'\"\n }, {\n token : \"string.start\",\n regex : '\"', \n stateName: \"qqstring\",\n next: [\n { token: \"string\", regex: /\\\\\\s*$/, next: \"qqstring\" },\n { token: \"constant.language.escape\", regex: escapeRe },\n { token: \"constant.language.escape\", regex: formatRe },\n { token: \"string.end\", regex: '\"|$', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"string.start\",\n regex : 'R\"\\\\(', \n stateName: \"rawString\",\n next: [\n { token: \"string.end\", regex: '\\\\)\"', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"#\\\\s*(?:include|import|pragma|line|define|undef)\\\\b\",\n next : \"directive\"\n }, {\n token : \"keyword\", // special case pre-compiler directive\n regex : \"#\\\\s*(?:endif|if|ifdef|else|elif|ifndef)\\\\b\"\n }, {\n token : \"support.function.C99.c\",\n regex : cFunctions\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|<<=|>>=|>>>=|<>|&&|\\|\\||\\?:|[*%\\/+\\-&\\^|~!<>=]=?/\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"singleLineComment\" : [\n {\n token : \"comment\",\n regex : /\\\\$/,\n next : \"singleLineComment\"\n }, {\n token : \"comment\",\n regex : /$/,\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"directive\" : [\n {\n token : \"constant.other.multiline\",\n regex : /\\\\/\n },\n {\n token : \"constant.other.multiline\",\n regex : /.*\\\\/\n },\n {\n token : \"constant.other\",\n regex : \"\\\\s*<.+?>\",\n next : \"start\"\n },\n {\n token : \"constant.other\", // single line\n regex : '\\\\s*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]',\n next : \"start\"\n }, \n {\n token : \"constant.other\", // single line\n regex : \"\\\\s*['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\",\n next : \"start\"\n },\n {\n token : \"constant.other\",\n regex : /[^\\\\\\/]+/,\n next : \"start\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(c_cppHighlightRules, TextHighlightRules);\n\nexports.c_cppHighlightRules = c_cppHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/c_cpp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/c_cpp_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar c_cppHighlightRules = acequire(\"./c_cpp_highlight_rules\").c_cppHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = c_cppHighlightRules;\n\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/c_cpp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/clojure_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n\n\nvar ClojureHighlightRules = function() {\n\n var builtinFunctions = (\n '* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* ' +\n '*command-line-args* *compile-files* *compile-path* *e *err* *file* ' +\n '*flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* ' +\n '*print-dup* *print-length* *print-level* *print-meta* *print-readably* ' +\n '*read-eval* *source-path* *use-context-classloader* ' +\n '*warn-on-reflection* + - -> ->> .. / < <= = ' +\n '== > > >= >= accessor aclone ' +\n 'add-classpath add-watch agent agent-errors aget alength alias all-ns ' +\n 'alter alter-meta! alter-var-root amap ancestors and apply areduce ' +\n 'array-map aset aset-boolean aset-byte aset-char aset-double aset-float ' +\n 'aset-int aset-long aset-short assert assoc assoc! assoc-in associative? ' +\n 'atom await await-for await1 bases bean bigdec bigint binding bit-and ' +\n 'bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left ' +\n 'bit-shift-right bit-test bit-xor boolean boolean-array booleans ' +\n 'bound-fn bound-fn* butlast byte byte-array bytes cast char char-array ' +\n 'char-escape-string char-name-string char? chars chunk chunk-append ' +\n 'chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? ' +\n 'class class? clear-agent-errors clojure-version coll? comment commute ' +\n 'comp comparator compare compare-and-set! compile complement concat cond ' +\n 'condp conj conj! cons constantly construct-proxy contains? count ' +\n 'counted? create-ns create-struct cycle dec decimal? declare definline ' +\n 'defmacro defmethod defmulti defn defn- defonce defstruct delay delay? ' +\n 'deliver deref derive descendants destructure disj disj! dissoc dissoc! ' +\n 'distinct distinct? doall doc dorun doseq dosync dotimes doto double ' +\n 'double-array doubles drop drop-last drop-while empty empty? ensure ' +\n 'enumeration-seq eval even? every? false? ffirst file-seq filter find ' +\n 'find-doc find-ns find-var first float float-array float? floats flush ' +\n 'fn fn? fnext for force format future future-call future-cancel ' +\n 'future-cancelled? future-done? future? gen-class gen-interface gensym ' +\n 'get get-in get-method get-proxy-class get-thread-bindings get-validator ' +\n 'hash hash-map hash-set identical? identity if-let if-not ifn? import ' +\n 'in-ns inc init-proxy instance? int int-array integer? interleave intern ' +\n 'interpose into into-array ints io! isa? iterate iterator-seq juxt key ' +\n 'keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list ' +\n 'list* list? load load-file load-reader load-string loaded-libs locking ' +\n 'long long-array longs loop macroexpand macroexpand-1 make-array ' +\n 'make-hierarchy map map? mapcat max max-key memfn memoize merge ' +\n 'merge-with meta method-sig methods min min-key mod name namespace neg? ' +\n 'newline next nfirst nil? nnext not not-any? not-empty not-every? not= ' +\n 'ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ' +\n 'ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? ' +\n 'or parents partial partition pcalls peek persistent! pmap pop pop! ' +\n 'pop-thread-bindings pos? pr pr-str prefer-method prefers ' +\n 'primitives-classnames print print-ctor print-doc print-dup print-method ' +\n 'print-namespace-doc print-simple print-special-doc print-str printf ' +\n 'println println-str prn prn-str promise proxy proxy-call-with-super ' +\n 'proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot ' +\n 'rand rand-int range ratio? rational? rationalize re-find re-groups ' +\n 're-matcher re-matches re-pattern re-seq read read-line read-string ' +\n 'reduce ref ref-history-count ref-max-history ref-min-history ref-set ' +\n 'refer refer-clojure release-pending-sends rem remove remove-method ' +\n 'remove-ns remove-watch repeat repeatedly replace replicate acequire ' +\n 'reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq ' +\n 'rsubseq second select-keys send send-off seq seq? seque sequence ' +\n 'sequential? set set-validator! set? short short-array shorts ' +\n 'shutdown-agents slurp some sort sort-by sorted-map sorted-map-by ' +\n 'sorted-set sorted-set-by sorted? special-form-anchor special-symbol? ' +\n 'split-at split-with str stream? string? struct struct-map subs subseq ' +\n 'subvec supers swap! symbol symbol? sync syntax-symbol-anchor take ' +\n 'take-last take-nth take-while test the-ns time to-array to-array-2d ' +\n 'trampoline transient tree-seq true? type unchecked-add unchecked-dec ' +\n 'unchecked-divide unchecked-inc unchecked-multiply unchecked-negate ' +\n 'unchecked-remainder unchecked-subtract underive unquote ' +\n 'unquote-splicing update-in update-proxy use val vals var-get var-set ' +\n 'var? vary-meta vec vector vector? when when-first when-let when-not ' +\n 'while with-bindings with-bindings* with-in-str with-loading-context ' +\n 'with-local-vars with-meta with-open with-out-str with-precision xml-seq ' +\n 'zero? zipmap'\n );\n\n var keywords = ('throw try var ' +\n 'def do fn if let loop monitor-enter monitor-exit new quote recur set!'\n );\n\n var buildinConstants = (\"true false nil\");\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": builtinFunctions\n }, \"identifier\", false, \" \");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \";.*$\"\n }, {\n token : \"keyword\", //parens\n regex : \"[\\\\(|\\\\)]\"\n }, {\n token : \"keyword\", //lists\n regex : \"[\\\\'\\\\(]\"\n }, {\n token : \"keyword\", //vectors\n regex : \"[\\\\[|\\\\]]\"\n }, {\n token : \"keyword\", //sets and maps\n regex : \"[\\\\{|\\\\}|\\\\#\\\\{|\\\\#\\\\}]\"\n }, {\n token : \"keyword\", // ampersands\n regex : '[\\\\&]'\n }, {\n token : \"keyword\", // metadata\n regex : '[\\\\#\\\\^\\\\{]'\n }, {\n token : \"keyword\", // anonymous fn syntactic sugar\n regex : '[\\\\%]'\n }, {\n token : \"keyword\", // deref reader macro\n regex : '[@]'\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language\",\n regex : '[!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+||=|!=|<=|>=|<>|<|>|!|&&]'\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$\\\\-]*\\\\b\"\n }, {\n token : \"string\", // single line\n regex : '\"',\n next: \"string\"\n }, {\n token : \"constant\", // symbol\n regex : /:[^()\\[\\]{}'\"\\^%`,;\\s]+/\n }, {\n token : \"string.regexp\", //Regular Expressions\n regex : '/#\"(?:\\\\.|(?:\\\\\")|[^\"\"\\n])*\"/g'\n }\n\n ],\n \"string\" : [\n {\n token : \"constant.language.escape\",\n regex : \"\\\\\\\\.|\\\\\\\\$\"\n }, {\n token : \"string\",\n regex : '[^\"\\\\\\\\]+'\n }, {\n token : \"string\",\n regex : '\"',\n next : \"start\"\n }\n ]\n };\n};\n\noop.inherits(ClojureHighlightRules, TextHighlightRules);\n\nexports.ClojureHighlightRules = ClojureHighlightRules;\n});\n\nace.define(\"ace/mode/matching_parens_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingParensOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\)/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\))/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n var match = line.match(/^(\\s+)/);\n if (match) {\n return match[1];\n }\n\n return \"\";\n };\n\n}).call(MatchingParensOutdent.prototype);\n\nexports.MatchingParensOutdent = MatchingParensOutdent;\n});\n\nace.define(\"ace/mode/clojure\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/clojure_highlight_rules\",\"ace/mode/matching_parens_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ClojureHighlightRules = acequire(\"./clojure_highlight_rules\").ClojureHighlightRules;\nvar MatchingParensOutdent = acequire(\"./matching_parens_outdent\").MatchingParensOutdent;\n\nvar Mode = function() {\n this.HighlightRules = ClojureHighlightRules;\n this.$outdent = new MatchingParensOutdent();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \";\";\n this.minorIndentFunctions = [\"defn\", \"defn-\", \"defmacro\", \"def\", \"deftest\", \"testing\"];\n\n this.$toIndent = function(str) {\n return str.split('').map(function(ch) {\n if (/\\s/.exec(ch)) {\n return ch;\n } else {\n return ' ';\n }\n }).join('');\n };\n\n this.$calculateIndent = function(line, tab) {\n var baseIndent = this.$getIndent(line);\n var delta = 0;\n var isParen, ch;\n for (var i = line.length - 1; i >= 0; i--) {\n ch = line[i];\n if (ch === '(') {\n delta--;\n isParen = true;\n } else if (ch === '(' || ch === '[' || ch === '{') {\n delta--;\n isParen = false;\n } else if (ch === ')' || ch === ']' || ch === '}') {\n delta++;\n }\n if (delta < 0) {\n break;\n }\n }\n if (delta < 0 && isParen) {\n i += 1;\n var iBefore = i;\n var fn = '';\n while (true) {\n ch = line[i];\n if (ch === ' ' || ch === '\\t') {\n if(this.minorIndentFunctions.indexOf(fn) !== -1) {\n return this.$toIndent(line.substring(0, iBefore - 1) + tab);\n } else {\n return this.$toIndent(line.substring(0, i + 1));\n }\n } else if (ch === undefined) {\n return this.$toIndent(line.substring(0, iBefore - 1) + tab);\n }\n fn += line[i];\n i++;\n }\n } else if(delta < 0 && !isParen) {\n return this.$toIndent(line.substring(0, i+1));\n } else if(delta > 0) {\n baseIndent = baseIndent.substring(0, baseIndent.length - tab.length);\n return baseIndent;\n } else {\n return baseIndent;\n }\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$calculateIndent(line, tab);\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/clojure\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/cobol_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar CobolHighlightRules = function() {\nvar keywords = \"ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|\" +\n\"AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|\" +\n\"ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|\" +\n\"TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|\" +\n\"UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|\" +\n\"PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|\" +\n\"CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|\" +\n\"COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|\" +\n\"RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|\" +\n\"DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|\" +\n\"ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|\" +\n\"EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT\";\n\n var builtinConstants = (\n \"true|false|null\"\n );\n\n var builtinFunctions = (\n \"count|min|max|avg|sum|rank|now|coalesce|main\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords,\n \"constant.language\": builtinConstants\n }, \"identifier\", true);\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"\\\\*.*$\"\n }, {\n token : \"string\", // \" string\n regex : '\".*?\"'\n }, {\n token : \"string\", // ' string\n regex : \"'.*?'\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ]\n };\n};\n\noop.inherits(CobolHighlightRules, TextHighlightRules);\n\nexports.CobolHighlightRules = CobolHighlightRules;\n});\n\nace.define(\"ace/mode/cobol\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/cobol_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CobolHighlightRules = acequire(\"./cobol_highlight_rules\").CobolHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = CobolHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"*\";\n\n this.$id = \"ace/mode/cobol\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/coffee_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n oop.inherits(CoffeeHighlightRules, TextHighlightRules);\n\n function CoffeeHighlightRules() {\n var identifier = \"[$A-Za-z_\\\\x7f-\\\\uffff][$\\\\w\\\\x7f-\\\\uffff]*\";\n\n var keywords = (\n \"this|throw|then|try|typeof|super|switch|return|break|by|continue|\" +\n \"catch|class|in|instanceof|is|isnt|if|else|extends|for|own|\" +\n \"finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|\" +\n \"or|on|unless|until|and|yes\"\n );\n\n var langConstant = (\n \"true|false|null|undefined|NaN|Infinity\"\n );\n\n var illegal = (\n \"case|const|default|function|var|void|with|enum|export|implements|\" +\n \"interface|let|package|private|protected|public|static|yield\"\n );\n\n var supportClass = (\n \"Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" +\n \"SyntaxError|TypeError|URIError|\" +\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray\"\n );\n\n var supportFunction = (\n \"Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|\" +\n \"encodeURIComponent|decodeURI|decodeURIComponent|String|\"\n );\n\n var variableLanguage = (\n \"window|arguments|prototype|document\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": langConstant,\n \"invalid.illegal\": illegal,\n \"language.support.class\": supportClass,\n \"language.support.function\": supportFunction,\n \"variable.language\": variableLanguage\n }, \"identifier\");\n\n var functionRule = {\n token: [\"paren.lparen\", \"variable.parameter\", \"paren.rparen\", \"text\", \"storage.type\"],\n regex: /(?:(\\()((?:\"[^\")]*?\"|'[^')]*?'|\\/[^\\/)]*?\\/|[^()\"'\\/])*?)(\\))(\\s*))?([\\-=]>)/.source\n };\n\n var stringEscape = /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;\n\n this.$rules = {\n start : [\n {\n token : \"constant.numeric\",\n regex : \"(?:0x[\\\\da-fA-F]+|(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?)\"\n }, {\n stateName: \"qdoc\",\n token : \"string\", regex : \"'''\", next : [\n {token : \"string\", regex : \"'''\", next : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"qqdoc\",\n token : \"string\",\n regex : '\"\"\"',\n next : [\n {token : \"string\", regex : '\"\"\"', next : \"start\"},\n {token : \"paren.string\", regex : '#{', push : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"qstring\",\n token : \"string\", regex : \"'\", next : [\n {token : \"string\", regex : \"'\", next : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"qqstring\",\n token : \"string.start\", regex : '\"', next : [\n {token : \"string.end\", regex : '\"', next : \"start\"},\n {token : \"paren.string\", regex : '#{', push : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"js\",\n token : \"string\", regex : \"`\", next : [\n {token : \"string\", regex : \"`\", next : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren\";\n }\n if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift() || \"\";\n if (this.next.indexOf(\"string\") != -1)\n return \"paren.string\";\n }\n return \"paren\";\n }\n }, {\n token : \"string.regex\",\n regex : \"///\",\n next : \"heregex\"\n }, {\n token : \"string.regex\",\n regex : /(?:\\/(?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/)(?:[imgy]{0,4})(?!\\w)/\n }, {\n token : \"comment\",\n regex : \"###(?!#)\",\n next : \"comment\"\n }, {\n token : \"comment\",\n regex : \"#.*\"\n }, {\n token : [\"punctuation.operator\", \"text\", \"identifier\"],\n regex : \"(\\\\.)(\\\\s*)(\" + illegal + \")\"\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\.{1,3}\"\n }, {\n token : [\"keyword\", \"text\", \"language.support.class\",\n \"text\", \"keyword\", \"text\", \"language.support.class\"],\n regex : \"(class)(\\\\s+)(\" + identifier + \")(?:(\\\\s+)(extends)(\\\\s+)(\" + identifier + \"))?\"\n }, {\n token : [\"entity.name.function\", \"text\", \"keyword.operator\", \"text\"].concat(functionRule.token),\n regex : \"(\" + identifier + \")(\\\\s*)([=:])(\\\\s*)\" + functionRule.regex\n }, \n functionRule, \n {\n token : \"variable\",\n regex : \"@(?:\" + identifier + \")?\"\n }, {\n token: keywordMapper,\n regex : identifier\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\,|\\\\.\"\n }, {\n token : \"storage.type\",\n regex : \"[\\\\-=]>\"\n }, {\n token : \"keyword.operator\",\n regex : \"(?:[-+*/%<>&|^!?=]=|>>>=?|\\\\-\\\\-|\\\\+\\\\+|::|&&=|\\\\|\\\\|=|<<=|>>=|\\\\?\\\\.|\\\\.{2,3}|[!*+-=><])\"\n }, {\n token : \"paren.lparen\",\n regex : \"[({[]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]})]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }],\n\n\n heregex : [{\n token : \"string.regex\",\n regex : '.*?///[imgy]{0,4}',\n next : \"start\"\n }, {\n token : \"comment.regex\",\n regex : \"\\\\s+(?:#.*)?\"\n }, {\n token : \"string.regex\",\n regex : \"\\\\S+\"\n }],\n\n comment : [{\n token : \"comment\",\n regex : '###',\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }]\n };\n this.normalizeRules();\n }\n\n exports.CoffeeHighlightRules = CoffeeHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/coffee\",[\"require\",\"exports\",\"module\",\"ace/mode/coffee_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/coffee\",\"ace/range\",\"ace/mode/text\",\"ace/worker/worker_client\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Rules = acequire(\"./coffee_highlight_rules\").CoffeeHighlightRules;\nvar Outdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\nvar Range = acequire(\"../range\").Range;\nvar TextMode = acequire(\"./text\").Mode;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar oop = acequire(\"../lib/oop\");\n\nfunction Mode() {\n this.HighlightRules = Rules;\n this.$outdent = new Outdent();\n this.foldingRules = new FoldMode();\n}\n\noop.inherits(Mode, TextMode);\n\n(function() {\n var indenter = /(?:[({[=:]|[-=]>|\\b(?:else|try|(?:swi|ca)tch(?:\\s+[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*)?|finally))\\s*$|^\\s*(else\\b\\s*)?(?:if|for|while|loop)\\b(?!.*\\bthen\\b)/;\n \n this.lineCommentStart = \"#\";\n this.blockComment = {start: \"###\", end: \"###\"};\n \n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n \n if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') &&\n state === 'start' && indenter.test(line))\n indent += tab;\n return indent;\n };\n \n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n \n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n \n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/coffee\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n \n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n \n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n \n return worker;\n };\n\n this.$id = \"ace/mode/coffee\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/csharp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar CSharpHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": \"abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic\",\n \"constant.language\": \"null|true|false\"\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // character\n regex : /'(?:.|\\\\(:?u[\\da-fA-F]+|x[\\da-fA-F]+|[tbrf'\"n]))?'/\n }, {\n token : \"string\", start : '\"', end : '\"|$', next: [\n {token: \"constant.language.escape\", regex: /\\\\(:?u[\\da-fA-F]+|x[\\da-fA-F]+|[tbrf'\"n])/},\n {token: \"invalid\", regex: /\\\\./}\n ]\n }, {\n token : \"string\", start : '@\"', end : '\"', next:[\n {token: \"constant.language.escape\", regex: '\"\"'}\n ]\n }, {\n token : \"string\", start : /\\$\"/, end : '\"|$', next: [\n {token: \"constant.language.escape\", regex: /\\\\(:?$)|{{/},\n {token: \"constant.language.escape\", regex: /\\\\(:?u[\\da-fA-F]+|x[\\da-fA-F]+|[tbrf'\"n])/},\n {token: \"invalid\", regex: /\\\\./}\n ]\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"keyword\",\n regex : \"^\\\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)\"\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(CSharpHighlightRules, TextHighlightRules);\n\nexports.CSharpHighlightRules = CSharpHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/csharp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar CFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, CFoldMode);\n\n(function() {\n this.usingRe = /^\\s*using \\S/;\n\n this.getFoldWidgetRangeBase = this.getFoldWidgetRange;\n this.getFoldWidgetBase = this.getFoldWidget;\n \n this.getFoldWidget = function(session, foldStyle, row) {\n var fw = this.getFoldWidgetBase(session, foldStyle, row);\n if (!fw) {\n var line = session.getLine(row);\n if (/^\\s*#region\\b/.test(line)) \n return \"start\";\n var usingRe = this.usingRe;\n if (usingRe.test(line)) {\n var prev = session.getLine(row - 1);\n var next = session.getLine(row + 1);\n if (!usingRe.test(prev) && usingRe.test(next))\n return \"start\";\n }\n }\n return fw;\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.getFoldWidgetRangeBase(session, foldStyle, row);\n if (range)\n return range;\n\n var line = session.getLine(row);\n if (this.usingRe.test(line))\n return this.getUsingStatementBlock(session, line, row);\n \n if (/^\\s*#region\\b/.test(line))\n return this.getRegionBlock(session, line, row);\n };\n \n this.getUsingStatementBlock = function(session, line, row) {\n var startColumn = line.match(this.usingRe)[0].length - 1;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n if (/^\\s*$/.test(line))\n continue;\n if (!this.usingRe.test(line))\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n \n this.getRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*#(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m)\n continue;\n if (m[1])\n depth--;\n else\n depth++;\n\n if (!depth)\n break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/csharp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/csharp_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/csharp\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CSharpHighlightRules = acequire(\"./csharp_highlight_rules\").CSharpHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/csharp\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CSharpHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n \n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n \n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n \n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n \n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n \n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n \n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.$id = \"ace/mode/csharp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/d_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DHighlightRules = function() {\n\n var keywords = (\n \"this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|\"+\n \"typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters\"\n );\n\n var keywordControls = (\n \"break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|\" +\n \"return|switch|while|catch|try|throw|finally|version|assert|unittest|with\"\n );\n \n var types = (\n \"auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|\" +\n \"cfloat|creal|cdouble|cent|ifloat|ireal|idouble|\" +\n \"int|long|short|void|uint|ulong|ushort|ucent|\" +\n \"function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object\"\n );\n\n var modifiers = (\n \"abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|\" +\n \"ref|immutable|lazy|nothrow|override|package|pragma|private|protected|\" +\n \"public|pure|scope|shared|__gshared|synchronized|static|volatile\"\n );\n \n var storages = (\n \"class|struct|union|template|interface|enum|macro\"\n );\n \n var stringEscapesSeq = {\n token: \"constant.language.escape\",\n regex: \"\\\\\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\\\"\\\\?0abfnrtv\\\\\\\\])|\" +\n \"(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))\"\n };\n\n var builtinConstants = (\n \"null|true|false|\"+\n \"__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|\"+\n \"__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__\"\n );\n \n var operators = (\n \"/|/\\\\=|&|&\\\\=|&&|\\\\|\\\\|\\\\=|\\\\|\\\\||\\\\-|\\\\-\\\\=|\\\\-\\\\-|\\\\+|\" +\n \"\\\\+\\\\=|\\\\+\\\\+|\\\\<|\\\\<\\\\=|\\\\<\\\\<|\\\\<\\\\<\\\\=|\\\\<\\\\>|\\\\<\\\\>\\\\=|\\\\>|\\\\>\\\\=|\\\\>\\\\>\\\\=|\" +\n \"\\\\>\\\\>\\\\>\\\\=|\\\\>\\\\>|\\\\>\\\\>\\\\>|\\\\!|\\\\!\\\\=|\\\\!\\\\<\\\\>|\\\\!\\\\<\\\\>\\\\=|\\\\!\\\\<|\\\\!\\\\<\\\\=|\" +\n \"\\\\!\\\\>|\\\\!\\\\>\\\\=|\\\\?|\\\\$|\\\\=|\\\\=\\\\=|\\\\*|\\\\*\\\\=|%|%\\\\=|\" +\n \"\\\\^|\\\\^\\\\=|\\\\^\\\\^|\\\\^\\\\^\\\\=|~|~\\\\=|\\\\=\\\\>|#\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword.modifier\" : modifiers,\n \"keyword.control\" : keywordControls,\n \"keyword.type\" : types,\n \"keyword\": keywords,\n \"keyword.storage\": storages,\n \"punctation\": \"\\\\.|\\\\,|;|\\\\.\\\\.|\\\\.\\\\.\\\\.\",\n \"keyword.operator\" : operators,\n \"constant.language\": builtinConstants\n }, \"identifier\");\n \n var identifierRe = \"[a-zA-Z_\\u00a1-\\uffff][a-zA-Z\\\\d_\\u00a1-\\uffff]*\\\\b\";\n\n this.$rules = {\n \"start\" : [\n { //-------------------------------------------------------- COMMENTS\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"star-comment\"\n }, {\n token: \"comment.shebang\",\n regex: \"^\\\\s*#!.*\"\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\+\",\n next: \"plus-comment\"\n }, { //-------------------------------------------------------- STRINGS\n onMatch: function(value, currentState, state) {\n state.unshift(this.next, value.substr(2));\n return \"string\";\n },\n regex: 'q\"(?:[\\\\[\\\\(\\\\{\\\\<]+)',\n next: 'operator-heredoc-string'\n }, {\n onMatch: function(value, currentState, state) {\n state.unshift(this.next, value.substr(2));\n return \"string\";\n },\n regex: 'q\"(?:[a-zA-Z_]+)$',\n next: 'identifier-heredoc-string'\n }, {\n token : \"string\", // multi line string start\n regex : '[xr]?\"',\n next : \"quote-string\"\n }, {\n token : \"string\", // multi line string start\n regex : '[xr]?`',\n next : \"backtick-string\"\n }, {\n token : \"string\", // single line\n regex : \"[xr]?['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?['][cdw]?\"\n }, { //-------------------------------------------------------- RULES\n token: [\"keyword\", \"text\", \"paren.lparen\"],\n regex: /(asm)(\\s*)({)/,\n next: \"d-asm\"\n }, {\n token: [\"keyword\", \"text\", \"paren.lparen\", \"constant.language\"],\n regex: \"(__traits)(\\\\s*)(\\\\()(\"+identifierRe+\")\"\n }, { // import|module abc\n token: [\"keyword\", \"text\", \"variable.module\"],\n regex: \"(import|module)(\\\\s+)((?:\"+identifierRe+\"\\\\.?)*)\"\n }, { // storage Name\n token: [\"keyword.storage\", \"text\", \"entity.name.type\"],\n regex: \"(\"+storages+\")(\\\\s*)(\"+identifierRe+\")\"\n }, { // alias|typedef foo bar;\n token: [\"keyword\", \"text\", \"variable.storage\", \"text\"],\n regex: \"(alias|typedef)(\\\\s*)(\"+identifierRe+\")(\\\\s*)\"\n }, { //-------------------------------------------------------- OTHERS\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d[\\\\d_]*(?:(?:\\\\.[\\\\d_]*)?(?:[eE][+-]?[\\\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\\\b\"\n }, {\n token: \"entity.other.attribute-name\",\n regex: \"@\"+identifierRe\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : operators\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.|\\\\:\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"star-comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken: 'comment'\n }\n ],\n \"plus-comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\+\\\\/\",\n next : \"start\"\n }, {\n defaultToken: 'comment'\n }\n ],\n \n \"quote-string\" : [\n stringEscapesSeq,\n {\n token : \"string\",\n regex : '\"[cdw]?',\n next : \"start\"\n }, {\n defaultToken: 'string'\n }\n ],\n \n \"backtick-string\" : [\n stringEscapesSeq,\n {\n token : \"string\",\n regex : '`[cdw]?',\n next : \"start\"\n }, {\n defaultToken: 'string'\n }\n ],\n \n \"operator-heredoc-string\": [\n {\n onMatch: function(value, currentState, state) {\n value = value.substring(value.length-2, value.length-1);\n var map = {'>':'<',']':'[',')':'(','}':'{'};\n if(Object.keys(map).indexOf(value) != -1)\n value = map[value];\n if(value != state[1]) return \"string\";\n state.shift();\n state.shift();\n \n return \"string\";\n },\n regex: '(?:[\\\\]\\\\)}>]+)\"',\n next: 'start'\n }, {\n token: 'string',\n regex: '[^\\\\]\\\\)}>]+'\n }\n ],\n \n \"identifier-heredoc-string\": [\n {\n onMatch: function(value, currentState, state) {\n value = value.substring(0, value.length-1);\n if(value != state[1]) return \"string\";\n state.shift();\n state.shift();\n \n return \"string\";\n },\n regex: '^(?:[A-Za-z_][a-zA-Z0-9]+)\"',\n next: 'start'\n }, {\n token: 'string',\n regex: '[^\\\\]\\\\)}>]+'\n }\n ],\n \n \"d-asm\": [\n {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: 'keyword.instruction',\n regex: '[a-zA-Z]+',\n next: 'd-asm-instruction' \n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }\n ],\n 'd-asm-instruction': [\n {\n token: 'constant.language',\n regex: /AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i\n }, {\n token: 'identifier',\n regex: '[a-zA-Z]+'\n }, {\n token: 'string',\n regex: '\".*\"'\n }, {\n token: 'comment',\n regex: '//.*$'\n }, {\n token: 'constant.numeric',\n regex: '[0-9.xA-F]+'\n }, {\n token: 'punctuation.operator',\n regex: '\\\\,'\n }, {\n token: 'punctuation.operator',\n regex: ';',\n next: 'd-asm'\n }, {\n token: 'text',\n regex: '\\\\s+'\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\nDHighlightRules.metaData = {\n comment: 'D language',\n fileTypes: [ 'd', 'di' ],\n firstLineMatch: '^#!.*\\\\b[glr]?dmd\\\\b.',\n foldingStartMarker: '(?x)/\\\\*\\\\*(?!\\\\*)|^(?![^{]*?//|[^{]*?/\\\\*(?!.*?\\\\*/.*?\\\\{)).*?\\\\{\\\\s*($|//|/\\\\*(?!.*?\\\\*/.*\\\\S))',\n foldingStopMarker: '(? indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/d\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/d_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar DHighlightRules = acequire(\"./d_highlight_rules\").DHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = DHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/d\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/c_cpp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar cFunctions = exports.cFunctions = \"\\\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\\\b\";\n\nvar c_cppHighlightRules = function() {\n\n var keywordControls = (\n \"break|case|continue|default|do|else|for|goto|if|_Pragma|\" +\n \"return|switch|while|catch|operator|try|throw|using\"\n );\n \n var storageType = (\n \"asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|\" +\n \"_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|\" +\n \"class|wchar_t|template|char16_t|char32_t\"\n );\n\n var storageModifiers = (\n \"const|extern|register|restrict|static|volatile|inline|private|\" +\n \"protected|public|friend|explicit|virtual|export|mutable|typename|\" +\n \"constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local\"\n );\n\n var keywordOperators = (\n \"and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq\" +\n \"const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace\"\n );\n\n var builtinConstants = (\n \"NULL|true|false|TRUE|FALSE|nullptr\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword.control\" : keywordControls,\n \"storage.type\" : storageType,\n \"storage.modifier\" : storageModifiers,\n \"keyword.operator\" : keywordOperators,\n \"variable.language\": \"this\",\n \"constant.language\": builtinConstants\n }, \"identifier\");\n\n var identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\\\\b\";\n var escapeRe = /\\\\(?:['\"?\\\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}U[a-fA-F\\d]{8}|.)/.source;\n var formatRe = \"%\"\n + /(\\d+\\$)?/.source // field (argument #)\n + /[#0\\- +']*/.source // flags\n + /[,;:_]?/.source // separator character (AltiVec)\n + /((-?\\d+)|\\*(-?\\d+\\$)?)?/.source // minimum field width\n + /(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?/.source // precision\n + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier\n + /(\\[[^\"\\]]+\\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type\n\n this.$rules = { \n \"start\" : [\n {\n token : \"comment\",\n regex : \"//$\",\n next : \"start\"\n }, {\n token : \"comment\",\n regex : \"//\",\n next : \"singleLineComment\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // character\n regex : \"'(?:\" + escapeRe + \"|.)?'\"\n }, {\n token : \"string.start\",\n regex : '\"', \n stateName: \"qqstring\",\n next: [\n { token: \"string\", regex: /\\\\\\s*$/, next: \"qqstring\" },\n { token: \"constant.language.escape\", regex: escapeRe },\n { token: \"constant.language.escape\", regex: formatRe },\n { token: \"string.end\", regex: '\"|$', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"string.start\",\n regex : 'R\"\\\\(', \n stateName: \"rawString\",\n next: [\n { token: \"string.end\", regex: '\\\\)\"', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"#\\\\s*(?:include|import|pragma|line|define|undef)\\\\b\",\n next : \"directive\"\n }, {\n token : \"keyword\", // special case pre-compiler directive\n regex : \"#\\\\s*(?:endif|if|ifdef|else|elif|ifndef)\\\\b\"\n }, {\n token : \"support.function.C99.c\",\n regex : cFunctions\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|<<=|>>=|>>>=|<>|&&|\\|\\||\\?:|[*%\\/+\\-&\\^|~!<>=]=?/\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"singleLineComment\" : [\n {\n token : \"comment\",\n regex : /\\\\$/,\n next : \"singleLineComment\"\n }, {\n token : \"comment\",\n regex : /$/,\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"directive\" : [\n {\n token : \"constant.other.multiline\",\n regex : /\\\\/\n },\n {\n token : \"constant.other.multiline\",\n regex : /.*\\\\/\n },\n {\n token : \"constant.other\",\n regex : \"\\\\s*<.+?>\",\n next : \"start\"\n },\n {\n token : \"constant.other\", // single line\n regex : '\\\\s*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]',\n next : \"start\"\n }, \n {\n token : \"constant.other\", // single line\n regex : \"\\\\s*['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\",\n next : \"start\"\n },\n {\n token : \"constant.other\",\n regex : /[^\\\\\\/]+/,\n next : \"start\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(c_cppHighlightRules, TextHighlightRules);\n\nexports.c_cppHighlightRules = c_cppHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/c_cpp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/c_cpp_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar c_cppHighlightRules = acequire(\"./c_cpp_highlight_rules\").c_cppHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = c_cppHighlightRules;\n\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/c_cpp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/dart_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DartHighlightRules = function() {\n\n var constantLanguage = \"true|false|null\";\n var variableLanguage = \"this|super\";\n var keywordControl = \"try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await\";\n var keywordDeclaration = \"abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum\";\n var storageModifier = \"static|final|const\";\n var storageType = \"void|bool|num|int|double|dynamic|var|String\";\n\n var keywordMapper = this.createKeywordMapper({\n \"constant.language.dart\": constantLanguage,\n \"variable.language.dart\": variableLanguage,\n \"keyword.control.dart\": keywordControl,\n \"keyword.declaration.dart\": keywordDeclaration,\n \"storage.modifier.dart\": storageModifier,\n \"storage.type.primitive.dart\": storageType\n }, \"identifier\");\n\n var stringfill = {\n defaultToken : \"string\"\n };\n\n this.$rules = \n {\n \"start\": [\n {\n token : \"comment\",\n regex : /\\/\\/.*$/\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next : \"comment\"\n },\n {\n token: [\"meta.preprocessor.script.dart\"],\n regex: \"^(#!.*)$\"\n },\n {\n token: \"keyword.other.import.dart\",\n regex: \"(?:\\\\b)(?:library|import|export|part|of|show|hide)(?:\\\\b)\"\n },\n {\n token : [\"keyword.other.import.dart\", \"text\"],\n regex : \"(?:\\\\b)(prefix)(\\\\s*:)\"\n },\n {\n regex: \"\\\\bas\\\\b\",\n token: \"keyword.cast.dart\"\n },\n {\n regex: \"\\\\?|:\",\n token: \"keyword.control.ternary.dart\"\n },\n {\n regex: \"(?:\\\\b)(is\\\\!?)(?:\\\\b)\",\n token: [\"keyword.operator.dart\"]\n },\n {\n regex: \"(<<|>>>?|~|\\\\^|\\\\||&)\",\n token: [\"keyword.operator.bitwise.dart\"]\n },\n {\n regex: \"((?:&|\\\\^|\\\\||<<|>>>?)=)\",\n token: [\"keyword.operator.assignment.bitwise.dart\"]\n },\n {\n regex: \"(===?|!==?|<=?|>=?)\",\n token: [\"keyword.operator.comparison.dart\"]\n },\n {\n regex: \"((?:[+*/%-]|\\\\~)=)\",\n token: [\"keyword.operator.assignment.arithmetic.dart\"]\n },\n {\n regex: \"=\",\n token: \"keyword.operator.assignment.dart\"\n },\n {\n token : \"string\",\n regex : \"'''\",\n next : \"qdoc\"\n }, \n {\n token : \"string\",\n regex : '\"\"\"',\n next : \"qqdoc\"\n }, \n {\n token : \"string\",\n regex : \"'\",\n next : \"qstring\"\n }, \n {\n token : \"string\",\n regex : '\"',\n next : \"qqstring\"\n }, \n {\n regex: \"(\\\\-\\\\-|\\\\+\\\\+)\",\n token: [\"keyword.operator.increment-decrement.dart\"]\n },\n {\n regex: \"(\\\\-|\\\\+|\\\\*|\\\\/|\\\\~\\\\/|%)\",\n token: [\"keyword.operator.arithmetic.dart\"]\n },\n {\n regex: \"(!|&&|\\\\|\\\\|)\",\n token: [\"keyword.operator.logical.dart\"]\n },\n {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, \n {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, \n {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qdoc\" : [\n {\n token : \"string\",\n regex : \".*?'''\",\n next : \"start\"\n }, stringfill],\n\n \"qqdoc\" : [\n {\n token : \"string\",\n regex : '.*?\"\"\"',\n next : \"start\"\n }, stringfill],\n\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"[^\\\\\\\\']*(?:\\\\\\\\.[^\\\\\\\\']*)*'\",\n next : \"start\"\n }, stringfill],\n\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '[^\\\\\\\\\"]*(?:\\\\\\\\.[^\\\\\\\\\"]*)*\"',\n next : \"start\"\n }, stringfill]\n};\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(DartHighlightRules, TextHighlightRules);\n\nexports.DartHighlightRules = DartHighlightRules;\n});\n\nace.define(\"ace/mode/dart\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/c_cpp\",\"ace/mode/dart_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar CMode = acequire(\"./c_cpp\").Mode;\nvar DartHighlightRules = acequire(\"./dart_highlight_rules\").DartHighlightRules;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n CMode.call(this);\n this.HighlightRules = DartHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, CMode);\n\n(function() { \n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/dart\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/diff_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DiffHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n regex: \"^(?:\\\\*{15}|={67}|-{3}|\\\\+{3})$\",\n token: \"punctuation.definition.separator.diff\",\n \"name\": \"keyword\"\n }, { //diff.range.unified\n regex: \"^(@@)(\\\\s*.+?\\\\s*)(@@)(.*)$\",\n token: [\n \"constant\",\n \"constant.numeric\",\n \"constant\",\n \"comment.doc.tag\"\n ]\n }, { //diff.range.normal\n regex: \"^(\\\\d+)([,\\\\d]+)(a|d|c)(\\\\d+)([,\\\\d]+)(.*)$\",\n token: [\n \"constant.numeric\",\n \"punctuation.definition.range.diff\",\n \"constant.function\",\n \"constant.numeric\",\n \"punctuation.definition.range.diff\",\n \"invalid\"\n ],\n \"name\": \"meta.\"\n }, {\n regex: \"^(\\\\-{3}|\\\\+{3}|\\\\*{3})( .+)$\",\n token: [\n \"constant.numeric\",\n \"meta.tag\"\n ]\n }, { // added\n regex: \"^([!+>])(.*?)(\\\\s*)$\",\n token: [\n \"support.constant\",\n \"text\",\n \"invalid\"\n ]\n }, { // removed\n regex: \"^([<\\\\-])(.*?)(\\\\s*)$\",\n token: [\n \"support.function\",\n \"string\",\n \"invalid\"\n ]\n }, {\n regex: \"^(diff)(\\\\s+--\\\\w+)?(.+?)( .+)?$\",\n token: [\"variable\", \"variable\", \"keyword\", \"variable\"]\n }, {\n regex: \"^Index.+$\",\n token: \"variable\"\n }, {\n regex: \"^\\\\s+$\",\n token: \"text\"\n }, {\n regex: \"\\\\s*$\",\n token: \"invalid\"\n }, {\n defaultToken: \"invisible\",\n caseInsensitive: true\n }\n ]\n };\n};\n\noop.inherits(DiffHighlightRules, TextHighlightRules);\n\nexports.DiffHighlightRules = DiffHighlightRules;\n});\n\nace.define(\"ace/mode/folding/diff\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function(levels, flag) {\n\tthis.regExpList = levels;\n\tthis.flag = flag;\n\tthis.foldingStartMarker = RegExp(\"^(\" + levels.join(\"|\") + \")\", this.flag);\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var start = {row: row, column: line.length};\n\n var regList = this.regExpList;\n for (var i = 1; i <= regList.length; i++) {\n var re = RegExp(\"^(\" + regList.slice(0, i).join(\"|\") + \")\", this.flag);\n if (re.test(line))\n break;\n }\n\n for (var l = session.getLength(); ++row < l; ) {\n line = session.getLine(row);\n if (re.test(line))\n break;\n }\n if (row == start.row + 1)\n return;\n return Range.fromPoints(start, {row: row - 1, column: line.length});\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/diff\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/diff_highlight_rules\",\"ace/mode/folding/diff\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HighlightRules = acequire(\"./diff_highlight_rules\").DiffHighlightRules;\nvar FoldMode = acequire(\"./folding/diff\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = HighlightRules;\n this.foldingRules = new FoldMode([\"diff\", \"index\", \"\\\\+{3}\", \"@@|\\\\*{5}\"], \"i\");\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.$id = \"ace/mode/diff\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/django\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html\",\"ace/mode/html_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlMode = acequire(\"./html\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DjangoHighlightRules = function(){\n this.$rules = {\n 'start': [{\n token: \"string\",\n regex: '\".*?\"'\n }, {\n token: \"string\",\n regex: \"'.*?'\"\n }, {\n token: \"constant\",\n regex: '[0-9]+'\n }, {\n token: \"variable\",\n regex: \"[-_a-zA-Z0-9:]+\"\n }],\n 'tag': [{\n token: \"entity.name.function\",\n regex: \"[a-zA-Z][_a-zA-Z0-9]*\",\n next: \"start\"\n }]\n };\n};\n\noop.inherits(DjangoHighlightRules, TextHighlightRules);\n\nvar DjangoHtmlHighlightRules = function() {\n this.$rules = new HtmlHighlightRules().getRules();\n\n for (var i in this.$rules) {\n this.$rules[i].unshift({\n token: \"comment.line\",\n regex: \"\\\\{#.*?#\\\\}\"\n }, {\n token: \"comment.block\",\n regex: \"\\\\{\\\\%\\\\s*comment\\\\s*\\\\%\\\\}\",\n merge: true,\n next: \"django-comment\"\n }, {\n token: \"constant.language\",\n regex: \"\\\\{\\\\{\",\n next: \"django-start\"\n }, {\n token: \"constant.language\",\n regex: \"\\\\{\\\\%\",\n next: \"django-tag\"\n });\n this.embedRules(DjangoHighlightRules, \"django-\", [{\n token: \"comment.block\",\n regex: \"\\\\{\\\\%\\\\s*endcomment\\\\s*\\\\%\\\\}\",\n merge: true,\n next: \"start\"\n }, {\n token: \"constant.language\",\n regex: \"\\\\%\\\\}\",\n next: \"start\"\n }, {\n token: \"constant.language\",\n regex: \"\\\\}\\\\}\",\n next: \"start\"\n }]);\n }\n};\n\noop.inherits(DjangoHtmlHighlightRules, HtmlHighlightRules);\n\nvar Mode = function() {\n HtmlMode.call(this);\n this.HighlightRules = DjangoHtmlHighlightRules;\n};\noop.inherits(Mode, HtmlMode);\n\n(function() {\n this.$id = \"ace/mode/django\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/sh_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar reservedKeywords = exports.reservedKeywords = (\n '!|{|}|case|do|done|elif|else|'+\n 'esac|fi|for|if|in|then|until|while|'+\n '&|;|export|local|read|typeset|unset|'+\n 'elif|select|set|function|declare|readonly'\n );\n\nvar languageConstructs = exports.languageConstructs = (\n '[|]|alias|bg|bind|break|builtin|'+\n 'cd|command|compgen|complete|continue|'+\n 'dirs|disown|echo|enable|eval|exec|'+\n 'exit|fc|fg|getopts|hash|help|history|'+\n 'jobs|kill|let|logout|popd|printf|pushd|'+\n 'pwd|return|set|shift|shopt|source|'+\n 'suspend|test|times|trap|type|ulimit|'+\n 'umask|unalias|wait'\n);\n\nvar ShHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": reservedKeywords,\n \"support.function.builtin\": languageConstructs,\n \"invalid.deprecated\": \"debugger\"\n }, \"identifier\");\n\n var integer = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var fileDescriptor = \"(?:&\" + intPart + \")\";\n\n var variableName = \"[a-zA-Z_][a-zA-Z0-9_]*\";\n var variable = \"(?:\" + variableName + \"(?==))\";\n\n var builtinVariable = \"(?:\\\\$(?:SHLVL|\\\\$|\\\\!|\\\\?))\";\n\n var func = \"(?:\" + variableName + \"\\\\s*\\\\(\\\\))\";\n\n this.$rules = {\n \"start\" : [{\n token : \"constant\",\n regex : /\\\\./\n }, {\n token : [\"text\", \"comment\"],\n regex : /(^|\\s)(#.*)$/\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[$`\"\\\\]|$)/\n }, {\n include : \"variables\"\n }, {\n token : \"keyword.operator\",\n regex : /`/ // TODO highlight `\n }, {\n token : \"string.end\",\n regex : '\"',\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string\",\n regex : \"\\\\$'\",\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[abeEfnrtv\\\\'\"]|x[a-fA-F\\d]{1,2}|u[a-fA-F\\d]{4}([a-fA-F\\d]{4})?|c.|\\d{1,3})/\n }, {\n token : \"string\",\n regex : \"'\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n regex : \"<<<\",\n token : \"keyword.operator\"\n }, {\n stateName: \"heredoc\",\n regex : \"(<<-?)(\\\\s*)(['\\\"`]?)([\\\\w\\\\-]+)(['\\\"`]?)\",\n onMatch : function(value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[4]);\n return [\n {type:\"constant\", value: tokens[1]},\n {type:\"text\", value: tokens[2]},\n {type:\"string\", value: tokens[3]},\n {type:\"support.class\", value: tokens[4]},\n {type:\"string\", value: tokens[5]}\n ];\n },\n rules: {\n heredoc: [{\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^\\t+\"\n }, {\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex : \"$\",\n token : \"empty\",\n next : function(currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\")\n return stack[0];\n return currentState;\n }\n }, {\n token : [\"keyword\", \"text\", \"text\", \"text\", \"variable\"],\n regex : /(declare|local|readonly)(\\s+)(?:(-[fixar]+)(\\s+))?([a-zA-Z_][a-zA-Z0-9_]*\\b)/\n }, {\n token : \"variable.language\",\n regex : builtinVariable\n }, {\n token : \"variable\",\n regex : variable\n }, {\n include : \"variables\"\n }, {\n token : \"support.function\",\n regex : func\n }, {\n token : \"support.function\",\n regex : fileDescriptor\n }, {\n token : \"string\", // ' string\n start : \"'\", end : \"'\"\n }, {\n token : \"constant.numeric\", // float\n regex : floatNumber\n }, {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|~|<|>|<=|=>|=|!=|[%&|`]\"\n }, {\n token : \"punctuation.operator\",\n regex : \";\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\[\\\\(\\\\{]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)\\\\}]\",\n next : \"pop\"\n }],\n variables: [{\n token : \"variable\",\n regex : /(\\$)(\\w+)/\n }, {\n token : [\"variable\", \"paren.lparen\"],\n regex : /(\\$)(\\()/,\n push : \"start\"\n }, {\n token : [\"variable\", \"paren.lparen\", \"keyword.operator\", \"variable\", \"keyword.operator\"],\n regex : /(\\$)(\\{)([#!]?)(\\w+|[*@#?\\-$!0_])(:[?+\\-=]?|##?|%%?|,,?\\/|\\^\\^?)?/,\n push : \"start\"\n }, {\n token : \"variable\",\n regex : /\\$[*@#?\\-$!0_]/\n }, {\n token : [\"variable\", \"paren.lparen\"],\n regex : /(\\$)(\\{)/,\n push : \"start\"\n }]\n };\n \n this.normalizeRules();\n};\n\noop.inherits(ShHighlightRules, TextHighlightRules);\n\nexports.ShHighlightRules = ShHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/sh\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/sh_highlight_rules\",\"ace/range\",\"ace/mode/folding/cstyle\",\"ace/mode/behaviour/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ShHighlightRules = acequire(\"./sh_highlight_rules\").ShHighlightRules;\nvar Range = acequire(\"../range\").Range;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n\nvar Mode = function() {\n this.HighlightRules = ShHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = new CstyleBehaviour();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n \n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n\n this.checkOutdent = function(state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n\n if (!last)\n return false;\n\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n\n this.autoOutdent = function(state, doc, row) {\n\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length-tab.length, row, indent.length));\n };\n\n this.$id = \"ace/mode/sh\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/dockerfile_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/sh_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar ShHighlightRules = acequire(\"./sh_highlight_rules\").ShHighlightRules;\n\nvar DockerfileHighlightRules = function() {\n ShHighlightRules.call(this);\n\n var startRules = this.$rules.start;\n for (var i = 0; i < startRules.length; i++) {\n if (startRules[i].token == \"variable.language\") {\n startRules.splice(i, 0, {\n token: \"constant.language\",\n regex: \"(?:^(?:FROM|MAINTAINER|RUN|CMD|EXPOSE|ENV|ADD|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|COPY|LABEL)\\\\b)\",\n caseInsensitive: true\n });\n break;\n }\n }\n \n};\n\noop.inherits(DockerfileHighlightRules, ShHighlightRules);\n\nexports.DockerfileHighlightRules = DockerfileHighlightRules;\n});\n\nace.define(\"ace/mode/dockerfile\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/sh\",\"ace/mode/dockerfile_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar ShMode = acequire(\"./sh\").Mode;\nvar DockerfileHighlightRules = acequire(\"./dockerfile_highlight_rules\").DockerfileHighlightRules;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n ShMode.call(this);\n \n this.HighlightRules = DockerfileHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, ShMode);\n\n(function() {\n this.$id = \"ace/mode/dockerfile\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/dot_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\",\"ace/mode/doc_comment_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n\nvar DotHighlightRules = function() {\n\n var keywords = lang.arrayToMap(\n (\"strict|node|edge|graph|digraph|subgraph\").split(\"|\")\n );\n\n var attributes = lang.arrayToMap(\n (\"damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z\").split(\"|\")\n );\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : /\\/\\/.*$/\n }, {\n token : \"comment\",\n regex : /#.*$/\n }, {\n token : \"comment\", // multi line comment\n merge : true,\n regex : /\\/\\*/,\n next : \"comment\"\n }, {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\",\n regex : /[+\\-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?\\b/\n }, {\n token : \"keyword.operator\",\n regex : /\\+|=|\\->/\n }, {\n token : \"punctuation.operator\",\n regex : /,|;/\n }, {\n token : \"paren.lparen\",\n regex : /[\\[{]/\n }, {\n token : \"paren.rparen\",\n regex : /[\\]}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }, {\n token: function(value) {\n if (keywords.hasOwnProperty(value.toLowerCase())) {\n return \"keyword\";\n }\n else if (attributes.hasOwnProperty(value.toLowerCase())) {\n return \"variable\";\n }\n else {\n return \"text\";\n }\n },\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '[^\"\\\\\\\\]+',\n merge : true\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\",\n merge : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\",\n merge : true\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"[^'\\\\\\\\]+\",\n merge : true\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qstring\",\n merge : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"start\",\n merge : true\n }\n ]\n };\n};\n\noop.inherits(DotHighlightRules, TextHighlightRules);\n\nexports.DotHighlightRules = DotHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/dot\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/matching_brace_outdent\",\"ace/mode/dot_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar DotHighlightRules = acequire(\"./dot_highlight_rules\").DotHighlightRules;\nvar DotFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = DotHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new DotFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = [\"//\", \"#\"];\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/dot\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/ruby_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar constantOtherSymbol = exports.constantOtherSymbol = {\n token : \"constant.other.symbol.ruby\", // symbol\n regex : \"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?\"\n};\n\nvar qString = exports.qString = {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n};\n\nvar qqString = exports.qqString = {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n};\n\nvar tString = exports.tString = {\n token : \"string\", // backtick string\n regex : \"[`](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[`]\"\n};\n\nvar constantNumericHex = exports.constantNumericHex = {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\\\b\"\n};\n\nvar constantNumericFloat = exports.constantNumericFloat = {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d(?:\\\\d|_(?=\\\\d))*(?:(?:\\\\.\\\\d(?:\\\\d|_(?=\\\\d))*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n};\n\nvar instanceVariable = exports.instanceVariable = {\n token : \"variable.instance\", // instance variable\n regex : \"@{1,2}[a-zA-Z_\\\\d]+\"\n};\n\nvar RubyHighlightRules = function() {\n\n var builtinFunctions = (\n \"abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|\" +\n \"assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|\" +\n \"assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|\" +\n \"assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|\" +\n \"assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|\" +\n \"assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|\" +\n \"attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|\" +\n \"caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|\" +\n \"exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|\" +\n \"gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|\" +\n \"link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|\" +\n \"p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|\" +\n \"raw|readline|readlines|redirect?|request_via_redirect|acequire|scan|select|\" +\n \"set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|\" +\n \"throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|\" +\n \"render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|\" +\n \"content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|\" +\n \"fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|\" +\n \"time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|\" +\n \"select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|\" +\n \"file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|\" +\n \"protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|\" +\n \"send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|\" +\n \"validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|\" +\n \"validates_inclusion_of|validates_numericality_of|validates_with|validates_each|\" +\n \"authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|\" +\n \"filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|\" +\n \"translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|\" +\n \"cache|expire_fragment|expire_cache_for|observe|cache_sweeper|\" +\n \"has_many|has_one|belongs_to|has_and_belongs_to_many\"\n );\n\n var keywords = (\n \"alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|\" +\n \"__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|\" +\n \"redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield\"\n );\n\n var buildinConstants = (\n \"true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|\" +\n \"RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING\"\n );\n\n var builtinVariables = (\n \"$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|\" +\n \"$!|root_url|flash|session|cookies|params|request|response|logger|self\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"variable.language\": builtinVariables,\n \"support.function\": builtinFunctions,\n \"invalid.deprecated\": \"debugger\" // TODO is this a remnant from js mode?\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"comment\", // multi line comment\n regex : \"^=begin(?:$|\\\\s.*$)\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n },\n\n [{\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren.lparen\";\n }\n if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1)\n return \"paren.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.start\",\n regex : /\"/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token : \"paren.start\",\n regex : /#{/,\n push : \"start\"\n }, {\n token : \"string.end\",\n regex : /\"/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token : \"paren.start\",\n regex : /#{/,\n push : \"start\"\n }, {\n token : \"string.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : /'/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\['\\\\]/\n }, {\n token : \"string.end\",\n regex : /'/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n {\n token : \"text\", // namespaces aren't symbols\n regex : \"::\"\n }, {\n token : \"variable.instance\", // instance variable\n regex : \"@{1,2}[a-zA-Z_\\\\d]+\"\n }, {\n token : \"support.class\", // class name\n regex : \"[A-Z][a-zA-Z_\\\\d]+\"\n },\n\n constantOtherSymbol,\n constantNumericHex,\n constantNumericFloat,\n\n {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"punctuation.separator.key-value\",\n regex : \"=>\"\n }, {\n stateName: \"heredoc\",\n onMatch : function(value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[3]);\n return [\n {type:\"constant\", value: tokens[1]},\n {type:\"string\", value: tokens[2]},\n {type:\"support.class\", value: tokens[3]},\n {type:\"string\", value: tokens[4]}\n ];\n },\n regex : \"(<<-?)(['\\\"`]?)([\\\\w]+)(['\\\"`]?)\",\n rules: {\n heredoc: [{\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^ +\"\n }, {\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex : \"$\",\n token : \"empty\",\n next : function(currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\")\n return stack[0];\n return currentState;\n }\n }, {\n token : \"string.character\",\n regex : \"\\\\B\\\\?.\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"^=end(?:$|\\\\s.*$)\",\n next : \"start\"\n }, {\n token : \"comment\", // comment spanning whole line\n regex : \".+\"\n }\n ]\n };\n\n this.normalizeRules();\n};\n\noop.inherits(RubyHighlightRules, TextHighlightRules);\n\nexports.RubyHighlightRules = RubyHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/ruby\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/ruby_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar RubyHighlightRules = acequire(\"./ruby_highlight_rules\").RubyHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = RubyHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new FoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n\n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n var startingClassOrMethod = line.match(/^\\s*(class|def|module)\\s.*$/);\n var startingDoBlock = line.match(/.*do(\\s*|\\s+\\|.*\\|\\s*)$/);\n var startingConditional = line.match(/^\\s*(if|else|when)\\s*/);\n if (match || startingClassOrMethod || startingDoBlock || startingConditional) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return /^\\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, session, row) {\n var line = session.getLine(row);\n if (/}/.test(line))\n return this.$outdent.autoOutdent(session, row);\n var indent = this.$getIndent(line);\n var prevLine = session.getLine(row - 1);\n var prevIndent = this.$getIndent(prevLine);\n var tab = session.getTabString();\n if (prevIndent.length <= indent.length) {\n if (indent.slice(-tab.length) == tab)\n session.remove(new Range(row, indent.length-tab.length, row, indent.length));\n }\n };\n\n this.$id = \"ace/mode/ruby\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/ejs\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/lib/oop\",\"ace/mode/html\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/ruby\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n\nvar EjsHighlightRules = function(start, end) {\n HtmlHighlightRules.call(this);\n \n if (!start)\n start = \"(?:<%|<\\\\?|{{)\";\n if (!end)\n end = \"(?:%>|\\\\?>|}})\";\n\n for (var i in this.$rules) {\n this.$rules[i].unshift({\n token : \"markup.list.meta.tag\",\n regex : start + \"(?![>}])[-=]?\",\n push : \"ejs-start\"\n });\n }\n \n this.embedRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"ejs-\", [{\n token : \"markup.list.meta.tag\",\n regex : \"-?\" + end,\n next : \"pop\"\n }, {\n token: \"comment\",\n regex: \"//.*?\" + end,\n next: \"pop\"\n }]);\n \n this.normalizeRules();\n};\n\n\noop.inherits(EjsHighlightRules, HtmlHighlightRules);\n\nexports.EjsHighlightRules = EjsHighlightRules;\n\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlMode = acequire(\"./html\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar RubyMode = acequire(\"./ruby\").Mode;\n\nvar Mode = function() {\n HtmlMode.call(this);\n this.HighlightRules = EjsHighlightRules; \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode,\n \"ejs-\": JavaScriptMode\n });\n};\noop.inherits(Mode, HtmlMode);\n\n(function() {\n\n this.$id = \"ace/mode/ejs\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/elixir_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ElixirHighlightRules = function() {\n\n this.$rules = { start: \n [ { token: \n [ 'meta.module.elixir',\n 'keyword.control.module.elixir',\n 'meta.module.elixir',\n 'entity.name.type.module.elixir' ],\n regex: '^(\\\\s*)(defmodule)(\\\\s+)((?:[A-Z]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z]\\\\w*)' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc (?:~[a-z])?\"\"\"',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\"\"\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc ~[A-Z]\"\"\"',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\"\"\"',\n next: 'pop' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc (?:~[a-z])?\\'\\'\\'',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\\'\\'\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc ~[A-Z]\\'\\'\\'',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\\'\\'\\'',\n next: 'pop' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.false',\n regex: '@(?:module|type)?doc false',\n comment: '@doc false is treated as documentation' },\n { token: 'comment.documentation.string',\n regex: '@(?:module|type)?doc \"',\n push: \n [ { token: 'comment.documentation.string',\n regex: '\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'comment.documentation.string' } ],\n comment: '@doc with string is treated as documentation' },\n { token: 'keyword.control.elixir',\n regex: '\\\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|acequire|alias|use|quote|unquote|super)\\\\b(?![?!])',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?_?\\\\h)*|\\\\d(?>_?\\\\d)*(\\\\.(?![^[:space:][:digit:]])(?>_?\\\\d)*)?([eE][-+]?\\\\d(?>_?\\\\d)*)?|0b[01]+|0o[0-7]+)\\\\b' },\n { token: 'punctuation.definition.constant.elixir',\n regex: ':\\'',\n push: \n [ { token: 'punctuation.definition.constant.elixir',\n regex: '\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] },\n { token: 'punctuation.definition.constant.elixir',\n regex: ':\"',\n push: \n [ { token: 'punctuation.definition.constant.elixir',\n regex: '\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '(?:\\'\\'\\')',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?>\\'\\'\\')',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\\'\\'\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ],\n comment: 'Single-quoted heredocs' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'support.function.variable.quoted.single.elixir' } ],\n comment: 'single quoted string (allows for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '(?:\"\"\")',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?>\"\"\")',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\"\"\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.quoted.double.heredoc.elixir' } ],\n comment: 'Double-quoted heredocs' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '\"',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.quoted.double.elixir' } ],\n comment: 'double quoted string (allows for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z](?:\"\"\")',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '~[a-z](?>\"\"\")',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\"\"\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.quoted.double.heredoc.elixir' } ],\n comment: 'Double-quoted heredocs sigils' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\{',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\}[a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\[',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\][a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\<',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\>[a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\(',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\)[a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z][^\\\\w]',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '[^\\\\w][a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z](?:\"\"\")',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '~[A-Z](?>\"\"\")',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\"\"\"',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'Double-quoted heredocs sigils' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\{',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\}[a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\[',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\][a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\<',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\>[a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\(',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\)[a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z][^\\\\w]',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '[^\\\\w][a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'],\n regex: '(:)([a-zA-Z_][\\\\w@]*(?:[?!]|=(?![>=]))?|\\\\<\\\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\\\-|\\\\|>|=>|~|~=|=|/|\\\\\\\\\\\\\\\\|\\\\*\\\\*?|\\\\.\\\\.?\\\\.?|>=?|<=?|&&?&?|\\\\+\\\\+?|\\\\-\\\\-?|\\\\|\\\\|?\\\\|?|\\\\!|@|\\\\%?\\\\{\\\\}|%|\\\\[\\\\]|\\\\^(?:\\\\^\\\\^)?)',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?[a-zA-Z_][\\\\w@]*(?>[?!]|=(?![>=]))?|\\\\<\\\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\\\-|\\\\|>|=>|~|~=|=|/|\\\\\\\\\\\\\\\\|\\\\*\\\\*?|\\\\.\\\\.?\\\\.?|>=?|<=?|&&?&?|\\\\+\\\\+?|\\\\-\\\\-?|\\\\|\\\\|?\\\\|?|\\\\!|@|\\\\%?\\\\{\\\\}|%|\\\\[\\\\]|\\\\^(\\\\^\\\\^)?)',\n comment: 'symbols' },\n { token: 'punctuation.definition.constant.elixir',\n regex: '(?:[a-zA-Z_][\\\\w@]*(?:[?!])?):(?!:)',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?>[a-zA-Z_][\\\\w@]*(?>[?!])?)(:)(?!:)',\n comment: 'symbols' },\n { token: \n [ 'punctuation.definition.comment.elixir',\n 'comment.line.number-sign.elixir' ],\n regex: '(#)(.*)' },\n { token: 'constant.numeric.elixir',\n regex: '\\\\?(?:\\\\\\\\(?:x[\\\\da-fA-F]{1,2}(?![\\\\da-fA-F])\\\\b|[^xMC])|[^\\\\s\\\\\\\\])',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?=?' },\n { token: 'keyword.operator.bitwise.elixir',\n regex: '\\\\|{3}|&{3}|\\\\^{3}|<{3}|>{3}|~{3}' },\n { token: 'keyword.operator.logical.elixir',\n regex: '!+|\\\\bnot\\\\b|&&|\\\\band\\\\b|\\\\|\\\\||\\\\bor\\\\b|\\\\bxor\\\\b',\n originalRegex: '(?<=[ \\\\t])!+|\\\\bnot\\\\b|&&|\\\\band\\\\b|\\\\|\\\\||\\\\bor\\\\b|\\\\bxor\\\\b' },\n { token: 'keyword.operator.arithmetic.elixir',\n regex: '\\\\*|\\\\+|\\\\-|/' },\n { token: 'keyword.operator.other.elixir',\n regex: '\\\\||\\\\+\\\\+|\\\\-\\\\-|\\\\*\\\\*|\\\\\\\\\\\\\\\\|\\\\<\\\\-|\\\\<\\\\>|\\\\<\\\\<|\\\\>\\\\>|\\\\:\\\\:|\\\\.\\\\.|\\\\|>|~|=>' },\n { token: 'keyword.operator.assignment.elixir', regex: '=' },\n { token: 'punctuation.separator.other.elixir', regex: ':' },\n { token: 'punctuation.separator.statement.elixir',\n regex: '\\\\;' },\n { token: 'punctuation.separator.object.elixir', regex: ',' },\n { token: 'punctuation.separator.method.elixir', regex: '\\\\.' },\n { token: 'punctuation.section.scope.elixir', regex: '\\\\{|\\\\}' },\n { token: 'punctuation.section.array.elixir', regex: '\\\\[|\\\\]' },\n { token: 'punctuation.section.function.elixir',\n regex: '\\\\(|\\\\)' } ],\n '#escaped_char': \n [ { token: 'constant.character.escape.elixir',\n regex: '\\\\\\\\(?:x[\\\\da-fA-F]{1,2}|.)' } ],\n '#interpolated_elixir': \n [ { token: \n [ 'source.elixir.embedded.source',\n 'source.elixir.embedded.source.empty' ],\n regex: '(#\\\\{)(\\\\})' },\n { todo: \n { token: 'punctuation.section.embedded.elixir',\n regex: '#\\\\{',\n push: \n [ { token: 'punctuation.section.embedded.elixir',\n regex: '\\\\}',\n next: 'pop' },\n { include: '#nest_curly_and_self' },\n { include: '$self' },\n { defaultToken: 'source.elixir.embedded.source' } ] } } ],\n '#nest_curly_and_self': \n [ { token: 'punctuation.section.scope.elixir',\n regex: '\\\\{',\n push: \n [ { token: 'punctuation.section.scope.elixir',\n regex: '\\\\}',\n next: 'pop' },\n { include: '#nest_curly_and_self' } ] },\n { include: '$self' } ],\n '#regex_sub': \n [ { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { token: \n [ 'punctuation.definition.arbitrary-repitition.elixir',\n 'string.regexp.arbitrary-repitition.elixir',\n 'string.regexp.arbitrary-repitition.elixir',\n 'punctuation.definition.arbitrary-repitition.elixir' ],\n regex: '(\\\\{)(\\\\d+)((?:,\\\\d+)?)(\\\\})' },\n { token: 'punctuation.definition.character-class.elixir',\n regex: '\\\\[(?:\\\\^?\\\\])?',\n push: \n [ { token: 'punctuation.definition.character-class.elixir',\n regex: '\\\\]',\n next: 'pop' },\n { include: '#escaped_char' },\n { defaultToken: 'string.regexp.character-class.elixir' } ] },\n { token: 'punctuation.definition.group.elixir',\n regex: '\\\\(',\n push: \n [ { token: 'punctuation.definition.group.elixir',\n regex: '\\\\)',\n next: 'pop' },\n { include: '#regex_sub' },\n { defaultToken: 'string.regexp.group.elixir' } ] },\n { token: \n [ 'punctuation.definition.comment.elixir',\n 'comment.line.number-sign.elixir' ],\n regex: '(?:^|\\\\s)(#)(\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x00-\\\\x7F]]*$)',\n originalRegex: '(?<=^|\\\\s)(#)\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$',\n comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] };\n \n this.normalizeRules();\n};\n\nElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.',\n fileTypes: [ 'ex', 'exs' ],\n firstLineMatch: '^#!/.*\\\\belixir',\n foldingStartMarker: '(after|else|catch|rescue|\\\\-\\\\>|\\\\{|\\\\[|do)\\\\s*$',\n foldingStopMarker: '^\\\\s*((\\\\}|\\\\]|after|else|catch|rescue)\\\\s*$|end\\\\b)',\n keyEquivalent: '^~E',\n name: 'Elixir',\n scopeName: 'source.elixir' };\n\n\noop.inherits(ElixirHighlightRules, TextHighlightRules);\n\nexports.ElixirHighlightRules = ElixirHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/elixir\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/elixir_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ElixirHighlightRules = acequire(\"./elixir_highlight_rules\").ElixirHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = ElixirHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"#\";\n this.$id = \"ace/mode/elixir\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/elm_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ElmHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": \"as|case|class|data|default|deriving|do|else|export|foreign|\" +\n \"hiding|jsevent|if|import|in|infix|infixl|infixr|instance|let|\" +\n \"module|newtype|of|open|then|type|where|_|port|\\u03BB\"\n }, \"identifier\");\n \n var escapeRe = /\\\\(\\d+|['\"\\\\&trnbvf])/;\n \n var smallRe = /[a-z_]/.source;\n var largeRe = /[A-Z]/.source;\n var idRe = /[a-z_A-Z0-9']/.source;\n\n this.$rules = {\n start: [{\n token: \"string.start\",\n regex: '\"',\n next: \"string\"\n }, {\n token: \"string.character\",\n regex: \"'(?:\" + escapeRe.source + \"|.)'?\"\n }, {\n regex: /0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\\d+(\\.\\d+)?([eE][-+]?\\d*)?/,\n token: \"constant.numeric\"\n }, {\n token: \"comment\",\n regex: \"--.*\"\n }, {\n token : \"keyword\",\n regex : /\\.\\.|\\||:|=|\\\\|\"|->|<-|\\u2192/\n }, {\n token : \"keyword.operator\",\n regex : /[-!#$%&*+.\\/<=>?@\\\\^|~:\\u03BB\\u2192]+/\n }, {\n token : \"operator.punctuation\",\n regex : /[,;`]/\n }, {\n regex : largeRe + idRe + \"+\\\\.?\",\n token : function(value) {\n if (value[value.length - 1] == \".\")\n return \"entity.name.function\"; \n return \"constant.language\"; \n }\n }, {\n regex : \"^\" + smallRe + idRe + \"+\",\n token : function(value) {\n return \"constant.language\"; \n }\n }, {\n token : keywordMapper,\n regex : \"[\\\\w\\\\xff-\\\\u218e\\\\u2455-\\\\uffff]+\\\\b\"\n }, {\n regex: \"{-#?\",\n token: \"comment.start\",\n onMatch: function(value, currentState, stack) {\n this.next = value.length == 2 ? \"blockComment\" : \"docComment\";\n return this.token;\n }\n }, {\n token: \"variable.language\",\n regex: /\\[markdown\\|/,\n next: \"markdown\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/ \n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n } ],\n markdown: [{\n regex: /\\|\\]/,\n next: \"start\"\n }, {\n defaultToken : \"string\"\n }],\n blockComment: [{\n regex: \"{-\",\n token: \"comment.start\",\n push: \"blockComment\"\n }, {\n regex: \"-}\",\n token: \"comment.end\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }],\n docComment: [{\n regex: \"{-\",\n token: \"comment.start\",\n push: \"docComment\"\n }, {\n regex: \"-}\",\n token: \"comment.end\",\n next: \"pop\" \n }, {\n defaultToken: \"doc.comment\"\n }],\n string: [{\n token: \"constant.language.escape\",\n regex: escapeRe\n }, {\n token: \"text\",\n regex: /\\\\(\\s|$)/,\n next: \"stringGap\"\n }, {\n token: \"string.end\",\n regex: '\"',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n stringGap: [{\n token: \"text\",\n regex: /\\\\/,\n next: \"string\"\n }, {\n token: \"error\",\n regex: \"\",\n next: \"start\"\n }]\n };\n \n this.normalizeRules();\n};\n\noop.inherits(ElmHighlightRules, TextHighlightRules);\n\nexports.ElmHighlightRules = ElmHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/elm\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/elm_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HighlightRules = acequire(\"./elm_highlight_rules\").ElmHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = HighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"--\";\n this.blockComment = {start: \"{-\", end: \"-}\", nestable: true};\n this.$id = \"ace/mode/elm\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/erlang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ErlangHighlightRules = function() {\n\n this.$rules = { start: \n [ { include: '#module-directive' },\n { include: '#import-export-directive' },\n { include: '#behaviour-directive' },\n { include: '#record-directive' },\n { include: '#define-directive' },\n { include: '#macro-directive' },\n { include: '#directive' },\n { include: '#function' },\n { include: '#everything-else' } ],\n '#atom': \n [ { token: 'punctuation.definition.symbol.begin.erlang',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.symbol.end.erlang',\n regex: '\\'',\n next: 'pop' },\n { token: \n [ 'punctuation.definition.escape.erlang',\n 'constant.other.symbol.escape.erlang',\n 'punctuation.definition.escape.erlang',\n 'constant.other.symbol.escape.erlang',\n 'constant.other.symbol.escape.erlang' ],\n regex: '(\\\\\\\\)(?:([bdefnrstv\\\\\\\\\\'\"])|(\\\\^)([@-_])|([0-7]{1,3}))' },\n { token: 'invalid.illegal.atom.erlang', regex: '\\\\\\\\\\\\^?.?' },\n { defaultToken: 'constant.other.symbol.quoted.single.erlang' } ] },\n { token: 'constant.other.symbol.unquoted.erlang',\n regex: '[a-z][a-zA-Z\\\\d@_]*' } ],\n '#behaviour-directive': \n [ { token: \n [ 'meta.directive.behaviour.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.behaviour.erlang',\n 'keyword.control.directive.behaviour.erlang',\n 'meta.directive.behaviour.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.behaviour.erlang',\n 'entity.name.type.class.behaviour.definition.erlang',\n 'meta.directive.behaviour.erlang',\n 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.behaviour.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(behaviour)(\\\\s*)(\\\\()(\\\\s*)([a-z][a-zA-Z\\\\d@_]*)(\\\\s*)(\\\\))(\\\\s*)(\\\\.)' } ],\n '#binary': \n [ { token: 'punctuation.definition.binary.begin.erlang',\n regex: '<<',\n push: \n [ { token: 'punctuation.definition.binary.end.erlang',\n regex: '>>',\n next: 'pop' },\n { token: \n [ 'punctuation.separator.binary.erlang',\n 'punctuation.separator.value-size.erlang' ],\n regex: '(,)|(:)' },\n { include: '#internal-type-specifiers' },\n { include: '#everything-else' },\n { defaultToken: 'meta.structure.binary.erlang' } ] } ],\n '#character': \n [ { token: \n [ 'punctuation.definition.character.erlang',\n 'punctuation.definition.escape.erlang',\n 'constant.character.escape.erlang',\n 'punctuation.definition.escape.erlang',\n 'constant.character.escape.erlang',\n 'constant.character.escape.erlang' ],\n regex: '(\\\\$)(\\\\\\\\)(?:([bdefnrstv\\\\\\\\\\'\"])|(\\\\^)([@-_])|([0-7]{1,3}))' },\n { token: 'invalid.illegal.character.erlang',\n regex: '\\\\$\\\\\\\\\\\\^?.?' },\n { token: \n [ 'punctuation.definition.character.erlang',\n 'constant.character.erlang' ],\n regex: '(\\\\$)(\\\\S)' },\n { token: 'invalid.illegal.character.erlang', regex: '\\\\$.?' } ],\n '#comment': \n [ { token: 'punctuation.definition.comment.erlang',\n regex: '%.*$',\n push_: \n [ { token: 'comment.line.percentage.erlang',\n regex: '$',\n next: 'pop' },\n { defaultToken: 'comment.line.percentage.erlang' } ] } ],\n '#define-directive': \n [ { token: \n [ 'meta.directive.define.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.define.erlang',\n 'keyword.control.directive.define.erlang',\n 'meta.directive.define.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.define.erlang',\n 'entity.name.function.macro.definition.erlang',\n 'meta.directive.define.erlang',\n 'punctuation.separator.parameters.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(define)(\\\\s*)(\\\\()(\\\\s*)([a-zA-Z\\\\d@_]+)(\\\\s*)(,)',\n push: \n [ { token: \n [ 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.define.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '(\\\\))(\\\\s*)(\\\\.)',\n next: 'pop' },\n { include: '#everything-else' },\n { defaultToken: 'meta.directive.define.erlang' } ] },\n { token: 'meta.directive.define.erlang',\n regex: '(?=^\\\\s*-\\\\s*define\\\\s*\\\\(\\\\s*[a-zA-Z\\\\d@_]+\\\\s*\\\\()',\n push: \n [ { token: \n [ 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.define.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '(\\\\))(\\\\s*)(\\\\.)',\n next: 'pop' },\n { token: \n [ 'text',\n 'punctuation.section.directive.begin.erlang',\n 'text',\n 'keyword.control.directive.define.erlang',\n 'text',\n 'punctuation.definition.parameters.begin.erlang',\n 'text',\n 'entity.name.function.macro.definition.erlang',\n 'text',\n 'punctuation.definition.parameters.begin.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(define)(\\\\s*)(\\\\()(\\\\s*)([a-zA-Z\\\\d@_]+)(\\\\s*)(\\\\()',\n push: \n [ { token: \n [ 'punctuation.definition.parameters.end.erlang',\n 'text',\n 'punctuation.separator.parameters.erlang' ],\n regex: '(\\\\))(\\\\s*)(,)',\n next: 'pop' },\n { token: 'punctuation.separator.parameters.erlang', regex: ',' },\n { include: '#everything-else' } ] },\n { token: 'punctuation.separator.define.erlang',\n regex: '\\\\|\\\\||\\\\||:|;|,|\\\\.|->' },\n { include: '#everything-else' },\n { defaultToken: 'meta.directive.define.erlang' } ] } ],\n '#directive': \n [ { token: \n [ 'meta.directive.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.erlang',\n 'keyword.control.directive.erlang',\n 'meta.directive.erlang',\n 'punctuation.definition.parameters.begin.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)([a-z][a-zA-Z\\\\d@_]*)(\\\\s*)(\\\\(?)',\n push: \n [ { token: \n [ 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '(\\\\)?)(\\\\s*)(\\\\.)',\n next: 'pop' },\n { include: '#everything-else' },\n { defaultToken: 'meta.directive.erlang' } ] },\n { token: \n [ 'meta.directive.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.erlang',\n 'keyword.control.directive.erlang',\n 'meta.directive.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)([a-z][a-zA-Z\\\\d@_]*)(\\\\s*)(\\\\.)' } ],\n '#everything-else': \n [ { include: '#comment' },\n { include: '#record-usage' },\n { include: '#macro-usage' },\n { include: '#expression' },\n { include: '#keyword' },\n { include: '#textual-operator' },\n { include: '#function-call' },\n { include: '#tuple' },\n { include: '#list' },\n { include: '#binary' },\n { include: '#parenthesized-expression' },\n { include: '#character' },\n { include: '#number' },\n { include: '#atom' },\n { include: '#string' },\n { include: '#symbolic-operator' },\n { include: '#variable' } ],\n '#expression': \n [ { token: 'keyword.control.if.erlang',\n regex: '\\\\bif\\\\b',\n push: \n [ { token: 'keyword.control.end.erlang',\n regex: '\\\\bend\\\\b',\n next: 'pop' },\n { include: '#internal-expression-punctuation' },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.if.erlang' } ] },\n { token: 'keyword.control.case.erlang',\n regex: '\\\\bcase\\\\b',\n push: \n [ { token: 'keyword.control.end.erlang',\n regex: '\\\\bend\\\\b',\n next: 'pop' },\n { include: '#internal-expression-punctuation' },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.case.erlang' } ] },\n { token: 'keyword.control.receive.erlang',\n regex: '\\\\breceive\\\\b',\n push: \n [ { token: 'keyword.control.end.erlang',\n regex: '\\\\bend\\\\b',\n next: 'pop' },\n { include: '#internal-expression-punctuation' },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.receive.erlang' } ] },\n { token: \n [ 'keyword.control.fun.erlang',\n 'text',\n 'entity.name.type.class.module.erlang',\n 'text',\n 'punctuation.separator.module-function.erlang',\n 'text',\n 'entity.name.function.erlang',\n 'text',\n 'punctuation.separator.function-arity.erlang' ],\n regex: '\\\\b(fun)(\\\\s*)(?:([a-z][a-zA-Z\\\\d@_]*)(\\\\s*)(:)(\\\\s*))?([a-z][a-zA-Z\\\\d@_]*)(\\\\s*)(/)' },\n { token: 'keyword.control.fun.erlang',\n regex: '\\\\bfun\\\\b',\n push: \n [ { token: 'keyword.control.end.erlang',\n regex: '\\\\bend\\\\b',\n next: 'pop' },\n { token: 'text',\n regex: '(?=\\\\()',\n push: \n [ { token: 'punctuation.separator.clauses.erlang',\n regex: ';|(?=\\\\bend\\\\b)',\n next: 'pop' },\n { include: '#internal-function-parts' } ] },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.fun.erlang' } ] },\n { token: 'keyword.control.try.erlang',\n regex: '\\\\btry\\\\b',\n push: \n [ { token: 'keyword.control.end.erlang',\n regex: '\\\\bend\\\\b',\n next: 'pop' },\n { include: '#internal-expression-punctuation' },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.try.erlang' } ] },\n { token: 'keyword.control.begin.erlang',\n regex: '\\\\bbegin\\\\b',\n push: \n [ { token: 'keyword.control.end.erlang',\n regex: '\\\\bend\\\\b',\n next: 'pop' },\n { include: '#internal-expression-punctuation' },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.begin.erlang' } ] },\n { token: 'keyword.control.query.erlang',\n regex: '\\\\bquery\\\\b',\n push: \n [ { token: 'keyword.control.end.erlang',\n regex: '\\\\bend\\\\b',\n next: 'pop' },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.query.erlang' } ] } ],\n '#function': \n [ { token: \n [ 'meta.function.erlang',\n 'entity.name.function.definition.erlang',\n 'meta.function.erlang' ],\n regex: '^(\\\\s*)([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(?=\\\\()',\n push: \n [ { token: 'punctuation.terminator.function.erlang',\n regex: '\\\\.',\n next: 'pop' },\n { token: [ 'text', 'entity.name.function.erlang', 'text' ],\n regex: '^(\\\\s*)([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(?=\\\\()' },\n { token: 'text',\n regex: '(?=\\\\()',\n push: \n [ { token: 'punctuation.separator.clauses.erlang',\n regex: ';|(?=\\\\.)',\n next: 'pop' },\n { include: '#parenthesized-expression' },\n { include: '#internal-function-parts' } ] },\n { include: '#everything-else' },\n { defaultToken: 'meta.function.erlang' } ] } ],\n '#function-call': \n [ { token: 'meta.function-call.erlang',\n regex: '(?=(?:[a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')\\\\s*(?:\\\\(|:\\\\s*(?:[a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')\\\\s*\\\\())',\n push: \n [ { token: 'punctuation.definition.parameters.end.erlang',\n regex: '\\\\)',\n next: 'pop' },\n { token: \n [ 'entity.name.type.class.module.erlang',\n 'text',\n 'punctuation.separator.module-function.erlang',\n 'text',\n 'entity.name.function.guard.erlang',\n 'text',\n 'punctuation.definition.parameters.begin.erlang' ],\n regex: '(?:(erlang)(\\\\s*)(:)(\\\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\\\s*)(\\\\()',\n push: \n [ { token: 'text', regex: '(?=\\\\))', next: 'pop' },\n { token: 'punctuation.separator.parameters.erlang', regex: ',' },\n { include: '#everything-else' } ] },\n { token: \n [ 'entity.name.type.class.module.erlang',\n 'text',\n 'punctuation.separator.module-function.erlang',\n 'text',\n 'entity.name.function.erlang',\n 'text',\n 'punctuation.definition.parameters.begin.erlang' ],\n regex: '(?:([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(:)(\\\\s*))?([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(\\\\()',\n push: \n [ { token: 'text', regex: '(?=\\\\))', next: 'pop' },\n { token: 'punctuation.separator.parameters.erlang', regex: ',' },\n { include: '#everything-else' } ] },\n { defaultToken: 'meta.function-call.erlang' } ] } ],\n '#import-export-directive': \n [ { token: \n [ 'meta.directive.import.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.import.erlang',\n 'keyword.control.directive.import.erlang',\n 'meta.directive.import.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.import.erlang',\n 'entity.name.type.class.module.erlang',\n 'meta.directive.import.erlang',\n 'punctuation.separator.parameters.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(import)(\\\\s*)(\\\\()(\\\\s*)([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(,)',\n push: \n [ { token: \n [ 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.import.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '(\\\\))(\\\\s*)(\\\\.)',\n next: 'pop' },\n { include: '#internal-function-list' },\n { defaultToken: 'meta.directive.import.erlang' } ] },\n { token: \n [ 'meta.directive.export.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.export.erlang',\n 'keyword.control.directive.export.erlang',\n 'meta.directive.export.erlang',\n 'punctuation.definition.parameters.begin.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(export)(\\\\s*)(\\\\()',\n push: \n [ { token: \n [ 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.export.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '(\\\\))(\\\\s*)(\\\\.)',\n next: 'pop' },\n { include: '#internal-function-list' },\n { defaultToken: 'meta.directive.export.erlang' } ] } ],\n '#internal-expression-punctuation': \n [ { token: \n [ 'punctuation.separator.clause-head-body.erlang',\n 'punctuation.separator.clauses.erlang',\n 'punctuation.separator.expressions.erlang' ],\n regex: '(->)|(;)|(,)' } ],\n '#internal-function-list': \n [ { token: 'punctuation.definition.list.begin.erlang',\n regex: '\\\\[',\n push: \n [ { token: 'punctuation.definition.list.end.erlang',\n regex: '\\\\]',\n next: 'pop' },\n { token: \n [ 'entity.name.function.erlang',\n 'text',\n 'punctuation.separator.function-arity.erlang' ],\n regex: '([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(/)',\n push: \n [ { token: 'punctuation.separator.list.erlang',\n regex: ',|(?=\\\\])',\n next: 'pop' },\n { include: '#everything-else' } ] },\n { include: '#everything-else' },\n { defaultToken: 'meta.structure.list.function.erlang' } ] } ],\n '#internal-function-parts': \n [ { token: 'text',\n regex: '(?=\\\\()',\n push: \n [ { token: 'punctuation.separator.clause-head-body.erlang',\n regex: '->',\n next: 'pop' },\n { token: 'punctuation.definition.parameters.begin.erlang',\n regex: '\\\\(',\n push: \n [ { token: 'punctuation.definition.parameters.end.erlang',\n regex: '\\\\)',\n next: 'pop' },\n { token: 'punctuation.separator.parameters.erlang', regex: ',' },\n { include: '#everything-else' } ] },\n { token: 'punctuation.separator.guards.erlang', regex: ',|;' },\n { include: '#everything-else' } ] },\n { token: 'punctuation.separator.expressions.erlang',\n regex: ',' },\n { include: '#everything-else' } ],\n '#internal-record-body': \n [ { token: 'punctuation.definition.class.record.begin.erlang',\n regex: '\\\\{',\n push: \n [ { token: 'meta.structure.record.erlang',\n regex: '(?=\\\\})',\n next: 'pop' },\n { token: \n [ 'variable.other.field.erlang',\n 'variable.language.omitted.field.erlang',\n 'text',\n 'keyword.operator.assignment.erlang' ],\n regex: '(?:([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')|(_))(\\\\s*)(=|::)',\n push: \n [ { token: 'punctuation.separator.class.record.erlang',\n regex: ',|(?=\\\\})',\n next: 'pop' },\n { include: '#everything-else' } ] },\n { token: \n [ 'variable.other.field.erlang',\n 'text',\n 'punctuation.separator.class.record.erlang' ],\n regex: '([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)((?:,)?)' },\n { include: '#everything-else' },\n { defaultToken: 'meta.structure.record.erlang' } ] } ],\n '#internal-type-specifiers': \n [ { token: 'punctuation.separator.value-type.erlang',\n regex: '/',\n push: \n [ { token: 'text', regex: '(?=,|:|>>)', next: 'pop' },\n { token: \n [ 'storage.type.erlang',\n 'storage.modifier.signedness.erlang',\n 'storage.modifier.endianness.erlang',\n 'storage.modifier.unit.erlang',\n 'punctuation.separator.type-specifiers.erlang' ],\n regex: '(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)' } ] } ],\n '#keyword': \n [ { token: 'keyword.control.erlang',\n regex: '\\\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\\\b' } ],\n '#list': \n [ { token: 'punctuation.definition.list.begin.erlang',\n regex: '\\\\[',\n push: \n [ { token: 'punctuation.definition.list.end.erlang',\n regex: '\\\\]',\n next: 'pop' },\n { token: 'punctuation.separator.list.erlang',\n regex: '\\\\||\\\\|\\\\||,' },\n { include: '#everything-else' },\n { defaultToken: 'meta.structure.list.erlang' } ] } ],\n '#macro-directive': \n [ { token: \n [ 'meta.directive.ifdef.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.ifdef.erlang',\n 'keyword.control.directive.ifdef.erlang',\n 'meta.directive.ifdef.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.ifdef.erlang',\n 'entity.name.function.macro.erlang',\n 'meta.directive.ifdef.erlang',\n 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.ifdef.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(ifdef)(\\\\s*)(\\\\()(\\\\s*)([a-zA-Z\\\\d@_]+)(\\\\s*)(\\\\))(\\\\s*)(\\\\.)' },\n { token: \n [ 'meta.directive.ifndef.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.ifndef.erlang',\n 'keyword.control.directive.ifndef.erlang',\n 'meta.directive.ifndef.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.ifndef.erlang',\n 'entity.name.function.macro.erlang',\n 'meta.directive.ifndef.erlang',\n 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.ifndef.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(ifndef)(\\\\s*)(\\\\()(\\\\s*)([a-zA-Z\\\\d@_]+)(\\\\s*)(\\\\))(\\\\s*)(\\\\.)' },\n { token: \n [ 'meta.directive.undef.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.undef.erlang',\n 'keyword.control.directive.undef.erlang',\n 'meta.directive.undef.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.undef.erlang',\n 'entity.name.function.macro.erlang',\n 'meta.directive.undef.erlang',\n 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.undef.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(undef)(\\\\s*)(\\\\()(\\\\s*)([a-zA-Z\\\\d@_]+)(\\\\s*)(\\\\))(\\\\s*)(\\\\.)' } ],\n '#macro-usage': \n [ { token: \n [ 'keyword.operator.macro.erlang',\n 'meta.macro-usage.erlang',\n 'entity.name.function.macro.erlang' ],\n regex: '(\\\\?\\\\??)(\\\\s*)([a-zA-Z\\\\d@_]+)' } ],\n '#module-directive': \n [ { token: \n [ 'meta.directive.module.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.module.erlang',\n 'keyword.control.directive.module.erlang',\n 'meta.directive.module.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.module.erlang',\n 'entity.name.type.class.module.definition.erlang',\n 'meta.directive.module.erlang',\n 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.module.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(module)(\\\\s*)(\\\\()(\\\\s*)([a-z][a-zA-Z\\\\d@_]*)(\\\\s*)(\\\\))(\\\\s*)(\\\\.)' } ],\n '#number': \n [ { token: 'text',\n regex: '(?=\\\\d)',\n push: \n [ { token: 'text', regex: '(?!\\\\d)', next: 'pop' },\n { token: \n [ 'constant.numeric.float.erlang',\n 'punctuation.separator.integer-float.erlang',\n 'constant.numeric.float.erlang',\n 'punctuation.separator.float-exponent.erlang' ],\n regex: '(\\\\d+)(\\\\.)(\\\\d+)((?:[eE][\\\\+\\\\-]?\\\\d+)?)' },\n { token: \n [ 'constant.numeric.integer.binary.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.binary.erlang' ],\n regex: '(2)(#)([0-1]+)' },\n { token: \n [ 'constant.numeric.integer.base-3.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-3.erlang' ],\n regex: '(3)(#)([0-2]+)' },\n { token: \n [ 'constant.numeric.integer.base-4.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-4.erlang' ],\n regex: '(4)(#)([0-3]+)' },\n { token: \n [ 'constant.numeric.integer.base-5.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-5.erlang' ],\n regex: '(5)(#)([0-4]+)' },\n { token: \n [ 'constant.numeric.integer.base-6.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-6.erlang' ],\n regex: '(6)(#)([0-5]+)' },\n { token: \n [ 'constant.numeric.integer.base-7.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-7.erlang' ],\n regex: '(7)(#)([0-6]+)' },\n { token: \n [ 'constant.numeric.integer.octal.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.octal.erlang' ],\n regex: '(8)(#)([0-7]+)' },\n { token: \n [ 'constant.numeric.integer.base-9.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-9.erlang' ],\n regex: '(9)(#)([0-8]+)' },\n { token: \n [ 'constant.numeric.integer.decimal.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.decimal.erlang' ],\n regex: '(10)(#)(\\\\d+)' },\n { token: \n [ 'constant.numeric.integer.base-11.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-11.erlang' ],\n regex: '(11)(#)([\\\\daA]+)' },\n { token: \n [ 'constant.numeric.integer.base-12.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-12.erlang' ],\n regex: '(12)(#)([\\\\da-bA-B]+)' },\n { token: \n [ 'constant.numeric.integer.base-13.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-13.erlang' ],\n regex: '(13)(#)([\\\\da-cA-C]+)' },\n { token: \n [ 'constant.numeric.integer.base-14.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-14.erlang' ],\n regex: '(14)(#)([\\\\da-dA-D]+)' },\n { token: \n [ 'constant.numeric.integer.base-15.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-15.erlang' ],\n regex: '(15)(#)([\\\\da-eA-E]+)' },\n { token: \n [ 'constant.numeric.integer.hexadecimal.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.hexadecimal.erlang' ],\n regex: '(16)(#)([\\\\da-fA-F]+)' },\n { token: \n [ 'constant.numeric.integer.base-17.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-17.erlang' ],\n regex: '(17)(#)([\\\\da-gA-G]+)' },\n { token: \n [ 'constant.numeric.integer.base-18.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-18.erlang' ],\n regex: '(18)(#)([\\\\da-hA-H]+)' },\n { token: \n [ 'constant.numeric.integer.base-19.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-19.erlang' ],\n regex: '(19)(#)([\\\\da-iA-I]+)' },\n { token: \n [ 'constant.numeric.integer.base-20.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-20.erlang' ],\n regex: '(20)(#)([\\\\da-jA-J]+)' },\n { token: \n [ 'constant.numeric.integer.base-21.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-21.erlang' ],\n regex: '(21)(#)([\\\\da-kA-K]+)' },\n { token: \n [ 'constant.numeric.integer.base-22.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-22.erlang' ],\n regex: '(22)(#)([\\\\da-lA-L]+)' },\n { token: \n [ 'constant.numeric.integer.base-23.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-23.erlang' ],\n regex: '(23)(#)([\\\\da-mA-M]+)' },\n { token: \n [ 'constant.numeric.integer.base-24.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-24.erlang' ],\n regex: '(24)(#)([\\\\da-nA-N]+)' },\n { token: \n [ 'constant.numeric.integer.base-25.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-25.erlang' ],\n regex: '(25)(#)([\\\\da-oA-O]+)' },\n { token: \n [ 'constant.numeric.integer.base-26.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-26.erlang' ],\n regex: '(26)(#)([\\\\da-pA-P]+)' },\n { token: \n [ 'constant.numeric.integer.base-27.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-27.erlang' ],\n regex: '(27)(#)([\\\\da-qA-Q]+)' },\n { token: \n [ 'constant.numeric.integer.base-28.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-28.erlang' ],\n regex: '(28)(#)([\\\\da-rA-R]+)' },\n { token: \n [ 'constant.numeric.integer.base-29.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-29.erlang' ],\n regex: '(29)(#)([\\\\da-sA-S]+)' },\n { token: \n [ 'constant.numeric.integer.base-30.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-30.erlang' ],\n regex: '(30)(#)([\\\\da-tA-T]+)' },\n { token: \n [ 'constant.numeric.integer.base-31.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-31.erlang' ],\n regex: '(31)(#)([\\\\da-uA-U]+)' },\n { token: \n [ 'constant.numeric.integer.base-32.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-32.erlang' ],\n regex: '(32)(#)([\\\\da-vA-V]+)' },\n { token: \n [ 'constant.numeric.integer.base-33.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-33.erlang' ],\n regex: '(33)(#)([\\\\da-wA-W]+)' },\n { token: \n [ 'constant.numeric.integer.base-34.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-34.erlang' ],\n regex: '(34)(#)([\\\\da-xA-X]+)' },\n { token: \n [ 'constant.numeric.integer.base-35.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-35.erlang' ],\n regex: '(35)(#)([\\\\da-yA-Y]+)' },\n { token: \n [ 'constant.numeric.integer.base-36.erlang',\n 'punctuation.separator.base-integer.erlang',\n 'constant.numeric.integer.base-36.erlang' ],\n regex: '(36)(#)([\\\\da-zA-Z]+)' },\n { token: 'invalid.illegal.integer.erlang',\n regex: '\\\\d+#[\\\\da-zA-Z]+' },\n { token: 'constant.numeric.integer.decimal.erlang',\n regex: '\\\\d+' } ] } ],\n '#parenthesized-expression': \n [ { token: 'punctuation.section.expression.begin.erlang',\n regex: '\\\\(',\n push: \n [ { token: 'punctuation.section.expression.end.erlang',\n regex: '\\\\)',\n next: 'pop' },\n { include: '#everything-else' },\n { defaultToken: 'meta.expression.parenthesized' } ] } ],\n '#record-directive': \n [ { token: \n [ 'meta.directive.record.erlang',\n 'punctuation.section.directive.begin.erlang',\n 'meta.directive.record.erlang',\n 'keyword.control.directive.import.erlang',\n 'meta.directive.record.erlang',\n 'punctuation.definition.parameters.begin.erlang',\n 'meta.directive.record.erlang',\n 'entity.name.type.class.record.definition.erlang',\n 'meta.directive.record.erlang',\n 'punctuation.separator.parameters.erlang' ],\n regex: '^(\\\\s*)(-)(\\\\s*)(record)(\\\\s*)(\\\\()(\\\\s*)([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(,)',\n push: \n [ { token: \n [ 'punctuation.definition.class.record.end.erlang',\n 'meta.directive.record.erlang',\n 'punctuation.definition.parameters.end.erlang',\n 'meta.directive.record.erlang',\n 'punctuation.section.directive.end.erlang' ],\n regex: '(\\\\})(\\\\s*)(\\\\))(\\\\s*)(\\\\.)',\n next: 'pop' },\n { include: '#internal-record-body' },\n { defaultToken: 'meta.directive.record.erlang' } ] } ],\n '#record-usage': \n [ { token: \n [ 'keyword.operator.record.erlang',\n 'meta.record-usage.erlang',\n 'entity.name.type.class.record.erlang',\n 'meta.record-usage.erlang',\n 'punctuation.separator.record-field.erlang',\n 'meta.record-usage.erlang',\n 'variable.other.field.erlang' ],\n regex: '(#)(\\\\s*)([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')(\\\\s*)(\\\\.)(\\\\s*)([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')' },\n { token: \n [ 'keyword.operator.record.erlang',\n 'meta.record-usage.erlang',\n 'entity.name.type.class.record.erlang' ],\n regex: '(#)(\\\\s*)([a-z][a-zA-Z\\\\d@_]*|\\'[^\\']*\\')',\n push: \n [ { token: 'punctuation.definition.class.record.end.erlang',\n regex: '\\\\}',\n next: 'pop' },\n { include: '#internal-record-body' },\n { defaultToken: 'meta.record-usage.erlang' } ] } ],\n '#string': \n [ { token: 'punctuation.definition.string.begin.erlang',\n regex: '\"',\n push: \n [ { token: 'punctuation.definition.string.end.erlang',\n regex: '\"',\n next: 'pop' },\n { token: \n [ 'punctuation.definition.escape.erlang',\n 'constant.character.escape.erlang',\n 'punctuation.definition.escape.erlang',\n 'constant.character.escape.erlang',\n 'constant.character.escape.erlang' ],\n regex: '(\\\\\\\\)(?:([bdefnrstv\\\\\\\\\\'\"])|(\\\\^)([@-_])|([0-7]{1,3}))' },\n { token: 'invalid.illegal.string.erlang', regex: '\\\\\\\\\\\\^?.?' },\n { token: \n [ 'punctuation.definition.placeholder.erlang',\n 'punctuation.separator.placeholder-parts.erlang',\n 'constant.other.placeholder.erlang',\n 'punctuation.separator.placeholder-parts.erlang',\n 'punctuation.separator.placeholder-parts.erlang',\n 'constant.other.placeholder.erlang',\n 'punctuation.separator.placeholder-parts.erlang',\n 'punctuation.separator.placeholder-parts.erlang',\n 'punctuation.separator.placeholder-parts.erlang',\n 'constant.other.placeholder.erlang',\n 'constant.other.placeholder.erlang' ],\n regex: '(~)(?:((?:\\\\-)?)(\\\\d+)|(\\\\*))?(?:(\\\\.)(?:(\\\\d+)|(\\\\*)))?(?:(\\\\.)(?:(\\\\*)|(.)))?([~cfegswpWPBX#bx\\\\+ni])' },\n { token: \n [ 'punctuation.definition.placeholder.erlang',\n 'punctuation.separator.placeholder-parts.erlang',\n 'constant.other.placeholder.erlang',\n 'constant.other.placeholder.erlang' ],\n regex: '(~)((?:\\\\*)?)((?:\\\\d+)?)([~du\\\\-#fsacl])' },\n { token: 'invalid.illegal.string.erlang', regex: '~.?' },\n { defaultToken: 'string.quoted.double.erlang' } ] } ],\n '#symbolic-operator': \n [ { token: 'keyword.operator.symbolic.erlang',\n regex: '\\\\+\\\\+|\\\\+|--|-|\\\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::' } ],\n '#textual-operator': \n [ { token: 'keyword.operator.textual.erlang',\n regex: '\\\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\\\b' } ],\n '#tuple': \n [ { token: 'punctuation.definition.tuple.begin.erlang',\n regex: '\\\\{',\n push: \n [ { token: 'punctuation.definition.tuple.end.erlang',\n regex: '\\\\}',\n next: 'pop' },\n { token: 'punctuation.separator.tuple.erlang', regex: ',' },\n { include: '#everything-else' },\n { defaultToken: 'meta.structure.tuple.erlang' } ] } ],\n '#variable': \n [ { token: [ 'variable.other.erlang', 'variable.language.omitted.erlang' ],\n regex: '(_[a-zA-Z\\\\d@_]+|[A-Z][a-zA-Z\\\\d@_]*)|(_)' } ] };\n \n this.normalizeRules();\n};\n\nErlangHighlightRules.metaData = { comment: 'The recognition of function definitions and compiler directives (such as module, record and macro definitions) acequires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp',\n fileTypes: [ 'erl', 'hrl' ],\n keyEquivalent: '^~E',\n name: 'Erlang',\n scopeName: 'source.erlang' };\n\n\noop.inherits(ErlangHighlightRules, TextHighlightRules);\n\nexports.ErlangHighlightRules = ErlangHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/erlang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/erlang_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ErlangHighlightRules = acequire(\"./erlang_highlight_rules\").ErlangHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = ErlangHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"%\";\n this.blockComment = null;\n this.$id = \"ace/mode/erlang\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/fortran_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar FortranHighlightRules = function() {\n\n var keywords = (\n \"call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|\"+\n \"if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|\"+\n \"select|status|stop|subroutine|\" +\n \"return|then|use|while|write|\"+\n \"CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|\"+\n \"IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|\"+\n \"SELECT|STATUS|STOP|SUBROUTINE|\" +\n \"RETURN|THEN|USE|WHILE|WRITE\"\n );\n\n var keywordOperators = (\n \"and|or|not|eq|ne|gt|ge|lt|le|\" +\n \"AND|OR|NOT|EQ|NE|GT|GE|LT|LE\"\n );\n\n var builtinConstants = (\n \"true|false|TRUE|FALSE\"\n );\n\n var builtinFunctions = (\n \"abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|\"+\n \"anint|any|asin|asinh|associated|atan|atan2|atanh|\"+\n \"bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|\"+\n \"bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|\"+\n \"count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|\"+\n \"dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|\"+\n \"format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|\"+\n \"merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|\"+\n \"precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|\"+\n \"rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|\"+\n \"set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|\"+\n \"sqrt|sum|system_clock|tan|tanh|tiny|trailz|transfer|transpose|trim|ubound|unpack|verify|\" +\n \"ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|\"+\n \"ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|\"+\n \"BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|\"+\n \"BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|\"+\n \"COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|\"+\n \"DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|\"+\n \"FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|\"+\n \"MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|\"+\n \"PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|\"+\n \"RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|\"+\n \"SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|\"+\n \"SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY\"\n );\n\n var storageType = (\n \"logical|character|integer|real|type|\" +\n \"LOGICAL|CHARACTER|INTEGER|REAL|TYPE\"\n );\n\n var storageModifiers = (\n \"allocatable|dimension|intent|parameter|pointer|target|private|public|\" +\n \"ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"constant.language\": builtinConstants,\n \"keyword\": keywords,\n \"keyword.operator\": keywordOperators,\n \"storage.type\": storageType,\n \"storage.modifier\" : storageModifiers\n }, \"identifier\");\n\n var strPre = \"(?:r|u|ur|R|U|UR|Ur|uR)?\";\n\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"!.*$\"\n }, {\n token : \"string\", // multi line \"\"\" string start\n regex : strPre + '\"{3}',\n next : \"qqstring3\"\n }, {\n token : \"string\", // \" string\n regex : strPre + '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"string\", // multi line ''' string start\n regex : strPre + \"'{3}\",\n next : \"qstring3\"\n }, {\n token : \"string\", // ' string\n regex : strPre + \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"constant.numeric\", // imaginary\n regex : \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : floatNumber\n }, {\n token : \"constant.numeric\", // long integer\n regex : integer + \"[lL]\\\\b\"\n }, {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"#\\\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\\\b\"\n }, {\n token : \"keyword\", // special case pre-compiler directive\n regex : \"#\\\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\[\\\\(\\\\{]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]\\\\)\\\\}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ],\n \"qqstring3\" : [ {\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\", // multi line \"\"\" string end\n regex : '\"{3}',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n } ],\n \"qstring3\" : [ {\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\", // multi line \"\"\" string end\n regex : '\"{3}',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n } ],\n \"qqstring\" : [{\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\" : [{\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }]\n };\n};\n\noop.inherits(FortranHighlightRules, TextHighlightRules);\n\nexports.FortranHighlightRules = FortranHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/fortran\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/fortran_highlight_rules\",\"ace/mode/folding/cstyle\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar FortranHighlightRules = acequire(\"./fortran_highlight_rules\").FortranHighlightRules;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = FortranHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"!\";\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n var outdents = {\n \"return\": 1,\n \"break\": 1,\n \"continue\": 1,\n \"RETURN\": 1,\n \"BREAK\": 1,\n \"CONTINUE\": 1\n };\n\n this.checkOutdent = function(state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n\n if (!last)\n return false;\n\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n\n this.autoOutdent = function(state, doc, row) {\n\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length-tab.length, row, indent.length));\n };\n\n this.$id = \"ace/mode/fortran\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/gitignore_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar GitignoreHighlightRules = function() {\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : /^\\s*#.*$/\n }, {\n token : \"keyword\", // negated patterns\n regex : /^\\s*!.*$/\n }\n ]\n };\n \n this.normalizeRules();\n};\n\nGitignoreHighlightRules.metaData = {\n fileTypes: ['gitignore'],\n name: 'Gitignore'\n};\n\noop.inherits(GitignoreHighlightRules, TextHighlightRules);\n\nexports.GitignoreHighlightRules = GitignoreHighlightRules;\n});\n\nace.define(\"ace/mode/gitignore\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/gitignore_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar GitignoreHighlightRules = acequire(\"./gitignore_highlight_rules\").GitignoreHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = GitignoreHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"#\";\n this.$id = \"ace/mode/gitignore\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/c_cpp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar cFunctions = exports.cFunctions = \"\\\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\\\b\";\n\nvar c_cppHighlightRules = function() {\n\n var keywordControls = (\n \"break|case|continue|default|do|else|for|goto|if|_Pragma|\" +\n \"return|switch|while|catch|operator|try|throw|using\"\n );\n \n var storageType = (\n \"asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|\" +\n \"_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|\" +\n \"class|wchar_t|template|char16_t|char32_t\"\n );\n\n var storageModifiers = (\n \"const|extern|register|restrict|static|volatile|inline|private|\" +\n \"protected|public|friend|explicit|virtual|export|mutable|typename|\" +\n \"constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local\"\n );\n\n var keywordOperators = (\n \"and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq\" +\n \"const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace\"\n );\n\n var builtinConstants = (\n \"NULL|true|false|TRUE|FALSE|nullptr\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword.control\" : keywordControls,\n \"storage.type\" : storageType,\n \"storage.modifier\" : storageModifiers,\n \"keyword.operator\" : keywordOperators,\n \"variable.language\": \"this\",\n \"constant.language\": builtinConstants\n }, \"identifier\");\n\n var identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\\\\b\";\n var escapeRe = /\\\\(?:['\"?\\\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}U[a-fA-F\\d]{8}|.)/.source;\n var formatRe = \"%\"\n + /(\\d+\\$)?/.source // field (argument #)\n + /[#0\\- +']*/.source // flags\n + /[,;:_]?/.source // separator character (AltiVec)\n + /((-?\\d+)|\\*(-?\\d+\\$)?)?/.source // minimum field width\n + /(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?/.source // precision\n + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier\n + /(\\[[^\"\\]]+\\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type\n\n this.$rules = { \n \"start\" : [\n {\n token : \"comment\",\n regex : \"//$\",\n next : \"start\"\n }, {\n token : \"comment\",\n regex : \"//\",\n next : \"singleLineComment\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // character\n regex : \"'(?:\" + escapeRe + \"|.)?'\"\n }, {\n token : \"string.start\",\n regex : '\"', \n stateName: \"qqstring\",\n next: [\n { token: \"string\", regex: /\\\\\\s*$/, next: \"qqstring\" },\n { token: \"constant.language.escape\", regex: escapeRe },\n { token: \"constant.language.escape\", regex: formatRe },\n { token: \"string.end\", regex: '\"|$', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"string.start\",\n regex : 'R\"\\\\(', \n stateName: \"rawString\",\n next: [\n { token: \"string.end\", regex: '\\\\)\"', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"#\\\\s*(?:include|import|pragma|line|define|undef)\\\\b\",\n next : \"directive\"\n }, {\n token : \"keyword\", // special case pre-compiler directive\n regex : \"#\\\\s*(?:endif|if|ifdef|else|elif|ifndef)\\\\b\"\n }, {\n token : \"support.function.C99.c\",\n regex : cFunctions\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|<<=|>>=|>>>=|<>|&&|\\|\\||\\?:|[*%\\/+\\-&\\^|~!<>=]=?/\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"singleLineComment\" : [\n {\n token : \"comment\",\n regex : /\\\\$/,\n next : \"singleLineComment\"\n }, {\n token : \"comment\",\n regex : /$/,\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"directive\" : [\n {\n token : \"constant.other.multiline\",\n regex : /\\\\/\n },\n {\n token : \"constant.other.multiline\",\n regex : /.*\\\\/\n },\n {\n token : \"constant.other\",\n regex : \"\\\\s*<.+?>\",\n next : \"start\"\n },\n {\n token : \"constant.other\", // single line\n regex : '\\\\s*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]',\n next : \"start\"\n }, \n {\n token : \"constant.other\", // single line\n regex : \"\\\\s*['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\",\n next : \"start\"\n },\n {\n token : \"constant.other\",\n regex : /[^\\\\\\/]+/,\n next : \"start\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(c_cppHighlightRules, TextHighlightRules);\n\nexports.c_cppHighlightRules = c_cppHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/c_cpp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/c_cpp_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar c_cppHighlightRules = acequire(\"./c_cpp_highlight_rules\").c_cppHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = c_cppHighlightRules;\n\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/c_cpp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/glsl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/c_cpp_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar c_cppHighlightRules = acequire(\"./c_cpp_highlight_rules\").c_cppHighlightRules;\n\nvar glslHighlightRules = function() {\n\n var keywords = (\n \"attribute|const|uniform|varying|break|continue|do|for|while|\" +\n \"if|else|in|out|inout|float|int|void|bool|true|false|\" +\n \"lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|\" +\n \"mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|\" +\n \"samplerCube|struct\"\n );\n\n var buildinConstants = (\n \"radians|degrees|sin|cos|tan|asin|acos|atan|pow|\" +\n \"exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|\" +\n \"min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|\" +\n \"normalize|faceforward|reflect|refract|matrixCompMult|lessThan|\" +\n \"lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|\" +\n \"not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|\" +\n \"texture2DProjLod|textureCube|textureCubeLod|\" +\n \"gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|\" +\n \"gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|\" +\n \"gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|\" +\n \"gl_DepthRangeParameters|gl_DepthRange|\" +\n \"gl_Position|gl_PointSize|\" +\n \"gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"constant.language\": buildinConstants\n }, \"identifier\");\n\n this.$rules = new c_cppHighlightRules().$rules;\n this.$rules.start.forEach(function(rule) {\n if (typeof rule.token == \"function\")\n rule.token = keywordMapper;\n });\n};\n\noop.inherits(glslHighlightRules, c_cppHighlightRules);\n\nexports.glslHighlightRules = glslHighlightRules;\n});\n\nace.define(\"ace/mode/glsl\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/c_cpp\",\"ace/mode/glsl_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar CMode = acequire(\"./c_cpp\").Mode;\nvar glslHighlightRules = acequire(\"./glsl_highlight_rules\").glslHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = glslHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, CMode);\n\n(function() {\n this.$id = \"ace/mode/glsl\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/gobstones_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar GobstonesHighlightRules = function() {\n\n var keywords = (\n \"program|procedure|function|interactive|if|then|else|switch|repeat|while|foreach|in|not|div|mod|Skip|return\"\n );\n\n var buildinConstants = (\n \"False|True\"\n );\n\n\n var langClasses = (\n \"Poner|Sacar|Mover|IrAlBorde|VaciarTablero|\" +\n \"nroBolitas|hayBolitas|puedeMover|siguiente|previo|opuesto|minBool|maxBool|\" +\n \"minDir|maxDir|minColor|maxColor\"\n );\n\n var supportType = (\n \"Verde|Rojo|Azul|Negro|Norte|Sur|Este|Oeste\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": langClasses,\n \"support.type\": supportType\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n {\n token : \"comment\",\n regex : \"\\\\-\\\\-.*$\"\n },\n {\n token : \"comment\",\n regex : \"#.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // hex\n regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\\b/\n }, {\n token : \"constant.numeric\", // float\n regex : /[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?[LlSsDdFfYy]?\\b/\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:True|False)\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \":=|\\\\.\\\\.|,|;|\\\\|\\\\||\\\\/\\\\/|\\\\+|\\\\-|\\\\^|\\\\*|>|<|>=|=>|==|&&\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(GobstonesHighlightRules, TextHighlightRules);\n\nexports.GobstonesHighlightRules = GobstonesHighlightRules;\n});\n\nace.define(\"ace/mode/gobstones\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript\",\"ace/mode/gobstones_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar GobstonesHighlightRules = acequire(\"./gobstones_highlight_rules\").GobstonesHighlightRules;\n\nvar Mode = function() {\n JavaScriptMode.call(this);\n this.HighlightRules = GobstonesHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, JavaScriptMode);\n\n(function() {\n \n this.createWorker = function(session) {\n return null;\n };\n\n this.$id = \"ace/mode/gobstones\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/golang_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n var oop = acequire(\"../lib/oop\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var GolangHighlightRules = function() {\n var keywords = (\n \"else|break|case|return|goto|if|const|select|\" +\n \"continue|struct|default|switch|for|range|\" +\n \"func|import|package|chan|defer|fallthrough|go|interface|map|range|\" +\n \"select|type|var\"\n );\n var builtinTypes = (\n \"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|\" +\n \"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error\"\n );\n var builtinFunctions = (\n \"new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append\"\n );\n var builtinConstants = (\"nil|true|false|iota\");\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions,\n \"support.type\": builtinTypes\n }, \"\");\n \n var stringEscapeRe = \"\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u{4}|U\\\\h{6}|[abfnrtv'\\\"\\\\\\\\])\".replace(/\\\\h/g, \"[a-fA-F\\\\d]\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment.start\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // single line\n regex : /\"(?:[^\"\\\\]|\\\\.)*?\"/\n }, {\n token : \"string\", // raw\n regex : '`',\n next : \"bqstring\"\n }, {\n token : \"constant.numeric\", // rune\n regex : \"'(?:[^\\\\'\\uD800-\\uDBFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\" + stringEscapeRe.replace('\"', '') + \")'\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\" \n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : [\"keyword\", \"text\", \"entity.name.function\"],\n regex : \"(func)(\\\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\\\b\"\n }, {\n token : function(val) {\n if (val[val.length - 1] == \"(\") {\n return [{\n type: keywordMapper(val.slice(0, -1)) || \"support.function\",\n value: val.slice(0, -1)\n }, {\n type: \"paren.lparen\",\n value: val.slice(-1)\n }];\n }\n \n return keywordMapper(val) || \"identifier\";\n },\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\\\\(?\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=\"\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment.end\",\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"bqstring\" : [\n {\n token : \"string\",\n regex : '`',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n };\n oop.inherits(GolangHighlightRules, TextHighlightRules);\n\n exports.GolangHighlightRules = GolangHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/golang\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/golang_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar GolangHighlightRules = acequire(\"./golang_highlight_rules\").GolangHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = GolangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = new CstyleBehaviour();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n \n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };//end getNextLineIndent\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/golang\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/graphqlschema_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar GraphQLSchemaHighlightRules = function() {\n\n var keywords = (\n \"type|interface|union|enum|schema|input|implements|extends|scalar\"\n );\n\n var dataTypes = (\n \"Int|Float|String|ID|Boolean\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"storage.type\": dataTypes\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n } ]\n };\n this.normalizeRules();\n};\n\noop.inherits(GraphQLSchemaHighlightRules, TextHighlightRules);\n\nexports.GraphQLSchemaHighlightRules = GraphQLSchemaHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/graphqlschema\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/graphqlschema_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar GraphQLSchemaHighlightRules = acequire(\"./graphqlschema_highlight_rules\").GraphQLSchemaHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = GraphQLSchemaHighlightRules;\n this.foldingRules = new FoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"#\";\n this.$id = \"ace/mode/graphqlschema\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/groovy_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar GroovyHighlightRules = function() {\n\n var keywords = (\n \"assert|with|abstract|continue|for|new|switch|\" +\n \"assert|default|goto|package|synchronized|\" +\n \"boolean|do|if|private|this|\" +\n \"break|double|implements|protected|throw|\" +\n \"byte|else|import|public|throws|\" +\n \"case|enum|instanceof|return|transient|\" +\n \"catch|extends|int|short|try|\" +\n \"char|final|interface|static|void|\" +\n \"class|finally|long|strictfp|volatile|\" +\n \"def|float|native|super|while\"\n );\n\n var buildinConstants = (\n \"null|Infinity|NaN|undefined\"\n );\n\n var langClasses = (\n \"AbstractMethodError|AssertionError|ClassCircularityError|\"+\n \"ClassFormatError|Deprecated|EnumConstantNotPresentException|\"+\n \"ExceptionInInitializerError|IllegalAccessError|\"+\n \"IllegalThreadStateException|InstantiationError|InternalError|\"+\n \"NegativeArraySizeException|NoSuchFieldError|Override|Process|\"+\n \"ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|\"+\n \"SuppressWarnings|TypeNotPresentException|UnknownError|\"+\n \"UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|\"+\n \"InstantiationException|IndexOutOfBoundsException|\"+\n \"ArrayIndexOutOfBoundsException|CloneNotSupportedException|\"+\n \"NoSuchFieldException|IllegalArgumentException|NumberFormatException|\"+\n \"SecurityException|Void|InheritableThreadLocal|IllegalStateException|\"+\n \"InterruptedException|NoSuchMethodException|IllegalAccessException|\"+\n \"UnsupportedOperationException|Enum|StrictMath|Package|Compiler|\"+\n \"Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|\"+\n \"NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|\"+\n \"NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|\"+\n \"Character|Boolean|StackTraceElement|Appendable|StringBuffer|\"+\n \"Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|\"+\n \"StackOverflowError|OutOfMemoryError|VirtualMachineError|\"+\n \"ArrayStoreException|ClassCastException|LinkageError|\"+\n \"NoClassDefFoundError|ClassNotFoundException|RuntimeException|\"+\n \"Exception|ThreadDeath|Error|Throwable|System|ClassLoader|\"+\n \"Cloneable|Class|CharSequence|Comparable|String|Object\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"support.function\": langClasses,\n \"constant.language\": buildinConstants\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token : \"string\",\n regex : '\"\"\"',\n next : \"qqstring\"\n }, {\n token : \"string\",\n regex : \"'''\",\n next : \"qstring\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\?:|\\\\?\\\\.|\\\\*\\\\.|<=>|=~|==~|\\\\.@|\\\\*\\\\.@|\\\\.&|as|in|is|!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : /\\\\(?:u[0-9A-Fa-f]{4}|.|$)/\n }, {\n token : \"constant.language.escape\",\n regex : /\\$[\\w\\d]+/\n }, {\n token : \"constant.language.escape\",\n regex : /\\$\\{[^\"\\}]+\\}?/\n }, {\n token : \"string\",\n regex : '\"{3,5}',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+?'\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : /\\\\(?:u[0-9A-Fa-f]{4}|.|$)/\n }, {\n token : \"string\",\n regex : \"'{3,5}\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : \".+?\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(GroovyHighlightRules, TextHighlightRules);\n\nexports.GroovyHighlightRules = GroovyHighlightRules;\n});\n\nace.define(\"ace/mode/groovy\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript\",\"ace/mode/groovy_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar GroovyHighlightRules = acequire(\"./groovy_highlight_rules\").GroovyHighlightRules;\n\nvar Mode = function() {\n JavaScriptMode.call(this);\n this.HighlightRules = GroovyHighlightRules;\n};\noop.inherits(Mode, JavaScriptMode);\n\n(function() {\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.$id = \"ace/mode/groovy\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/ruby_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar constantOtherSymbol = exports.constantOtherSymbol = {\n token : \"constant.other.symbol.ruby\", // symbol\n regex : \"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?\"\n};\n\nvar qString = exports.qString = {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n};\n\nvar qqString = exports.qqString = {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n};\n\nvar tString = exports.tString = {\n token : \"string\", // backtick string\n regex : \"[`](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[`]\"\n};\n\nvar constantNumericHex = exports.constantNumericHex = {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\\\b\"\n};\n\nvar constantNumericFloat = exports.constantNumericFloat = {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d(?:\\\\d|_(?=\\\\d))*(?:(?:\\\\.\\\\d(?:\\\\d|_(?=\\\\d))*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n};\n\nvar instanceVariable = exports.instanceVariable = {\n token : \"variable.instance\", // instance variable\n regex : \"@{1,2}[a-zA-Z_\\\\d]+\"\n};\n\nvar RubyHighlightRules = function() {\n\n var builtinFunctions = (\n \"abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|\" +\n \"assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|\" +\n \"assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|\" +\n \"assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|\" +\n \"assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|\" +\n \"assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|\" +\n \"attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|\" +\n \"caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|\" +\n \"exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|\" +\n \"gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|\" +\n \"link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|\" +\n \"p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|\" +\n \"raw|readline|readlines|redirect?|request_via_redirect|acequire|scan|select|\" +\n \"set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|\" +\n \"throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|\" +\n \"render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|\" +\n \"content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|\" +\n \"fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|\" +\n \"time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|\" +\n \"select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|\" +\n \"file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|\" +\n \"protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|\" +\n \"send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|\" +\n \"validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|\" +\n \"validates_inclusion_of|validates_numericality_of|validates_with|validates_each|\" +\n \"authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|\" +\n \"filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|\" +\n \"translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|\" +\n \"cache|expire_fragment|expire_cache_for|observe|cache_sweeper|\" +\n \"has_many|has_one|belongs_to|has_and_belongs_to_many\"\n );\n\n var keywords = (\n \"alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|\" +\n \"__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|\" +\n \"redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield\"\n );\n\n var buildinConstants = (\n \"true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|\" +\n \"RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING\"\n );\n\n var builtinVariables = (\n \"$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|\" +\n \"$!|root_url|flash|session|cookies|params|request|response|logger|self\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"variable.language\": builtinVariables,\n \"support.function\": builtinFunctions,\n \"invalid.deprecated\": \"debugger\" // TODO is this a remnant from js mode?\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"comment\", // multi line comment\n regex : \"^=begin(?:$|\\\\s.*$)\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n },\n\n [{\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren.lparen\";\n }\n if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1)\n return \"paren.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.start\",\n regex : /\"/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token : \"paren.start\",\n regex : /#{/,\n push : \"start\"\n }, {\n token : \"string.end\",\n regex : /\"/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token : \"paren.start\",\n regex : /#{/,\n push : \"start\"\n }, {\n token : \"string.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : /'/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\['\\\\]/\n }, {\n token : \"string.end\",\n regex : /'/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n {\n token : \"text\", // namespaces aren't symbols\n regex : \"::\"\n }, {\n token : \"variable.instance\", // instance variable\n regex : \"@{1,2}[a-zA-Z_\\\\d]+\"\n }, {\n token : \"support.class\", // class name\n regex : \"[A-Z][a-zA-Z_\\\\d]+\"\n },\n\n constantOtherSymbol,\n constantNumericHex,\n constantNumericFloat,\n\n {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"punctuation.separator.key-value\",\n regex : \"=>\"\n }, {\n stateName: \"heredoc\",\n onMatch : function(value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[3]);\n return [\n {type:\"constant\", value: tokens[1]},\n {type:\"string\", value: tokens[2]},\n {type:\"support.class\", value: tokens[3]},\n {type:\"string\", value: tokens[4]}\n ];\n },\n regex : \"(<<-?)(['\\\"`]?)([\\\\w]+)(['\\\"`]?)\",\n rules: {\n heredoc: [{\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^ +\"\n }, {\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex : \"$\",\n token : \"empty\",\n next : function(currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\")\n return stack[0];\n return currentState;\n }\n }, {\n token : \"string.character\",\n regex : \"\\\\B\\\\?.\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"^=end(?:$|\\\\s.*$)\",\n next : \"start\"\n }, {\n token : \"comment\", // comment spanning whole line\n regex : \".+\"\n }\n ]\n };\n\n this.normalizeRules();\n};\n\noop.inherits(RubyHighlightRules, TextHighlightRules);\n\nexports.RubyHighlightRules = RubyHighlightRules;\n});\n\nace.define(\"ace/mode/haml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html_highlight_rules\",\"ace/mode/ruby_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar RubyExports = acequire(\"./ruby_highlight_rules\");\nvar RubyHighlightRules = RubyExports.RubyHighlightRules;\n\nvar HamlHighlightRules = function() {\n HtmlHighlightRules.call(this);\n\n this.$rules = {\n \"start\": [\n {\n token: \"comment.block\", // multiline HTML comment\n regex: /^\\/$/,\n next: \"comment\"\n },\n {\n token: \"comment.block\", // multiline HAML comment\n regex: /^\\-#$/,\n next: \"comment\"\n },\n {\n token: \"comment.line\", // HTML comment\n regex: /\\/\\s*.*/\n },\n {\n token: \"comment.line\", // HAML comment\n regex: /-#\\s*.*/\n },\n {\n token: \"keyword.other.doctype\",\n regex: \"^!!!\\\\s*(?:[a-zA-Z0-9-_]+)?\"\n },\n RubyExports.qString,\n RubyExports.qqString,\n RubyExports.tString,\n {\n token: \"meta.tag.haml\",\n regex: /(%[\\w:\\-]+)/\n },\n {\n token: \"keyword.attribute-name.class.haml\",\n regex: /\\.[\\w-]+/\n },\n {\n token: \"keyword.attribute-name.id.haml\",\n regex: /#[\\w-]+/,\n next: \"element_class\"\n },\n RubyExports.constantNumericHex,\n RubyExports.constantNumericFloat,\n RubyExports.constantOtherSymbol,\n {\n token: \"text\",\n regex: /=|-|~/,\n next: \"embedded_ruby\"\n }\n ],\n \"element_class\": [\n {\n token: \"keyword.attribute-name.class.haml\",\n regex: /\\.[\\w-]+/\n },\n {\n token: \"punctuation.section\",\n regex: /\\{/,\n next: \"element_attributes\"\n },\n RubyExports.constantOtherSymbol,\n {\n token: \"empty\",\n regex: \"$|(?!\\\\.|#|\\\\{|\\\\[|=|-|~|\\\\/])\",\n next: \"start\"\n }\n ],\n \"element_attributes\": [\n RubyExports.constantOtherSymbol,\n RubyExports.qString,\n RubyExports.qqString,\n RubyExports.tString,\n RubyExports.constantNumericHex,\n RubyExports.constantNumericFloat,\n {\n token: \"punctuation.section\",\n regex: /$|\\}/,\n next: \"start\"\n }\n ],\n \"embedded_ruby\": [\n RubyExports.constantNumericHex,\n RubyExports.constantNumericFloat,\n RubyExports.instanceVariable,\n RubyExports.qString,\n RubyExports.qqString,\n RubyExports.tString,\n {\n token : \"support.class\", // class name\n regex : \"[A-Z][a-zA-Z_\\\\d]+\"\n },\n {\n token : new RubyHighlightRules().getKeywords(),\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n },\n {\n token : [\"keyword\", \"text\", \"text\"],\n regex : \"(?:do|\\\\{)(?: \\\\|[^|]+\\\\|)?$\",\n next : \"start\"\n },\n {\n token : [\"text\"],\n regex : \"^$\",\n next : \"start\"\n },\n {\n token : [\"text\"],\n regex : \"^(?!.*\\\\|\\\\s*$)\",\n next : \"start\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.block\",\n regex: /^$/,\n next: \"start\"\n },\n {\n token: \"comment.block\", // comment spanning the whole line\n regex: /\\s+.*/\n }\n ]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(HamlHighlightRules, HtmlHighlightRules);\n\nexports.HamlHighlightRules = HamlHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/haml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/haml_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HamlHighlightRules = acequire(\"./haml_highlight_rules\").HamlHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = HamlHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n \n this.$id = \"ace/mode/haml\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/handlebars_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\n\nfunction pop2(currentState, stack) {\n stack.splice(0, 3);\n return stack.shift() || \"start\";\n}\nvar HandlebarsHighlightRules = function() {\n HtmlHighlightRules.call(this);\n var hbs = {\n regex : \"(?={{)\",\n push : \"handlebars\"\n };\n for (var key in this.$rules) {\n this.$rules[key].unshift(hbs);\n }\n this.$rules.handlebars = [{\n token : \"comment.start\",\n regex : \"{{!--\",\n push : [{\n token : \"comment.end\",\n regex : \"--}}\",\n next : pop2\n }, {\n defaultToken : \"comment\"\n }]\n }, {\n token : \"comment.start\",\n regex : \"{{!\",\n push : [{\n token : \"comment.end\",\n regex : \"}}\",\n next : pop2\n }, {\n defaultToken : \"comment\"\n }]\n }, {\n token : \"support.function\", // unescaped variable\n regex : \"{{{\",\n push : [{\n token : \"support.function\",\n regex : \"}}}\",\n next : pop2\n }, {\n token : \"variable.parameter\",\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }]\n }, {\n token : \"storage.type.start\", // begin section\n regex : \"{{[#\\\\^/&]?\",\n push : [{\n token : \"storage.type.end\",\n regex : \"}}\",\n next : pop2\n }, {\n token : \"variable.parameter\",\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }]\n }];\n\n this.normalizeRules();\n};\n\noop.inherits(HandlebarsHighlightRules, HtmlHighlightRules);\n\nexports.HandlebarsHighlightRules = HandlebarsHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour/xml\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar XmlBehaviour = acequire(\"../behaviour/xml\").XmlBehaviour;\n\nvar HtmlBehaviour = function () {\n\n XmlBehaviour.call(this);\n\n};\n\noop.inherits(HtmlBehaviour, XmlBehaviour);\n\nexports.HtmlBehaviour = HtmlBehaviour;\n});\n\nace.define(\"ace/mode/handlebars\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html\",\"ace/mode/handlebars_highlight_rules\",\"ace/mode/behaviour/html\",\"ace/mode/folding/html\"], function(acequire, exports, module) {\n \"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlMode = acequire(\"./html\").Mode;\nvar HandlebarsHighlightRules = acequire(\"./handlebars_highlight_rules\").HandlebarsHighlightRules;\nvar HtmlBehaviour = acequire(\"./behaviour/html\").HtmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\n\nvar Mode = function() {\n HtmlMode.call(this);\n this.HighlightRules = HandlebarsHighlightRules;\n this.$behaviour = new HtmlBehaviour();\n};\n\noop.inherits(Mode, HtmlMode);\n\n(function() {\n this.blockComment = {start: \"{{!--\", end: \"--}}\"};\n this.$id = \"ace/mode/handlebars\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/haskell_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar HaskellHighlightRules = function() {\n\n this.$rules = { start:\n [ { token:\n [ 'punctuation.definition.entity.haskell',\n 'keyword.operator.function.infix.haskell',\n 'punctuation.definition.entity.haskell' ],\n regex: '(`)([a-zA-Z_\\']*?)(`)',\n comment: 'In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]).' },\n { token: 'constant.language.unit.haskell', regex: '\\\\(\\\\)' },\n { token: 'constant.language.empty-list.haskell',\n regex: '\\\\[\\\\]' },\n { token: 'keyword.other.haskell',\n regex: '\\\\b(module|signature)\\\\b',\n push:\n [ { token: 'keyword.other.haskell', regex: '\\\\bwhere\\\\b', next: 'pop' },\n { include: '#module_name' },\n { include: '#module_exports' },\n { token: 'invalid', regex: '[a-z]+' },\n { defaultToken: 'meta.declaration.module.haskell' } ] },\n { token: 'keyword.other.haskell',\n regex: '\\\\bclass\\\\b',\n push:\n [ { token: 'keyword.other.haskell',\n regex: '\\\\bwhere\\\\b',\n next: 'pop' },\n { token: 'support.class.prelude.haskell',\n regex: '\\\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\\\b' },\n { token: 'entity.other.inherited-class.haskell',\n regex: '[A-Z][A-Za-z_\\']*' },\n { token: 'variable.other.generic-type.haskell',\n regex: '\\\\b[a-z][a-zA-Z0-9_\\']*\\\\b' },\n { defaultToken: 'meta.declaration.class.haskell' } ] },\n { token: 'keyword.other.haskell',\n regex: '\\\\binstance\\\\b',\n push:\n [ { token: 'keyword.other.haskell',\n regex: '\\\\bwhere\\\\b|$',\n next: 'pop' },\n { include: '#type_signature' },\n { defaultToken: 'meta.declaration.instance.haskell' } ] },\n { token: 'keyword.other.haskell',\n regex: 'import',\n push:\n [ { token: 'meta.import.haskell', regex: '$|;|^', next: 'pop' },\n { token: 'keyword.other.haskell', regex: 'qualified|as|hiding' },\n { include: '#module_name' },\n { include: '#module_exports' },\n { defaultToken: 'meta.import.haskell' } ] },\n { token: [ 'keyword.other.haskell', 'meta.deriving.haskell' ],\n regex: '(deriving)(\\\\s*\\\\()',\n push:\n [ { token: 'meta.deriving.haskell', regex: '\\\\)', next: 'pop' },\n { token: 'entity.other.inherited-class.haskell',\n regex: '\\\\b[A-Z][a-zA-Z_\\']*' },\n { defaultToken: 'meta.deriving.haskell' } ] },\n { token: 'keyword.other.haskell',\n regex: '\\\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\\\b' },\n { token: 'keyword.operator.haskell', regex: '\\\\binfix[lr]?\\\\b' },\n { token: 'keyword.control.haskell',\n regex: '\\\\b(?:do|if|then|else)\\\\b' },\n { token: 'constant.numeric.float.haskell',\n regex: '\\\\b(?:[0-9]+\\\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\\\b',\n comment: 'Floats are always decimal' },\n { token: 'constant.numeric.haskell',\n regex: '\\\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\\\b' },\n { token:\n [ 'meta.preprocessor.c',\n 'punctuation.definition.preprocessor.c',\n 'meta.preprocessor.c' ],\n regex: '^(\\\\s*)(#)(\\\\s*\\\\w+)',\n comment: 'In addition to Haskell\\'s \"native\" syntax, GHC permits the C preprocessor to be run on a source file.' },\n { include: '#pragma' },\n { token: 'punctuation.definition.string.begin.haskell',\n regex: '\"',\n push:\n [ { token: 'punctuation.definition.string.end.haskell',\n regex: '\"',\n next: 'pop' },\n { token: 'constant.character.escape.haskell',\n regex: '\\\\\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\"\\'\\\\&])' },\n { token: 'constant.character.escape.octal.haskell',\n regex: '\\\\\\\\o[0-7]+|\\\\\\\\x[0-9A-Fa-f]+|\\\\\\\\[0-9]+' },\n { token: 'constant.character.escape.control.haskell',\n regex: '\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]' },\n { defaultToken: 'string.quoted.double.haskell' } ] },\n { token:\n [ 'punctuation.definition.string.begin.haskell',\n 'string.quoted.single.haskell',\n 'constant.character.escape.haskell',\n 'constant.character.escape.octal.haskell',\n 'constant.character.escape.hexadecimal.haskell',\n 'constant.character.escape.control.haskell',\n 'punctuation.definition.string.end.haskell' ],\n regex: '(\\')(?:([\\\\ -\\\\[\\\\]-~])|(\\\\\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\"\\'\\\\&]))|(\\\\\\\\o[0-7]+)|(\\\\\\\\x[0-9A-Fa-f]+)|(\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]))(\\')' },\n { token:\n [ 'meta.function.type-declaration.haskell',\n 'entity.name.function.haskell',\n 'meta.function.type-declaration.haskell',\n 'keyword.other.double-colon.haskell' ],\n regex: '^(\\\\s*)([a-z_][a-zA-Z0-9_\\']*|\\\\([|!%$+\\\\-.,=]+\\\\))(\\\\s*)(::)',\n push:\n [ { token: 'meta.function.type-declaration.haskell',\n regex: '$',\n next: 'pop' },\n { include: '#type_signature' },\n { defaultToken: 'meta.function.type-declaration.haskell' } ] },\n { token: 'support.constant.haskell',\n regex: '\\\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\\\(\\\\)|\\\\[\\\\])\\\\b' },\n { token: 'constant.other.haskell', regex: '\\\\b[A-Z]\\\\w*\\\\b' },\n { include: '#comments' },\n { token: 'support.function.prelude.haskell',\n regex: '\\\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\\\b' },\n { include: '#infix_op' },\n { token: 'keyword.operator.haskell',\n regex: '[|!%$?~+:\\\\-.=\\\\\\\\]+',\n comment: 'In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.' },\n { token: 'punctuation.separator.comma.haskell', regex: ',' } ],\n '#block_comment':\n [ { token: 'punctuation.definition.comment.haskell',\n regex: '\\\\{-(?!#)',\n push:\n [ { include: '#block_comment' },\n { token: 'punctuation.definition.comment.haskell',\n regex: '-\\\\}',\n next: 'pop' },\n { defaultToken: 'comment.block.haskell' } ] } ],\n '#comments':\n [ { token: 'punctuation.definition.comment.haskell',\n regex: '--.*',\n push_:\n [ { token: 'comment.line.double-dash.haskell',\n regex: '$',\n next: 'pop' },\n { defaultToken: 'comment.line.double-dash.haskell' } ] },\n { include: '#block_comment' } ],\n '#infix_op':\n [ { token: 'entity.name.function.infix.haskell',\n regex: '\\\\([|!%$+:\\\\-.=]+\\\\)|\\\\(,+\\\\)' } ],\n '#module_exports':\n [ { token: 'meta.declaration.exports.haskell',\n regex: '\\\\(',\n push:\n [ { token: 'meta.declaration.exports.haskell.end',\n regex: '\\\\)',\n next: 'pop' },\n { token: 'entity.name.function.haskell',\n regex: '\\\\b[a-z][a-zA-Z_\\']*' },\n { token: 'storage.type.haskell', regex: '\\\\b[A-Z][A-Za-z_\\']*' },\n { token: 'punctuation.separator.comma.haskell', regex: ',' },\n { include: '#infix_op' },\n { token: 'meta.other.unknown.haskell',\n regex: '\\\\(.*?\\\\)',\n comment: 'So named because I don\\'t know what to call this.' },\n { defaultToken: 'meta.declaration.exports.haskell.end' } ] } ],\n '#module_name':\n [ { token: 'support.other.module.haskell',\n regex: '[A-Z][A-Za-z._\\']*' } ],\n '#pragma':\n [ { token: 'meta.preprocessor.haskell',\n regex: '\\\\{-#',\n push:\n [ { token: 'meta.preprocessor.haskell',\n regex: '#-\\\\}',\n next: 'pop' },\n { token: 'keyword.other.preprocessor.haskell',\n regex: '\\\\b(?:LANGUAGE|UNPACK|INLINE)\\\\b' },\n { defaultToken: 'meta.preprocessor.haskell' } ] } ],\n '#type_signature':\n [ { token:\n [ 'meta.class-constraint.haskell',\n 'entity.other.inherited-class.haskell',\n 'meta.class-constraint.haskell',\n 'variable.other.generic-type.haskell',\n 'meta.class-constraint.haskell',\n 'keyword.other.big-arrow.haskell' ],\n regex: '(\\\\(\\\\s*)([A-Z][A-Za-z]*)(\\\\s+)([a-z][A-Za-z_\\']*)(\\\\)\\\\s*)(=>)' },\n { include: '#pragma' },\n { token: 'keyword.other.arrow.haskell', regex: '->' },\n { token: 'keyword.other.big-arrow.haskell', regex: '=>' },\n { token: 'support.type.prelude.haskell',\n regex: '\\\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\\\b' },\n { token: 'variable.other.generic-type.haskell',\n regex: '\\\\b[a-z][a-zA-Z0-9_\\']*\\\\b' },\n { token: 'storage.type.haskell',\n regex: '\\\\b[A-Z][a-zA-Z0-9_\\']*\\\\b' },\n { token: 'support.constant.unit.haskell', regex: '\\\\(\\\\)' },\n { include: '#comments' } ] };\n\n this.normalizeRules();\n};\n\nHaskellHighlightRules.metaData = { fileTypes: [ 'hs' ],\n keyEquivalent: '^~H',\n name: 'Haskell',\n scopeName: 'source.haskell' };\n\n\noop.inherits(HaskellHighlightRules, TextHighlightRules);\n\nexports.HaskellHighlightRules = HaskellHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/haskell\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/haskell_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HaskellHighlightRules = acequire(\"./haskell_highlight_rules\").HaskellHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = HaskellHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"--\";\n this.blockComment = null;\n this.$id = \"ace/mode/haskell\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/haxe_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\n\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar HaxeHighlightRules = function() {\n\n var keywords = (\n \"break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std\"\n );\n\n var buildinConstants = (\n \"null|true|false\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"constant.language\": buildinConstants\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({<]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}>]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(HaxeHighlightRules, TextHighlightRules);\n\nexports.HaxeHighlightRules = HaxeHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/haxe\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/haxe_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HaxeHighlightRules = acequire(\"./haxe_highlight_rules\").HaxeHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = HaxeHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n \n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/haxe\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/hjson_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar HjsonHighlightRules = function() {\n\n this.$rules = {\n start: [{\n include: \"#comments\"\n }, {\n include: \"#rootObject\"\n }, {\n include: \"#value\"\n }],\n \"#array\": [{\n token: \"paren.lparen\",\n regex: /\\[/,\n push: [{\n token: \"paren.rparen\",\n regex: /\\]/,\n next: \"pop\"\n }, {\n include: \"#value\"\n }, {\n include: \"#comments\"\n }, {\n token: \"text\",\n regex: /,|$/\n }, {\n token: \"invalid.illegal\",\n regex: /[^\\s\\]]/\n }, {\n defaultToken: \"array\"\n }]\n }],\n \"#comments\": [{\n token: [\n \"comment.punctuation\",\n \"comment.line\"\n ],\n regex: /(#)(.*$)/\n }, {\n token: \"comment.punctuation\",\n regex: /\\/\\*/,\n push: [{\n token: \"comment.punctuation\",\n regex: /\\*\\//,\n next: \"pop\"\n }, {\n defaultToken: \"comment.block\"\n }]\n }, {\n token: [\n \"comment.punctuation\",\n \"comment.line\"\n ],\n regex: /(\\/\\/)(.*$)/\n }],\n \"#constant\": [{\n token: \"constant\",\n regex: /\\b(?:true|false|null)\\b/\n }],\n \"#keyname\": [{\n token: \"keyword\",\n regex: /(?:[^,\\{\\[\\}\\]\\s]+|\"(?:[^\"\\\\]|\\\\.)*\")\\s*(?=:)/\n }],\n \"#mstring\": [{\n token: \"string\",\n regex: /'''/,\n push: [{\n token: \"string\",\n regex: /'''/,\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n \"#number\": [{\n token: \"constant.numeric\",\n regex: /-?(?:0|[1-9]\\d*)(?:(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)?/,\n comment: \"handles integer and decimal numbers\"\n }],\n \"#object\": [{\n token: \"paren.lparen\",\n regex: /\\{/,\n push: [{\n token: \"paren.rparen\",\n regex: /\\}/,\n next: \"pop\"\n }, {\n include: \"#keyname\"\n }, {\n include: \"#value\"\n }, {\n token: \"text\",\n regex: /:/\n }, {\n token: \"text\",\n regex: /,/\n }, {\n defaultToken: \"paren\"\n }]\n }],\n \"#rootObject\": [{\n token: \"paren\",\n regex: /(?=\\s*(?:[^,\\{\\[\\}\\]\\s]+|\"(?:[^\"\\\\]|\\\\.)*\")\\s*:)/,\n push: [{\n token: \"paren.rparen\",\n regex: /---none---/,\n next: \"pop\"\n }, {\n include: \"#keyname\"\n }, {\n include: \"#value\"\n }, {\n token: \"text\",\n regex: /:/\n }, {\n token: \"text\",\n regex: /,/\n }, {\n defaultToken: \"paren\"\n }]\n }],\n \"#string\": [{\n token: \"string\",\n regex: /\"/,\n push: [{\n token: \"string\",\n regex: /\"/,\n next: \"pop\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/\n }, {\n token: \"invalid.illegal\",\n regex: /\\\\./\n }, {\n defaultToken: \"string\"\n }]\n }],\n \"#ustring\": [{\n token: \"string\",\n regex: /\\b[^:,0-9\\-\\{\\[\\}\\]\\s].*$/\n }],\n \"#value\": [{\n include: \"#constant\"\n }, {\n include: \"#number\"\n }, {\n include: \"#string\"\n }, {\n include: \"#array\"\n }, {\n include: \"#object\"\n }, {\n include: \"#comments\"\n }, {\n include: \"#mstring\"\n }, {\n include: \"#ustring\"\n }]\n };\n\n this.normalizeRules();\n};\n\nHjsonHighlightRules.metaData = {\n fileTypes: [\"hjson\"],\n foldingStartMarker: \"(?x: # turn on extended mode\\n ^ # a line beginning with\\n \\\\s* # some optional space\\n [{\\\\[] # the start of an object or array\\n (?! # but not followed by\\n .* # whatever\\n [}\\\\]] # and the close of an object or array\\n ,? # an optional comma\\n \\\\s* # some optional space\\n $ # at the end of the line\\n )\\n | # ...or...\\n [{\\\\[] # the start of an object or array\\n \\\\s* # some optional space\\n $ # at the end of the line\\n )\",\n foldingStopMarker: \"(?x: # turn on extended mode\\n ^ # a line beginning with\\n \\\\s* # some optional space\\n [}\\\\]] # and the close of an object or array\\n )\",\n keyEquivalent: \"^~J\",\n name: \"Hjson\",\n scopeName: \"source.hjson\"\n};\n\n\noop.inherits(HjsonHighlightRules, TextHighlightRules);\n\nexports.HjsonHighlightRules = HjsonHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/hjson\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/hjson_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HjsonHighlightRules = acequire(\"./hjson_highlight_rules\").HjsonHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = HjsonHighlightRules;\n this.foldingRules = new FoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = { start: \"/*\", end: \"*/\" };\n this.$id = \"ace/mode/hjson\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/ini_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar escapeRe = \"\\\\\\\\(?:[\\\\\\\\0abtrn;#=:]|x[a-fA-F\\\\d]{4})\";\n\nvar IniHighlightRules = function() {\n this.$rules = {\n start: [{\n token: 'punctuation.definition.comment.ini',\n regex: '#.*',\n push_: [{\n token: 'comment.line.number-sign.ini',\n regex: '$|^',\n next: 'pop'\n }, {\n defaultToken: 'comment.line.number-sign.ini'\n }]\n }, {\n token: 'punctuation.definition.comment.ini',\n regex: ';.*',\n push_: [{\n token: 'comment.line.semicolon.ini',\n regex: '$|^',\n next: 'pop'\n }, {\n defaultToken: 'comment.line.semicolon.ini'\n }]\n }, {\n token: ['keyword.other.definition.ini', 'text', 'punctuation.separator.key-value.ini'],\n regex: '\\\\b([a-zA-Z0-9_.-]+)\\\\b(\\\\s*)(=)'\n }, {\n token: ['punctuation.definition.entity.ini', 'constant.section.group-title.ini', 'punctuation.definition.entity.ini'],\n regex: '^(\\\\[)(.*?)(\\\\])'\n }, {\n token: 'punctuation.definition.string.begin.ini',\n regex: \"'\",\n push: [{\n token: 'punctuation.definition.string.end.ini',\n regex: \"'\",\n next: 'pop'\n }, {\n token: \"constant.language.escape\",\n regex: escapeRe\n }, {\n defaultToken: 'string.quoted.single.ini'\n }]\n }, {\n token: 'punctuation.definition.string.begin.ini',\n regex: '\"',\n push: [{\n token: \"constant.language.escape\",\n regex: escapeRe\n }, {\n token: 'punctuation.definition.string.end.ini',\n regex: '\"',\n next: 'pop'\n }, {\n defaultToken: 'string.quoted.double.ini'\n }]\n }]\n };\n\n this.normalizeRules();\n};\n\nIniHighlightRules.metaData = {\n fileTypes: ['ini', 'conf'],\n keyEquivalent: '^~I',\n name: 'Ini',\n scopeName: 'source.ini'\n};\n\n\noop.inherits(IniHighlightRules, TextHighlightRules);\n\nexports.IniHighlightRules = IniHighlightRules;\n});\n\nace.define(\"ace/mode/folding/ini\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function() {\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /^\\s*\\[([^\\])]*)]\\s*(?:$|[;#])/;\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var re = this.foldingStartMarker;\n var line = session.getLine(row);\n \n var m = line.match(re);\n \n if (!m) return;\n \n var startName = m[1] + \".\";\n \n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n if (/^\\s*$/.test(line))\n continue;\n m = line.match(re);\n if (m && m[1].lastIndexOf(startName, 0) !== 0)\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/ini\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/ini_highlight_rules\",\"ace/mode/folding/ini\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar IniHighlightRules = acequire(\"./ini_highlight_rules\").IniHighlightRules;\nvar FoldMode = acequire(\"./folding/ini\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = IniHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \";\";\n this.blockComment = null;\n this.$id = \"ace/mode/ini\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/markdown_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\",\"ace/mode/html_highlight_rules\",\"ace/mode/css_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n\nvar escaped = function(ch) {\n return \"(?:[^\" + lang.escapeRegExp(ch) + \"\\\\\\\\]|\\\\\\\\.)*\";\n};\n\nfunction github_embed(tag, prefix) {\n return { // Github style block\n token : \"support.function\",\n regex : \"^\\\\s*```\" + tag + \"\\\\s*$\",\n push : prefix + \"start\"\n };\n}\n\nvar MarkdownHighlightRules = function() {\n HtmlHighlightRules.call(this);\n\n this.$rules[\"start\"].unshift({\n token : \"empty_line\",\n regex : '^$',\n next: \"allowBlock\"\n }, { // h1\n token: \"markup.heading.1\",\n regex: \"^=+(?=\\\\s*$)\"\n }, { // h2\n token: \"markup.heading.2\",\n regex: \"^\\\\-+(?=\\\\s*$)\"\n }, {\n token : function(value) {\n return \"markup.heading.\" + value.length;\n },\n regex : /^#{1,6}(?=\\s*[^ #]|\\s+#.)/,\n next : \"header\"\n },\n github_embed(\"(?:javascript|js)\", \"jscode-\"),\n github_embed(\"xml\", \"xmlcode-\"),\n github_embed(\"html\", \"htmlcode-\"),\n github_embed(\"css\", \"csscode-\"),\n { // Github style block\n token : \"support.function\",\n regex : \"^\\\\s*```\\\\s*\\\\S*(?:{.*?\\\\})?\\\\s*$\",\n next : \"githubblock\"\n }, { // block quote\n token : \"string.blockquote\",\n regex : \"^\\\\s*>\\\\s*(?:[*+-]|\\\\d+\\\\.)?\\\\s+\",\n next : \"blockquote\"\n }, { // HR * - _\n token : \"constant\",\n regex : \"^ {0,2}(?:(?: ?\\\\* ?){3,}|(?: ?\\\\- ?){3,}|(?: ?\\\\_ ?){3,})\\\\s*$\",\n next: \"allowBlock\"\n }, { // list\n token : \"markup.list\",\n regex : \"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",\n next : \"listblock-start\"\n }, {\n include : \"basic\"\n });\n\n this.addRules({\n \"basic\" : [{\n token : \"constant.language.escape\",\n regex : /\\\\[\\\\`*_{}\\[\\]()#+\\-.!]/\n }, { // code span `\n token : \"support.function\",\n regex : \"(`+)(.*?[^`])(\\\\1)\"\n }, { // reference\n token : [\"text\", \"constant\", \"text\", \"url\", \"string\", \"text\"],\n regex : \"^([ ]{0,3}\\\\[)([^\\\\]]+)(\\\\]:\\\\s*)([^ ]+)(\\\\s*(?:[\\\"][^\\\"]+[\\\"])?(\\\\s*))$\"\n }, { // link by reference\n token : [\"text\", \"string\", \"text\", \"constant\", \"text\"],\n regex : \"(\\\\[)(\" + escaped(\"]\") + \")(\\\\]\\\\s*\\\\[)(\"+ escaped(\"]\") + \")(\\\\])\"\n }, { // link by url\n token : [\"text\", \"string\", \"text\", \"markup.underline\", \"string\", \"text\"],\n regex : \"(\\\\[)(\" + // [\n escaped(\"]\") + // link text\n \")(\\\\]\\\\()\"+ // ](\n '((?:[^\\\\)\\\\s\\\\\\\\]|\\\\\\\\.|\\\\s(?=[^\"]))*)' + // href\n '(\\\\s*\"' + escaped('\"') + '\"\\\\s*)?' + // \"title\"\n \"(\\\\))\" // )\n }, { // strong ** __\n token : \"string.strong\",\n regex : \"([*]{2}|[_]{2}(?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"\n }, { // emphasis * _\n token : \"string.emphasis\",\n regex : \"([*]|[_](?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"\n }, { //\n token : [\"text\", \"url\", \"text\"],\n regex : \"(<)(\"+\n \"(?:https?|ftp|dict):[^'\\\">\\\\s]+\"+\n \"|\"+\n \"(?:mailto:)?[-.\\\\w]+\\\\@[-a-z0-9]+(?:\\\\.[-a-z0-9]+)*\\\\.[a-z]+\"+\n \")(>)\"\n }],\n \"allowBlock\": [\n {token : \"support.function\", regex : \"^ {4}.+\", next : \"allowBlock\"},\n {token : \"empty_line\", regex : '^$', next: \"allowBlock\"},\n {token : \"empty\", regex : \"\", next : \"start\"}\n ],\n\n \"header\" : [{\n regex: \"$\",\n next : \"start\"\n }, {\n include: \"basic\"\n }, {\n defaultToken : \"heading\"\n } ],\n\n \"listblock-start\" : [{\n token : \"support.variable\",\n regex : /(?:\\[[ x]\\])?/,\n next : \"listblock\"\n }],\n\n \"listblock\" : [ { // Lists only escape on completely blank lines.\n token : \"empty_line\",\n regex : \"^$\",\n next : \"start\"\n }, { // list\n token : \"markup.list\",\n regex : \"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",\n next : \"listblock-start\"\n }, {\n include : \"basic\", noEscape: true\n }, { // Github style block\n token : \"support.function\",\n regex : \"^\\\\s*```\\\\s*[a-zA-Z]*(?:{.*?\\\\})?\\\\s*$\",\n next : \"githubblock\"\n }, {\n defaultToken : \"list\" //do not use markup.list to allow stling leading `*` differntly\n } ],\n\n \"blockquote\" : [ { // Blockquotes only escape on blank lines.\n token : \"empty_line\",\n regex : \"^\\\\s*$\",\n next : \"start\"\n }, { // block quote\n token : \"string.blockquote\",\n regex : \"^\\\\s*>\\\\s*(?:[*+-]|\\\\d+\\\\.)?\\\\s+\",\n next : \"blockquote\"\n }, {\n include : \"basic\", noEscape: true\n }, {\n defaultToken : \"string.blockquote\"\n } ],\n\n \"githubblock\" : [ {\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"start\"\n }, {\n defaultToken : \"support.function\"\n } ]\n });\n\n this.embedRules(JavaScriptHighlightRules, \"jscode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.embedRules(HtmlHighlightRules, \"htmlcode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.embedRules(CssHighlightRules, \"csscode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.embedRules(XmlHighlightRules, \"xmlcode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.normalizeRules();\n};\noop.inherits(MarkdownHighlightRules, TextHighlightRules);\n\nexports.MarkdownHighlightRules = MarkdownHighlightRules;\n});\n\nace.define(\"ace/mode/scss_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ScssHighlightRules = function() {\n \n var properties = lang.arrayToMap( (function () {\n\n var browserPrefix = (\"-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-\").split(\"|\");\n \n var prefixProperties = (\"appearance|background-clip|background-inline-policy|background-origin|\" + \n \"background-size|binding|border-bottom-colors|border-left-colors|\" + \n \"border-right-colors|border-top-colors|border-end|border-end-color|\" + \n \"border-end-style|border-end-width|border-image|border-start|\" + \n \"border-start-color|border-start-style|border-start-width|box-align|\" + \n \"box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|\" + \n \"box-pack|box-sizing|column-count|column-gap|column-width|column-rule|\" + \n \"column-rule-width|column-rule-style|column-rule-color|float-edge|\" + \n \"font-feature-settings|font-language-override|force-broken-image-icon|\" + \n \"image-region|margin-end|margin-start|opacity|outline|outline-color|\" + \n \"outline-offset|outline-radius|outline-radius-bottomleft|\" + \n \"outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|\" + \n \"outline-style|outline-width|padding-end|padding-start|stack-sizing|\" + \n \"tab-size|text-blink|text-decoration-color|text-decoration-line|\" + \n \"text-decoration-style|transform|transform-origin|transition|\" + \n \"transition-delay|transition-duration|transition-property|\" + \n \"transition-timing-function|user-focus|user-input|user-modify|user-select|\" +\n \"window-shadow|border-radius\").split(\"|\");\n \n var properties = (\"azimuth|background-attachment|background-color|background-image|\" +\n \"background-position|background-repeat|background|border-bottom-color|\" +\n \"border-bottom-style|border-bottom-width|border-bottom|border-collapse|\" +\n \"border-color|border-left-color|border-left-style|border-left-width|\" +\n \"border-left|border-right-color|border-right-style|border-right-width|\" +\n \"border-right|border-spacing|border-style|border-top-color|\" +\n \"border-top-style|border-top-width|border-top|border-width|border|bottom|\" +\n \"box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|\" +\n \"counter-reset|cue-after|cue-before|cue|cursor|direction|display|\" +\n \"elevation|empty-cells|float|font-family|font-size-adjust|font-size|\" +\n \"font-stretch|font-style|font-variant|font-weight|font|height|left|\" +\n \"letter-spacing|line-height|list-style-image|list-style-position|\" +\n \"list-style-type|list-style|margin-bottom|margin-left|margin-right|\" +\n \"margin-top|marker-offset|margin|marks|max-height|max-width|min-height|\" +\n \"min-width|opacity|orphans|outline-color|\" +\n \"outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|\" +\n \"padding-left|padding-right|padding-top|padding|page-break-after|\" +\n \"page-break-before|page-break-inside|page|pause-after|pause-before|\" +\n \"pause|pitch-range|pitch|play-during|position|quotes|richness|right|\" +\n \"size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|\" +\n \"stress|table-layout|text-align|text-decoration|text-indent|\" +\n \"text-shadow|text-transform|top|unicode-bidi|vertical-align|\" +\n \"visibility|voice-family|volume|white-space|widows|width|word-spacing|\" +\n \"z-index\").split(\"|\");\n var ret = [];\n for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\\\+|\\\\$|\\\\+|\\\\*\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n caseInsensitive: true\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ]\n };\n};\n\noop.inherits(ScssHighlightRules, TextHighlightRules);\n\nexports.ScssHighlightRules = ScssHighlightRules;\n\n});\n\nace.define(\"ace/mode/less_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\",\"ace/mode/css_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar CssHighlightRules = acequire('./css_highlight_rules');\n\nvar LessHighlightRules = function() {\n\n\n var keywordList = \"@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|\" + \n \"@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|\" +\n \"or|and|when|not\";\n\n var keywords = keywordList.split('|');\n\n var properties = CssHighlightRules.supportType.split('|');\n\n var keywordMapper = this.createKeywordMapper({\n \"support.constant\": CssHighlightRules.supportConstant,\n \"keyword\": keywordList,\n \"support.constant.color\": CssHighlightRules.supportConstantColor,\n \"support.constant.fonts\": CssHighlightRules.supportConstantFonts\n }, \"identifier\", true); \n\n var numRe = \"\\\\-?(?:(?:[0-9]+)|(?:[0-9]*\\\\.[0-9]+))\";\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : [\"support.function\", \"paren.lparen\", \"string\", \"paren.rparen\"],\n regex : \"(url)(\\\\()(.*)(\\\\))\"\n }, {\n token : [\"support.function\", \"paren.lparen\"],\n regex : \"(:extend|[a-z0-9_\\\\-]+)(\\\\()\"\n }, {\n token : function(value) {\n if (keywords.indexOf(value.toLowerCase()) > -1)\n return \"keyword\";\n else\n return \"variable\";\n },\n regex : \"[@\\\\$][a-z0-9_\\\\-@\\\\$]*\\\\b\"\n }, {\n token : \"variable\",\n regex : \"[@\\\\$]\\\\{[a-z0-9_\\\\-@\\\\$]*\\\\}\"\n }, {\n token : function(first, second) {\n if(properties.indexOf(first.toLowerCase()) > -1) {\n return [\"support.type.property\", \"text\"];\n }\n else {\n return [\"support.type.unknownProperty\", \"text\"];\n }\n },\n regex : \"([a-z0-9-_]+)(\\\\s*:)\"\n }, {\n token : \"keyword\",\n regex : \"&\" // special case - always treat as keyword\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[@a-z_][@a-z0-9_\\\\-]*\"\n }, {\n token: \"variable.language\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"variable.language\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"variable.language\",\n regex: \":[a-z_][a-z0-9-_]*\"\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n token : \"keyword.operator\",\n regex : \"<|>|<=|>=|=|!=|-|%|\\\\+|\\\\*\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n caseInsensitive: true\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n this.normalizeRules();\n};\n\noop.inherits(LessHighlightRules, TextHighlightRules);\n\nexports.LessHighlightRules = LessHighlightRules;\n\n});\n\nace.define(\"ace/mode/coffee_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n oop.inherits(CoffeeHighlightRules, TextHighlightRules);\n\n function CoffeeHighlightRules() {\n var identifier = \"[$A-Za-z_\\\\x7f-\\\\uffff][$\\\\w\\\\x7f-\\\\uffff]*\";\n\n var keywords = (\n \"this|throw|then|try|typeof|super|switch|return|break|by|continue|\" +\n \"catch|class|in|instanceof|is|isnt|if|else|extends|for|own|\" +\n \"finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|\" +\n \"or|on|unless|until|and|yes\"\n );\n\n var langConstant = (\n \"true|false|null|undefined|NaN|Infinity\"\n );\n\n var illegal = (\n \"case|const|default|function|var|void|with|enum|export|implements|\" +\n \"interface|let|package|private|protected|public|static|yield\"\n );\n\n var supportClass = (\n \"Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" +\n \"SyntaxError|TypeError|URIError|\" +\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray\"\n );\n\n var supportFunction = (\n \"Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|\" +\n \"encodeURIComponent|decodeURI|decodeURIComponent|String|\"\n );\n\n var variableLanguage = (\n \"window|arguments|prototype|document\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": langConstant,\n \"invalid.illegal\": illegal,\n \"language.support.class\": supportClass,\n \"language.support.function\": supportFunction,\n \"variable.language\": variableLanguage\n }, \"identifier\");\n\n var functionRule = {\n token: [\"paren.lparen\", \"variable.parameter\", \"paren.rparen\", \"text\", \"storage.type\"],\n regex: /(?:(\\()((?:\"[^\")]*?\"|'[^')]*?'|\\/[^\\/)]*?\\/|[^()\"'\\/])*?)(\\))(\\s*))?([\\-=]>)/.source\n };\n\n var stringEscape = /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;\n\n this.$rules = {\n start : [\n {\n token : \"constant.numeric\",\n regex : \"(?:0x[\\\\da-fA-F]+|(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?)\"\n }, {\n stateName: \"qdoc\",\n token : \"string\", regex : \"'''\", next : [\n {token : \"string\", regex : \"'''\", next : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"qqdoc\",\n token : \"string\",\n regex : '\"\"\"',\n next : [\n {token : \"string\", regex : '\"\"\"', next : \"start\"},\n {token : \"paren.string\", regex : '#{', push : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"qstring\",\n token : \"string\", regex : \"'\", next : [\n {token : \"string\", regex : \"'\", next : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"qqstring\",\n token : \"string.start\", regex : '\"', next : [\n {token : \"string.end\", regex : '\"', next : \"start\"},\n {token : \"paren.string\", regex : '#{', push : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n stateName: \"js\",\n token : \"string\", regex : \"`\", next : [\n {token : \"string\", regex : \"`\", next : \"start\"},\n {token : \"constant.language.escape\", regex : stringEscape},\n {defaultToken: \"string\"}\n ]\n }, {\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren\";\n }\n if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift() || \"\";\n if (this.next.indexOf(\"string\") != -1)\n return \"paren.string\";\n }\n return \"paren\";\n }\n }, {\n token : \"string.regex\",\n regex : \"///\",\n next : \"heregex\"\n }, {\n token : \"string.regex\",\n regex : /(?:\\/(?![\\s=])[^[\\/\\n\\\\]*(?:(?:\\\\[\\s\\S]|\\[[^\\]\\n\\\\]*(?:\\\\[\\s\\S][^\\]\\n\\\\]*)*])[^[\\/\\n\\\\]*)*\\/)(?:[imgy]{0,4})(?!\\w)/\n }, {\n token : \"comment\",\n regex : \"###(?!#)\",\n next : \"comment\"\n }, {\n token : \"comment\",\n regex : \"#.*\"\n }, {\n token : [\"punctuation.operator\", \"text\", \"identifier\"],\n regex : \"(\\\\.)(\\\\s*)(\" + illegal + \")\"\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\.{1,3}\"\n }, {\n token : [\"keyword\", \"text\", \"language.support.class\",\n \"text\", \"keyword\", \"text\", \"language.support.class\"],\n regex : \"(class)(\\\\s+)(\" + identifier + \")(?:(\\\\s+)(extends)(\\\\s+)(\" + identifier + \"))?\"\n }, {\n token : [\"entity.name.function\", \"text\", \"keyword.operator\", \"text\"].concat(functionRule.token),\n regex : \"(\" + identifier + \")(\\\\s*)([=:])(\\\\s*)\" + functionRule.regex\n }, \n functionRule, \n {\n token : \"variable\",\n regex : \"@(?:\" + identifier + \")?\"\n }, {\n token: keywordMapper,\n regex : identifier\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\,|\\\\.\"\n }, {\n token : \"storage.type\",\n regex : \"[\\\\-=]>\"\n }, {\n token : \"keyword.operator\",\n regex : \"(?:[-+*/%<>&|^!?=]=|>>>=?|\\\\-\\\\-|\\\\+\\\\+|::|&&=|\\\\|\\\\|=|<<=|>>=|\\\\?\\\\.|\\\\.{2,3}|[!*+-=><])\"\n }, {\n token : \"paren.lparen\",\n regex : \"[({[]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]})]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }],\n\n\n heregex : [{\n token : \"string.regex\",\n regex : '.*?///[imgy]{0,4}',\n next : \"start\"\n }, {\n token : \"comment.regex\",\n regex : \"\\\\s+(?:#.*)?\"\n }, {\n token : \"string.regex\",\n regex : \"\\\\S+\"\n }],\n\n comment : [{\n token : \"comment\",\n regex : '###',\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }]\n };\n this.normalizeRules();\n }\n\n exports.CoffeeHighlightRules = CoffeeHighlightRules;\n});\n\nace.define(\"ace/mode/jade_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\",\"ace/mode/markdown_highlight_rules\",\"ace/mode/scss_highlight_rules\",\"ace/mode/less_highlight_rules\",\"ace/mode/coffee_highlight_rules\",\"ace/mode/javascript_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar MarkdownHighlightRules = acequire(\"./markdown_highlight_rules\").MarkdownHighlightRules;\nvar SassHighlightRules = acequire(\"./scss_highlight_rules\").ScssHighlightRules;\nvar LessHighlightRules = acequire(\"./less_highlight_rules\").LessHighlightRules;\nvar CoffeeHighlightRules = acequire(\"./coffee_highlight_rules\").CoffeeHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n\nfunction mixin_embed(tag, prefix) {\n return { \n token : \"entity.name.function.jade\",\n regex : \"^\\\\s*\\\\:\" + tag,\n next : prefix + \"start\"\n };\n}\n\nvar JadeHighlightRules = function() {\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-6][0-7]?|\" + // oct\n \"37[0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = \n {\n \"start\": [\n {\n token: \"keyword.control.import.include.jade\",\n regex: \"\\\\s*\\\\binclude\\\\b\"\n },\n {\n token: \"keyword.other.doctype.jade\",\n regex: \"^!!!\\\\s*(?:[a-zA-Z0-9-_]+)?\"\n },\n {\n onMatch: function(value, currentState, stack) {\n stack.unshift(this.next, value.length - 2, currentState);\n return \"comment\";\n },\n regex: /^\\s*\\/\\//,\n next: \"comment_block\"\n },\n mixin_embed(\"markdown\", \"markdown-\"),\n mixin_embed(\"sass\", \"sass-\"),\n mixin_embed(\"less\", \"less-\"),\n mixin_embed(\"coffee\", \"coffee-\"),\n {\n token: [ \"storage.type.function.jade\",\n \"entity.name.function.jade\",\n \"punctuation.definition.parameters.begin.jade\",\n \"variable.parameter.function.jade\",\n \"punctuation.definition.parameters.end.jade\"\n ],\n regex: \"^(\\\\s*mixin)( [\\\\w\\\\-]+)(\\\\s*\\\\()(.*?)(\\\\))\"\n },\n {\n token: [ \"storage.type.function.jade\", \"entity.name.function.jade\"],\n regex: \"^(\\\\s*mixin)( [\\\\w\\\\-]+)\"\n },\n {\n token: \"source.js.embedded.jade\",\n regex: \"^\\\\s*(?:-|=|!=)\",\n next: \"js-start\"\n },\n {\n token: \"string.interpolated.jade\",\n regex: \"[#!]\\\\{[^\\\\}]+\\\\}\"\n },\n {\n token: \"meta.tag.any.jade\",\n regex: /^\\s*(?!\\w+:)(?:[\\w-]+|(?=\\.|#)])/,\n next: \"tag_single\"\n },\n {\n token: \"suport.type.attribute.id.jade\",\n regex: \"#\\\\w+\"\n },\n {\n token: \"suport.type.attribute.class.jade\",\n regex: \"\\\\.\\\\w+\"\n },\n {\n token: \"punctuation\",\n regex: \"\\\\s*(?:\\\\()\",\n next: \"tag_attributes\"\n }\n ],\n \"comment_block\": [\n {regex: /^\\s*(?:\\/\\/)?/, onMatch: function(value, currentState, stack) {\n if (value.length <= stack[1]) {\n if (value.slice(-1) == \"/\") {\n stack[1] = value.length - 2;\n this.next = \"\";\n return \"comment\";\n }\n stack.shift();\n stack.shift();\n this.next = stack.shift();\n return \"text\";\n } else {\n this.next = \"\";\n return \"comment\";\n }\n }, next: \"start\"},\n {defaultToken: \"comment\"}\n ],\n \"tag_single\": [\n {\n token: \"entity.other.attribute-name.class.jade\",\n regex: \"\\\\.[\\\\w-]+\"\n },\n {\n token: \"entity.other.attribute-name.id.jade\",\n regex: \"#[\\\\w-]+\"\n },\n {\n token: [\"text\", \"punctuation\"],\n regex: \"($)|((?!\\\\.|#|=|-))\",\n next: \"start\"\n }\n ],\n \"tag_attributes\": [ \n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, \n {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n },\n {\n token: [\"entity.other.attribute-name.jade\", \"punctuation\"],\n regex: \"([a-zA-Z:\\\\.-]+)(=)?\",\n next: \"attribute_strings\"\n },\n {\n token: \"punctuation\",\n regex: \"\\\\)\",\n next: \"start\"\n }\n ],\n \"attribute_strings\": [\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, \n {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n },\n {\n token : \"string\",\n regex : '(?=\\\\S)',\n next : \"tag_attributes\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : '[^\"\\\\\\\\]+'\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"tag_attributes\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"[^'\\\\\\\\]+\"\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"tag_attributes\"\n }\n ]\n};\n\n this.embedRules(JavaScriptHighlightRules, \"js-\", [{\n token: \"text\",\n regex: \".$\",\n next: \"start\"\n }]);\n};\n\noop.inherits(JadeHighlightRules, TextHighlightRules);\n\nexports.JadeHighlightRules = JadeHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jade\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jade_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JadeHighlightRules = acequire(\"./jade_highlight_rules\").JadeHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JadeHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() { \n\tthis.lineCommentStart = \"//\";\n this.$id = \"ace/mode/jade\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/java_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar JavaHighlightRules = function() {\n var keywords = (\n \"abstract|continue|for|new|switch|\" +\n \"assert|default|goto|package|synchronized|\" +\n \"boolean|do|if|private|this|\" +\n \"break|double|implements|protected|throw|\" +\n \"byte|else|import|public|throws|\" +\n \"case|enum|instanceof|return|transient|\" +\n \"catch|extends|int|short|try|\" +\n \"char|final|interface|static|void|\" +\n \"class|finally|long|strictfp|volatile|\" +\n \"const|float|native|super|while\"\n );\n\n var buildinConstants = (\"null|Infinity|NaN|undefined\");\n\n\n var langClasses = (\n \"AbstractMethodError|AssertionError|ClassCircularityError|\"+\n \"ClassFormatError|Deprecated|EnumConstantNotPresentException|\"+\n \"ExceptionInInitializerError|IllegalAccessError|\"+\n \"IllegalThreadStateException|InstantiationError|InternalError|\"+\n \"NegativeArraySizeException|NoSuchFieldError|Override|Process|\"+\n \"ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|\"+\n \"SuppressWarnings|TypeNotPresentException|UnknownError|\"+\n \"UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|\"+\n \"InstantiationException|IndexOutOfBoundsException|\"+\n \"ArrayIndexOutOfBoundsException|CloneNotSupportedException|\"+\n \"NoSuchFieldException|IllegalArgumentException|NumberFormatException|\"+\n \"SecurityException|Void|InheritableThreadLocal|IllegalStateException|\"+\n \"InterruptedException|NoSuchMethodException|IllegalAccessException|\"+\n \"UnsupportedOperationException|Enum|StrictMath|Package|Compiler|\"+\n \"Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|\"+\n \"NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|\"+\n \"NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|\"+\n \"Character|Boolean|StackTraceElement|Appendable|StringBuffer|\"+\n \"Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|\"+\n \"StackOverflowError|OutOfMemoryError|VirtualMachineError|\"+\n \"ArrayStoreException|ClassCastException|LinkageError|\"+\n \"NoClassDefFoundError|ClassNotFoundException|RuntimeException|\"+\n \"Exception|ThreadDeath|Error|Throwable|System|ClassLoader|\"+\n \"Cloneable|Class|CharSequence|Comparable|String|Object\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": langClasses\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // hex\n regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\\b/\n }, {\n token : \"constant.numeric\", // float\n regex : /[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?[LlSsDdFfYy]?\\b/\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(JavaHighlightRules, TextHighlightRules);\n\nexports.JavaHighlightRules = JavaHighlightRules;\n});\n\nace.define(\"ace/mode/java\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript\",\"ace/mode/java_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar JavaHighlightRules = acequire(\"./java_highlight_rules\").JavaHighlightRules;\n\nvar Mode = function() {\n JavaScriptMode.call(this);\n this.HighlightRules = JavaHighlightRules;\n};\noop.inherits(Mode, JavaScriptMode);\n\n(function() {\n \n this.createWorker = function(session) {\n return null;\n };\n\n this.$id = \"ace/mode/java\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar JsonHighlightRules = function() {\n this.$rules = {\n \"start\" : [\n {\n token : \"variable\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token : \"string\", // single line\n regex : '\"',\n next : \"string\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : \"text\", // single quoted strings are not allowed\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"comment\", // comments are not allowed, but who cares?\n regex : \"\\\\/\\\\/.*$\"\n }, {\n token : \"comment.start\", // comments are not allowed, but who cares?\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"string\" : [\n {\n token : \"constant.language.escape\",\n regex : /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment.end\", // comments are not allowed, but who cares?\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n \n};\n\noop.inherits(JsonHighlightRules, TextHighlightRules);\n\nexports.JsonHighlightRules = JsonHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HighlightRules = acequire(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\nvar Mode = function() {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/json\"), \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n\n this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/java_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar JavaHighlightRules = function() {\n var keywords = (\n \"abstract|continue|for|new|switch|\" +\n \"assert|default|goto|package|synchronized|\" +\n \"boolean|do|if|private|this|\" +\n \"break|double|implements|protected|throw|\" +\n \"byte|else|import|public|throws|\" +\n \"case|enum|instanceof|return|transient|\" +\n \"catch|extends|int|short|try|\" +\n \"char|final|interface|static|void|\" +\n \"class|finally|long|strictfp|volatile|\" +\n \"const|float|native|super|while\"\n );\n\n var buildinConstants = (\"null|Infinity|NaN|undefined\");\n\n\n var langClasses = (\n \"AbstractMethodError|AssertionError|ClassCircularityError|\"+\n \"ClassFormatError|Deprecated|EnumConstantNotPresentException|\"+\n \"ExceptionInInitializerError|IllegalAccessError|\"+\n \"IllegalThreadStateException|InstantiationError|InternalError|\"+\n \"NegativeArraySizeException|NoSuchFieldError|Override|Process|\"+\n \"ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|\"+\n \"SuppressWarnings|TypeNotPresentException|UnknownError|\"+\n \"UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|\"+\n \"InstantiationException|IndexOutOfBoundsException|\"+\n \"ArrayIndexOutOfBoundsException|CloneNotSupportedException|\"+\n \"NoSuchFieldException|IllegalArgumentException|NumberFormatException|\"+\n \"SecurityException|Void|InheritableThreadLocal|IllegalStateException|\"+\n \"InterruptedException|NoSuchMethodException|IllegalAccessException|\"+\n \"UnsupportedOperationException|Enum|StrictMath|Package|Compiler|\"+\n \"Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|\"+\n \"NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|\"+\n \"NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|\"+\n \"Character|Boolean|StackTraceElement|Appendable|StringBuffer|\"+\n \"Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|\"+\n \"StackOverflowError|OutOfMemoryError|VirtualMachineError|\"+\n \"ArrayStoreException|ClassCastException|LinkageError|\"+\n \"NoClassDefFoundError|ClassNotFoundException|RuntimeException|\"+\n \"Exception|ThreadDeath|Error|Throwable|System|ClassLoader|\"+\n \"Cloneable|Class|CharSequence|Comparable|String|Object\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": langClasses\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // hex\n regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\\b/\n }, {\n token : \"constant.numeric\", // float\n regex : /[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?[LlSsDdFfYy]?\\b/\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(JavaHighlightRules, TextHighlightRules);\n\nexports.JavaHighlightRules = JavaHighlightRules;\n});\n\nace.define(\"ace/mode/jsp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html_highlight_rules\",\"ace/mode/java_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar JavaHighlightRules = acequire(\"./java_highlight_rules\").JavaHighlightRules;\n\nvar JspHighlightRules = function() {\n HtmlHighlightRules.call(this);\n\n var builtinVariables = 'request|response|out|session|' +\n 'application|config|pageContext|page|Exception';\n\n var keywords = 'page|include|taglib';\n\n var startRules = [\n {\n token : \"comment\",\n regex : \"<%--\",\n push : \"jsp-dcomment\"\n }, {\n token : \"meta.tag\", // jsp open tag\n regex : \"<%@?|<%=?|<%!?|]+>\",\n push : \"jsp-start\"\n }\n ];\n\n var endRules = [\n {\n token : \"meta.tag\", // jsp close tag\n regex : \"%>|<\\\\/jsp:[^>]+>\",\n next : \"pop\"\n }, {\n token: \"variable.language\",\n regex : builtinVariables\n }, {\n token: \"keyword\",\n regex : keywords\n }\n ];\n\n for (var key in this.$rules)\n this.$rules[key].unshift.apply(this.$rules[key], startRules);\n\n this.embedRules(JavaHighlightRules, \"jsp-\", endRules, [\"start\"]);\n\n this.addRules({\n \"jsp-dcomment\" : [{\n token : \"comment\",\n regex : \".*?--%>\",\n next : \"pop\"\n }]\n });\n\n this.normalizeRules();\n};\n\noop.inherits(JspHighlightRules, HtmlHighlightRules);\n\nexports.JspHighlightRules = JspHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsp_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JspHighlightRules = acequire(\"./jsp_highlight_rules\").JspHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JspHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.$id = \"ace/mode/jsp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/jsx_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar JsxHighlightRules = function() {\n var keywords = lang.arrayToMap(\n (\"break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|\" +\n \"if|throw|\" +\n \"delete|in|try|\" +\n \"class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|\" +\n \"number|int|string|boolean|variant|\" +\n \"log|assert\").split(\"|\")\n );\n \n var buildinConstants = lang.arrayToMap(\n (\"null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined\").split(\"|\")\n );\n \n var reserved = lang.arrayToMap(\n (\"debugger|with|\" +\n \"const|export|\" +\n \"let|private|public|yield|protected|\" +\n \"extern|native|as|operator|__fake__|__readonly__\").split(\"|\")\n );\n \n var identifierRe = \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\";\n \n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : [\n \"storage.type\",\n \"text\",\n \"entity.name.function\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")\"\n }, {\n token : function(value) {\n if (value == \"this\")\n return \"variable.language\";\n else if (value == \"function\")\n return \"storage.type\";\n else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value))\n return \"keyword\";\n else if (buildinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value))\n return \"language.support.class\";\n else\n return \"identifier\";\n },\n regex : identifierRe\n }, {\n token : \"keyword.operator\",\n regex : \"!|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({<]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}>]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n \n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(JsxHighlightRules, TextHighlightRules);\n\nexports.JsxHighlightRules = JsxHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/jsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/jsx_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JsxHighlightRules = acequire(\"./jsx_highlight_rules\").JsxHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nfunction Mode() {\n this.HighlightRules = JsxHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n}\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/jsx\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/julia_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar JuliaHighlightRules = function() {\n\n this.$rules = { start: \n [ { include: '#function_decl' },\n { include: '#function_call' },\n { include: '#type_decl' },\n { include: '#keyword' },\n { include: '#operator' },\n { include: '#number' },\n { include: '#string' },\n { include: '#comment' } ],\n '#bracket': \n [ { token: 'keyword.bracket.julia',\n regex: '\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}|,' } ],\n '#comment': \n [ { token: \n [ 'punctuation.definition.comment.julia',\n 'comment.line.number-sign.julia' ],\n regex: '(#)(?!\\\\{)(.*$)'} ],\n '#function_call': \n [ { token: [ 'support.function.julia', 'text' ],\n regex: '([a-zA-Z0-9_]+!?)([\\\\w\\\\xff-\\\\u218e\\\\u2455-\\\\uffff]*\\\\()'} ],\n '#function_decl': \n [ { token: [ 'keyword.other.julia', 'meta.function.julia',\n 'entity.name.function.julia', 'meta.function.julia','text' ],\n regex: '(function|macro)(\\\\s*)([a-zA-Z0-9_\\\\{]+!?)([\\\\w\\\\xff-\\\\u218e\\\\u2455-\\\\uffff]*)([(\\\\\\\\{])'} ],\n '#keyword':\n [ { token: 'keyword.other.julia',\n regex: '\\\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\\\b' },\n { token: 'keyword.control.julia',\n regex: '\\\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\\\b' },\n { token: 'storage.modifier.variable.julia',\n regex: '\\\\b(?:global|local|const|export|import|importall|using)\\\\b' },\n { token: 'variable.macro.julia', regex: '@[\\\\w\\\\xff-\\\\u218e\\\\u2455-\\\\uffff]+\\\\b' } ],\n '#number': \n [ { token: 'constant.numeric.julia',\n regex: '\\\\b0(?:x|X)[0-9a-fA-F]*|(?:\\\\b[0-9]+\\\\.?[0-9]*|\\\\.[0-9]+)(?:(?:e|E)(?:\\\\+|-)?[0-9]*)?(?:im)?|\\\\bInf(?:32)?\\\\b|\\\\bNaN(?:32)?\\\\b|\\\\btrue\\\\b|\\\\bfalse\\\\b' } ],\n '#operator': \n [ { token: 'keyword.operator.update.julia',\n regex: '=|:=|\\\\+=|-=|\\\\*=|/=|//=|\\\\.//=|\\\\.\\\\*=|\\\\\\\\=|\\\\.\\\\\\\\=|^=|\\\\.^=|%=|\\\\|=|&=|\\\\$=|<<=|>>=' },\n { token: 'keyword.operator.ternary.julia', regex: '\\\\?|:' },\n { token: 'keyword.operator.boolean.julia',\n regex: '\\\\|\\\\||&&|!' },\n { token: 'keyword.operator.arrow.julia', regex: '->|<-|-->' },\n { token: 'keyword.operator.relation.julia',\n regex: '>|<|>=|<=|==|!=|\\\\.>|\\\\.<|\\\\.>=|\\\\.>=|\\\\.==|\\\\.!=|\\\\.=|\\\\.!|<:|:>' },\n { token: 'keyword.operator.range.julia', regex: ':' },\n { token: 'keyword.operator.shift.julia', regex: '<<|>>' },\n { token: 'keyword.operator.bitwise.julia', regex: '\\\\||\\\\&|~' },\n { token: 'keyword.operator.arithmetic.julia',\n regex: '\\\\+|-|\\\\*|\\\\.\\\\*|/|\\\\./|//|\\\\.//|%|\\\\.%|\\\\\\\\|\\\\.\\\\\\\\|\\\\^|\\\\.\\\\^' },\n { token: 'keyword.operator.isa.julia', regex: '::' },\n { token: 'keyword.operator.dots.julia',\n regex: '\\\\.(?=[a-zA-Z])|\\\\.\\\\.+' },\n { token: 'keyword.operator.interpolation.julia',\n regex: '\\\\$#?(?=.)' },\n { token: [ 'variable', 'keyword.operator.transposed-variable.julia' ],\n regex: '([\\\\w\\\\xff-\\\\u218e\\\\u2455-\\\\uffff]+)((?:\\'|\\\\.\\')*\\\\.?\\')' },\n { token: 'text',\n regex: '\\\\[|\\\\('},\n { token: [ 'text', 'keyword.operator.transposed-matrix.julia' ],\n regex: \"([\\\\]\\\\)])((?:'|\\\\.')*\\\\.?')\"} ],\n '#string': \n [ { token: 'punctuation.definition.string.begin.julia',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.string.end.julia',\n regex: '\\'',\n next: 'pop' },\n { include: '#string_escaped_char' },\n { defaultToken: 'string.quoted.single.julia' } ] },\n { token: 'punctuation.definition.string.begin.julia',\n regex: '\"',\n push: \n [ { token: 'punctuation.definition.string.end.julia',\n regex: '\"',\n next: 'pop' },\n { include: '#string_escaped_char' },\n { defaultToken: 'string.quoted.double.julia' } ] },\n { token: 'punctuation.definition.string.begin.julia',\n regex: '\\\\b[\\\\w\\\\xff-\\\\u218e\\\\u2455-\\\\uffff]+\"',\n push: \n [ { token: 'punctuation.definition.string.end.julia',\n regex: '\"[\\\\w\\\\xff-\\\\u218e\\\\u2455-\\\\uffff]*',\n next: 'pop' },\n { include: '#string_custom_escaped_char' },\n { defaultToken: 'string.quoted.custom-double.julia' } ] },\n { token: 'punctuation.definition.string.begin.julia',\n regex: '`',\n push: \n [ { token: 'punctuation.definition.string.end.julia',\n regex: '`',\n next: 'pop' },\n { include: '#string_escaped_char' },\n { defaultToken: 'string.quoted.backtick.julia' } ] } ],\n '#string_custom_escaped_char': [ { token: 'constant.character.escape.julia', regex: '\\\\\\\\\"' } ],\n '#string_escaped_char': \n [ { token: 'constant.character.escape.julia',\n regex: '\\\\\\\\(?:\\\\\\\\|[0-3]\\\\d{,2}|[4-7]\\\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)' } ],\n '#type_decl': \n [ { token: \n [ 'keyword.control.type.julia',\n 'meta.type.julia',\n 'entity.name.type.julia',\n 'entity.other.inherited-class.julia',\n 'punctuation.separator.inheritance.julia',\n 'entity.other.inherited-class.julia' ],\n regex: '(type|immutable)(\\\\s+)([a-zA-Z0-9_]+)(?:(\\\\s*)(<:)(\\\\s*[.a-zA-Z0-9_:]+))?' },\n { token: [ 'other.typed-variable.julia', 'support.type.julia' ],\n regex: '([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)' } ] };\n \n this.normalizeRules();\n};\n\nJuliaHighlightRules.metaData = { fileTypes: [ 'jl' ],\n firstLineMatch: '^#!.*\\\\bjulia\\\\s*$',\n foldingStartMarker: '^\\\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\\\b(?!.*\\\\bend\\\\b).*$',\n foldingStopMarker: '^\\\\s*(?:end)\\\\b.*$',\n name: 'Julia',\n scopeName: 'source.julia' };\n\n\noop.inherits(JuliaHighlightRules, TextHighlightRules);\n\nexports.JuliaHighlightRules = JuliaHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/julia\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/julia_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JuliaHighlightRules = acequire(\"./julia_highlight_rules\").JuliaHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JuliaHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"#\";\n this.blockComment = \"\";\n this.$id = \"ace/mode/julia\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/kotlin_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar KotlinHighlightRules = function() {\n\n this.$rules = {\n start: [{\n include: \"#comments\"\n }, {\n token: [\n \"text\",\n \"keyword.other.kotlin\",\n \"text\",\n \"entity.name.package.kotlin\",\n \"text\"\n ],\n regex: /^(\\s*)(package)\\b(?:(\\s*)([^ ;$]+)(\\s*))?/\n }, {\n include: \"#imports\"\n }, {\n include: \"#statements\"\n }],\n \"#classes\": [{\n token: \"text\",\n regex: /(?=\\s*(?:companion|class|object|interface))/,\n push: [{\n token: \"text\",\n regex: /}|(?=$)/,\n next: \"pop\"\n }, {\n token: [\"keyword.other.kotlin\", \"text\"],\n regex: /\\b((?:companion\\s*)?)(class|object|interface)\\b/,\n push: [{\n token: \"text\",\n regex: /(?=<|{|\\(|:)/,\n next: \"pop\"\n }, {\n token: \"keyword.other.kotlin\",\n regex: /\\bobject\\b/\n }, {\n token: \"entity.name.type.class.kotlin\",\n regex: /\\w+/\n }]\n }, {\n token: \"text\",\n regex: //,\n next: \"pop\"\n }, {\n include: \"#generics\"\n }]\n }, {\n token: \"text\",\n regex: /\\(/,\n push: [{\n token: \"text\",\n regex: /\\)/,\n next: \"pop\"\n }, {\n include: \"#parameters\"\n }]\n }, {\n token: \"keyword.operator.declaration.kotlin\",\n regex: /:/,\n push: [{\n token: \"text\",\n regex: /(?={|$)/,\n next: \"pop\"\n }, {\n token: \"entity.other.inherited-class.kotlin\",\n regex: /\\w+/\n }, {\n token: \"text\",\n regex: /\\(/,\n push: [{\n token: \"text\",\n regex: /\\)/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }]\n }, {\n token: \"text\",\n regex: /\\{/,\n push: [{\n token: \"text\",\n regex: /\\}/,\n next: \"pop\"\n }, {\n include: \"#statements\"\n }]\n }]\n }],\n \"#comments\": [{\n token: \"punctuation.definition.comment.kotlin\",\n regex: /\\/\\*/,\n push: [{\n token: \"punctuation.definition.comment.kotlin\",\n regex: /\\*\\//,\n next: \"pop\"\n }, {\n defaultToken: \"comment.block.kotlin\"\n }]\n }, {\n token: [\n \"text\",\n \"punctuation.definition.comment.kotlin\",\n \"comment.line.double-slash.kotlin\"\n ],\n regex: /(\\s*)(\\/\\/)(.*$)/\n }],\n \"#constants\": [{\n token: \"constant.language.kotlin\",\n regex: /\\b(?:true|false|null|this|super)\\b/\n }, {\n token: \"constant.numeric.kotlin\",\n regex: /\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b/\n }, {\n token: \"constant.other.kotlin\",\n regex: /\\b[A-Z][A-Z0-9_]+\\b/\n }],\n \"#expressions\": [{\n token: \"text\",\n regex: /\\(/,\n push: [{\n token: \"text\",\n regex: /\\)/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }, {\n include: \"#types\"\n }, {\n include: \"#strings\"\n }, {\n include: \"#constants\"\n }, {\n include: \"#comments\"\n }, {\n include: \"#keywords\"\n }],\n \"#functions\": [{\n token: \"text\",\n regex: /(?=\\s*fun)/,\n push: [{\n token: \"text\",\n regex: /}|(?=$)/,\n next: \"pop\"\n }, {\n token: \"keyword.other.kotlin\",\n regex: /\\bfun\\b/,\n push: [{\n token: \"text\",\n regex: /(?=\\()/,\n next: \"pop\"\n }, {\n token: \"text\",\n regex: //,\n next: \"pop\"\n }, {\n include: \"#generics\"\n }]\n }, {\n token: [\"text\", \"entity.name.function.kotlin\"],\n regex: /((?:[\\.<\\?>\\w]+\\.)?)(\\w+)/\n }]\n }, {\n token: \"text\",\n regex: /\\(/,\n push: [{\n token: \"text\",\n regex: /\\)/,\n next: \"pop\"\n }, {\n include: \"#parameters\"\n }]\n }, {\n token: \"keyword.operator.declaration.kotlin\",\n regex: /:/,\n push: [{\n token: \"text\",\n regex: /(?={|=|$)/,\n next: \"pop\"\n }, {\n include: \"#types\"\n }]\n }, {\n token: \"text\",\n regex: /\\{/,\n push: [{\n token: \"text\",\n regex: /(?=\\})/,\n next: \"pop\"\n }, {\n include: \"#statements\"\n }]\n }, {\n token: \"keyword.operator.assignment.kotlin\",\n regex: /=/,\n push: [{\n token: \"text\",\n regex: /(?=$)/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }]\n }],\n \"#generics\": [{\n token: \"keyword.operator.declaration.kotlin\",\n regex: /:/,\n push: [{\n token: \"text\",\n regex: /(?=,|>)/,\n next: \"pop\"\n }, {\n include: \"#types\"\n }]\n }, {\n include: \"#keywords\"\n }, {\n token: \"storage.type.generic.kotlin\",\n regex: /\\w+/\n }],\n \"#getters-and-setters\": [{\n token: [\"entity.name.function.kotlin\", \"text\"],\n regex: /\\b(get)\\b(\\s*\\(\\s*\\))/,\n push: [{\n token: \"text\",\n regex: /\\}|(?=\\bset\\b)|$/,\n next: \"pop\"\n }, {\n token: \"keyword.operator.assignment.kotlin\",\n regex: /=/,\n push: [{\n token: \"text\",\n regex: /(?=$|\\bset\\b)/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }, {\n token: \"text\",\n regex: /\\{/,\n push: [{\n token: \"text\",\n regex: /\\}/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }]\n }, {\n token: [\"entity.name.function.kotlin\", \"text\"],\n regex: /\\b(set)\\b(\\s*)(?=\\()/,\n push: [{\n token: \"text\",\n regex: /\\}|(?=\\bget\\b)|$/,\n next: \"pop\"\n }, {\n token: \"text\",\n regex: /\\(/,\n push: [{\n token: \"text\",\n regex: /\\)/,\n next: \"pop\"\n }, {\n include: \"#parameters\"\n }]\n }, {\n token: \"keyword.operator.assignment.kotlin\",\n regex: /=/,\n push: [{\n token: \"text\",\n regex: /(?=$|\\bset\\b)/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }, {\n token: \"text\",\n regex: /\\{/,\n push: [{\n token: \"text\",\n regex: /\\}/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }]\n }],\n \"#imports\": [{\n token: [\n \"text\",\n \"keyword.other.kotlin\",\n \"text\",\n \"keyword.other.kotlin\"\n ],\n regex: /^(\\s*)(import)(\\s+[^ $]+\\s+)((?:as)?)/\n }],\n \"#keywords\": [{\n token: \"storage.modifier.kotlin\",\n regex: /\\b(?:var|val|public|private|protected|abstract|final|enum|open|attribute|annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof)\\b/\n }, {\n token: \"keyword.control.catch-exception.kotlin\",\n regex: /\\b(?:try|catch|finally|throw)\\b/\n }, {\n token: \"keyword.control.kotlin\",\n regex: /\\b(?:if|else|while|for|do|return|when|where|break|continue)\\b/\n }, {\n token: \"keyword.operator.kotlin\",\n regex: /\\b(?:in|is|as|assert)\\b/\n }, {\n token: \"keyword.operator.comparison.kotlin\",\n regex: /==|!=|===|!==|<=|>=|<|>/\n }, {\n token: \"keyword.operator.assignment.kotlin\",\n regex: /=/\n }, {\n token: \"keyword.operator.declaration.kotlin\",\n regex: /:/\n }, {\n token: \"keyword.operator.dot.kotlin\",\n regex: /\\./\n }, {\n token: \"keyword.operator.increment-decrement.kotlin\",\n regex: /\\-\\-|\\+\\+/\n }, {\n token: \"keyword.operator.arithmetic.kotlin\",\n regex: /\\-|\\+|\\*|\\/|%/\n }, {\n token: \"keyword.operator.arithmetic.assign.kotlin\",\n regex: /\\+=|\\-=|\\*=|\\/=/\n }, {\n token: \"keyword.operator.logical.kotlin\",\n regex: /!|&&|\\|\\|/\n }, {\n token: \"keyword.operator.range.kotlin\",\n regex: /\\.\\./\n }, {\n token: \"punctuation.terminator.kotlin\",\n regex: /;/\n }],\n \"#namespaces\": [{\n token: \"keyword.other.kotlin\",\n regex: /\\bnamespace\\b/\n }, {\n token: \"text\",\n regex: /\\{/,\n push: [{\n token: \"text\",\n regex: /\\}/,\n next: \"pop\"\n }, {\n include: \"#statements\"\n }]\n }],\n \"#parameters\": [{\n token: \"keyword.operator.declaration.kotlin\",\n regex: /:/,\n push: [{\n token: \"text\",\n regex: /(?=,|\\)|=)/,\n next: \"pop\"\n }, {\n include: \"#types\"\n }]\n }, {\n token: \"keyword.operator.declaration.kotlin\",\n regex: /=/,\n push: [{\n token: \"text\",\n regex: /(?=,|\\))/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }, {\n include: \"#keywords\"\n }, {\n token: \"variable.parameter.function.kotlin\",\n regex: /\\w+/\n }],\n \"#statements\": [{\n include: \"#namespaces\"\n }, {\n include: \"#typedefs\"\n }, {\n include: \"#classes\"\n }, {\n include: \"#functions\"\n }, {\n include: \"#variables\"\n }, {\n include: \"#getters-and-setters\"\n }, {\n include: \"#expressions\"\n }],\n \"#strings\": [{\n token: \"punctuation.definition.string.begin.kotlin\",\n regex: /\"\"\"/,\n push: [{\n token: \"punctuation.definition.string.end.kotlin\",\n regex: /\"\"\"/,\n next: \"pop\"\n }, {\n token: \"variable.parameter.template.kotlin\",\n regex: /\\$\\w+|\\$\\{[^\\}]+\\}/\n }, {\n token: \"constant.character.escape.kotlin\",\n regex: /\\\\./\n }, {\n defaultToken: \"string.quoted.third.kotlin\"\n }]\n }, {\n token: \"punctuation.definition.string.begin.kotlin\",\n regex: /\"/,\n push: [{\n token: \"punctuation.definition.string.end.kotlin\",\n regex: /\"/,\n next: \"pop\"\n }, {\n token: \"variable.parameter.template.kotlin\",\n regex: /\\$\\w+|\\$\\{[^\\}]+\\}/\n }, {\n token: \"constant.character.escape.kotlin\",\n regex: /\\\\./\n }, {\n defaultToken: \"string.quoted.double.kotlin\"\n }]\n }, {\n token: \"punctuation.definition.string.begin.kotlin\",\n regex: /'/,\n push: [{\n token: \"punctuation.definition.string.end.kotlin\",\n regex: /'/,\n next: \"pop\"\n }, {\n token: \"constant.character.escape.kotlin\",\n regex: /\\\\./\n }, {\n defaultToken: \"string.quoted.single.kotlin\"\n }]\n }, {\n token: \"punctuation.definition.string.begin.kotlin\",\n regex: /`/,\n push: [{\n token: \"punctuation.definition.string.end.kotlin\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quoted.single.kotlin\"\n }]\n }],\n \"#typedefs\": [{\n token: \"text\",\n regex: /(?=\\s*type)/,\n push: [{\n token: \"text\",\n regex: /(?=$)/,\n next: \"pop\"\n }, {\n token: \"keyword.other.kotlin\",\n regex: /\\btype\\b/\n }, {\n token: \"text\",\n regex: //,\n next: \"pop\"\n }, {\n include: \"#generics\"\n }]\n }, {\n include: \"#expressions\"\n }]\n }],\n \"#types\": [{\n token: \"storage.type.buildin.kotlin\",\n regex: /\\b(?:Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\\b/\n }, {\n token: \"storage.type.buildin.array.kotlin\",\n regex: /\\b(?:IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\\b/\n }, {\n token: [\n \"storage.type.buildin.collection.kotlin\",\n \"text\"\n ],\n regex: /\\b(Array|List|Map)(<\\b)/,\n push: [{\n token: \"text\",\n regex: />/,\n next: \"pop\"\n }, {\n include: \"#types\"\n }, {\n include: \"#keywords\"\n }]\n }, {\n token: \"text\",\n regex: /\\w+/,\n next: \"pop\"\n }, {\n include: \"#types\"\n }, {\n include: \"#keywords\"\n }]\n }, {\n token: [\"keyword.operator.tuple.kotlin\", \"text\"],\n regex: /(#)(\\()/,\n push: [{\n token: \"text\",\n regex: /\\)/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }]\n }, {\n token: \"text\",\n regex: /\\{/,\n push: [{\n token: \"text\",\n regex: /\\}/,\n next: \"pop\"\n }, {\n include: \"#statements\"\n }]\n }, {\n token: \"text\",\n regex: /\\(/,\n push: [{\n token: \"text\",\n regex: /\\)/,\n next: \"pop\"\n }, {\n include: \"#types\"\n }]\n }, {\n token: \"keyword.operator.declaration.kotlin\",\n regex: /->/\n }],\n \"#variables\": [{\n token: \"text\",\n regex: /(?=\\s*(?:var|val))/,\n push: [{\n token: \"text\",\n regex: /(?=:|=|$)/,\n next: \"pop\"\n }, {\n token: \"keyword.other.kotlin\",\n regex: /\\b(?:var|val)\\b/,\n push: [{\n token: \"text\",\n regex: /(?=:|=|$)/,\n next: \"pop\"\n }, {\n token: \"text\",\n regex: //,\n next: \"pop\"\n }, {\n include: \"#generics\"\n }]\n }, {\n token: [\"text\", \"entity.name.variable.kotlin\"],\n regex: /((?:[\\.<\\?>\\w]+\\.)?)(\\w+)/\n }]\n }, {\n token: \"keyword.operator.declaration.kotlin\",\n regex: /:/,\n push: [{\n token: \"text\",\n regex: /(?==|$)/,\n next: \"pop\"\n }, {\n include: \"#types\"\n }, {\n include: \"#getters-and-setters\"\n }]\n }, {\n token: \"keyword.operator.assignment.kotlin\",\n regex: /=/,\n push: [{\n token: \"text\",\n regex: /(?=$)/,\n next: \"pop\"\n }, {\n include: \"#expressions\"\n }, {\n include: \"#getters-and-setters\"\n }]\n }]\n }]\n };\n\n this.normalizeRules();\n};\n\nKotlinHighlightRules.metaData = {\n fileTypes: [\"kt\", \"kts\"],\n name: \"Kotlin\",\n scopeName: \"source.Kotlin\"\n};\n\n\noop.inherits(KotlinHighlightRules, TextHighlightRules);\n\nexports.KotlinHighlightRules = KotlinHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/kotlin\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/kotlin_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar KotlinHighlightRules = acequire(\"./kotlin_highlight_rules\").KotlinHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = KotlinHighlightRules;\n this.foldingRules = new FoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.$id = \"ace/mode/kotlin\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/latex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar LatexHighlightRules = function() { \n\n this.$rules = {\n \"start\" : [{\n token : \"comment\",\n regex : \"%.*$\"\n }, {\n token : [\"keyword\", \"lparen\", \"variable.parameter\", \"rparen\", \"lparen\", \"storage.type\", \"rparen\"],\n regex : \"(\\\\\\\\(?:documentclass|usepackage|input))(?:(\\\\[)([^\\\\]]*)(\\\\]))?({)([^}]*)(})\"\n }, {\n token : [\"keyword\",\"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?\"\n }, {\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\begin)({)(verbatim)(})\",\n next : \"verbatim\"\n }, {\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\begin)({)(lstlisting)(})\",\n next : \"lstlisting\"\n }, {\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\(?:begin|end))({)([\\\\w*]*)(})\"\n }, {\n token : \"storage.type\",\n regex : /\\\\verb\\b\\*?/,\n next : [{\n token : [\"keyword.operator\", \"string\", \"keyword.operator\"],\n regex : \"(.)(.*?)(\\\\1|$)|\",\n next : \"start\"\n }]\n }, {\n token : \"storage.type\",\n regex : \"\\\\\\\\[a-zA-Z]+\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"constant.character.escape\",\n regex : \"\\\\\\\\[^a-zA-Z]?\"\n }, {\n token : \"string\",\n regex : \"\\\\${1,2}\",\n next : \"equation\"\n }],\n \"equation\" : [{\n token : \"comment\",\n regex : \"%.*$\"\n }, {\n token : \"string\",\n regex : \"\\\\${1,2}\",\n next : \"start\"\n }, {\n token : \"constant.character.escape\",\n regex : \"\\\\\\\\(?:[^a-zA-Z]|[a-zA-Z]+)\"\n }, {\n token : \"error\", \n regex : \"^\\\\s*$\", \n next : \"start\" \n }, {\n defaultToken : \"string\"\n }],\n \"verbatim\": [{\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\end)({)(verbatim)(})\",\n next : \"start\"\n }, {\n defaultToken : \"text\"\n }],\n \"lstlisting\": [{\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\end)({)(lstlisting)(})\",\n next : \"start\"\n }, {\n defaultToken : \"text\"\n }]\n };\n\n this.normalizeRules();\n};\noop.inherits(LatexHighlightRules, TextHighlightRules);\n\nexports.LatexHighlightRules = LatexHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/latex\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar keywordLevels = {\n \"\\\\subparagraph\": 1,\n \"\\\\paragraph\": 2,\n \"\\\\subsubsubsection\": 3,\n \"\\\\subsubsection\": 4,\n \"\\\\subsection\": 5,\n \"\\\\section\": 6,\n \"\\\\chapter\": 7,\n \"\\\\part\": 8,\n \"\\\\begin\": 9,\n \"\\\\end\": 10\n};\n\nvar FoldMode = exports.FoldMode = function() {};\n\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /^\\s*\\\\(begin)|\\s*\\\\(part|chapter|(?:sub)*(?:section|paragraph))\\b|{\\s*$/;\n this.foldingStopMarker = /^\\s*\\\\(end)\\b|^\\s*}/;\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var line = session.doc.getLine(row);\n var match = this.foldingStartMarker.exec(line);\n if (match) {\n if (match[1])\n return this.latexBlock(session, row, match[0].length - 1);\n if (match[2])\n return this.latexSection(session, row, match[0].length - 1);\n\n return this.openingBracketBlock(session, \"{\", row, match.index);\n }\n\n var match = this.foldingStopMarker.exec(line);\n if (match) {\n if (match[1])\n return this.latexBlock(session, row, match[0].length - 1);\n\n return this.closingBracketBlock(session, \"}\", row, match.index + match[0].length);\n }\n };\n\n this.latexBlock = function(session, row, column, returnRange) {\n var keywords = {\n \"\\\\begin\": 1,\n \"\\\\end\": -1\n };\n\n var stream = new TokenIterator(session, row, column);\n var token = stream.getCurrentToken();\n if (!token || !(token.type == \"storage.type\" || token.type == \"constant.character.escape\"))\n return;\n\n var val = token.value;\n var dir = keywords[val];\n\n var getType = function() {\n var token = stream.stepForward();\n var type = token.type == \"lparen\" ?stream.stepForward().value : \"\";\n if (dir === -1) {\n stream.stepBackward();\n if (type)\n stream.stepBackward();\n }\n return type;\n };\n var stack = [getType()];\n var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length;\n var startRow = row;\n\n stream.step = dir === -1 ? stream.stepBackward : stream.stepForward;\n while(token = stream.step()) {\n if (!token || !(token.type == \"storage.type\" || token.type == \"constant.character.escape\"))\n continue;\n var level = keywords[token.value];\n if (!level)\n continue;\n var type = getType();\n if (level === dir)\n stack.unshift(type);\n else if (stack.shift() !== type || !stack.length)\n break;\n }\n\n if (stack.length)\n return;\n\n if (dir == 1) {\n stream.stepBackward();\n stream.stepBackward();\n }\n\n if (returnRange)\n return stream.getCurrentTokenRange();\n\n var row = stream.getCurrentTokenRow();\n if (dir === -1)\n return new Range(row, session.getLine(row).length, startRow, startColumn);\n else\n return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn());\n };\n\n this.latexSection = function(session, row, column) {\n var stream = new TokenIterator(session, row, column);\n var token = stream.getCurrentToken();\n if (!token || token.type != \"storage.type\")\n return;\n\n var startLevel = keywordLevels[token.value] || 0;\n var stackDepth = 0;\n var endRow = row;\n\n while(token = stream.stepForward()) {\n if (token.type !== \"storage.type\")\n continue;\n var level = keywordLevels[token.value] || 0;\n\n if (level >= 9) {\n if (!stackDepth)\n endRow = stream.getCurrentTokenRow() - 1;\n stackDepth += level == 9 ? 1 : - 1;\n if (stackDepth < 0)\n break;\n } else if (level >= startLevel)\n break;\n }\n\n if (!stackDepth)\n endRow = stream.getCurrentTokenRow() - 1;\n\n while (endRow > row && !/\\S/.test(session.getLine(endRow)))\n endRow--;\n\n return new Range(\n row, session.getLine(row).length,\n endRow, session.getLine(endRow).length\n );\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/latex\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/latex_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/latex\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar LatexHighlightRules = acequire(\"./latex_highlight_rules\").LatexHighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar LatexFoldMode = acequire(\"./folding/latex\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = LatexHighlightRules;\n this.foldingRules = new LatexFoldMode();\n this.$behaviour = new CstyleBehaviour({ braces: true });\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.type = \"text\";\n \n this.lineCommentStart = \"%\";\n\n this.$id = \"ace/mode/latex\";\n\n this.getMatching = function(session, row, column) {\n if (row == undefined)\n row = session.selection.lead;\n if (typeof row == \"object\") {\n column = row.column;\n row = row.row;\n }\n\n var startToken = session.getTokenAt(row, column);\n if (!startToken)\n return;\n if (startToken.value == \"\\\\begin\" || startToken.value == \"\\\\end\") {\n return this.foldingRules.latexBlock(session, row, column, true);\n }\n };\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/less_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\",\"ace/mode/css_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar CssHighlightRules = acequire('./css_highlight_rules');\n\nvar LessHighlightRules = function() {\n\n\n var keywordList = \"@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|\" + \n \"@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|\" +\n \"or|and|when|not\";\n\n var keywords = keywordList.split('|');\n\n var properties = CssHighlightRules.supportType.split('|');\n\n var keywordMapper = this.createKeywordMapper({\n \"support.constant\": CssHighlightRules.supportConstant,\n \"keyword\": keywordList,\n \"support.constant.color\": CssHighlightRules.supportConstantColor,\n \"support.constant.fonts\": CssHighlightRules.supportConstantFonts\n }, \"identifier\", true); \n\n var numRe = \"\\\\-?(?:(?:[0-9]+)|(?:[0-9]*\\\\.[0-9]+))\";\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : [\"support.function\", \"paren.lparen\", \"string\", \"paren.rparen\"],\n regex : \"(url)(\\\\()(.*)(\\\\))\"\n }, {\n token : [\"support.function\", \"paren.lparen\"],\n regex : \"(:extend|[a-z0-9_\\\\-]+)(\\\\()\"\n }, {\n token : function(value) {\n if (keywords.indexOf(value.toLowerCase()) > -1)\n return \"keyword\";\n else\n return \"variable\";\n },\n regex : \"[@\\\\$][a-z0-9_\\\\-@\\\\$]*\\\\b\"\n }, {\n token : \"variable\",\n regex : \"[@\\\\$]\\\\{[a-z0-9_\\\\-@\\\\$]*\\\\}\"\n }, {\n token : function(first, second) {\n if(properties.indexOf(first.toLowerCase()) > -1) {\n return [\"support.type.property\", \"text\"];\n }\n else {\n return [\"support.type.unknownProperty\", \"text\"];\n }\n },\n regex : \"([a-z0-9-_]+)(\\\\s*:)\"\n }, {\n token : \"keyword\",\n regex : \"&\" // special case - always treat as keyword\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[@a-z_][@a-z0-9_\\\\-]*\"\n }, {\n token: \"variable.language\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"variable.language\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"variable.language\",\n regex: \":[a-z_][a-z0-9-_]*\"\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n token : \"keyword.operator\",\n regex : \"<|>|<=|>=|=|!=|-|%|\\\\+|\\\\*\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n caseInsensitive: true\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n this.normalizeRules();\n};\n\noop.inherits(LessHighlightRules, TextHighlightRules);\n\nexports.LessHighlightRules = LessHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/less\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/less_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/css\",\"ace/mode/css_completions\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar LessHighlightRules = acequire(\"./less_highlight_rules\").LessHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\n\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = LessHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n \n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(\"ruleset\", session, pos, prefix);\n };\n\n this.$id = \"ace/mode/less\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/lisp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar LispHighlightRules = function() {\n var keywordControl = \"case|do|let|loop|if|else|when\";\n var keywordOperator = \"eq|neq|and|or\";\n var constantLanguage = \"null|nil\";\n var supportFunctions = \"cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn\";\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword.control\": keywordControl,\n \"keyword.operator\": keywordOperator,\n \"constant.language\": constantLanguage,\n \"support.function\": supportFunctions\n }, \"identifier\", true);\n\n this.$rules = \n {\n \"start\": [\n {\n token : \"comment\",\n regex : \";.*$\"\n },\n {\n token: [\"storage.type.function-type.lisp\", \"text\", \"entity.name.function.lisp\"],\n regex: \"(?:\\\\b(?:(defun|defmethod|defmacro))\\\\b)(\\\\s+)((?:\\\\w|\\\\-|\\\\!|\\\\?)*)\"\n },\n {\n token: [\"punctuation.definition.constant.character.lisp\", \"constant.character.lisp\"],\n regex: \"(#)((?:\\\\w|[\\\\\\\\+-=<>'\\\"&#])+)\"\n },\n {\n token: [\"punctuation.definition.variable.lisp\", \"variable.other.global.lisp\", \"punctuation.definition.variable.lisp\"],\n regex: \"(\\\\*)(\\\\S*)(\\\\*)\"\n },\n {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, \n {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n },\n {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n },\n {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }\n ],\n \"qqstring\": [\n {\n token: \"constant.character.escape.lisp\",\n regex: \"\\\\\\\\.\"\n },\n {\n token : \"string\",\n regex : '[^\"\\\\\\\\]+'\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }\n ]\n};\n\n};\n\noop.inherits(LispHighlightRules, TextHighlightRules);\n\nexports.LispHighlightRules = LispHighlightRules;\n});\n\nace.define(\"ace/mode/lisp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/lisp_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar LispHighlightRules = acequire(\"./lisp_highlight_rules\").LispHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = LispHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = \";\";\n \n this.$id = \"ace/mode/lisp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/livescript\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/matching_brace_outdent\",\"ace/mode/text\"], function(acequire, exports, module){\n var identifier, LiveScriptMode, keywordend, stringfill;\n identifier = '(?![\\\\d\\\\s])[$\\\\w\\\\xAA-\\\\uFFDC](?:(?!\\\\s)[$\\\\w\\\\xAA-\\\\uFFDC]|-[A-Za-z])*';\n exports.Mode = LiveScriptMode = (function(superclass){\n var indenter, prototype = extend$((import$(LiveScriptMode, superclass).displayName = 'LiveScriptMode', LiveScriptMode), superclass).prototype, constructor = LiveScriptMode;\n function LiveScriptMode(){\n var that;\n this.$tokenizer = new (acequire('../tokenizer')).Tokenizer(LiveScriptMode.Rules);\n if (that = acequire('../mode/matching_brace_outdent')) {\n this.$outdent = new that.MatchingBraceOutdent;\n }\n this.$id = \"ace/mode/livescript\";\n }\n indenter = RegExp('(?:[({[=:]|[-~]>|\\\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\\\s*all)?|const|var|let|new|catch(?:\\\\s*' + identifier + ')?))\\\\s*$');\n prototype.getNextLineIndent = function(state, line, tab){\n var indent, tokens;\n indent = this.$getIndent(line);\n tokens = this.$tokenizer.getLineTokens(line, state).tokens;\n if (!(tokens.length && tokens[tokens.length - 1].type === 'comment')) {\n if (state === 'start' && indenter.test(line)) {\n indent += tab;\n }\n }\n return indent;\n };\n prototype.lineCommentStart = \"#\";\n prototype.blockComment = {start: \"###\", end: \"###\"};\n prototype.checkOutdent = function(state, line, input){\n var ref$;\n return (ref$ = this.$outdent) != null ? ref$.checkOutdent(line, input) : void 8;\n };\n prototype.autoOutdent = function(state, doc, row){\n var ref$;\n return (ref$ = this.$outdent) != null ? ref$.autoOutdent(doc, row) : void 8;\n };\n return LiveScriptMode;\n }(acequire('../mode/text').Mode));\n keywordend = '(?![$\\\\w]|-[A-Za-z]|\\\\s*:(?![:=]))';\n stringfill = {\n defaultToken: 'string'\n };\n LiveScriptMode.Rules = {\n start: [\n {\n token: 'keyword',\n regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend\n }, {\n token: 'constant.language',\n regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend\n }, {\n token: 'invalid.illegal',\n regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend\n }, {\n token: 'language.support.class',\n regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend\n }, {\n token: 'language.support.function',\n regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend\n }, {\n token: 'variable.language',\n regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend\n }, {\n token: 'identifier',\n regex: identifier + '\\\\s*:(?![:=])'\n }, {\n token: 'variable',\n regex: identifier\n }, {\n token: 'keyword.operator',\n regex: '(?:\\\\.{3}|\\\\s+\\\\?)'\n }, {\n token: 'keyword.variable',\n regex: '(?:@+|::|\\\\.\\\\.)',\n next: 'key'\n }, {\n token: 'keyword.operator',\n regex: '\\\\.\\\\s*',\n next: 'key'\n }, {\n token: 'string',\n regex: '\\\\\\\\\\\\S[^\\\\s,;)}\\\\]]*'\n }, {\n token: 'string.doc',\n regex: '\\'\\'\\'',\n next: 'qdoc'\n }, {\n token: 'string.doc',\n regex: '\"\"\"',\n next: 'qqdoc'\n }, {\n token: 'string',\n regex: '\\'',\n next: 'qstring'\n }, {\n token: 'string',\n regex: '\"',\n next: 'qqstring'\n }, {\n token: 'string',\n regex: '`',\n next: 'js'\n }, {\n token: 'string',\n regex: '<\\\\[',\n next: 'words'\n }, {\n token: 'string.regex',\n regex: '//',\n next: 'heregex'\n }, {\n token: 'comment.doc',\n regex: '/\\\\*',\n next: 'comment'\n }, {\n token: 'comment',\n regex: '#.*'\n }, {\n token: 'string.regex',\n regex: '\\\\/(?:[^[\\\\/\\\\n\\\\\\\\]*(?:(?:\\\\\\\\.|\\\\[[^\\\\]\\\\n\\\\\\\\]*(?:\\\\\\\\.[^\\\\]\\\\n\\\\\\\\]*)*\\\\])[^[\\\\/\\\\n\\\\\\\\]*)*)\\\\/[gimy$]{0,4}',\n next: 'key'\n }, {\n token: 'constant.numeric',\n regex: '(?:0x[\\\\da-fA-F][\\\\da-fA-F_]*|(?:[2-9]|[12]\\\\d|3[0-6])r[\\\\da-zA-Z][\\\\da-zA-Z_]*|(?:\\\\d[\\\\d_]*(?:\\\\.\\\\d[\\\\d_]*)?|\\\\.\\\\d[\\\\d_]*)(?:e[+-]?\\\\d[\\\\d_]*)?[\\\\w$]*)'\n }, {\n token: 'lparen',\n regex: '[({[]'\n }, {\n token: 'rparen',\n regex: '[)}\\\\]]',\n next: 'key'\n }, {\n token: 'keyword.operator',\n regex: '[\\\\^!|&%+\\\\-]+'\n }, {\n token: 'text',\n regex: '\\\\s+'\n }\n ],\n heregex: [\n {\n token: 'string.regex',\n regex: '.*?//[gimy$?]{0,4}',\n next: 'start'\n }, {\n token: 'string.regex',\n regex: '\\\\s*#{'\n }, {\n token: 'comment.regex',\n regex: '\\\\s+(?:#.*)?'\n }, {\n defaultToken: 'string.regex'\n }\n ],\n key: [\n {\n token: 'keyword.operator',\n regex: '[.?@!]+'\n }, {\n token: 'identifier',\n regex: identifier,\n next: 'start'\n }, {\n token: 'text',\n regex: '',\n next: 'start'\n }\n ],\n comment: [\n {\n token: 'comment.doc',\n regex: '.*?\\\\*/',\n next: 'start'\n }, {\n defaultToken: 'comment.doc'\n }\n ],\n qdoc: [\n {\n token: 'string',\n regex: \".*?'''\",\n next: 'key'\n }, stringfill\n ],\n qqdoc: [\n {\n token: 'string',\n regex: '.*?\"\"\"',\n next: 'key'\n }, stringfill\n ],\n qstring: [\n {\n token: 'string',\n regex: '[^\\\\\\\\\\']*(?:\\\\\\\\.[^\\\\\\\\\\']*)*\\'',\n next: 'key'\n }, stringfill\n ],\n qqstring: [\n {\n token: 'string',\n regex: '[^\\\\\\\\\"]*(?:\\\\\\\\.[^\\\\\\\\\"]*)*\"',\n next: 'key'\n }, stringfill\n ],\n js: [\n {\n token: 'string',\n regex: '[^\\\\\\\\`]*(?:\\\\\\\\.[^\\\\\\\\`]*)*`',\n next: 'key'\n }, stringfill\n ],\n words: [\n {\n token: 'string',\n regex: '.*?\\\\]>',\n next: 'key'\n }, stringfill\n ]\n };\nfunction extend$(sub, sup){\n function fun(){} fun.prototype = (sub.superclass = sup).prototype;\n (sub.prototype = new fun).constructor = sub;\n if (typeof sup.extended == 'function') sup.extended(sub);\n return sub;\n}\nfunction import$(obj, src){\n var own = {}.hasOwnProperty;\n for (var key in src) if (own.call(src, key)) obj[key] = src[key];\n return obj;\n}\n});\n","ace.define(\"ace/mode/lua_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar LuaHighlightRules = function() {\n\n var keywords = (\n \"break|do|else|elseif|end|for|function|if|in|local|repeat|\"+\n \"return|then|until|while|or|and|not\"\n );\n\n var builtinConstants = (\"true|false|nil|_G|_VERSION\");\n\n var functions = (\n \"string|xpcall|package|tostring|print|os|unpack|acequire|\"+\n \"getfenv|setmetatable|next|assert|tonumber|io|rawequal|\"+\n \"collectgarbage|getmetatable|module|rawset|math|debug|\"+\n \"pcall|table|newproxy|type|coroutine|_G|select|gcinfo|\"+\n \"pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|\"+\n \"load|error|loadfile|\"+\n\n \"sub|upper|len|gfind|rep|find|match|char|dump|gmatch|\"+\n \"reverse|byte|format|gsub|lower|preload|loadlib|loaded|\"+\n \"loaders|cpath|config|path|seeall|exit|setlocale|date|\"+\n \"getenv|difftime|remove|time|clock|tmpname|rename|execute|\"+\n \"lines|write|close|flush|open|output|type|read|stderr|\"+\n \"stdin|input|stdout|popen|tmpfile|log|max|acos|huge|\"+\n \"ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|\"+\n \"frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|\"+\n \"atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|\"+\n \"gethook|setmetatable|setlocal|traceback|setfenv|getinfo|\"+\n \"setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|\"+\n \"foreachi|maxn|foreach|concat|sort|remove|resume|yield|\"+\n \"status|wrap|create|running|\"+\n \"__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|\"+\n \"__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber\"\n );\n\n var stdLibaries = (\"string|package|os|io|math|debug|table|coroutine\");\n\n var deprecatedIn5152 = (\"setn|foreach|foreachi|gcinfo|log10|maxn\");\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"support.function\": functions,\n \"keyword.deprecated\": deprecatedIn5152,\n \"constant.library\": stdLibaries,\n \"constant.language\": builtinConstants,\n \"variable.language\": \"self\"\n }, \"identifier\");\n\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + hexInteger + \")\";\n\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var floatNumber = \"(?:\" + pointFloat + \")\";\n\n this.$rules = {\n \"start\" : [{\n stateName: \"bracketedComment\",\n onMatch : function(value, currentState, stack){\n stack.unshift(this.next, value.length - 2, currentState);\n return \"comment\";\n },\n regex : /\\-\\-\\[=*\\[/,\n next : [\n {\n onMatch : function(value, currentState, stack) {\n if (value.length == stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack.shift();\n } else {\n this.next = \"\";\n }\n return \"comment\";\n },\n regex : /\\]=*\\]/,\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n },\n\n {\n token : \"comment\",\n regex : \"\\\\-\\\\-.*$\"\n },\n {\n stateName: \"bracketedString\",\n onMatch : function(value, currentState, stack){\n stack.unshift(this.next, value.length, currentState);\n return \"string.start\";\n },\n regex : /\\[=*\\[/,\n next : [\n {\n onMatch : function(value, currentState, stack) {\n if (value.length == stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack.shift();\n } else {\n this.next = \"\";\n }\n return \"string.end\";\n },\n \n regex : /\\]=*\\]/,\n next : \"start\"\n }, {\n defaultToken : \"string\"\n }\n ]\n },\n {\n token : \"string\", // \" string\n regex : '\"(?:[^\\\\\\\\]|\\\\\\\\.)*?\"'\n }, {\n token : \"string\", // ' string\n regex : \"'(?:[^\\\\\\\\]|\\\\\\\\.)*?'\"\n }, {\n token : \"constant.numeric\", // float\n regex : floatNumber\n }, {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\*|\\\\/|%|\\\\#|\\\\^|~|<|>|<=|=>|==|~=|=|\\\\:|\\\\.\\\\.\\\\.|\\\\.\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\[\\\\(\\\\{]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]\\\\)\\\\}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|\\\\w+\"\n } ]\n };\n \n this.normalizeRules();\n};\n\noop.inherits(LuaHighlightRules, TextHighlightRules);\n\nexports.LuaHighlightRules = LuaHighlightRules;\n});\n\nace.define(\"ace/mode/folding/lua\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\n\nvar FoldMode = exports.FoldMode = function() {};\n\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /\\b(function|then|do|repeat)\\b|{\\s*$|(\\[=*\\[)/;\n this.foldingStopMarker = /\\bend\\b|^\\s*}|\\]=*\\]/;\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var isStart = this.foldingStartMarker.test(line);\n var isEnd = this.foldingStopMarker.test(line);\n\n if (isStart && !isEnd) {\n var match = line.match(this.foldingStartMarker);\n if (match[1] == \"then\" && /\\belseif\\b/.test(line))\n return;\n if (match[1]) {\n if (session.getTokenAt(row, match.index + 1).type === \"keyword\")\n return \"start\";\n } else if (match[2]) {\n var type = session.bgTokenizer.getState(row) || \"\";\n if (type[0] == \"bracketedComment\" || type[0] == \"bracketedString\")\n return \"start\";\n } else {\n return \"start\";\n }\n }\n if (foldStyle != \"markbeginend\" || !isEnd || isStart && isEnd)\n return \"\";\n\n var match = line.match(this.foldingStopMarker);\n if (match[0] === \"end\") {\n if (session.getTokenAt(row, match.index + 1).type === \"keyword\")\n return \"end\";\n } else if (match[0][0] === \"]\") {\n var type = session.bgTokenizer.getState(row - 1) || \"\";\n if (type[0] == \"bracketedComment\" || type[0] == \"bracketedString\")\n return \"end\";\n } else\n return \"end\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var line = session.doc.getLine(row);\n var match = this.foldingStartMarker.exec(line);\n if (match) {\n if (match[1])\n return this.luaBlock(session, row, match.index + 1);\n\n if (match[2])\n return session.getCommentFoldRange(row, match.index + 1);\n\n return this.openingBracketBlock(session, \"{\", row, match.index);\n }\n\n var match = this.foldingStopMarker.exec(line);\n if (match) {\n if (match[0] === \"end\") {\n if (session.getTokenAt(row, match.index + 1).type === \"keyword\")\n return this.luaBlock(session, row, match.index + 1);\n }\n\n if (match[0][0] === \"]\")\n return session.getCommentFoldRange(row, match.index + 1);\n\n return this.closingBracketBlock(session, \"}\", row, match.index + match[0].length);\n }\n };\n\n this.luaBlock = function(session, row, column) {\n var stream = new TokenIterator(session, row, column);\n var indentKeywords = {\n \"function\": 1,\n \"do\": 1,\n \"then\": 1,\n \"elseif\": -1,\n \"end\": -1,\n \"repeat\": 1,\n \"until\": -1\n };\n\n var token = stream.getCurrentToken();\n if (!token || token.type != \"keyword\")\n return;\n\n var val = token.value;\n var stack = [val];\n var dir = indentKeywords[val];\n\n if (!dir)\n return;\n\n var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length;\n var startRow = row;\n\n stream.step = dir === -1 ? stream.stepBackward : stream.stepForward;\n while(token = stream.step()) {\n if (token.type !== \"keyword\")\n continue;\n var level = dir * indentKeywords[token.value];\n\n if (level > 0) {\n stack.unshift(token.value);\n } else if (level <= 0) {\n stack.shift();\n if (!stack.length && token.value != \"elseif\")\n break;\n if (level === 0)\n stack.unshift(token.value);\n }\n }\n\n var row = stream.getCurrentTokenRow();\n if (dir === -1)\n return new Range(row, session.getLine(row).length, startRow, startColumn);\n else\n return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn());\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/lua\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/lua_highlight_rules\",\"ace/mode/folding/lua\",\"ace/range\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar LuaHighlightRules = acequire(\"./lua_highlight_rules\").LuaHighlightRules;\nvar LuaFoldMode = acequire(\"./folding/lua\").FoldMode;\nvar Range = acequire(\"../range\").Range;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\nvar Mode = function() {\n this.HighlightRules = LuaHighlightRules;\n \n this.foldingRules = new LuaFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = \"--\";\n this.blockComment = {start: \"--[\", end: \"]--\"};\n \n var indentKeywords = {\n \"function\": 1,\n \"then\": 1,\n \"do\": 1,\n \"else\": 1,\n \"elseif\": 1,\n \"repeat\": 1,\n \"end\": -1,\n \"until\": -1\n };\n var outdentKeywords = [\n \"else\",\n \"elseif\",\n \"end\",\n \"until\"\n ];\n\n function getNetIndentLevel(tokens) {\n var level = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"keyword\") {\n if (token.value in indentKeywords) {\n level += indentKeywords[token.value];\n }\n } else if (token.type == \"paren.lparen\") {\n level += token.value.length;\n } else if (token.type == \"paren.rparen\") {\n level -= token.value.length;\n }\n }\n if (level < 0) {\n return -1;\n } else if (level > 0) {\n return 1;\n } else {\n return 0;\n }\n }\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var level = 0;\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (state == \"start\") {\n level = getNetIndentLevel(tokens);\n }\n if (level > 0) {\n return indent + tab;\n } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) {\n if (!this.checkOutdent(state, line, \"\\n\")) {\n return indent.substr(0, indent.length - tab.length);\n }\n }\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n if (input != \"\\n\" && input != \"\\r\" && input != \"\\r\\n\")\n return false;\n\n if (line.match(/^\\s*[\\)\\}\\]]$/))\n return true;\n\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n\n if (!tokens || !tokens.length)\n return false;\n\n return (tokens[0].type == \"keyword\" && outdentKeywords.indexOf(tokens[0].value) != -1);\n };\n\n this.autoOutdent = function(state, session, row) {\n var prevLine = session.getLine(row - 1);\n var prevIndent = this.$getIndent(prevLine).length;\n var prevTokens = this.getTokenizer().getLineTokens(prevLine, \"start\").tokens;\n var tabLength = session.getTabString().length;\n var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens);\n var curIndent = this.$getIndent(session.getLine(row)).length;\n if (curIndent <= expectedIndent) {\n return;\n }\n session.outdentRows(new Range(row, 0, row + 2, 0));\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/lua\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n \n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n \n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n \n return worker;\n };\n\n this.$id = \"ace/mode/lua\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/sh_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar reservedKeywords = exports.reservedKeywords = (\n '!|{|}|case|do|done|elif|else|'+\n 'esac|fi|for|if|in|then|until|while|'+\n '&|;|export|local|read|typeset|unset|'+\n 'elif|select|set|function|declare|readonly'\n );\n\nvar languageConstructs = exports.languageConstructs = (\n '[|]|alias|bg|bind|break|builtin|'+\n 'cd|command|compgen|complete|continue|'+\n 'dirs|disown|echo|enable|eval|exec|'+\n 'exit|fc|fg|getopts|hash|help|history|'+\n 'jobs|kill|let|logout|popd|printf|pushd|'+\n 'pwd|return|set|shift|shopt|source|'+\n 'suspend|test|times|trap|type|ulimit|'+\n 'umask|unalias|wait'\n);\n\nvar ShHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": reservedKeywords,\n \"support.function.builtin\": languageConstructs,\n \"invalid.deprecated\": \"debugger\"\n }, \"identifier\");\n\n var integer = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var fileDescriptor = \"(?:&\" + intPart + \")\";\n\n var variableName = \"[a-zA-Z_][a-zA-Z0-9_]*\";\n var variable = \"(?:\" + variableName + \"(?==))\";\n\n var builtinVariable = \"(?:\\\\$(?:SHLVL|\\\\$|\\\\!|\\\\?))\";\n\n var func = \"(?:\" + variableName + \"\\\\s*\\\\(\\\\))\";\n\n this.$rules = {\n \"start\" : [{\n token : \"constant\",\n regex : /\\\\./\n }, {\n token : [\"text\", \"comment\"],\n regex : /(^|\\s)(#.*)$/\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[$`\"\\\\]|$)/\n }, {\n include : \"variables\"\n }, {\n token : \"keyword.operator\",\n regex : /`/ // TODO highlight `\n }, {\n token : \"string.end\",\n regex : '\"',\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string\",\n regex : \"\\\\$'\",\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[abeEfnrtv\\\\'\"]|x[a-fA-F\\d]{1,2}|u[a-fA-F\\d]{4}([a-fA-F\\d]{4})?|c.|\\d{1,3})/\n }, {\n token : \"string\",\n regex : \"'\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n regex : \"<<<\",\n token : \"keyword.operator\"\n }, {\n stateName: \"heredoc\",\n regex : \"(<<-?)(\\\\s*)(['\\\"`]?)([\\\\w\\\\-]+)(['\\\"`]?)\",\n onMatch : function(value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[4]);\n return [\n {type:\"constant\", value: tokens[1]},\n {type:\"text\", value: tokens[2]},\n {type:\"string\", value: tokens[3]},\n {type:\"support.class\", value: tokens[4]},\n {type:\"string\", value: tokens[5]}\n ];\n },\n rules: {\n heredoc: [{\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^\\t+\"\n }, {\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex : \"$\",\n token : \"empty\",\n next : function(currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\")\n return stack[0];\n return currentState;\n }\n }, {\n token : [\"keyword\", \"text\", \"text\", \"text\", \"variable\"],\n regex : /(declare|local|readonly)(\\s+)(?:(-[fixar]+)(\\s+))?([a-zA-Z_][a-zA-Z0-9_]*\\b)/\n }, {\n token : \"variable.language\",\n regex : builtinVariable\n }, {\n token : \"variable\",\n regex : variable\n }, {\n include : \"variables\"\n }, {\n token : \"support.function\",\n regex : func\n }, {\n token : \"support.function\",\n regex : fileDescriptor\n }, {\n token : \"string\", // ' string\n start : \"'\", end : \"'\"\n }, {\n token : \"constant.numeric\", // float\n regex : floatNumber\n }, {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|~|<|>|<=|=>|=|!=|[%&|`]\"\n }, {\n token : \"punctuation.operator\",\n regex : \";\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\[\\\\(\\\\{]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)\\\\}]\",\n next : \"pop\"\n }],\n variables: [{\n token : \"variable\",\n regex : /(\\$)(\\w+)/\n }, {\n token : [\"variable\", \"paren.lparen\"],\n regex : /(\\$)(\\()/,\n push : \"start\"\n }, {\n token : [\"variable\", \"paren.lparen\", \"keyword.operator\", \"variable\", \"keyword.operator\"],\n regex : /(\\$)(\\{)([#!]?)(\\w+|[*@#?\\-$!0_])(:[?+\\-=]?|##?|%%?|,,?\\/|\\^\\^?)?/,\n push : \"start\"\n }, {\n token : \"variable\",\n regex : /\\$[*@#?\\-$!0_]/\n }, {\n token : [\"variable\", \"paren.lparen\"],\n regex : /(\\$)(\\{)/,\n push : \"start\"\n }]\n };\n \n this.normalizeRules();\n};\n\noop.inherits(ShHighlightRules, TextHighlightRules);\n\nexports.ShHighlightRules = ShHighlightRules;\n});\n\nace.define(\"ace/mode/makefile_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\",\"ace/mode/sh_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ShHighlightFile = acequire(\"./sh_highlight_rules\");\n\nvar MakefileHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": ShHighlightFile.reservedKeywords,\n \"support.function.builtin\": ShHighlightFile.languageConstructs,\n \"invalid.deprecated\": \"debugger\"\n }, \"string\");\n\n this.$rules = \n {\n \"start\": [\n {\n token: \"string.interpolated.backtick.makefile\",\n regex: \"`\",\n next: \"shell-start\"\n },\n {\n token: \"punctuation.definition.comment.makefile\",\n regex: /#(?=.)/,\n next: \"comment\"\n },\n {\n token: [ \"keyword.control.makefile\"],\n regex: \"^(?:\\\\s*\\\\b)(\\\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\\\b)\"\n },\n {// ^([^\\t ]+(\\s[^\\t ]+)*:(?!\\=))\\s*.*\n token: [\"entity.name.function.makefile\", \"text\"],\n regex: \"^([^\\\\t ]+(?:\\\\s[^\\\\t ]+)*:)(\\\\s*.*)\"\n }\n ],\n \"comment\": [\n {\n token : \"punctuation.definition.comment.makefile\",\n regex : /.+\\\\/\n },\n {\n token : \"punctuation.definition.comment.makefile\",\n regex : \".+\",\n next : \"start\"\n }\n ],\n \"shell-start\": [\n {\n token: keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, \n {\n token: \"string\",\n regex : \"\\\\w+\"\n }, \n {\n token : \"string.interpolated.backtick.makefile\",\n regex : \"`\",\n next : \"start\"\n }\n ]\n};\n\n};\n\noop.inherits(MakefileHighlightRules, TextHighlightRules);\n\nexports.MakefileHighlightRules = MakefileHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/makefile\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/makefile_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar MakefileHighlightRules = acequire(\"./makefile_highlight_rules\").MakefileHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = MakefileHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = \"#\"; \n this.$indentWithTabs = true;\n \n this.$id = \"ace/mode/makefile\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = acequire(\"./folding/xml\").FoldMode;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\nvar Mode = function() {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\n\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.voidElements = lang.arrayToMap([]);\n\n this.blockComment = {start: \"\"};\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/xml\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n \n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/folding/mixed\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(defaultMode, subModes) {\n this.defaultMode = defaultMode;\n this.subModes = subModes;\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n\n this.$getMode = function(state) {\n if (typeof state != \"string\") \n state = state[0];\n for (var key in this.subModes) {\n if (state.indexOf(key) === 0)\n return this.subModes[key];\n }\n return null;\n };\n \n this.$tryMode = function(state, session, foldStyle, row) {\n var mode = this.$getMode(state);\n return (mode ? mode.getFoldWidget(session, foldStyle, row) : \"\");\n };\n\n this.getFoldWidget = function(session, foldStyle, row) {\n return (\n this.$tryMode(session.getState(row-1), session, foldStyle, row) ||\n this.$tryMode(session.getState(row), session, foldStyle, row) ||\n this.defaultMode.getFoldWidget(session, foldStyle, row)\n );\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var mode = this.$getMode(session.getState(row-1));\n \n if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n mode = this.$getMode(session.getState(row));\n \n if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n mode = this.defaultMode;\n \n return mode.getFoldWidgetRange(session, foldStyle, row);\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/markdown_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\",\"ace/mode/html_highlight_rules\",\"ace/mode/css_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n\nvar escaped = function(ch) {\n return \"(?:[^\" + lang.escapeRegExp(ch) + \"\\\\\\\\]|\\\\\\\\.)*\";\n};\n\nfunction github_embed(tag, prefix) {\n return { // Github style block\n token : \"support.function\",\n regex : \"^\\\\s*```\" + tag + \"\\\\s*$\",\n push : prefix + \"start\"\n };\n}\n\nvar MarkdownHighlightRules = function() {\n HtmlHighlightRules.call(this);\n\n this.$rules[\"start\"].unshift({\n token : \"empty_line\",\n regex : '^$',\n next: \"allowBlock\"\n }, { // h1\n token: \"markup.heading.1\",\n regex: \"^=+(?=\\\\s*$)\"\n }, { // h2\n token: \"markup.heading.2\",\n regex: \"^\\\\-+(?=\\\\s*$)\"\n }, {\n token : function(value) {\n return \"markup.heading.\" + value.length;\n },\n regex : /^#{1,6}(?=\\s*[^ #]|\\s+#.)/,\n next : \"header\"\n },\n github_embed(\"(?:javascript|js)\", \"jscode-\"),\n github_embed(\"xml\", \"xmlcode-\"),\n github_embed(\"html\", \"htmlcode-\"),\n github_embed(\"css\", \"csscode-\"),\n { // Github style block\n token : \"support.function\",\n regex : \"^\\\\s*```\\\\s*\\\\S*(?:{.*?\\\\})?\\\\s*$\",\n next : \"githubblock\"\n }, { // block quote\n token : \"string.blockquote\",\n regex : \"^\\\\s*>\\\\s*(?:[*+-]|\\\\d+\\\\.)?\\\\s+\",\n next : \"blockquote\"\n }, { // HR * - _\n token : \"constant\",\n regex : \"^ {0,2}(?:(?: ?\\\\* ?){3,}|(?: ?\\\\- ?){3,}|(?: ?\\\\_ ?){3,})\\\\s*$\",\n next: \"allowBlock\"\n }, { // list\n token : \"markup.list\",\n regex : \"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",\n next : \"listblock-start\"\n }, {\n include : \"basic\"\n });\n\n this.addRules({\n \"basic\" : [{\n token : \"constant.language.escape\",\n regex : /\\\\[\\\\`*_{}\\[\\]()#+\\-.!]/\n }, { // code span `\n token : \"support.function\",\n regex : \"(`+)(.*?[^`])(\\\\1)\"\n }, { // reference\n token : [\"text\", \"constant\", \"text\", \"url\", \"string\", \"text\"],\n regex : \"^([ ]{0,3}\\\\[)([^\\\\]]+)(\\\\]:\\\\s*)([^ ]+)(\\\\s*(?:[\\\"][^\\\"]+[\\\"])?(\\\\s*))$\"\n }, { // link by reference\n token : [\"text\", \"string\", \"text\", \"constant\", \"text\"],\n regex : \"(\\\\[)(\" + escaped(\"]\") + \")(\\\\]\\\\s*\\\\[)(\"+ escaped(\"]\") + \")(\\\\])\"\n }, { // link by url\n token : [\"text\", \"string\", \"text\", \"markup.underline\", \"string\", \"text\"],\n regex : \"(\\\\[)(\" + // [\n escaped(\"]\") + // link text\n \")(\\\\]\\\\()\"+ // ](\n '((?:[^\\\\)\\\\s\\\\\\\\]|\\\\\\\\.|\\\\s(?=[^\"]))*)' + // href\n '(\\\\s*\"' + escaped('\"') + '\"\\\\s*)?' + // \"title\"\n \"(\\\\))\" // )\n }, { // strong ** __\n token : \"string.strong\",\n regex : \"([*]{2}|[_]{2}(?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"\n }, { // emphasis * _\n token : \"string.emphasis\",\n regex : \"([*]|[_](?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"\n }, { //\n token : [\"text\", \"url\", \"text\"],\n regex : \"(<)(\"+\n \"(?:https?|ftp|dict):[^'\\\">\\\\s]+\"+\n \"|\"+\n \"(?:mailto:)?[-.\\\\w]+\\\\@[-a-z0-9]+(?:\\\\.[-a-z0-9]+)*\\\\.[a-z]+\"+\n \")(>)\"\n }],\n \"allowBlock\": [\n {token : \"support.function\", regex : \"^ {4}.+\", next : \"allowBlock\"},\n {token : \"empty_line\", regex : '^$', next: \"allowBlock\"},\n {token : \"empty\", regex : \"\", next : \"start\"}\n ],\n\n \"header\" : [{\n regex: \"$\",\n next : \"start\"\n }, {\n include: \"basic\"\n }, {\n defaultToken : \"heading\"\n } ],\n\n \"listblock-start\" : [{\n token : \"support.variable\",\n regex : /(?:\\[[ x]\\])?/,\n next : \"listblock\"\n }],\n\n \"listblock\" : [ { // Lists only escape on completely blank lines.\n token : \"empty_line\",\n regex : \"^$\",\n next : \"start\"\n }, { // list\n token : \"markup.list\",\n regex : \"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",\n next : \"listblock-start\"\n }, {\n include : \"basic\", noEscape: true\n }, { // Github style block\n token : \"support.function\",\n regex : \"^\\\\s*```\\\\s*[a-zA-Z]*(?:{.*?\\\\})?\\\\s*$\",\n next : \"githubblock\"\n }, {\n defaultToken : \"list\" //do not use markup.list to allow stling leading `*` differntly\n } ],\n\n \"blockquote\" : [ { // Blockquotes only escape on blank lines.\n token : \"empty_line\",\n regex : \"^\\\\s*$\",\n next : \"start\"\n }, { // block quote\n token : \"string.blockquote\",\n regex : \"^\\\\s*>\\\\s*(?:[*+-]|\\\\d+\\\\.)?\\\\s+\",\n next : \"blockquote\"\n }, {\n include : \"basic\", noEscape: true\n }, {\n defaultToken : \"string.blockquote\"\n } ],\n\n \"githubblock\" : [ {\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"start\"\n }, {\n defaultToken : \"support.function\"\n } ]\n });\n\n this.embedRules(JavaScriptHighlightRules, \"jscode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.embedRules(HtmlHighlightRules, \"htmlcode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.embedRules(CssHighlightRules, \"csscode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.embedRules(XmlHighlightRules, \"xmlcode-\", [{\n token : \"support.function\",\n regex : \"^\\\\s*```\",\n next : \"pop\"\n }]);\n\n this.normalizeRules();\n};\noop.inherits(MarkdownHighlightRules, TextHighlightRules);\n\nexports.MarkdownHighlightRules = MarkdownHighlightRules;\n});\n\nace.define(\"ace/mode/folding/markdown\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n this.foldingStartMarker = /^(?:[=-]+\\s*$|#{1,6} |`{3})/;\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (!this.foldingStartMarker.test(line))\n return \"\";\n\n if (line[0] == \"`\") {\n if (session.bgTokenizer.getState(row) == \"start\")\n return \"end\";\n return \"start\";\n }\n\n return \"start\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n if (!line.match(this.foldingStartMarker))\n return;\n\n if (line[0] == \"`\") {\n if (session.bgTokenizer.getState(row) !== \"start\") {\n while (++row < maxRow) {\n line = session.getLine(row);\n if (line[0] == \"`\" & line.substring(0, 3) == \"```\")\n break;\n }\n return new Range(startRow, startColumn, row, 0);\n } else {\n while (row -- > 0) {\n line = session.getLine(row);\n if (line[0] == \"`\" & line.substring(0, 3) == \"```\")\n break;\n }\n return new Range(row, line.length, startRow, 0);\n }\n }\n\n var token;\n function isHeading(row) {\n token = session.getTokens(row)[0];\n return token && token.type.lastIndexOf(heading, 0) === 0;\n }\n\n var heading = \"markup.heading\";\n function getLevel() {\n var ch = token.value[0];\n if (ch == \"=\") return 6;\n if (ch == \"-\") return 5;\n return 7 - token.value.search(/[^#]/);\n }\n\n if (isHeading(row)) {\n var startHeadingLevel = getLevel();\n while (++row < maxRow) {\n if (!isHeading(row))\n continue;\n var level = getLevel();\n if (level >= startHeadingLevel)\n break;\n }\n\n endRow = row - (!token || [\"=\", \"-\"].indexOf(token.value[0]) == -1 ? 1 : 2);\n\n if (endRow > startRow) {\n while (endRow > startRow && /^\\s*$/.test(session.getLine(endRow)))\n endRow--;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/markdown\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/xml\",\"ace/mode/html\",\"ace/mode/markdown_highlight_rules\",\"ace/mode/folding/markdown\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar XmlMode = acequire(\"./xml\").Mode;\nvar HtmlMode = acequire(\"./html\").Mode;\nvar MarkdownHighlightRules = acequire(\"./markdown_highlight_rules\").MarkdownHighlightRules;\nvar MarkdownFoldMode = acequire(\"./folding/markdown\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = MarkdownHighlightRules;\n\n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"xml-\": XmlMode,\n \"html-\": HtmlMode\n });\n\n this.foldingRules = new MarkdownFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.type = \"text\";\n this.blockComment = {start: \"\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n if (state == \"listblock\") {\n var match = /^(\\s*)(?:([-+*])|(\\d+)\\.)(\\s+)/.exec(line);\n if (!match)\n return \"\";\n var marker = match[2];\n if (!marker)\n marker = parseInt(match[3], 10) + 1 + \".\";\n return match[1] + marker + match[4];\n } else {\n return this.$getIndent(line);\n }\n };\n this.$id = \"ace/mode/markdown\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/matlab_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar MatlabHighlightRules = function() {\n\nvar keywords = (\n \"break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while\"\n );\n\n var builtinConstants = (\n \"true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout\"\n );\n\n var builtinFunctions = (\n \"abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|\"+\n\t\t\"airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|\" +\n\t\t\"audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|\"+\n\t\t\"bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|\"+\n\t\t\"bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|\"+\n\t\t\"camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|\"+\n\t\t\"computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|\"+\n\t\t\"getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|\"+\n\t\t\"getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|\"+\n\t\t\"getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|\"+\n\t\t\"getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|\"+\n\t\t\"hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|\"+\n\t\t\"renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|\"+\n\t\t\"setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|\"+\n\t\t\"cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|\"+\n\t\t\"clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|\"+\n\t\t\"commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|\"+\n\t\t\"copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|\"+\n\t\t\"cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|\"+\n\t\t\"dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|\"+\n\t\t\"demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|\"+\n\t\t\"dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|\"+\n\t\t\"erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|\"+\n\t\t\"expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|\"+\n\t\t\"fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|\"+\n\t\t\"findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|\"+\n\t\t\"frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|\"+\n\t\t\"get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|\"+\n\t\t\"guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|\"+\n\t\t\"hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|\"+\n\t\t\"hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|\"+\n\t\t\"ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|\"+\n\t\t\"1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|\"+\n\t\t\"isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|\"+\n\t\t\"isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|\"+\n\t\t\"isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|\"+\n\t\t\"lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|\"+\n\t\t\"linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|\"+\n\t\t\"lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|\"+\n\t\t\"matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|\"+\n\t\t\"MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|\"+\n\t\t\"minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|\"+\n\t\t\"multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|\"+\n\t\t\"ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|\"+\n\t\t\"NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|\"+\n\t\t\"getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|\"+\n\t\t\"inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|\"+\n\t\t\"setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|\"+\n\t\t\"ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|\"+\n\t\t\"orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|\"+\n\t\t\"permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|\"+\n\t\t\"polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|\"+\n\t\t\"PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|\"+\n\t\t\"getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|\"+\n\t\t\"rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|\"+\n\t\t\"restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|\"+\n\t\t\"saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|\"+\n\t\t\"setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|\"+\n\t\t\"spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|\"+\n\t\t\"str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|\"+\n\t\t\"strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|\"+\n\t\t\"support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|\"+\n\t\t\"textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|\"+\n\t\t\"transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|\"+\n\t\t\"uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|\"+\n\t\t\"uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|\"+\n\t\t\"userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|\"+\n\t\t\"view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|\"+\n\t\t\"what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|\"+\n\t\t\"ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|\"+\n\t\t\"pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|\"+\n\t\t\"cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|\"+\n\t\t\"template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|\"+\n\t\t\"controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|\"+\n\t\t\"dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|\"+\n\t\t\"fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|\"+\n\t\t\"pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|\"+\n\t\t\"gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|\"+\n\t\t\"jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|\"+\n\t\t\"LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|\"+\n\t\t\"mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|\"+\n\t\t\"sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|\"+\n\t\t\"nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|\"+\n\t\t\"pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|\"+\n\t\t\"Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|\"+\n\t\t\"rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|\"+\n\t\t\"robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|\"+\n\t\t\"statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|\"+\n\t\t\"ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest\"+\n\t\t\"adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|\"+\n\t\t\"bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|\"+\n\t\t\"cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|\"+\n\t\t\"entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|\"+\n\t\t\"getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|\"+\n\t\t\"iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|\"+\n\t\t\"imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|\"+\n\t\t\"imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|\"+\n\t\t\"imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|\"+\n\t\t\"imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|\"+\n\t\t\"imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|\"+\n\t\t\"iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|\"+\n\t\t\"isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|\"+\n\t\t\"medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|\"+\n\t\t\"reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|\"+\n\t\t\"rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|\"+\n\t\t\"warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|\"+\n\t\t\"linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog\"\n );\n var storageType = (\n \"cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse\"\n );\n var keywordMapper = this.createKeywordMapper({\n \"storage.type\": storageType,\n \"support.function\": builtinFunctions,\n \"keyword\": keywords,\n \"constant.language\": builtinConstants\n }, \"identifier\", true);\n\n this.$rules = {\n start: [{ \n token : \"string\",\n regex : \"'\",\n stateName : \"qstring\",\n next : [{\n token : \"constant.language.escape\",\n regex : \"''\"\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n regex: \"\",\n next: \"noQstring\"\n }], \n noQstring : [{\n regex: \"^\\\\s*%{\\\\s*$\",\n token: \"comment.start\",\n push: \"blockComment\"\n }, {\n token : \"comment\",\n regex : \"%[^\\r\\n]*\"\n }, {\n token : \"string\",\n regex : '\"',\n stateName : \"qqstring\",\n next : [{\n token : \"constant.language.escape\",\n regex : /\\\\./\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\",\n next: \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\",\n next: \"start\"\n }, {\n token : \"paren.lparen\",\n regex : \"[({\\\\[]\",\n next: \"start\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]})]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : \"text\",\n regex : \"$\",\n next : \"start\"\n }],\n blockComment: [{\n regex: \"^\\\\s*%{\\\\s*$\",\n token: \"comment.start\",\n push: \"blockComment\"\n }, {\n regex: \"^\\\\s*%}\\\\s*$\",\n token: \"comment.end\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n };\n \n this.normalizeRules();\n};\n\noop.inherits(MatlabHighlightRules, TextHighlightRules);\n\nexports.MatlabHighlightRules = MatlabHighlightRules;\n});\n\nace.define(\"ace/mode/matlab\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/matlab_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar MatlabHighlightRules = acequire(\"./matlab_highlight_rules\").MatlabHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = MatlabHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"%\";\n this.blockComment = {start: \"%{\", end: \"%}\"};\n\n this.$id = \"ace/mode/matlab\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/mel_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar MELHighlightRules = function() {\n\n this.$rules = { start: \n [ { caseInsensitive: true,\n token: 'storage.type.mel',\n regex: '\\\\b(matrix|string|vector|float|int|void)\\\\b' },\n { caseInsensitive: true,\n token: 'support.function.mel',\n regex: '\\\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\\\b' },\n { caseInsensitive: true,\n token: 'support.constant.mel',\n regex: '\\\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\\\b' },\n { caseInsensitive: true,\n token: 'keyword.control.mel',\n regex: '\\\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\\\b' },\n { token: 'keyword.other.mel', regex: '\\\\b(global)\\\\b' },\n { caseInsensitive: true,\n token: 'constant.language.mel',\n regex: '\\\\b(null|undefined)\\\\b' },\n { token: 'constant.numeric.mel',\n regex: '\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\\\b' },\n { token: 'punctuation.definition.string.begin.mel',\n regex: '\"',\n push: \n [ { token: 'constant.character.escape.mel', regex: '\\\\\\\\.' },\n { token: 'punctuation.definition.string.end.mel',\n regex: '\"',\n next: 'pop' },\n { defaultToken: 'string.quoted.double.mel' } ] },\n \n { token: [ 'variable.other.mel', 'punctuation.definition.variable.mel' ],\n regex: '(\\\\$)([a-zA-Z_\\\\x7f-\\\\xff][a-zA-Z0-9_\\\\x7f-\\\\xff]*?\\\\b)' },\n \n { token: 'punctuation.definition.string.begin.mel',\n regex: '\\'',\n push: \n [ { token: 'constant.character.escape.mel', regex: '\\\\\\\\.' },\n { token: 'punctuation.definition.string.end.mel',\n regex: '\\'',\n next: 'pop' },\n { defaultToken: 'string.quoted.single.mel' } ] },\n \n { token: 'constant.language.mel',\n regex: '\\\\b(false|true|yes|no|on|off)\\\\b' },\n \n { token: 'punctuation.definition.comment.mel',\n regex: '/\\\\*',\n push: \n [ { token: 'punctuation.definition.comment.mel',\n regex: '\\\\*/',\n next: 'pop' },\n { defaultToken: 'comment.block.mel' } ] },\n \n { token: [ 'comment.line.double-slash.mel', 'punctuation.definition.comment.mel' ],\n regex: '(//)(.*$\\\\n?)' },\n \n { caseInsensitive: true,\n token: 'keyword.operator.mel',\n regex: '\\\\b(instanceof)\\\\b' },\n { token: 'keyword.operator.symbolic.mel',\n regex: '[-\\\\!\\\\%\\\\&\\\\*\\\\+\\\\=\\\\/\\\\?\\\\:]' },\n \n { token: [ 'meta.preprocessor.mel', 'punctuation.definition.preprocessor.mel' ],\n regex: '(^[ \\\\t]*)((?:#)[a-zA-Z]+)' },\n \n { token: [ 'meta.function.mel', 'keyword.other.mel', 'storage.type.mel', 'entity.name.function.mel', 'punctuation.section.function.mel' ],\n regex: '(global\\\\s*)?(proc\\\\s*)(\\\\w+\\\\s*\\\\[?\\\\]?\\\\s+|\\\\s+)([A-Za-z_][A-Za-z0-9_\\\\.]*)(\\\\s*\\\\()',\n push: \n [ { include: '$self' },\n { token: 'punctuation.section.function.mel',\n regex: '\\\\)',\n next: 'pop' },\n { defaultToken: 'meta.function.mel' } ] }\n \n ] };\n \n this.normalizeRules();\n};\n\noop.inherits(MELHighlightRules, TextHighlightRules);\n\nexports.MELHighlightRules = MELHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/mel\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/mel_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar MELHighlightRules = acequire(\"./mel_highlight_rules\").MELHighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = MELHighlightRules;\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/mel\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/mysql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar MysqlHighlightRules = function() {\n\n var mySqlKeywords = /*sql*/ \"alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where\" + \"|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|acequire|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat\";\n var builtins = \"by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl\";\n var variable = \"charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee\";\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtins,\n \"keyword\": mySqlKeywords,\n \"constant\": \"false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat\",\n \"variable.language\": variable\n }, \"identifier\", true);\n\n \n function string(rule) {\n var start = rule.start;\n var escapeSeq = rule.escape;\n return {\n token: \"string.start\",\n regex: start,\n next: [\n {token: \"constant.language.escape\", regex: escapeSeq},\n {token: \"string.end\", next: \"start\", regex: start},\n {defaultToken: \"string\"}\n ]\n };\n }\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\", regex : \"(?:-- |#).*$\"\n }, \n string({start: '\"', escape: /\\\\[0'\"bnrtZ\\\\%_]?/}),\n string({start: \"'\", escape: /\\\\[0'\"bnrtZ\\\\%_]?/}),\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next : \"comment\"\n }, {\n token : \"constant.numeric\", // hex\n regex : /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"constant.class\",\n regex : \"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"constant.buildin\",\n regex : \"`[^`]*`\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ],\n \"comment\" : [\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : \"start\"},\n {defaultToken : \"comment\"}\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\", [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(MysqlHighlightRules, TextHighlightRules);\n\nexports.MysqlHighlightRules = MysqlHighlightRules;\n});\n\nace.define(\"ace/mode/mysql\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/mysql_highlight_rules\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"../mode/text\").Mode;\nvar MysqlHighlightRules = acequire(\"./mysql_highlight_rules\").MysqlHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = MysqlHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() { \n this.lineCommentStart = [\"--\", \"#\"]; // todo space\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.$id = \"ace/mode/mysql\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/c_cpp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar cFunctions = exports.cFunctions = \"\\\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\\\b\";\n\nvar c_cppHighlightRules = function() {\n\n var keywordControls = (\n \"break|case|continue|default|do|else|for|goto|if|_Pragma|\" +\n \"return|switch|while|catch|operator|try|throw|using\"\n );\n \n var storageType = (\n \"asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|\" +\n \"_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|\" +\n \"class|wchar_t|template|char16_t|char32_t\"\n );\n\n var storageModifiers = (\n \"const|extern|register|restrict|static|volatile|inline|private|\" +\n \"protected|public|friend|explicit|virtual|export|mutable|typename|\" +\n \"constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local\"\n );\n\n var keywordOperators = (\n \"and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq\" +\n \"const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace\"\n );\n\n var builtinConstants = (\n \"NULL|true|false|TRUE|FALSE|nullptr\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword.control\" : keywordControls,\n \"storage.type\" : storageType,\n \"storage.modifier\" : storageModifiers,\n \"keyword.operator\" : keywordOperators,\n \"variable.language\": \"this\",\n \"constant.language\": builtinConstants\n }, \"identifier\");\n\n var identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\\\\b\";\n var escapeRe = /\\\\(?:['\"?\\\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}U[a-fA-F\\d]{8}|.)/.source;\n var formatRe = \"%\"\n + /(\\d+\\$)?/.source // field (argument #)\n + /[#0\\- +']*/.source // flags\n + /[,;:_]?/.source // separator character (AltiVec)\n + /((-?\\d+)|\\*(-?\\d+\\$)?)?/.source // minimum field width\n + /(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?/.source // precision\n + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier\n + /(\\[[^\"\\]]+\\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type\n\n this.$rules = { \n \"start\" : [\n {\n token : \"comment\",\n regex : \"//$\",\n next : \"start\"\n }, {\n token : \"comment\",\n regex : \"//\",\n next : \"singleLineComment\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // character\n regex : \"'(?:\" + escapeRe + \"|.)?'\"\n }, {\n token : \"string.start\",\n regex : '\"', \n stateName: \"qqstring\",\n next: [\n { token: \"string\", regex: /\\\\\\s*$/, next: \"qqstring\" },\n { token: \"constant.language.escape\", regex: escapeRe },\n { token: \"constant.language.escape\", regex: formatRe },\n { token: \"string.end\", regex: '\"|$', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"string.start\",\n regex : 'R\"\\\\(', \n stateName: \"rawString\",\n next: [\n { token: \"string.end\", regex: '\\\\)\"', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"#\\\\s*(?:include|import|pragma|line|define|undef)\\\\b\",\n next : \"directive\"\n }, {\n token : \"keyword\", // special case pre-compiler directive\n regex : \"#\\\\s*(?:endif|if|ifdef|else|elif|ifndef)\\\\b\"\n }, {\n token : \"support.function.C99.c\",\n regex : cFunctions\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|<<=|>>=|>>>=|<>|&&|\\|\\||\\?:|[*%\\/+\\-&\\^|~!<>=]=?/\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"singleLineComment\" : [\n {\n token : \"comment\",\n regex : /\\\\$/,\n next : \"singleLineComment\"\n }, {\n token : \"comment\",\n regex : /$/,\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"directive\" : [\n {\n token : \"constant.other.multiline\",\n regex : /\\\\/\n },\n {\n token : \"constant.other.multiline\",\n regex : /.*\\\\/\n },\n {\n token : \"constant.other\",\n regex : \"\\\\s*<.+?>\",\n next : \"start\"\n },\n {\n token : \"constant.other\", // single line\n regex : '\\\\s*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]',\n next : \"start\"\n }, \n {\n token : \"constant.other\", // single line\n regex : \"\\\\s*['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\",\n next : \"start\"\n },\n {\n token : \"constant.other\",\n regex : /[^\\\\\\/]+/,\n next : \"start\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(c_cppHighlightRules, TextHighlightRules);\n\nexports.c_cppHighlightRules = c_cppHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/c_cpp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/c_cpp_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar c_cppHighlightRules = acequire(\"./c_cpp_highlight_rules\").c_cppHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = c_cppHighlightRules;\n\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/c_cpp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/nix_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var NixHighlightRules = function() {\n\n var constantLanguage = \"true|false\";\n var keywordControl = \"with|import|if|else|then|inherit\";\n var keywordDeclaration = \"let|in|rec\";\n\n var keywordMapper = this.createKeywordMapper({\n \"constant.language.nix\": constantLanguage,\n \"keyword.control.nix\": keywordControl,\n \"keyword.declaration.nix\": keywordDeclaration\n }, \"identifier\");\n\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: /#.*$/\n }, {\n token: \"comment\",\n regex: /\\/\\*/,\n next: \"comment\"\n }, {\n token: \"constant\",\n regex: \"<[^>]+>\"\n }, {\n regex: \"(==|!=|<=?|>=?)\",\n token: [\"keyword.operator.comparison.nix\"]\n }, {\n regex: \"((?:[+*/%-]|\\\\~)=)\",\n token: [\"keyword.operator.assignment.arithmetic.nix\"]\n }, {\n regex: \"=\",\n token: \"keyword.operator.assignment.nix\"\n }, {\n token: \"string\",\n regex: \"''\",\n next: \"qqdoc\"\n }, {\n token: \"string\",\n regex: \"'\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"',\n push: \"qqstring\"\n }, {\n token: \"constant.numeric\", // hex\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\", // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n regex: \"}\",\n token: function(val, start, stack) {\n return stack[1] && stack[1].charAt(0) == \"q\" ? \"constant.language.escape\" : \"text\";\n },\n next: \"pop\"\n }],\n \"comment\": [{\n token: \"comment\", // closing comment\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }],\n \"qqdoc\": [\n {\n token: \"constant.language.escape\",\n regex: /\\$\\{/,\n push: \"start\"\n }, {\n token: \"string\",\n regex: \"''\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [\n {\n token: \"constant.language.escape\",\n regex: /\\$\\{/,\n push: \"start\"\n }, {\n token: \"string\",\n regex: '\"',\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [\n {\n token: \"constant.language.escape\",\n regex: /\\$\\{/,\n push: \"start\"\n }, {\n token: \"string\",\n regex: \"'\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n };\n\n this.normalizeRules();\n };\n\n oop.inherits(NixHighlightRules, TextHighlightRules);\n\n exports.NixHighlightRules = NixHighlightRules;\n});\n\nace.define(\"ace/mode/nix\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/c_cpp\",\"ace/mode/nix_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar CMode = acequire(\"./c_cpp\").Mode;\nvar NixHighlightRules = acequire(\"./nix_highlight_rules\").NixHighlightRules;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n CMode.call(this);\n this.HighlightRules = NixHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, CMode);\n\n(function() { \n this.lineCommentStart = \"#\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/nix\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/nsis_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar NSISHighlightRules = function() {\n\n this.$rules = {\n start: [{\n token: \"keyword.compiler.nsis\",\n regex: /^\\s*!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\\b/,\n caseInsensitive: true\n }, {\n token: \"keyword.command.nsis\",\n regex: /^\\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\\b/,\n caseInsensitive: true\n }, {\n token: \"keyword.control.nsis\",\n regex: /^\\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\\b/,\n caseInsensitive: true\n }, {\n token: \"keyword.plugin.nsis\",\n regex: /^\\s*\\w+::\\w+/,\n caseInsensitive: true\n }, {\n token: \"keyword.operator.comparison.nsis\",\n regex: /[!<>]?=|<>|<|>/\n }, {\n token: \"support.function.nsis\",\n regex: /(?:\\b|^\\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\\b/,\n caseInsensitive: true\n }, {\n token: \"support.library.nsis\",\n regex: /\\${[\\w\\.:-]+}/\n }, {\n token: \"constant.nsis\",\n regex: /\\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\\b/,\n caseInsensitive: true\n }, {\n token: \"constant.library.nsis\",\n regex: /\\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/\n }, {\n token: \"constant.language.boolean.true.nsis\",\n regex: /\\b(?:true|on)\\b/\n }, {\n token: \"constant.language.boolean.false.nsis\",\n regex: /\\b(?:false|off)\\b/\n }, {\n token: \"constant.language.option.nsis\",\n regex: /(?:\\b|^\\s*)(?:(?:un\\.)?components|(?:un\\.)?custom|(?:un\\.)?directory|(?:un\\.)?instfiles|(?:un\\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\\b/,\n caseInsensitive: true\n }, {\n token: \"constant.language.slash-option.nsis\",\n regex: /\\b\\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\\b/,\n caseInsensitive: true\n }, {\n token: \"constant.numeric.nsis\",\n regex: /\\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\\.[0-9]+)?)\\b/\n }, {\n token: \"entity.name.function.nsis\",\n regex: /\\$\\([\\w\\.:-]+\\)/\n }, {\n token: \"storage.type.function.nsis\",\n regex: /\\$\\w+/\n }, {\n token: \"punctuation.definition.string.begin.nsis\",\n regex: /`/,\n push: [{\n token: \"punctuation.definition.string.end.nsis\",\n regex: /`/,\n next: \"pop\"\n }, {\n token: \"constant.character.escape.nsis\",\n regex: /\\$\\\\./\n }, {\n defaultToken: \"string.quoted.back.nsis\"\n }]\n }, {\n token: \"punctuation.definition.string.begin.nsis\",\n regex: /\"/,\n push: [{\n token: \"punctuation.definition.string.end.nsis\",\n regex: /\"/,\n next: \"pop\"\n }, {\n token: \"constant.character.escape.nsis\",\n regex: /\\$\\\\./\n }, {\n defaultToken: \"string.quoted.double.nsis\"\n }]\n }, {\n token: \"punctuation.definition.string.begin.nsis\",\n regex: /'/,\n push: [{\n token: \"punctuation.definition.string.end.nsis\",\n regex: /'/,\n next: \"pop\"\n }, {\n token: \"constant.character.escape.nsis\",\n regex: /\\$\\\\./\n }, {\n defaultToken: \"string.quoted.single.nsis\"\n }]\n }, {\n token: [\n \"punctuation.definition.comment.nsis\",\n \"comment.line.nsis\"\n ],\n regex: /(;|#)(.*$)/\n }, {\n token: \"punctuation.definition.comment.nsis\",\n regex: /\\/\\*/,\n push: [{\n token: \"punctuation.definition.comment.nsis\",\n regex: /\\*\\//,\n next: \"pop\"\n }, {\n defaultToken: \"comment.block.nsis\"\n }]\n }, {\n token: \"text\",\n regex: /(?:!include|!insertmacro)\\b/\n }]\n };\n \n this.normalizeRules();\n};\n\nNSISHighlightRules.metaData = {\n comment: \"\\n\\ttodo: - highlight functions\\n\\t\",\n fileTypes: [\"nsi\", \"nsh\"],\n name: \"NSIS\",\n scopeName: \"source.nsis\"\n};\n\n\noop.inherits(NSISHighlightRules, TextHighlightRules);\n\nexports.NSISHighlightRules = NSISHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/nsis\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/nsis_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar NSISHighlightRules = acequire(\"./nsis_highlight_rules\").NSISHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = NSISHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = [\";\", \"#\"];\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/nsis\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/c_cpp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar cFunctions = exports.cFunctions = \"\\\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\\\b\";\n\nvar c_cppHighlightRules = function() {\n\n var keywordControls = (\n \"break|case|continue|default|do|else|for|goto|if|_Pragma|\" +\n \"return|switch|while|catch|operator|try|throw|using\"\n );\n \n var storageType = (\n \"asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|\" +\n \"_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|\" +\n \"class|wchar_t|template|char16_t|char32_t\"\n );\n\n var storageModifiers = (\n \"const|extern|register|restrict|static|volatile|inline|private|\" +\n \"protected|public|friend|explicit|virtual|export|mutable|typename|\" +\n \"constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local\"\n );\n\n var keywordOperators = (\n \"and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq\" +\n \"const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace\"\n );\n\n var builtinConstants = (\n \"NULL|true|false|TRUE|FALSE|nullptr\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword.control\" : keywordControls,\n \"storage.type\" : storageType,\n \"storage.modifier\" : storageModifiers,\n \"keyword.operator\" : keywordOperators,\n \"variable.language\": \"this\",\n \"constant.language\": builtinConstants\n }, \"identifier\");\n\n var identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\\\\b\";\n var escapeRe = /\\\\(?:['\"?\\\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}U[a-fA-F\\d]{8}|.)/.source;\n var formatRe = \"%\"\n + /(\\d+\\$)?/.source // field (argument #)\n + /[#0\\- +']*/.source // flags\n + /[,;:_]?/.source // separator character (AltiVec)\n + /((-?\\d+)|\\*(-?\\d+\\$)?)?/.source // minimum field width\n + /(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?/.source // precision\n + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier\n + /(\\[[^\"\\]]+\\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type\n\n this.$rules = { \n \"start\" : [\n {\n token : \"comment\",\n regex : \"//$\",\n next : \"start\"\n }, {\n token : \"comment\",\n regex : \"//\",\n next : \"singleLineComment\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // character\n regex : \"'(?:\" + escapeRe + \"|.)?'\"\n }, {\n token : \"string.start\",\n regex : '\"', \n stateName: \"qqstring\",\n next: [\n { token: \"string\", regex: /\\\\\\s*$/, next: \"qqstring\" },\n { token: \"constant.language.escape\", regex: escapeRe },\n { token: \"constant.language.escape\", regex: formatRe },\n { token: \"string.end\", regex: '\"|$', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"string.start\",\n regex : 'R\"\\\\(', \n stateName: \"rawString\",\n next: [\n { token: \"string.end\", regex: '\\\\)\"', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"#\\\\s*(?:include|import|pragma|line|define|undef)\\\\b\",\n next : \"directive\"\n }, {\n token : \"keyword\", // special case pre-compiler directive\n regex : \"#\\\\s*(?:endif|if|ifdef|else|elif|ifndef)\\\\b\"\n }, {\n token : \"support.function.C99.c\",\n regex : cFunctions\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|<<=|>>=|>>>=|<>|&&|\\|\\||\\?:|[*%\\/+\\-&\\^|~!<>=]=?/\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"singleLineComment\" : [\n {\n token : \"comment\",\n regex : /\\\\$/,\n next : \"singleLineComment\"\n }, {\n token : \"comment\",\n regex : /$/,\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"directive\" : [\n {\n token : \"constant.other.multiline\",\n regex : /\\\\/\n },\n {\n token : \"constant.other.multiline\",\n regex : /.*\\\\/\n },\n {\n token : \"constant.other\",\n regex : \"\\\\s*<.+?>\",\n next : \"start\"\n },\n {\n token : \"constant.other\", // single line\n regex : '\\\\s*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]',\n next : \"start\"\n }, \n {\n token : \"constant.other\", // single line\n regex : \"\\\\s*['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\",\n next : \"start\"\n },\n {\n token : \"constant.other\",\n regex : /[^\\\\\\/]+/,\n next : \"start\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(c_cppHighlightRules, TextHighlightRules);\n\nexports.c_cppHighlightRules = c_cppHighlightRules;\n});\n\nace.define(\"ace/mode/objectivec_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/c_cpp_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar C_Highlight_File = acequire(\"./c_cpp_highlight_rules\");\nvar CHighlightRules = C_Highlight_File.c_cppHighlightRules;\n\nvar ObjectiveCHighlightRules = function() {\n\n var escapedConstRe = \"\\\\\\\\(?:[abefnrtv'\\\"?\\\\\\\\]|\" + \n \"[0-3]\\\\d{1,2}|\" +\n \"[4-7]\\\\d?|\" +\n \"222|\" +\n \"x[a-zA-Z0-9]+)\";\n\n var specialVariables = [{\n regex: \"\\\\b_cmd\\\\b\",\n token: \"variable.other.selector.objc\"\n }, {\n regex: \"\\\\b(?:self|super)\\\\b\",\n token: \"variable.language.objc\"\n }\n ];\n\n var cObj = new CHighlightRules();\n var cRules = cObj.getRules();\n\n this.$rules = {\n \"start\": [ \n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, \n {\n token: [ \"storage.type.objc\", \"punctuation.definition.storage.type.objc\", \n \"entity.name.type.objc\", \"text\", \"entity.other.inherited-class.objc\"\n ],\n regex: \"(@)(interface|protocol)(?!.+;)(\\\\s+[A-Za-z_][A-Za-z0-9_]*)(\\\\s*:\\\\s*)([A-Za-z]+)\"\n },\n {\n token: [ \"storage.type.objc\" ],\n regex: \"(@end)\"\n },\n {\n token: [ \"storage.type.objc\", \"entity.name.type.objc\", \n \"entity.other.inherited-class.objc\"\n ],\n regex: \"(@implementation)(\\\\s+[A-Za-z_][A-Za-z0-9_]*)(\\\\s*?::\\\\s*(?:[A-Za-z][A-Za-z0-9]*))?\"\n },\n {\n token: \"string.begin.objc\",\n regex: '@\"',\n next: \"constant_NSString\"\n },\n {\n token: \"storage.type.objc\",\n regex: \"\\\\bid\\\\s*<\",\n next: \"protocol_list\"\n },\n {\n token: \"keyword.control.macro.objc\",\n regex: \"\\\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\\\b\"\n },\n {\n token: [\"punctuation.definition.keyword.objc\", \"keyword.control.exception.objc\"],\n regex: \"(@)(try|catch|finally|throw)\\\\b\"\n },\n {\n token: [\"punctuation.definition.keyword.objc\", \"keyword.other.objc\"],\n regex: \"(@)(defs|encode)\\\\b\"\n },\n {\n token: [\"storage.type.id.objc\", \"text\"],\n regex: \"(\\\\bid\\\\b)(\\\\s|\\\\n)?\"\n },\n {\n token: \"storage.type.objc\",\n regex: \"\\\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\\\b\"\n },\n {\n token: [ \"punctuation.definition.storage.type.objc\", \"storage.type.objc\"],\n regex: \"(@)(class|protocol)\\\\b\"\n },\n {\n token: [ \"punctuation.definition.storage.type.objc\", \"punctuation\"],\n regex: \"(@selector)(\\\\s*\\\\()\",\n next: \"selectors\"\n },\n {\n token: [ \"punctuation.definition.storage.modifier.objc\", \"storage.modifier.objc\"],\n regex: \"(@)(synchronized|public|private|protected|package)\\\\b\"\n },\n {\n token: \"constant.language.objc\",\n regex: \"\\\\bYES|NO|Nil|nil\\\\b\"\n },\n {\n token: \"support.variable.foundation\",\n regex: \"\\\\bNSApp\\\\b\"\n },\n {\n token: [ \"support.function.cocoa.leopard\"],\n regex: \"(?:\\\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\\\b)\"\n },\n {\n token: [\"support.function.cocoa\"],\n regex: \"(?:\\\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\\\b)\"\n },\n {\n token: [\"support.class.cocoa.leopard\"],\n regex: \"(?:\\\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\\\b)\"\n },\n {\n token: [\"support.class.cocoa\"],\n regex: \"(?:\\\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\\\b)\"\n },\n {\n token: [\"support.type.cocoa.leopard\"],\n regex: \"(?:\\\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\\\b)\"\n },\n {\n token: [\"support.class.quartz\"],\n regex: \"(?:\\\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\\\b)\"\n },\n {\n token: [\"support.type.quartz\"],\n regex: \"(?:\\\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\\\b)\"\n },\n {\n token: [\"support.type.cocoa\"],\n regex: \"(?:\\\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\\\b)\"\n },\n {\n token: [\"support.constant.cocoa\"],\n regex: \"(?:\\\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\\\b)\"\n },\n {\n token: [\"support.constant.notification.cocoa.leopard\"],\n regex: \"(?:\\\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\\\b)\"\n },\n {\n token: [\"support.constant.notification.cocoa\"],\n regex: \"(?:\\\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\\\b)\"\n },\n {\n token: [\"support.constant.cocoa.leopard\"],\n regex: \"(?:\\\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\\\b)\"\n },\n {\n token: [\"support.constant.cocoa\"],\n regex: \"(?:\\\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\\\b)\"\n },\n {\n token: \"support.function.C99.c\",\n regex: C_Highlight_File.cFunctions\n },\n {\n token : cObj.getKeywords(),\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n },\n {\n token: \"punctuation.section.scope.begin.objc\",\n regex: \"\\\\[\",\n next: \"bracketed_content\"\n },\n {\n token: \"meta.function.objc\",\n regex: \"^(?:-|\\\\+)\\\\s*\"\n }\n ],\n \"constant_NSString\": [\n {\n token: \"constant.character.escape.objc\",\n regex: escapedConstRe\n },\n {\n token: \"invalid.illegal.unknown-escape.objc\",\n regex: \"\\\\\\\\.\"\n },\n {\n token: \"string\",\n regex: '[^\"\\\\\\\\]+'\n },\n {\n token: \"punctuation.definition.string.end\",\n regex: \"\\\"\",\n next: \"start\"\n }\n ],\n \"protocol_list\": [\n {\n token: \"punctuation.section.scope.end.objc\",\n regex: \">\",\n next: \"start\"\n },\n {\n token: \"support.other.protocol.objc\",\n regex: \"\\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\\b\"\n }\n ],\n \"selectors\": [\n {\n token: \"support.function.any-method.name-of-parameter.objc\",\n regex: \"\\\\b(?:[a-zA-Z_:][\\\\w]*)+\"\n },\n {\n token: \"punctuation\",\n regex: \"\\\\)\",\n next: \"start\"\n }\n ],\n \"bracketed_content\": [\n {\n token: \"punctuation.section.scope.end.objc\",\n regex: \"]\",\n next: \"start\"\n },\n {\n token: [\"support.function.any-method.objc\"],\n regex: \"(?:predicateWithFormat:| NSPredicate predicateWithFormat:)\",\n next: \"start\"\n },\n {\n token: \"support.function.any-method.objc\",\n regex: \"\\\\w+(?::|(?=]))\",\n next: \"start\"\n }\n ],\n \"bracketed_strings\": [\n {\n token: \"punctuation.section.scope.end.objc\",\n regex: \"]\",\n next: \"start\"\n },\n {\n token: \"keyword.operator.logical.predicate.cocoa\",\n regex: \"\\\\b(?:AND|OR|NOT|IN)\\\\b\"\n },\n {\n token: [\"invalid.illegal.unknown-method.objc\", \"punctuation.separator.arguments.objc\"],\n regex: \"\\\\b(\\\\w+)(:)\"\n },\n {\n regex: \"\\\\b(?:ALL|ANY|SOME|NONE)\\\\b\",\n token: \"constant.language.predicate.cocoa\"\n },\n {\n regex: \"\\\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\\\b\",\n token: \"constant.language.predicate.cocoa\"\n },\n {\n regex: \"\\\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\\\b\",\n token: \"keyword.operator.comparison.predicate.cocoa\"\n },\n {\n regex: \"\\\\bC(?:ASEINSENSITIVE|I)\\\\b\",\n token: \"keyword.other.modifier.predicate.cocoa\"\n },\n {\n regex: \"\\\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\\\b\",\n token: \"keyword.other.predicate.cocoa\"\n },\n {\n regex: escapedConstRe,\n token: \"constant.character.escape.objc\"\n },\n {\n regex: \"\\\\\\\\.\",\n token: \"invalid.illegal.unknown-escape.objc\"\n },\n {\n token: \"string\",\n regex: '[^\"\\\\\\\\]'\n },\n {\n token: \"punctuation.definition.string.end.objc\",\n regex: \"\\\"\",\n next: \"predicates\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \".*?\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"methods\" : [\n {\n token : \"meta.function.objc\",\n regex : \"(?=\\\\{|#)|;\",\n next : \"start\"\n }\n ]\n};\n for (var r in cRules) {\n if (this.$rules[r]) {\n if (this.$rules[r].push)\n this.$rules[r].push.apply(this.$rules[r], cRules[r]);\n } else {\n this.$rules[r] = cRules[r];\n }\n }\n \n this.$rules.bracketed_content = this.$rules.bracketed_content.concat(\n this.$rules.start, specialVariables\n );\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(ObjectiveCHighlightRules, CHighlightRules);\n\nexports.ObjectiveCHighlightRules = ObjectiveCHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/objectivec\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/objectivec_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ObjectiveCHighlightRules = acequire(\"./objectivec_highlight_rules\").ObjectiveCHighlightRules;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = ObjectiveCHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/objectivec\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/ocaml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar OcamlHighlightRules = function() {\n\n var keywords = (\n \"and|as|assert|begin|class|constraint|do|done|downto|else|end|\" +\n \"exception|external|for|fun|function|functor|if|in|include|\" +\n \"inherit|initializer|lazy|let|match|method|module|mutable|new|\" +\n \"object|of|open|or|private|rec|sig|struct|then|to|try|type|val|\" +\n \"virtual|when|while|with\"\n );\n\n var builtinConstants = (\"true|false\");\n\n var builtinFunctions = (\n \"abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|\" +\n \"add_available_units|add_big_int|add_buffer|add_channel|add_char|\" +\n \"add_initializer|add_int_big_int|add_interfaces|add_num|add_string|\" +\n \"add_substitute|add_substring|alarm|allocated_bytes|allow_only|\" +\n \"allow_unsafe_modules|always|append|appname_get|appname_set|\" +\n \"approx_num_exp|approx_num_fix|arg|argv|arith_status|array|\" +\n \"array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|\" +\n \"assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|\" +\n \"beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|\" +\n \"bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|\" +\n \"bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|\" +\n \"bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|\" +\n \"cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|\" +\n \"chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|\" +\n \"chown|chr|chroot|classify_float|clear|clear_available_units|\" +\n \"clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|\" +\n \"close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|\" +\n \"close_out|close_out_noerr|close_process|close_process|\" +\n \"close_process_full|close_process_in|close_process_out|close_subwindow|\" +\n \"close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|\" +\n \"combine|combine|command|compact|compare|compare_big_int|compare_num|\" +\n \"complex32|complex64|concat|conj|connect|contains|contains_from|contents|\" +\n \"copy|cos|cosh|count|count|counters|create|create_alarm|create_image|\" +\n \"create_matrix|create_matrix|create_matrix|create_object|\" +\n \"create_object_and_run_initializers|create_object_opt|create_process|\" +\n \"create_process|create_process_env|create_process_env|create_table|\" +\n \"current|current_dir_name|current_point|current_x|current_y|curveto|\" +\n \"custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|\" +\n \"delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|\" +\n \"dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|\" +\n \"double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|\" +\n \"draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|\" +\n \"dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|\" +\n \"environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|\" +\n \"error_message|escaped|establish_server|executable_name|execv|execve|execvp|\" +\n \"execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|\" +\n \"file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|\" +\n \"filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|\" +\n \"float|float32|float64|float_of_big_int|float_of_bits|float_of_int|\" +\n \"float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|\" +\n \"flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|\" +\n \"for_all|for_all2|force|force_newline|force_val|foreground|fork|\" +\n \"format_of_string|formatter_of_buffer|formatter_of_out_channel|\" +\n \"fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|\" +\n \"from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|\" +\n \"full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|\" +\n \"genarray_of_array1|genarray_of_array2|genarray_of_array3|get|\" +\n \"get_all_formatter_output_functions|get_approx_printing|get_copy|\" +\n \"get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|\" +\n \"get_formatter_output_functions|get_formatter_tag_functions|get_image|\" +\n \"get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|\" +\n \"get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|\" +\n \"get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|\" +\n \"getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|\" +\n \"getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|\" +\n \"getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|\" +\n \"getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|\" +\n \"getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|\" +\n \"global_replace|global_substitute|gmtime|green|grid|group_beginning|\" +\n \"group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|\" +\n \"hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|\" +\n \"incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|\" +\n \"infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|\" +\n \"input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|\" +\n \"int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|\" +\n \"int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|\" +\n \"is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|\" +\n \"is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|\" +\n \"kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|\" +\n \"lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|\" +\n \"lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|\" +\n \"loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|\" +\n \"logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|\" +\n \"lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|\" +\n \"make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|\" +\n \"marshal|match_beginning|match_end|matched_group|matched_string|max|\" +\n \"max_array_length|max_big_int|max_elt|max_float|max_int|max_num|\" +\n \"max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|\" +\n \"min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|\" +\n \"minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|\" +\n \"mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|\" +\n \"nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|\" +\n \"new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|\" +\n \"nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|\" +\n \"num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|\" +\n \"of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|\" +\n \"of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|\" +\n \"open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|\" +\n \"open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|\" +\n \"open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|\" +\n \"open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|\" +\n \"out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|\" +\n \"output_char|output_string|output_value|over_max_boxes|pack|params|\" +\n \"parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|\" +\n \"place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|\" +\n \"power_big_int_positive_big_int|power_big_int_positive_int|\" +\n \"power_int_positive_big_int|power_int_positive_int|power_num|\" +\n \"pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|\" +\n \"pp_get_all_formatter_output_functions|pp_get_ellipsis_text|\" +\n \"pp_get_formatter_output_functions|pp_get_formatter_tag_functions|\" +\n \"pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|\" +\n \"pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|\" +\n \"pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|\" +\n \"pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|\" +\n \"pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|\" +\n \"pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|\" +\n \"pp_set_all_formatter_output_functions|pp_set_ellipsis_text|\" +\n \"pp_set_formatter_out_channel|pp_set_formatter_output_functions|\" +\n \"pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|\" +\n \"pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|\" +\n \"pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|\" +\n \"prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|\" +\n \"print_bool|print_break|print_char|print_cut|print_endline|print_float|\" +\n \"print_flush|print_if_newline|print_int|print_newline|print_space|\" +\n \"print_stat|print_string|print_tab|print_tbreak|printf|prohibit|\" +\n \"public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|\" +\n \"raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|\" +\n \"read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|\" +\n \"recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|\" +\n \"regexp_string_case_fold|register|register_exception|rem|remember_mode|\" +\n \"remove|remove_assoc|remove_assq|rename|replace|replace_first|\" +\n \"replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|\" +\n \"rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|\" +\n \"rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|\" +\n \"run_initializers|run_initializers_opt|scanf|search_backward|\" +\n \"search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|\" +\n \"set_all_formatter_output_functions|set_approx_printing|\" +\n \"set_binary_mode_in|set_binary_mode_out|set_close_on_exec|\" +\n \"set_close_on_exec|set_color|set_ellipsis_text|\" +\n \"set_error_when_null_denominator|set_field|set_floating_precision|\" +\n \"set_font|set_formatter_out_channel|set_formatter_output_functions|\" +\n \"set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|\" +\n \"set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|\" +\n \"set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|\" +\n \"set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|\" +\n \"set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|\" +\n \"setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|\" +\n \"setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|\" +\n \"shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|\" +\n \"shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|\" +\n \"shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|\" +\n \"sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|\" +\n \"sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|\" +\n \"sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|\" +\n \"sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|\" +\n \"sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|\" +\n \"slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|\" +\n \"slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|\" +\n \"split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|\" +\n \"square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|\" +\n \"stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|\" +\n \"stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|\" +\n \"str_formatter|string|string_after|string_before|string_match|\" +\n \"string_of_big_int|string_of_bool|string_of_float|string_of_format|\" +\n \"string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|\" +\n \"string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|\" +\n \"sub_right|subset|subset|substitute_first|substring|succ|succ|\" +\n \"succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|\" +\n \"symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|\" +\n \"tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|\" +\n \"tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|\" +\n \"temp_file|text_size|time|time|time|timed_read|timed_write|times|times|\" +\n \"tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|\" +\n \"to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|\" +\n \"to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|\" +\n \"truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|\" +\n \"uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|\" +\n \"unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|\" +\n \"update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|\" +\n \"wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|\" +\n \"wait_timed_read|wait_timed_write|wait_write|waitpid|white|\" +\n \"widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|\" +\n\n \"Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|\" +\n \"Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|\" +\n \"Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|\" +\n \"Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|\" +\n \"MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|\" +\n \"Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|\" +\n \"Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"support.function\": builtinFunctions\n }, \"identifier\");\n\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : '\\\\(\\\\*.*?\\\\*\\\\)\\\\s*?$'\n },\n {\n token : \"comment\",\n regex : '\\\\(\\\\*.*',\n next : \"comment\"\n },\n {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n },\n {\n token : \"string\", // single char\n regex : \"'.'\"\n },\n {\n token : \"string\", // \" string\n regex : '\"',\n next : \"qstring\"\n },\n {\n token : \"constant.numeric\", // imaginary\n regex : \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n },\n {\n token : \"constant.numeric\", // float\n regex : floatNumber\n },\n {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n },\n {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n },\n {\n token : \"keyword.operator\",\n regex : \"\\\\+\\\\.|\\\\-\\\\.|\\\\*\\\\.|\\\\/\\\\.|#|;;|\\\\+|\\\\-|\\\\*|\\\\*\\\\*\\\\/|\\\\/\\\\/|%|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|<-|=\"\n },\n {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n },\n {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n },\n {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\)\",\n next : \"start\"\n },\n {\n defaultToken : \"comment\"\n }\n ],\n\n \"qstring\" : [\n {\n token : \"string\",\n regex : '\"',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ]\n };\n};\n\noop.inherits(OcamlHighlightRules, TextHighlightRules);\n\nexports.OcamlHighlightRules = OcamlHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/ocaml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/ocaml_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar OcamlHighlightRules = acequire(\"./ocaml_highlight_rules\").OcamlHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = OcamlHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n \n this.$outdent = new MatchingBraceOutdent();\n};\noop.inherits(Mode, TextMode);\n\nvar indenter = /(?:[({[=:]|[-=]>|\\b(?:else|try|with))\\s*$/;\n\n(function() {\n\n this.toggleCommentLines = function(state, doc, startRow, endRow) {\n var i, line;\n var outdent = true;\n var re = /^\\s*\\(\\*(.*)\\*\\)/;\n\n for (i=startRow; i<= endRow; i++) {\n if (!re.test(doc.getLine(i))) {\n outdent = false;\n break;\n }\n }\n\n var range = new Range(0, 0, 0, 0);\n for (i=startRow; i<= endRow; i++) {\n line = doc.getLine(i);\n range.start.row = i;\n range.end.row = i;\n range.end.column = line.length;\n\n doc.replace(range, outdent ? line.match(re)[1] : \"(*\" + line + \"*)\");\n }\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n\n if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') &&\n state === 'start' && indenter.test(line))\n indent += tab;\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/ocaml\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/pascal_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar PascalHighlightRules = function() {\n\n this.$rules = { start: \n [ { caseInsensitive: true,\n token: 'keyword.control.pascal',\n regex: '\\\\b(?:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\\\b' },\n { caseInsensitive: true, \n token: \n [ 'variable.pascal', \"text\",\n 'storage.type.prototype.pascal',\n 'entity.name.function.prototype.pascal' ],\n regex: '\\\\b(function|procedure)(\\\\s+)(\\\\w+)(\\\\.\\\\w+)?(?=(?:\\\\(.*?\\\\))?;\\\\s*(?:attribute|forward|external))' },\n { caseInsensitive: true,\n token: \n [ 'variable.pascal', \"text\",\n 'storage.type.function.pascal',\n 'entity.name.function.pascal' ],\n regex: '\\\\b(function|procedure)(\\\\s+)(\\\\w+)(\\\\.\\\\w+)?' },\n { token: 'constant.numeric.pascal',\n regex: '\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b' },\n { token: 'punctuation.definition.comment.pascal',\n regex: '--.*$',\n push_: \n [ { token: 'comment.line.double-dash.pascal.one',\n regex: '$',\n next: 'pop' },\n { defaultToken: 'comment.line.double-dash.pascal.one' } ] },\n { token: 'punctuation.definition.comment.pascal',\n regex: '//.*$',\n push_: \n [ { token: 'comment.line.double-slash.pascal.two',\n regex: '$',\n next: 'pop' },\n { defaultToken: 'comment.line.double-slash.pascal.two' } ] },\n { token: 'punctuation.definition.comment.pascal',\n regex: '\\\\(\\\\*',\n push: \n [ { token: 'punctuation.definition.comment.pascal',\n regex: '\\\\*\\\\)',\n next: 'pop' },\n { defaultToken: 'comment.block.pascal.one' } ] },\n { token: 'punctuation.definition.comment.pascal',\n regex: '\\\\{',\n push: \n [ { token: 'punctuation.definition.comment.pascal',\n regex: '\\\\}',\n next: 'pop' },\n { defaultToken: 'comment.block.pascal.two' } ] },\n { token: 'punctuation.definition.string.begin.pascal',\n regex: '\"',\n push: \n [ { token: 'constant.character.escape.pascal', regex: '\\\\\\\\.' },\n { token: 'punctuation.definition.string.end.pascal',\n regex: '\"',\n next: 'pop' },\n { defaultToken: 'string.quoted.double.pascal' } ]\n },\n { token: 'punctuation.definition.string.begin.pascal',\n regex: '\\'',\n push: \n [ { token: 'constant.character.escape.apostrophe.pascal',\n regex: '\\'\\'' },\n { token: 'punctuation.definition.string.end.pascal',\n regex: '\\'',\n next: 'pop' },\n { defaultToken: 'string.quoted.single.pascal' } ] },\n { token: 'keyword.operator',\n regex: '[+\\\\-;,/*%]|:=|=' } ] };\n \n this.normalizeRules();\n};\n\noop.inherits(PascalHighlightRules, TextHighlightRules);\n\nexports.PascalHighlightRules = PascalHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/pascal\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/pascal_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar PascalHighlightRules = acequire(\"./pascal_highlight_rules\").PascalHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = PascalHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = [\"--\", \"//\"];\n this.blockComment = [\n {start: \"(*\", end: \"*)\"},\n {start: \"{\", end: \"}\"}\n ];\n \n this.$id = \"ace/mode/pascal\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/perl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar PerlHighlightRules = function() {\n\n var keywords = (\n \"base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|\" +\n \"no|package|parent|redo|acequire|scalar|sub|unless|until|while|use|vars\"\n );\n\n var buildinConstants = (\"ARGV|ENV|INC|SIG\");\n\n var builtinFunctions = (\n \"getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|\" +\n \"gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|\" +\n \"getpeername|setpriority|getprotoent|setprotoent|getpriority|\" +\n \"endprotoent|getservent|setservent|endservent|sethostent|socketpair|\" +\n \"getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|\" +\n \"localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|\" +\n \"closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|\" +\n \"shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|\" +\n \"dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|\" +\n \"setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|\" +\n \"lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|\" +\n \"waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|\" +\n \"chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|\" +\n \"unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|\" +\n \"length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|\" +\n \"undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|\" +\n \"sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|\" +\n \"BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|\" +\n \"join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|\" +\n \"keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|\" +\n \"eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|\" +\n \"map|die|uc|lc|do\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": builtinFunctions\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment.doc\",\n regex : \"^=(?:begin|item)\\\\b\",\n next : \"block_comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // multi line string start\n regex : '[\"].*\\\\\\\\$',\n next : \"qqstring\"\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"string\", // multi line string start\n regex : \"['].*\\\\\\\\$\",\n next : \"qstring\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0x[0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"%#|\\\\$#|\\\\.\\\\.\\\\.|\\\\|\\\\|=|>>=|<<=|<=>|&&=|=>|!~|\\\\^=|&=|\\\\|=|\\\\.=|x=|%=|\\\\/=|\\\\*=|\\\\-=|\\\\+=|=~|\\\\*\\\\*|\\\\-\\\\-|\\\\.\\\\.|\\\\|\\\\||&&|\\\\+\\\\+|\\\\->|!=|==|>=|<=|>>|<<|,|=|\\\\?\\\\:|\\\\^|\\\\||x|%|\\\\/|\\\\*|<|&|\\\\\\\\|~|!|>|\\\\.|\\\\-|\\\\+|\\\\-C|\\\\-b|\\\\-S|\\\\-u|\\\\-t|\\\\-p|\\\\-l|\\\\-d|\\\\-f|\\\\-g|\\\\-s|\\\\-z|\\\\-k|\\\\-e|\\\\-O|\\\\-T|\\\\-B|\\\\-M|\\\\-A|\\\\-X|\\\\-W|\\\\-c|\\\\-R|\\\\-o|\\\\-x|\\\\-w|\\\\-r|\\\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\"\n }, {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"block_comment\": [\n {\n token: \"comment.doc\", \n regex: \"^=cut\\\\b\",\n next: \"start\"\n },\n {\n defaultToken: \"comment.doc\"\n }\n ]\n };\n};\n\noop.inherits(PerlHighlightRules, TextHighlightRules);\n\nexports.PerlHighlightRules = PerlHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/perl\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/perl_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar PerlHighlightRules = acequire(\"./perl_highlight_rules\").PerlHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = PerlHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode({start: \"^=(begin|item)\\\\b\", end: \"^=(cut)\\\\b\"});\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"#\";\n this.blockComment = [\n {start: \"=begin\", end: \"=cut\", lineStartOnly: true},\n {start: \"=item\", end: \"=cut\", lineStartOnly: true}\n ];\n\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/perl\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/perl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar PerlHighlightRules = function() {\n\n var keywords = (\n \"base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|\" +\n \"no|package|parent|redo|acequire|scalar|sub|unless|until|while|use|vars\"\n );\n\n var buildinConstants = (\"ARGV|ENV|INC|SIG\");\n\n var builtinFunctions = (\n \"getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|\" +\n \"gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|\" +\n \"getpeername|setpriority|getprotoent|setprotoent|getpriority|\" +\n \"endprotoent|getservent|setservent|endservent|sethostent|socketpair|\" +\n \"getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|\" +\n \"localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|\" +\n \"closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|\" +\n \"shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|\" +\n \"dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|\" +\n \"setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|\" +\n \"lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|\" +\n \"waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|\" +\n \"chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|\" +\n \"unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|\" +\n \"length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|\" +\n \"undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|\" +\n \"sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|\" +\n \"BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|\" +\n \"join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|\" +\n \"keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|\" +\n \"eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|\" +\n \"map|die|uc|lc|do\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": builtinFunctions\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment.doc\",\n regex : \"^=(?:begin|item)\\\\b\",\n next : \"block_comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // multi line string start\n regex : '[\"].*\\\\\\\\$',\n next : \"qqstring\"\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"string\", // multi line string start\n regex : \"['].*\\\\\\\\$\",\n next : \"qstring\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0x[0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"%#|\\\\$#|\\\\.\\\\.\\\\.|\\\\|\\\\|=|>>=|<<=|<=>|&&=|=>|!~|\\\\^=|&=|\\\\|=|\\\\.=|x=|%=|\\\\/=|\\\\*=|\\\\-=|\\\\+=|=~|\\\\*\\\\*|\\\\-\\\\-|\\\\.\\\\.|\\\\|\\\\||&&|\\\\+\\\\+|\\\\->|!=|==|>=|<=|>>|<<|,|=|\\\\?\\\\:|\\\\^|\\\\||x|%|\\\\/|\\\\*|<|&|\\\\\\\\|~|!|>|\\\\.|\\\\-|\\\\+|\\\\-C|\\\\-b|\\\\-S|\\\\-u|\\\\-t|\\\\-p|\\\\-l|\\\\-d|\\\\-f|\\\\-g|\\\\-s|\\\\-z|\\\\-k|\\\\-e|\\\\-O|\\\\-T|\\\\-B|\\\\-M|\\\\-A|\\\\-X|\\\\-W|\\\\-c|\\\\-R|\\\\-o|\\\\-x|\\\\-w|\\\\-r|\\\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\"\n }, {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"block_comment\": [\n {\n token: \"comment.doc\", \n regex: \"^=cut\\\\b\",\n next: \"start\"\n },\n {\n defaultToken: \"comment.doc\"\n }\n ]\n };\n};\n\noop.inherits(PerlHighlightRules, TextHighlightRules);\n\nexports.PerlHighlightRules = PerlHighlightRules;\n});\n\nace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar PythonHighlightRules = function() {\n\n var keywords = (\n \"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await\"\n );\n\n var builtinConstants = (\n \"True|False|None|NotImplemented|Ellipsis|__debug__\"\n );\n\n var builtinFunctions = (\n \"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|set|apply|delattr|help|next|setattr|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern\"\n );\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n\n var strPre = \"(?:r|u|ur|R|U|UR|Ur|uR)?\";\n\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"string\", // multi line \"\"\" string start\n regex : strPre + '\"{3}',\n next : \"qqstring3\"\n }, {\n token : \"string\", // \" string\n regex : strPre + '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"string\", // multi line ''' string start\n regex : strPre + \"'{3}\",\n next : \"qstring3\"\n }, {\n token : \"string\", // ' string\n regex : strPre + \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"constant.numeric\", // imaginary\n regex : \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : floatNumber\n }, {\n token : \"constant.numeric\", // long integer\n regex : integer + \"[lL]\\\\b\"\n }, {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\[\\\\(\\\\{]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]\\\\)\\\\}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ],\n \"qqstring3\" : [ {\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\", // multi line \"\"\" string end\n regex : '\"{3}',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n } ],\n \"qstring3\" : [ {\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\", // multi line ''' string end\n regex : \"'{3}\",\n next : \"start\"\n }, {\n defaultToken : \"string\"\n } ],\n \"qqstring\" : [{\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\" : [{\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }]\n };\n};\n\noop.inherits(PythonHighlightRules, TextHighlightRules);\n\nexports.PythonHighlightRules = PythonHighlightRules;\n});\n\nace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar JsonHighlightRules = function() {\n this.$rules = {\n \"start\" : [\n {\n token : \"variable\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token : \"string\", // single line\n regex : '\"',\n next : \"string\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : \"text\", // single quoted strings are not allowed\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"comment\", // comments are not allowed, but who cares?\n regex : \"\\\\/\\\\/.*$\"\n }, {\n token : \"comment.start\", // comments are not allowed, but who cares?\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"string\" : [\n {\n token : \"constant.language.escape\",\n regex : /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment.end\", // comments are not allowed, but who cares?\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ]\n };\n \n};\n\noop.inherits(JsonHighlightRules, TextHighlightRules);\n\nexports.JsonHighlightRules = JsonHighlightRules;\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/pgsql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\",\"ace/mode/perl_highlight_rules\",\"ace/mode/python_highlight_rules\",\"ace/mode/json_highlight_rules\",\"ace/mode/javascript_highlight_rules\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar PerlHighlightRules = acequire(\"./perl_highlight_rules\").PerlHighlightRules;\nvar PythonHighlightRules = acequire(\"./python_highlight_rules\").PythonHighlightRules;\nvar JsonHighlightRules = acequire(\"./json_highlight_rules\").JsonHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n\nvar PgsqlHighlightRules = function() {\n var keywords = (\n \"abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|\" +\n \"analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|\" +\n \"assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|\" +\n \"bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|\" +\n \"catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|\" +\n \"cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|\" +\n \"configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|\" +\n \"create|cross|cstring|csv|current|current_catalog|current_date|current_role|\" +\n \"current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|\" +\n \"date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|\" +\n \"definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|\" +\n \"domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|\" +\n \"except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|\" +\n \"family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|\" +\n \"freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|\" +\n \"having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|\" +\n \"increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|\" +\n \"insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|\" +\n \"internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|\" +\n \"language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|\" +\n \"like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|\" +\n \"mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|\" +\n \"national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|\" +\n \"numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|\" +\n \"options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|\" +\n \"password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|\" +\n \"pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|\" +\n \"preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|\" +\n \"reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|\" +\n \"regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|\" +\n \"reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|\" +\n \"right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|\" +\n \"sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|\" +\n \"simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|\" +\n \"stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|\" +\n \"template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|\" +\n \"transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|\" +\n \"txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|\" +\n \"unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|\" +\n \"varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|\" +\n \"with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|\" +\n \"xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone\"\n );\n\n\n var builtinFunctions = (\n \"RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|\" +\n \"RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|\" +\n \"RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|\" +\n \"RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|\" +\n \"abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|\" +\n \"aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|\" +\n \"anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|\" +\n \"anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|\" +\n \"anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|\" +\n \"array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|\" +\n \"array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|\" +\n \"array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|\" +\n \"array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|\" +\n \"arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|\" +\n \"ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|\" +\n \"bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|\" +\n \"bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|\" +\n \"bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|\" +\n \"boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|\" +\n \"box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|\" +\n \"box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|\" +\n \"box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|\" +\n \"box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|\" +\n \"bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|\" +\n \"bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|\" +\n \"bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|\" +\n \"bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|\" +\n \"btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|\" +\n \"btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|\" +\n \"btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|\" +\n \"btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|\" +\n \"btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|\" +\n \"btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|\" +\n \"btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|\" +\n \"bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|\" +\n \"bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|\" +\n \"byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|\" +\n \"cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|\" +\n \"cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|\" +\n \"cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|\" +\n \"cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|\" +\n \"charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|\" +\n \"cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|\" +\n \"circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|\" +\n \"circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|\" +\n \"circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|\" +\n \"circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|\" +\n \"circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|\" +\n \"close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|\" +\n \"contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|\" +\n \"covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|\" +\n \"current_query|current_schema|current_schemas|current_setting|current_user|currtid|\" +\n \"currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|\" +\n \"database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|\" +\n \"date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|\" +\n \"date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|\" +\n \"date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|\" +\n \"date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|\" +\n \"date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|\" +\n \"date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|\" +\n \"daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|\" +\n \"dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|\" +\n \"dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|\" +\n \"dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|\" +\n \"dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|\" +\n \"enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|\" +\n \"enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|\" +\n \"euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|\" +\n \"euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|\" +\n \"euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|\" +\n \"family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|\" +\n \"float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|\" +\n \"float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|\" +\n \"float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|\" +\n \"float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|\" +\n \"float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|\" +\n \"float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|\" +\n \"float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|\" +\n \"float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|\" +\n \"float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|\" +\n \"float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|\" +\n \"float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|\" +\n \"fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|\" +\n \"gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|\" +\n \"get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|\" +\n \"gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|\" +\n \"ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|\" +\n \"gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|\" +\n \"ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|\" +\n \"gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|\" +\n \"gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|\" +\n \"gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|\" +\n \"gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|\" +\n \"gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|\" +\n \"gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|\" +\n \"gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|\" +\n \"gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|\" +\n \"gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|\" +\n \"gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|\" +\n \"has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|\" +\n \"has_function_privilege|has_language_privilege|has_schema_privilege|\" +\n \"has_sequence_privilege|has_server_privilege|has_table_privilege|\" +\n \"has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|\" +\n \"hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|\" +\n \"hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|\" +\n \"hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|\" +\n \"hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|\" +\n \"hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|\" +\n \"icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|\" +\n \"inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|\" +\n \"inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|\" +\n \"initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|\" +\n \"int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|\" +\n \"int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|\" +\n \"int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|\" +\n \"int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|\" +\n \"int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|\" +\n \"int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|\" +\n \"int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|\" +\n \"int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|\" +\n \"int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|\" +\n \"int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|\" +\n \"int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|\" +\n \"int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|\" +\n \"int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|\" +\n \"int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|\" +\n \"int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|\" +\n \"int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|\" +\n \"int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|\" +\n \"internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|\" +\n \"interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|\" +\n \"interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|\" +\n \"interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|\" +\n \"interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|\" +\n \"interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|\" +\n \"ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|\" +\n \"iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|\" +\n \"json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|\" +\n \"json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|\" +\n \"json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|\" +\n \"json_object_field|json_object_field_text|json_object_keys|json_out|\" +\n \"json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|\" +\n \"justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|\" +\n \"koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|\" +\n \"language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|\" +\n \"latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|\" +\n \"line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|\" +\n \"line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|\" +\n \"lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|\" +\n \"lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|\" +\n \"lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|\" +\n \"lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|\" +\n \"lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|\" +\n \"macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|\" +\n \"macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|\" +\n \"mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|\" +\n \"mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|\" +\n \"mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|\" +\n \"name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|\" +\n \"namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|\" +\n \"neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|\" +\n \"network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|\" +\n \"nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|\" +\n \"numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|\" +\n \"numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|\" +\n \"numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|\" +\n \"numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|\" +\n \"numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|\" +\n \"numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|\" +\n \"numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|\" +\n \"octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|\" +\n \"oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|\" +\n \"oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|\" +\n \"on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|\" +\n \"path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|\" +\n \"path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|\" +\n \"path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|\" +\n \"pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|\" +\n \"pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|\" +\n \"pg_available_extension_versions|pg_available_extensions|pg_backend_pid|\" +\n \"pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|\" +\n \"pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|\" +\n \"pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|\" +\n \"pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|\" +\n \"pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|\" +\n \"pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|\" +\n \"pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|\" +\n \"pg_get_function_arguments|pg_get_function_identity_arguments|\" +\n \"pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|\" +\n \"pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|\" +\n \"pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|\" +\n \"pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|\" +\n \"pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|\" +\n \"pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|\" +\n \"pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|\" +\n \"pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|\" +\n \"pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|\" +\n \"pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|\" +\n \"pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|\" +\n \"pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|\" +\n \"pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|\" +\n \"pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|\" +\n \"pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|\" +\n \"pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|\" +\n \"pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|\" +\n \"pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|\" +\n \"pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|\" +\n \"pg_stat_get_bgwriter_buf_written_checkpoints|\" +\n \"pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|\" +\n \"pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|\" +\n \"pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|\" +\n \"pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|\" +\n \"pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|\" +\n \"pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|\" +\n \"pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|\" +\n \"pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|\" +\n \"pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|\" +\n \"pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|\" +\n \"pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|\" +\n \"pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|\" +\n \"pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|\" +\n \"pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|\" +\n \"pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|\" +\n \"pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|\" +\n \"pg_stat_get_function_calls|pg_stat_get_function_self_time|\" +\n \"pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|\" +\n \"pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|\" +\n \"pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|\" +\n \"pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|\" +\n \"pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|\" +\n \"pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|\" +\n \"pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|\" +\n \"pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|\" +\n \"pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|\" +\n \"pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|\" +\n \"pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|\" +\n \"pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|\" +\n \"pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|\" +\n \"pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|\" +\n \"pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|\" +\n \"pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|\" +\n \"pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|\" +\n \"pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|\" +\n \"pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|\" +\n \"pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|\" +\n \"pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|\" +\n \"pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|\" +\n \"plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|\" +\n \"point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|\" +\n \"point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|\" +\n \"poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|\" +\n \"poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|\" +\n \"poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|\" +\n \"polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|\" +\n \"prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|\" +\n \"pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|\" +\n \"querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|\" +\n \"range_after|range_before|range_cmp|range_contained_by|range_contains|\" +\n \"range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|\" +\n \"range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|\" +\n \"range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|\" +\n \"range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|\" +\n \"range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|\" +\n \"record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|\" +\n \"regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|\" +\n \"regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|\" +\n \"regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|\" +\n \"regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|\" +\n \"regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|\" +\n \"regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|\" +\n \"regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|\" +\n \"regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|\" +\n \"reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|\" +\n \"reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|\" +\n \"rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|\" +\n \"schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|\" +\n \"set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|\" +\n \"shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|\" +\n \"similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|\" +\n \"smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|\" +\n \"spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|\" +\n \"spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|\" +\n \"spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|\" +\n \"spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|\" +\n \"spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|\" +\n \"spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|\" +\n \"spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|\" +\n \"statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|\" +\n \"string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|\" +\n \"suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|\" +\n \"table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|\" +\n \"text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|\" +\n \"texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|\" +\n \"textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|\" +\n \"thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|\" +\n \"tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|\" +\n \"time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|\" +\n \"time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|\" +\n \"timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|\" +\n \"timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|\" +\n \"timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|\" +\n \"timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|\" +\n \"timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|\" +\n \"timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|\" +\n \"timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|\" +\n \"timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|\" +\n \"timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|\" +\n \"timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|\" +\n \"timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|\" +\n \"timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|\" +\n \"timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|\" +\n \"timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|\" +\n \"timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|\" +\n \"timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|\" +\n \"timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|\" +\n \"timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|\" +\n \"timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|\" +\n \"timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|\" +\n \"tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|\" +\n \"tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|\" +\n \"tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|\" +\n \"tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|\" +\n \"to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|\" +\n \"trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|\" +\n \"ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|\" +\n \"ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|\" +\n \"tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|\" +\n \"tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|\" +\n \"tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|\" +\n \"tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|\" +\n \"tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|\" +\n \"txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|\" +\n \"txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|\" +\n \"txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|\" +\n \"unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|\" +\n \"utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|\" +\n \"utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|\" +\n \"utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|\" +\n \"utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|\" +\n \"uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|\" +\n \"varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|\" +\n \"varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|\" +\n \"varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|\" +\n \"void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|\" +\n \"win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|\" +\n \"win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|\" +\n \"xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|\" +\n \"xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|\" +\n \"xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords\n }, \"identifier\", true);\n\n\n var sqlRules = [{\n token : \"string\", // single line string -- assume dollar strings if multi-line for now\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"variable.language\", // pg identifier\n regex : '\".*?\"'\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_][a-zA-Z0-9_$]*\\\\b\" // TODO - Unicode in identifiers\n }, {\n token : \"keyword.operator\",\n regex : \"!|!!|!~|!~\\\\*|!~~|!~~\\\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\\\&|\\\\&\\\\&|\\\\&<|\\\\&<\\\\||\\\\&>|\\\\*|\\\\+|\" +\n \"\\\\-|/|<|<#>|<\\\\->|<<|<<=|<<\\\\||<=|<>|<\\\\?>|<@|<\\\\^|=|>|>=|>>|>>=|>\\\\^|\\\\?#|\\\\?\\\\-|\\\\?\\\\-\\\\||\" +\n \"\\\\?\\\\||\\\\?\\\\|\\\\||@|@\\\\-@|@>|@@|@@@|\\\\^|\\\\||\\\\|\\\\&>|\\\\|/|\\\\|>>|\\\\|\\\\||\\\\|\\\\|/|~|~\\\\*|~<=~|~<~|\" +\n \"~=|~>=~|~>~|~~|~~\\\\*\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ];\n\n\n this.$rules = {\n \"start\" : [{\n token : \"comment\",\n regex : \"--.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi-line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n },{\n token : \"keyword.statementBegin\",\n regex : \"[a-zA-Z]+\", // Could enumerate starting keywords but this allows things to work when new statements are added.\n next : \"statement\"\n },{\n token : \"support.buildin\", // psql directive\n regex : \"^\\\\\\\\[\\\\S]+.*$\"\n }\n ],\n\n \"statement\" : [{\n token : \"comment\",\n regex : \"--.*$\"\n }, {\n token : \"comment\", // multi-line comment\n regex : \"\\\\/\\\\*\",\n next : \"commentStatement\"\n }, {\n token : \"statementEnd\",\n regex : \";\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : \"\\\\$perl\\\\$\",\n next : \"perl-start\"\n }, {\n token : \"string\",\n regex : \"\\\\$python\\\\$\",\n next : \"python-start\"\n }, {\n token : \"string\",\n regex : \"\\\\$json\\\\$\",\n next : \"json-start\"\n }, {\n token : \"string\",\n regex : \"\\\\$(js|javascript)\\\\$\",\n next : \"javascript-start\"\n }, {\n token : \"string\",\n regex : \"\\\\$[\\\\w_0-9]*\\\\$$\", // dollar quote at the end of a line\n next : \"dollarSql\"\n }, {\n token : \"string\",\n regex : \"\\\\$[\\\\w_0-9]*\\\\$\",\n next : \"dollarStatementString\"\n }\n ].concat(sqlRules),\n\n \"dollarSql\" : [{\n token : \"comment\",\n regex : \"--.*$\"\n }, {\n token : \"comment\", // multi-line comment\n regex : \"\\\\/\\\\*\",\n next : \"commentDollarSql\"\n }, {\n token : \"string\", // end quoting with dollar at the start of a line\n regex : \"^\\\\$[\\\\w_0-9]*\\\\$\",\n next : \"statement\"\n }, {\n token : \"string\",\n regex : \"\\\\$[\\\\w_0-9]*\\\\$\",\n next : \"dollarSqlString\"\n }\n ].concat(sqlRules),\n\n \"comment\" : [{\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n\n \"commentStatement\" : [{\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"statement\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n\n \"commentDollarSql\" : [{\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"dollarSql\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n\n \"dollarStatementString\" : [{\n token : \"string\", // closing dollarstring\n regex : \".*?\\\\$[\\\\w_0-9]*\\\\$\",\n next : \"statement\"\n }, {\n token : \"string\", // dollarstring spanning whole line\n regex : \".+\"\n }\n ],\n\n \"dollarSqlString\" : [{\n token : \"string\", // closing dollarstring\n regex : \".*?\\\\$[\\\\w_0-9]*\\\\$\",\n next : \"dollarSql\"\n }, {\n token : \"string\", // dollarstring spanning whole line\n regex : \".+\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\", [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.embedRules(PerlHighlightRules, \"perl-\", [{token : \"string\", regex : \"\\\\$perl\\\\$\", next : \"statement\"}]);\n this.embedRules(PythonHighlightRules, \"python-\", [{token : \"string\", regex : \"\\\\$python\\\\$\", next : \"statement\"}]);\n this.embedRules(JsonHighlightRules, \"json-\", [{token : \"string\", regex : \"\\\\$json\\\\$\", next : \"statement\"}]);\n this.embedRules(JavaScriptHighlightRules, \"javascript-\", [{token : \"string\", regex : \"\\\\$(js|javascript)\\\\$\", next : \"statement\"}]);\n};\n\noop.inherits(PgsqlHighlightRules, TextHighlightRules);\n\nexports.PgsqlHighlightRules = PgsqlHighlightRules;\n});\n\nace.define(\"ace/mode/pgsql\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/pgsql_highlight_rules\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"../mode/text\").Mode;\nvar PgsqlHighlightRules = acequire(\"./pgsql_highlight_rules\").PgsqlHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = PgsqlHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"--\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) { \n if (state == \"start\" || state == \"keyword.statementEnd\") {\n return \"\";\n } else {\n return this.$getIndent(line); // Keep whatever indent the previous line has\n }\n };\n\n this.$id = \"ace/mode/pgsql\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/php_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\",\"ace/mode/html_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\n\nvar PhpLangHighlightRules = function() {\n var docComment = DocCommentHighlightRules;\n var builtinFunctions = lang.arrayToMap(\n ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' +\n 'aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|' +\n 'apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|' +\n 'apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|' +\n 'apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|' +\n 'apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|' +\n 'apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|' +\n 'apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|' +\n 'array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|' +\n 'array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|' +\n 'array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|' +\n 'array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|' +\n 'array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|' +\n 'array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|' +\n 'atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|' +\n 'bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|' +\n 'bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|' +\n 'bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|' +\n 'bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|' +\n 'bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|' +\n 'cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|' +\n 'cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|' +\n 'cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|' +\n 'cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|' +\n 'cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|' +\n 'cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|' +\n 'cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|' +\n 'cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|' +\n 'cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|' +\n 'cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|' +\n 'cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|' +\n 'cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|' +\n 'cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|' +\n 'cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|' +\n 'cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|' +\n 'cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|' +\n 'cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|' +\n 'cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|' +\n 'cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|' +\n 'cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|' +\n 'cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|' +\n 'cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|' +\n 'cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|' +\n 'cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|' +\n 'cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|' +\n 'cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|' +\n 'cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|' +\n 'cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|' +\n 'chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|' +\n 'class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|' +\n 'classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|' +\n 'com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|' +\n 'com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|' +\n 'convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|' +\n 'counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|' +\n 'crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|' +\n 'ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|' +\n 'cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|' +\n 'cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|' +\n 'cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|' +\n 'cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|' +\n 'cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|' +\n 'cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|' +\n 'cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|' +\n 'cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|' +\n 'cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|' +\n 'cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|' +\n 'cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|' +\n 'curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|' +\n 'curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|' +\n 'curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|' +\n 'date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|' +\n 'date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|' +\n 'date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|' +\n 'dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|' +\n 'db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|' +\n 'db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|' +\n 'db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|' +\n 'db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|' +\n 'db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|' +\n 'db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|' +\n 'dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|' +\n 'dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|' +\n 'dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|' +\n 'dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|' +\n 'dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|' +\n 'dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|' +\n 'dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|' +\n 'dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|' +\n 'dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|' +\n 'define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|' +\n 'dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|' +\n 'dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|' +\n 'domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|' +\n 'domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|' +\n 'domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|' +\n 'domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|' +\n 'domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|' +\n 'domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|' +\n 'domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|' +\n 'domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|' +\n 'domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|' +\n 'domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|' +\n 'domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|' +\n 'domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|' +\n 'domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|' +\n 'domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|' +\n 'domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|' +\n 'domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|' +\n 'domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|' +\n 'enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|' +\n 'enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|' +\n 'enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|' +\n 'enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|' +\n 'eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|' +\n 'event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|' +\n 'event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|' +\n 'event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|' +\n 'event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|' +\n 'expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|' +\n 'fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|' +\n 'fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|' +\n 'fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|' +\n 'fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|' +\n 'fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|' +\n 'fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|' +\n 'fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|' +\n 'fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|' +\n 'fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|' +\n 'fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|' +\n 'fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|' +\n 'fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|' +\n 'fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|' +\n 'file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|' +\n 'filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|' +\n 'filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|' +\n 'finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|' +\n 'forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|' +\n 'ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|' +\n 'ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|' +\n 'ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|' +\n 'func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|' +\n 'gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|' +\n 'geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|' +\n 'geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|' +\n 'get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|' +\n 'get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|' +\n 'get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|' +\n 'get_meta_tags|get_object_vars|get_parent_class|get_acequired_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|' +\n 'getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|' +\n 'gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|' +\n 'getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|' +\n 'getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|' +\n 'gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|' +\n 'gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|' +\n 'gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|' +\n 'gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|' +\n 'gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|' +\n 'gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|' +\n 'gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|' +\n 'grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|' +\n 'gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|' +\n 'gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|' +\n 'gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|' +\n 'gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|' +\n 'gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|' +\n 'gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|' +\n 'gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|' +\n 'gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|' +\n 'gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|' +\n 'gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|' +\n 'halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|' +\n 'haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|' +\n 'harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|' +\n 'harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|' +\n 'harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|' +\n 'harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|' +\n 'harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|' +\n 'harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|' +\n 'harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|' +\n 'harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|' +\n 'haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|' +\n 'harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|' +\n 'harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|' +\n 'haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|' +\n 'haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|' +\n 'harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|' +\n 'harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|' +\n 'harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|' +\n 'harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|' +\n 'harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|' +\n 'harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|' +\n 'harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|' +\n 'harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|' +\n 'harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|' +\n 'harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|' +\n 'harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|' +\n 'harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|' +\n 'harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|' +\n 'harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|' +\n 'hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|' +\n 'header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|' +\n 'html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|' +\n 'http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|' +\n 'http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|' +\n 'http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|' +\n 'http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|' +\n 'http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|' +\n 'http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|' +\n 'http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|' +\n 'http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|' +\n 'httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|' +\n 'httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|' +\n 'httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|' +\n 'httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|' +\n 'httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|' +\n 'httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|' +\n 'httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|' +\n 'httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|' +\n 'httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|' +\n 'httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|' +\n 'httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|' +\n 'httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|' +\n 'httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|' +\n 'httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|' +\n 'httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|' +\n 'httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|' +\n 'httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|' +\n 'httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|' +\n 'httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|' +\n 'httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|' +\n 'httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|' +\n 'httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|' +\n 'httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|' +\n 'httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|' +\n 'httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|' +\n 'httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|' +\n 'httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|' +\n 'httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|' +\n 'httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|' +\n 'hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|' +\n 'hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|' +\n 'hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|' +\n 'hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|' +\n 'hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|' +\n 'hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|' +\n 'hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|' +\n 'hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|' +\n 'hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|' +\n 'hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|' +\n 'hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|' +\n 'hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|' +\n 'hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|' +\n 'hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|' +\n 'ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|' +\n 'ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|' +\n 'ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|' +\n 'ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|' +\n 'ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|' +\n 'ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|' +\n 'ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|' +\n 'iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|' +\n 'id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|' +\n 'idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|' +\n 'ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|' +\n 'ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|' +\n 'ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|' +\n 'ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|' +\n 'iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|' +\n 'iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|' +\n 'iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|' +\n 'imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|' +\n 'imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|' +\n 'imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|' +\n 'imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|' +\n 'imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|' +\n 'imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|' +\n 'imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|' +\n 'imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|' +\n 'imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|' +\n 'imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|' +\n 'imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|' +\n 'imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|' +\n 'imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|' +\n 'imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|' +\n 'imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|' +\n 'imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|' +\n 'imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|' +\n 'imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|' +\n 'imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|' +\n 'imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|' +\n 'imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|' +\n 'imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|' +\n 'imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|' +\n 'imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|' +\n 'imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|' +\n 'imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|' +\n 'imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|' +\n 'imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|' +\n 'imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|' +\n 'imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|' +\n 'imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|' +\n 'imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|' +\n 'imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|' +\n 'imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|' +\n 'imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|' +\n 'imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|' +\n 'imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|' +\n 'imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|' +\n 'imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|' +\n 'imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|' +\n 'imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|' +\n 'imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|' +\n 'imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|' +\n 'imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|' +\n 'imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|' +\n 'imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|' +\n 'imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|' +\n 'imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|' +\n 'imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|' +\n 'imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|' +\n 'imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|' +\n 'imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|' +\n 'imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|' +\n 'imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|' +\n 'imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|' +\n 'imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|' +\n 'imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|' +\n 'imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|' +\n 'imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|' +\n 'imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|' +\n 'imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|' +\n 'imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|' +\n 'imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|' +\n 'imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|' +\n 'imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|' +\n 'imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|' +\n 'imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|' +\n 'imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|' +\n 'imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|' +\n 'imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|' +\n 'imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|' +\n 'imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|' +\n 'imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|' +\n 'imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|' +\n 'imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|' +\n 'imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|' +\n 'imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|' +\n 'imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|' +\n 'imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|' +\n 'imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|' +\n 'imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|' +\n 'imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|' +\n 'imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|' +\n 'imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|' +\n 'imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|' +\n 'imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|' +\n 'imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|' +\n 'imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|' +\n 'imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|' +\n 'imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|' +\n 'imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|' +\n 'imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|' +\n 'imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|' +\n 'imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|' +\n 'imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|' +\n 'imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|' +\n 'imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|' +\n 'imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|' +\n 'imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|' +\n 'imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|' +\n 'imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|' +\n 'imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|' +\n 'imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|' +\n 'imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|' +\n 'imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|' +\n 'imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|' +\n 'imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|' +\n 'imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|' +\n 'imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|' +\n 'imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|' +\n 'include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|' +\n 'ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|' +\n 'ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|' +\n 'ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|' +\n 'ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|' +\n 'ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|' +\n 'inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|' +\n 'intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|' +\n 'is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|' +\n 'is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|' +\n 'iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|' +\n 'iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|' +\n 'jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|' +\n 'json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|' +\n 'kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|' +\n 'kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|' +\n 'ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|' +\n 'ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|' +\n 'ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|' +\n 'ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|' +\n 'ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|' +\n 'libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|' +\n 'limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|' +\n 'lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|' +\n 'm_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|' +\n 'm_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|' +\n 'm_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|' +\n 'm_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|' +\n 'mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|' +\n 'mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|' +\n 'mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|' +\n 'maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|' +\n 'maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|' +\n 'maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|' +\n 'maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|' +\n 'maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|' +\n 'maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|' +\n 'maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|' +\n 'maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|' +\n 'maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|' +\n 'maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|' +\n 'maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|' +\n 'maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|' +\n 'maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|' +\n 'maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|' +\n 'maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|' +\n 'mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|' +\n 'mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|' +\n 'mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|' +\n 'mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|' +\n 'mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|' +\n 'mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|' +\n 'mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|' +\n 'mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|' +\n 'mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|' +\n 'mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|' +\n 'mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|' +\n 'mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|' +\n 'mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|' +\n 'mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|' +\n 'mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|' +\n 'ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|' +\n 'mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|' +\n 'mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|' +\n 'mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|' +\n 'mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|' +\n 'mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|' +\n 'msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|' +\n 'msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|' +\n 'msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|' +\n 'msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|' +\n 'msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|' +\n 'msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|' +\n 'msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|' +\n 'mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|' +\n 'mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|' +\n 'mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|' +\n 'mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|' +\n 'mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|' +\n 'mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|' +\n 'mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|' +\n 'mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|' +\n 'mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|' +\n 'mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|' +\n 'mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|' +\n 'mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|' +\n 'mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|' +\n 'mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|' +\n 'mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|' +\n 'mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|' +\n 'mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|' +\n 'mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|' +\n 'mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|' +\n 'mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|' +\n 'mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|' +\n 'mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|' +\n 'mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|' +\n 'mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|' +\n 'mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|' +\n 'mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|' +\n 'mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|' +\n 'mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|' +\n 'mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|' +\n 'mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|' +\n 'mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|' +\n 'mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|' +\n 'ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|' +\n 'ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|' +\n 'ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|' +\n 'ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|' +\n 'ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|' +\n 'ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|' +\n 'ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|' +\n 'ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|' +\n 'ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|' +\n 'ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|' +\n 'ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|' +\n 'ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|' +\n 'ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|' +\n 'ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|' +\n 'ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|' +\n 'ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|' +\n 'ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|' +\n 'ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|' +\n 'ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|' +\n 'ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|' +\n 'ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|' +\n 'ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|' +\n 'newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|' +\n 'newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|' +\n 'newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|' +\n 'newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|' +\n 'newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|' +\n 'newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|' +\n 'newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|' +\n 'newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|' +\n 'newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|' +\n 'newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|' +\n 'newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|' +\n 'newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|' +\n 'newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|' +\n 'newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|' +\n 'newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|' +\n 'newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|' +\n 'newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|' +\n 'newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|' +\n 'newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|' +\n 'notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|' +\n 'notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|' +\n 'numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|' +\n 'ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|' +\n 'ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|' +\n 'oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|' +\n 'oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|' +\n 'oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|' +\n 'oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|' +\n 'oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|' +\n 'oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|' +\n 'oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|' +\n 'oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|' +\n 'oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|' +\n 'ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|' +\n 'ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|' +\n 'ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|' +\n 'ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|' +\n 'ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|' +\n 'octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|' +\n 'odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|' +\n 'odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|' +\n 'odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|' +\n 'odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|' +\n 'odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|' +\n 'openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|' +\n 'openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|' +\n 'openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|' +\n 'openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|' +\n 'openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|' +\n 'openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|' +\n 'openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|' +\n 'openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|' +\n 'openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|' +\n 'openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|' +\n 'openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|' +\n 'outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|' +\n 'ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|' +\n 'ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|' +\n 'ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|' +\n 'parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|' +\n 'pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|' +\n 'pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|' +\n 'pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|' +\n 'pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|' +\n 'pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|' +\n 'pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|' +\n 'pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|' +\n 'pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|' +\n 'pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|' +\n 'pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|' +\n 'pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|' +\n 'pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|' +\n 'pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|' +\n 'pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|' +\n 'pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|' +\n 'pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|' +\n 'pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|' +\n 'pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|' +\n 'pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|' +\n 'pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|' +\n 'pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|' +\n 'pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|' +\n 'pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|' +\n 'pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|' +\n 'pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|' +\n 'pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|' +\n 'pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|' +\n 'pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|' +\n 'pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|' +\n 'pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|' +\n 'pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|' +\n 'pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|' +\n 'pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|' +\n 'pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|' +\n 'pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|' +\n 'php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|' +\n 'png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|' +\n 'posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|' +\n 'posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|' +\n 'posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|' +\n 'preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|' +\n 'printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|' +\n 'printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|' +\n 'printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|' +\n 'printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|' +\n 'printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|' +\n 'ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|' +\n 'ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|' +\n 'ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|' +\n 'ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|' +\n 'ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|' +\n 'ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|' +\n 'ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|' +\n 'ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|' +\n 'ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|' +\n 'pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|' +\n 'pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|' +\n 'pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|' +\n 'px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|' +\n 'px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|' +\n 'px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|' +\n 'radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|' +\n 'radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|' +\n 'radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|' +\n 'radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|' +\n 'rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|' +\n 'readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|' +\n 'readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|' +\n 'readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|' +\n 'recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|' +\n 'recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|' +\n 'reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|' +\n 'regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|acequire|acequire_once|reset|resetValue|' +\n 'resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|' +\n 'rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|' +\n 'rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|' +\n 'runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|' +\n 'runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|' +\n 'runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|' +\n 'runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|' +\n 'samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|' +\n 'samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|' +\n 'sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|' +\n 'sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|' +\n 'sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|' +\n 'sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|' +\n 'sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|' +\n 'sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|' +\n 'sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|' +\n 'sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|' +\n 'sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|' +\n 'sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|' +\n 'sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|' +\n 'sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|' +\n 'sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|' +\n 'sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|' +\n 'sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|' +\n 'sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|' +\n 'sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|' +\n 'sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|' +\n 'sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|' +\n 'sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|' +\n 'session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|' +\n 'session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|' +\n 'session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|' +\n 'session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|' +\n 'set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|' +\n 'setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|' +\n 'shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|' +\n 'similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|' +\n 'snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|' +\n 'snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|' +\n 'snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|' +\n 'soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|' +\n 'socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|' +\n 'socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|' +\n 'socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|' +\n 'solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|' +\n 'solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|' +\n 'solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|' +\n 'spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|' +\n 'splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|' +\n 'splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|' +\n 'sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|' +\n 'sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|' +\n 'sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|' +\n 'sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|' +\n 'sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|' +\n 'sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|' +\n 'ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|' +\n 'ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|' +\n 'ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|' +\n 'ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|' +\n 'stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|' +\n 'stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|' +\n 'stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|' +\n 'stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|' +\n 'stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|' +\n 'stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|' +\n 'stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|' +\n 'stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|' +\n 'stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|' +\n 'stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|' +\n 'stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|' +\n 'stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|' +\n 'str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|' +\n 'stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|' +\n 'stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|' +\n 'stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|' +\n 'stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|' +\n 'stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|' +\n 'stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|' +\n 'stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|' +\n 'stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|' +\n 'stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|' +\n 'strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|' +\n 'svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|' +\n 'svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|' +\n 'svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|' +\n 'svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|' +\n 'svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|' +\n 'svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|' +\n 'swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|' +\n 'swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|' +\n 'swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|' +\n 'swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|' +\n 'swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|' +\n 'swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|' +\n 'swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|' +\n 'swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|' +\n 'swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|' +\n 'swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|' +\n 'swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|' +\n 'swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|' +\n 'swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|' +\n 'sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|' +\n 'sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|' +\n 'sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|' +\n 'sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|' +\n 'tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|' +\n 'tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|' +\n 'time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|' +\n 'timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|' +\n 'tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|' +\n 'ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|' +\n 'udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|' +\n 'udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|' +\n 'uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|' +\n 'urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|' +\n 'variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|' +\n 'variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|' +\n 'variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|' +\n 'vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|' +\n 'vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|' +\n 'vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|' +\n 'w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|' +\n 'wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|' +\n 'win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|' +\n 'win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|' +\n 'wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|' +\n 'wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|' +\n 'wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|' +\n 'wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|' +\n 'xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|' +\n 'xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|' +\n 'xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|' +\n 'xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|' +\n 'xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|' +\n 'xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|' +\n 'xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|' +\n 'xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|' +\n 'xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|' +\n 'xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|' +\n 'xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|' +\n 'xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|' +\n 'xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|' +\n 'xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|' +\n 'xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|' +\n 'xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|' +\n 'xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|' +\n 'xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|' +\n 'xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|' +\n 'xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|' +\n 'xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|' +\n 'xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|' +\n 'yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|' +\n 'yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|' +\n 'yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|' +\n 'yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|' +\n 'zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|' +\n 'ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|' +\n 'ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|' +\n 'ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|' +\n 'ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|' +\n 'ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|' +\n 'ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type').split('|')\n );\n var keywords = lang.arrayToMap(\n ('abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|' +\n 'endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|' +\n 'public|static|switch|throw|trait|try|use|var|while|xor').split('|')\n );\n var languageConstructs = lang.arrayToMap(\n ('die|echo|empty|exit|eval|include|include_once|isset|list|acequire|acequire_once|return|print|unset').split('|')\n );\n\n var builtinConstants = lang.arrayToMap(\n ('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__').split('|')\n );\n\n var builtinVariables = lang.arrayToMap(\n ('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|' +\n '$http_response_header|$argc|$argv').split('|')\n );\n var builtinFunctionsDeprecated = lang.arrayToMap(\n ('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|' +\n 'com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|' +\n 'cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|' +\n 'hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|' +\n 'maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|' +\n 'mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|' +\n 'mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|' +\n 'mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|' +\n 'mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|' +\n 'mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' +\n 'mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|' +\n 'ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|' +\n 'ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|' +\n 'ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|' +\n 'ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|' +\n 'ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|' +\n 'PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|' +\n 'PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|' +\n 'PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|' +\n 'PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|' +\n 'PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|' +\n 'PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|' +\n 'PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|' +\n 'PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|' +\n 'px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister' +\n 'set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|' +\n 'sql_regcase').split('|')\n );\n\n var keywordsDeprecated = lang.arrayToMap(\n ('cfunction|old_function').split('|')\n );\n\n var futureReserved = lang.arrayToMap([]);\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : /(?:#|\\/\\/)(?:[^?]|\\?[^>])*/\n },\n docComment.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/][gimy]*\\\\s*(?=[).,;]|$)\"\n }, {\n token : \"string\", // \" string start\n regex : '\"',\n next : \"qqstring\"\n }, {\n token : \"string\", // ' string start\n regex : \"'\",\n next : \"qstring\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language\", // constants\n regex : \"\\\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|\" +\n \"ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|\" +\n \"HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|\" +\n \"L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|\" +\n \"VERSION))|__COMPILER_HALT_OFFSET__)\\\\b\"\n }, {\n token : [\"keyword\", \"text\", \"support.class\"],\n regex : \"\\\\b(new)(\\\\s+)(\\\\w+)\"\n }, {\n token : [\"support.class\", \"keyword.operator\"],\n regex : \"\\\\b(\\\\w+)(::)\"\n }, {\n token : \"constant.language\", // constants\n regex : \"\\\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|\" +\n \"SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|\" +\n \"O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|\" +\n \"R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|\" +\n \"YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|\" +\n \"ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|\" +\n \"T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|\" +\n \"HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|\" +\n \"I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|\" +\n \"O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|\" +\n \"L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|\" +\n \"M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|\" +\n \"OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|\" +\n \"P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|\" +\n \"RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|\" +\n \"T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\\\b\"\n }, {\n token : function(value) {\n if (keywords.hasOwnProperty(value))\n return \"keyword\";\n else if (builtinConstants.hasOwnProperty(value))\n return \"constant.language\";\n else if (builtinVariables.hasOwnProperty(value))\n return \"variable.language\";\n else if (futureReserved.hasOwnProperty(value))\n return \"invalid.illegal\";\n else if (builtinFunctions.hasOwnProperty(value))\n return \"support.function\";\n else if (value == \"debugger\")\n return \"invalid.deprecated\";\n else\n if(value.match(/^(\\$[a-zA-Z_\\x7f-\\uffff][a-zA-Z0-9_\\x7f-\\uffff]*|self|parent)$/))\n return \"variable\";\n return \"identifier\";\n },\n regex : /[a-zA-Z_$\\x7f-\\uffff][a-zA-Z0-9_\\x7f-\\uffff]*/\n }, {\n onMatch : function(value, currentSate, state) {\n value = value.substr(3);\n if (value[0] == \"'\" || value[0] == '\"')\n value = value.slice(1, -1);\n state.unshift(this.next, value);\n return \"markup.list\";\n },\n regex : /<<<(?:\\w+|'\\w+'|\"\\w+\")$/,\n next: \"heredoc\"\n }, {\n token : \"keyword.operator\",\n regex : \"::|!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"heredoc\" : [\n {\n onMatch : function(value, currentSate, stack) {\n if (stack[1] != value)\n return \"string\";\n stack.shift();\n stack.shift();\n return \"markup.list\";\n },\n regex : \"^\\\\w+(?=;?$)\",\n next: \"start\"\n }, {\n token: \"string\",\n regex : \".*\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : '\\\\\\\\(?:[nrtvef\\\\\\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'\n }, {\n token : \"variable\",\n regex : /\\$[\\w]+(?:\\[[\\w\\]+]|[=\\-]>\\w+)?/\n }, {\n token : \"variable\",\n regex : /\\$\\{[^\"\\}]+\\}?/ // this is wrong but ok for now\n },\n {token : \"string\", regex : '\"', next : \"start\"},\n {defaultToken : \"string\"}\n ],\n \"qstring\" : [\n {token : \"constant.language.escape\", regex : /\\\\['\\\\]/},\n {token : \"string\", regex : \"'\", next : \"start\"},\n {defaultToken : \"string\"}\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(PhpLangHighlightRules, TextHighlightRules);\n\n\nvar PhpHighlightRules = function() {\n HtmlHighlightRules.call(this);\n\n var startRules = [\n {\n token : \"support.php_tag\", // php open tag\n regex : \"<\\\\?(?:php|=)?\",\n push : \"php-start\"\n }\n ];\n\n var endRules = [\n {\n token : \"support.php_tag\", // php close tag\n regex : \"\\\\?>\",\n next : \"pop\"\n }\n ];\n\n for (var key in this.$rules)\n this.$rules[key].unshift.apply(this.$rules[key], startRules);\n\n this.embedRules(PhpLangHighlightRules, \"php-\", endRules, [\"start\"]);\n\n this.normalizeRules();\n};\n\noop.inherits(PhpHighlightRules, HtmlHighlightRules);\n\nexports.PhpHighlightRules = PhpHighlightRules;\nexports.PhpLangHighlightRules = PhpLangHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/php_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar functionMap = {\n \"abs\": [\n \"int abs(int number)\",\n \"Return the absolute value of the number\"\n ],\n \"acos\": [\n \"float acos(float number)\",\n \"Return the arc cosine of the number in radians\"\n ],\n \"acosh\": [\n \"float acosh(float number)\",\n \"Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number\"\n ],\n \"addGlob\": [\n \"bool addGlob(string pattern[,int flags [, array options]])\",\n \"Add files matching the glob pattern. See php's glob for the pattern syntax.\"\n ],\n \"addPattern\": [\n \"bool addPattern(string pattern[, string path [, array options]])\",\n \"Add files matching the pcre pattern. See php's pcre for the pattern syntax.\"\n ],\n \"addcslashes\": [\n \"string addcslashes(string str, string charlist)\",\n \"Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\\\n', '\\\\r', '\\\\t' etc...)\"\n ],\n \"addslashes\": [\n \"string addslashes(string str)\",\n \"Escapes single quote, double quotes and backslash characters in a string with backslashes\"\n ],\n \"apache_child_terminate\": [\n \"bool apache_child_terminate(void)\",\n \"Terminate apache process after this request\"\n ],\n \"apache_get_modules\": [\n \"array apache_get_modules(void)\",\n \"Get a list of loaded Apache modules\"\n ],\n \"apache_get_version\": [\n \"string apache_get_version(void)\",\n \"Fetch Apache version\"\n ],\n \"apache_getenv\": [\n \"bool apache_getenv(string variable [, bool walk_to_top])\",\n \"Get an Apache subprocess_env variable\"\n ],\n \"apache_lookup_uri\": [\n \"object apache_lookup_uri(string URI)\",\n \"Perform a partial request of the given URI to obtain information about it\"\n ],\n \"apache_note\": [\n \"string apache_note(string note_name [, string note_value])\",\n \"Get and set Apache request notes\"\n ],\n \"apache_request_auth_name\": [\n \"string apache_request_auth_name()\",\n \"\"\n ],\n \"apache_request_auth_type\": [\n \"string apache_request_auth_type()\",\n \"\"\n ],\n \"apache_request_discard_request_body\": [\n \"long apache_request_discard_request_body()\",\n \"\"\n ],\n \"apache_request_err_headers_out\": [\n \"array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])\",\n \"* fetch all headers that go out in case of an error or a subrequest\"\n ],\n \"apache_request_headers\": [\n \"array apache_request_headers(void)\",\n \"Fetch all HTTP request headers\"\n ],\n \"apache_request_headers_in\": [\n \"array apache_request_headers_in()\",\n \"* fetch all incoming request headers\"\n ],\n \"apache_request_headers_out\": [\n \"array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])\",\n \"* fetch all outgoing request headers\"\n ],\n \"apache_request_is_initial_req\": [\n \"bool apache_request_is_initial_req()\",\n \"\"\n ],\n \"apache_request_log_error\": [\n \"boolean apache_request_log_error(string message, [long facility])\",\n \"\"\n ],\n \"apache_request_meets_conditions\": [\n \"long apache_request_meets_conditions()\",\n \"\"\n ],\n \"apache_request_remote_host\": [\n \"int apache_request_remote_host([int type])\",\n \"\"\n ],\n \"apache_request_run\": [\n \"long apache_request_run()\",\n \"This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status.\"\n ],\n \"apache_request_satisfies\": [\n \"long apache_request_satisfies()\",\n \"\"\n ],\n \"apache_request_server_port\": [\n \"int apache_request_server_port()\",\n \"\"\n ],\n \"apache_request_set_etag\": [\n \"void apache_request_set_etag()\",\n \"\"\n ],\n \"apache_request_set_last_modified\": [\n \"void apache_request_set_last_modified()\",\n \"\"\n ],\n \"apache_request_some_auth_acequired\": [\n \"bool apache_request_some_auth_acequired()\",\n \"\"\n ],\n \"apache_request_sub_req_lookup_file\": [\n \"object apache_request_sub_req_lookup_file(string file)\",\n \"Returns sub-request for the specified file. You would need to run it yourself with run().\"\n ],\n \"apache_request_sub_req_lookup_uri\": [\n \"object apache_request_sub_req_lookup_uri(string uri)\",\n \"Returns sub-request for the specified uri. You would need to run it yourself with run()\"\n ],\n \"apache_request_sub_req_method_uri\": [\n \"object apache_request_sub_req_method_uri(string method, string uri)\",\n \"Returns sub-request for the specified file. You would need to run it yourself with run().\"\n ],\n \"apache_request_update_mtime\": [\n \"long apache_request_update_mtime([int dependency_mtime])\",\n \"\"\n ],\n \"apache_reset_timeout\": [\n \"bool apache_reset_timeout(void)\",\n \"Reset the Apache write timer\"\n ],\n \"apache_response_headers\": [\n \"array apache_response_headers(void)\",\n \"Fetch all HTTP response headers\"\n ],\n \"apache_setenv\": [\n \"bool apache_setenv(string variable, string value [, bool walk_to_top])\",\n \"Set an Apache subprocess_env variable\"\n ],\n \"array_change_key_case\": [\n \"array array_change_key_case(array input [, int case=CASE_LOWER])\",\n \"Retuns an array with all string keys lowercased [or uppercased]\"\n ],\n \"array_chunk\": [\n \"array array_chunk(array input, int size [, bool preserve_keys])\",\n \"Split array into chunks\"\n ],\n \"array_combine\": [\n \"array array_combine(array keys, array values)\",\n \"Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values\"\n ],\n \"array_count_values\": [\n \"array array_count_values(array input)\",\n \"Return the value as key and the frequency of that value in input as value\"\n ],\n \"array_diff\": [\n \"array array_diff(array arr1, array arr2 [, array ...])\",\n \"Returns the entries of arr1 that have values which are not present in any of the others arguments.\"\n ],\n \"array_diff_assoc\": [\n \"array array_diff_assoc(array arr1, array arr2 [, array ...])\",\n \"Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal\"\n ],\n \"array_diff_key\": [\n \"array array_diff_key(array arr1, array arr2 [, array ...])\",\n \"Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved.\"\n ],\n \"array_diff_uassoc\": [\n \"array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)\",\n \"Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function.\"\n ],\n \"array_diff_ukey\": [\n \"array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)\",\n \"Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved.\"\n ],\n \"array_fill\": [\n \"array array_fill(int start_key, int num, mixed val)\",\n \"Create an array containing num elements starting with index start_key each initialized to val\"\n ],\n \"array_fill_keys\": [\n \"array array_fill_keys(array keys, mixed val)\",\n \"Create an array using the elements of the first parameter as keys each initialized to val\"\n ],\n \"array_filter\": [\n \"array array_filter(array input [, mixed callback])\",\n \"Filters elements from the array via the callback.\"\n ],\n \"array_flip\": [\n \"array array_flip(array input)\",\n \"Return array with key <-> value flipped\"\n ],\n \"array_intersect\": [\n \"array array_intersect(array arr1, array arr2 [, array ...])\",\n \"Returns the entries of arr1 that have values which are present in all the other arguments\"\n ],\n \"array_intersect_assoc\": [\n \"array array_intersect_assoc(array arr1, array arr2 [, array ...])\",\n \"Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check\"\n ],\n \"array_intersect_key\": [\n \"array array_intersect_key(array arr1, array arr2 [, array ...])\",\n \"Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data.\"\n ],\n \"array_intersect_uassoc\": [\n \"array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)\",\n \"Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback.\"\n ],\n \"array_intersect_ukey\": [\n \"array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)\",\n \"Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data.\"\n ],\n \"array_key_exists\": [\n \"bool array_key_exists(mixed key, array search)\",\n \"Checks if the given key or index exists in the array\"\n ],\n \"array_keys\": [\n \"array array_keys(array input [, mixed search_value[, bool strict]])\",\n \"Return just the keys from the input array, optionally only for the specified search_value\"\n ],\n \"array_map\": [\n \"array array_map(mixed callback, array input1 [, array input2 ,...])\",\n \"Applies the callback to the elements in given arrays.\"\n ],\n \"array_merge\": [\n \"array array_merge(array arr1, array arr2 [, array ...])\",\n \"Merges elements from passed arrays into one array\"\n ],\n \"array_merge_recursive\": [\n \"array array_merge_recursive(array arr1, array arr2 [, array ...])\",\n \"Recursively merges elements from passed arrays into one array\"\n ],\n \"array_multisort\": [\n \"bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])\",\n \"Sort multiple arrays at once similar to how ORDER BY clause works in SQL\"\n ],\n \"array_pad\": [\n \"array array_pad(array input, int pad_size, mixed pad_value)\",\n \"Returns a copy of input array padded with pad_value to size pad_size\"\n ],\n \"array_pop\": [\n \"mixed array_pop(array stack)\",\n \"Pops an element off the end of the array\"\n ],\n \"array_product\": [\n \"mixed array_product(array input)\",\n \"Returns the product of the array entries\"\n ],\n \"array_push\": [\n \"int array_push(array stack, mixed var [, mixed ...])\",\n \"Pushes elements onto the end of the array\"\n ],\n \"array_rand\": [\n \"mixed array_rand(array input [, int num_req])\",\n \"Return key/keys for random entry/entries in the array\"\n ],\n \"array_reduce\": [\n \"mixed array_reduce(array input, mixed callback [, mixed initial])\",\n \"Iteratively reduce the array to a single value via the callback.\"\n ],\n \"array_replace\": [\n \"array array_replace(array arr1, array arr2 [, array ...])\",\n \"Replaces elements from passed arrays into one array\"\n ],\n \"array_replace_recursive\": [\n \"array array_replace_recursive(array arr1, array arr2 [, array ...])\",\n \"Recursively replaces elements from passed arrays into one array\"\n ],\n \"array_reverse\": [\n \"array array_reverse(array input [, bool preserve keys])\",\n \"Return input as a new array with the order of the entries reversed\"\n ],\n \"array_search\": [\n \"mixed array_search(mixed needle, array haystack [, bool strict])\",\n \"Searches the array for a given value and returns the corresponding key if successful\"\n ],\n \"array_shift\": [\n \"mixed array_shift(array stack)\",\n \"Pops an element off the beginning of the array\"\n ],\n \"array_slice\": [\n \"array array_slice(array input, int offset [, int length [, bool preserve_keys]])\",\n \"Returns elements specified by offset and length\"\n ],\n \"array_splice\": [\n \"array array_splice(array input, int offset [, int length [, array replacement]])\",\n \"Removes the elements designated by offset and length and replace them with supplied array\"\n ],\n \"array_sum\": [\n \"mixed array_sum(array input)\",\n \"Returns the sum of the array entries\"\n ],\n \"array_udiff\": [\n \"array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)\",\n \"Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function.\"\n ],\n \"array_udiff_assoc\": [\n \"array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)\",\n \"Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function.\"\n ],\n \"array_udiff_uassoc\": [\n \"array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)\",\n \"Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions.\"\n ],\n \"array_uintersect\": [\n \"array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)\",\n \"Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback.\"\n ],\n \"array_uintersect_assoc\": [\n \"array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)\",\n \"Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback.\"\n ],\n \"array_uintersect_uassoc\": [\n \"array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)\",\n \"Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks.\"\n ],\n \"array_unique\": [\n \"array array_unique(array input [, int sort_flags])\",\n \"Removes duplicate values from array\"\n ],\n \"array_unshift\": [\n \"int array_unshift(array stack, mixed var [, mixed ...])\",\n \"Pushes elements onto the beginning of the array\"\n ],\n \"array_values\": [\n \"array array_values(array input)\",\n \"Return just the values from the input array\"\n ],\n \"array_walk\": [\n \"bool array_walk(array input, string funcname [, mixed userdata])\",\n \"Apply a user function to every member of an array\"\n ],\n \"array_walk_recursive\": [\n \"bool array_walk_recursive(array input, string funcname [, mixed userdata])\",\n \"Apply a user function recursively to every member of an array\"\n ],\n \"arsort\": [\n \"bool arsort(array &array_arg [, int sort_flags])\",\n \"Sort an array in reverse order and maintain index association\"\n ],\n \"asin\": [\n \"float asin(float number)\",\n \"Returns the arc sine of the number in radians\"\n ],\n \"asinh\": [\n \"float asinh(float number)\",\n \"Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number\"\n ],\n \"asort\": [\n \"bool asort(array &array_arg [, int sort_flags])\",\n \"Sort an array and maintain index association\"\n ],\n \"assert\": [\n \"int assert(string|bool assertion)\",\n \"Checks if assertion is false\"\n ],\n \"assert_options\": [\n \"mixed assert_options(int what [, mixed value])\",\n \"Set/get the various assert flags\"\n ],\n \"atan\": [\n \"float atan(float number)\",\n \"Returns the arc tangent of the number in radians\"\n ],\n \"atan2\": [\n \"float atan2(float y, float x)\",\n \"Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x\"\n ],\n \"atanh\": [\n \"float atanh(float number)\",\n \"Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number\"\n ],\n \"attachIterator\": [\n \"void attachIterator(Iterator iterator[, mixed info])\",\n \"Attach a new iterator\"\n ],\n \"base64_decode\": [\n \"string base64_decode(string str[, bool strict])\",\n \"Decodes string using MIME base64 algorithm\"\n ],\n \"base64_encode\": [\n \"string base64_encode(string str)\",\n \"Encodes string using MIME base64 algorithm\"\n ],\n \"base_convert\": [\n \"string base_convert(string number, int frombase, int tobase)\",\n \"Converts a number in a string from any base <= 36 to any base <= 36\"\n ],\n \"basename\": [\n \"string basename(string path [, string suffix])\",\n \"Returns the filename component of the path\"\n ],\n \"bcadd\": [\n \"string bcadd(string left_operand, string right_operand [, int scale])\",\n \"Returns the sum of two arbitrary precision numbers\"\n ],\n \"bccomp\": [\n \"int bccomp(string left_operand, string right_operand [, int scale])\",\n \"Compares two arbitrary precision numbers\"\n ],\n \"bcdiv\": [\n \"string bcdiv(string left_operand, string right_operand [, int scale])\",\n \"Returns the quotient of two arbitrary precision numbers (division)\"\n ],\n \"bcmod\": [\n \"string bcmod(string left_operand, string right_operand)\",\n \"Returns the modulus of the two arbitrary precision operands\"\n ],\n \"bcmul\": [\n \"string bcmul(string left_operand, string right_operand [, int scale])\",\n \"Returns the multiplication of two arbitrary precision numbers\"\n ],\n \"bcpow\": [\n \"string bcpow(string x, string y [, int scale])\",\n \"Returns the value of an arbitrary precision number raised to the power of another\"\n ],\n \"bcpowmod\": [\n \"string bcpowmod(string x, string y, string mod [, int scale])\",\n \"Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous\"\n ],\n \"bcscale\": [\n \"bool bcscale(int scale)\",\n \"Sets default scale parameter for all bc math functions\"\n ],\n \"bcsqrt\": [\n \"string bcsqrt(string operand [, int scale])\",\n \"Returns the square root of an arbitray precision number\"\n ],\n \"bcsub\": [\n \"string bcsub(string left_operand, string right_operand [, int scale])\",\n \"Returns the difference between two arbitrary precision numbers\"\n ],\n \"bin2hex\": [\n \"string bin2hex(string data)\",\n \"Converts the binary representation of data to hex\"\n ],\n \"bind_textdomain_codeset\": [\n \"string bind_textdomain_codeset (string domain, string codeset)\",\n \"Specify the character encoding in which the messages from the DOMAIN message catalog will be returned.\"\n ],\n \"bindec\": [\n \"int bindec(string binary_number)\",\n \"Returns the decimal equivalent of the binary number\"\n ],\n \"bindtextdomain\": [\n \"string bindtextdomain(string domain_name, string dir)\",\n \"Bind to the text domain domain_name, looking for translations in dir. Returns the current domain\"\n ],\n \"birdstep_autocommit\": [\n \"bool birdstep_autocommit(int index)\",\n \"\"\n ],\n \"birdstep_close\": [\n \"bool birdstep_close(int id)\",\n \"\"\n ],\n \"birdstep_commit\": [\n \"bool birdstep_commit(int index)\",\n \"\"\n ],\n \"birdstep_connect\": [\n \"int birdstep_connect(string server, string user, string pass)\",\n \"\"\n ],\n \"birdstep_exec\": [\n \"int birdstep_exec(int index, string exec_str)\",\n \"\"\n ],\n \"birdstep_fetch\": [\n \"bool birdstep_fetch(int index)\",\n \"\"\n ],\n \"birdstep_fieldname\": [\n \"string birdstep_fieldname(int index, int col)\",\n \"\"\n ],\n \"birdstep_fieldnum\": [\n \"int birdstep_fieldnum(int index)\",\n \"\"\n ],\n \"birdstep_freeresult\": [\n \"bool birdstep_freeresult(int index)\",\n \"\"\n ],\n \"birdstep_off_autocommit\": [\n \"bool birdstep_off_autocommit(int index)\",\n \"\"\n ],\n \"birdstep_result\": [\n \"mixed birdstep_result(int index, mixed col)\",\n \"\"\n ],\n \"birdstep_rollback\": [\n \"bool birdstep_rollback(int index)\",\n \"\"\n ],\n \"bzcompress\": [\n \"string bzcompress(string source [, int blocksize100k [, int workfactor]])\",\n \"Compresses a string into BZip2 encoded data\"\n ],\n \"bzdecompress\": [\n \"string bzdecompress(string source [, int small])\",\n \"Decompresses BZip2 compressed data\"\n ],\n \"bzerrno\": [\n \"int bzerrno(resource bz)\",\n \"Returns the error number\"\n ],\n \"bzerror\": [\n \"array bzerror(resource bz)\",\n \"Returns the error number and error string in an associative array\"\n ],\n \"bzerrstr\": [\n \"string bzerrstr(resource bz)\",\n \"Returns the error string\"\n ],\n \"bzopen\": [\n \"resource bzopen(string|int file|fp, string mode)\",\n \"Opens a new BZip2 stream\"\n ],\n \"bzread\": [\n \"string bzread(resource bz[, int length])\",\n \"Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified\"\n ],\n \"cal_days_in_month\": [\n \"int cal_days_in_month(int calendar, int month, int year)\",\n \"Returns the number of days in a month for a given year and calendar\"\n ],\n \"cal_from_jd\": [\n \"array cal_from_jd(int jd, int calendar)\",\n \"Converts from Julian Day Count to a supported calendar and return extended information\"\n ],\n \"cal_info\": [\n \"array cal_info([int calendar])\",\n \"Returns information about a particular calendar\"\n ],\n \"cal_to_jd\": [\n \"int cal_to_jd(int calendar, int month, int day, int year)\",\n \"Converts from a supported calendar to Julian Day Count\"\n ],\n \"call_user_func\": [\n \"mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])\",\n \"Call a user function which is the first parameter\"\n ],\n \"call_user_func_array\": [\n \"mixed call_user_func_array(string function_name, array parameters)\",\n \"Call a user function which is the first parameter with the arguments contained in array\"\n ],\n \"call_user_method\": [\n \"mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])\",\n \"Call a user method on a specific object or class\"\n ],\n \"call_user_method_array\": [\n \"mixed call_user_method_array(string method_name, mixed object, array params)\",\n \"Call a user method on a specific object or class using a parameter array\"\n ],\n \"ceil\": [\n \"float ceil(float number)\",\n \"Returns the next highest integer value of the number\"\n ],\n \"chdir\": [\n \"bool chdir(string directory)\",\n \"Change the current directory\"\n ],\n \"checkdate\": [\n \"bool checkdate(int month, int day, int year)\",\n \"Returns true(1) if it is a valid date in gregorian calendar\"\n ],\n \"chgrp\": [\n \"bool chgrp(string filename, mixed group)\",\n \"Change file group\"\n ],\n \"chmod\": [\n \"bool chmod(string filename, int mode)\",\n \"Change file mode\"\n ],\n \"chown\": [\n \"bool chown (string filename, mixed user)\",\n \"Change file owner\"\n ],\n \"chr\": [\n \"string chr(int ascii)\",\n \"Converts ASCII code to a character\"\n ],\n \"chroot\": [\n \"bool chroot(string directory)\",\n \"Change root directory\"\n ],\n \"chunk_split\": [\n \"string chunk_split(string str [, int chunklen [, string ending]])\",\n \"Returns split line\"\n ],\n \"class_alias\": [\n \"bool class_alias(string user_class_name , string alias_name [, bool autoload])\",\n \"Creates an alias for user defined class\"\n ],\n \"class_exists\": [\n \"bool class_exists(string classname [, bool autoload])\",\n \"Checks if the class exists\"\n ],\n \"class_implements\": [\n \"array class_implements(mixed what [, bool autoload ])\",\n \"Return all classes and interfaces implemented by SPL\"\n ],\n \"class_parents\": [\n \"array class_parents(object instance [, boolean autoload = true])\",\n \"Return an array containing the names of all parent classes\"\n ],\n \"clearstatcache\": [\n \"void clearstatcache([bool clear_realpath_cache[, string filename]])\",\n \"Clear file stat cache\"\n ],\n \"closedir\": [\n \"void closedir([resource dir_handle])\",\n \"Close directory connection identified by the dir_handle\"\n ],\n \"closelog\": [\n \"bool closelog(void)\",\n \"Close connection to system logger\"\n ],\n \"collator_asort\": [\n \"bool collator_asort( Collator $coll, array(string) $arr )\",\n \"* Sort array using specified collator, maintaining index association.\"\n ],\n \"collator_compare\": [\n \"int collator_compare( Collator $coll, string $str1, string $str2 )\",\n \"* Compare two strings.\"\n ],\n \"collator_create\": [\n \"Collator collator_create( string $locale )\",\n \"* Create collator.\"\n ],\n \"collator_get_attribute\": [\n \"int collator_get_attribute( Collator $coll, int $attr )\",\n \"* Get collation attribute value.\"\n ],\n \"collator_get_error_code\": [\n \"int collator_get_error_code( Collator $coll )\",\n \"* Get collator's last error code.\"\n ],\n \"collator_get_error_message\": [\n \"string collator_get_error_message( Collator $coll )\",\n \"* Get text description for collator's last error code.\"\n ],\n \"collator_get_locale\": [\n \"string collator_get_locale( Collator $coll, int $type )\",\n \"* Gets the locale name of the collator.\"\n ],\n \"collator_get_sort_key\": [\n \"bool collator_get_sort_key( Collator $coll, string $str )\",\n \"* Get a sort key for a string from a Collator. }}}\"\n ],\n \"collator_get_strength\": [\n \"int collator_get_strength(Collator coll)\",\n \"* Returns the current collation strength.\"\n ],\n \"collator_set_attribute\": [\n \"bool collator_set_attribute( Collator $coll, int $attr, int $val )\",\n \"* Set collation attribute.\"\n ],\n \"collator_set_strength\": [\n \"bool collator_set_strength(Collator coll, int strength)\",\n \"* Set the collation strength.\"\n ],\n \"collator_sort\": [\n \"bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )\",\n \"* Sort array using specified collator.\"\n ],\n \"collator_sort_with_sort_keys\": [\n \"bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )\",\n \"* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance.\"\n ],\n \"com_create_guid\": [\n \"string com_create_guid()\",\n \"Generate a globally unique identifier (GUID)\"\n ],\n \"com_event_sink\": [\n \"bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])\",\n \"Connect events from a COM object to a PHP object\"\n ],\n \"com_get_active_object\": [\n \"object com_get_active_object(string progid [, int code_page ])\",\n \"Returns a handle to an already running instance of a COM object\"\n ],\n \"com_load_typelib\": [\n \"bool com_load_typelib(string typelib_name [, int case_insensitive])\",\n \"Loads a Typelibrary and registers its constants\"\n ],\n \"com_message_pump\": [\n \"bool com_message_pump([int timeoutms])\",\n \"Process COM messages, sleeping for up to timeoutms milliseconds\"\n ],\n \"com_print_typeinfo\": [\n \"bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)\",\n \"Print out a PHP class definition for a dispatchable interface\"\n ],\n \"compact\": [\n \"array compact(mixed var_names [, mixed ...])\",\n \"Creates a hash containing variables and their values\"\n ],\n \"compose_locale\": [\n \"static string compose_locale($array)\",\n \"* Creates a locale by combining the parts of locale-ID passed * }}}\"\n ],\n \"confirm_extname_compiled\": [\n \"string confirm_extname_compiled(string arg)\",\n \"Return a string to confirm that the module is compiled in\"\n ],\n \"connection_aborted\": [\n \"int connection_aborted(void)\",\n \"Returns true if client disconnected\"\n ],\n \"connection_status\": [\n \"int connection_status(void)\",\n \"Returns the connection status bitfield\"\n ],\n \"constant\": [\n \"mixed constant(string const_name)\",\n \"Given the name of a constant this function will return the constant's associated value\"\n ],\n \"convert_cyr_string\": [\n \"string convert_cyr_string(string str, string from, string to)\",\n \"Convert from one Cyrillic character set to another\"\n ],\n \"convert_uudecode\": [\n \"string convert_uudecode(string data)\",\n \"decode a uuencoded string\"\n ],\n \"convert_uuencode\": [\n \"string convert_uuencode(string data)\",\n \"uuencode a string\"\n ],\n \"copy\": [\n \"bool copy(string source_file, string destination_file [, resource context])\",\n \"Copy a file\"\n ],\n \"cos\": [\n \"float cos(float number)\",\n \"Returns the cosine of the number in radians\"\n ],\n \"cosh\": [\n \"float cosh(float number)\",\n \"Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2\"\n ],\n \"count\": [\n \"int count(mixed var [, int mode])\",\n \"Count the number of elements in a variable (usually an array)\"\n ],\n \"count_chars\": [\n \"mixed count_chars(string input [, int mode])\",\n \"Returns info about what characters are used in input\"\n ],\n \"crc32\": [\n \"string crc32(string str)\",\n \"Calculate the crc32 polynomial of a string\"\n ],\n \"create_function\": [\n \"string create_function(string args, string code)\",\n \"Creates an anonymous function, and returns its name (funny, eh?)\"\n ],\n \"crypt\": [\n \"string crypt(string str [, string salt])\",\n \"Hash a string\"\n ],\n \"ctype_alnum\": [\n \"bool ctype_alnum(mixed c)\",\n \"Checks for alphanumeric character(s)\"\n ],\n \"ctype_alpha\": [\n \"bool ctype_alpha(mixed c)\",\n \"Checks for alphabetic character(s)\"\n ],\n \"ctype_cntrl\": [\n \"bool ctype_cntrl(mixed c)\",\n \"Checks for control character(s)\"\n ],\n \"ctype_digit\": [\n \"bool ctype_digit(mixed c)\",\n \"Checks for numeric character(s)\"\n ],\n \"ctype_graph\": [\n \"bool ctype_graph(mixed c)\",\n \"Checks for any printable character(s) except space\"\n ],\n \"ctype_lower\": [\n \"bool ctype_lower(mixed c)\",\n \"Checks for lowercase character(s)\"\n ],\n \"ctype_print\": [\n \"bool ctype_print(mixed c)\",\n \"Checks for printable character(s)\"\n ],\n \"ctype_punct\": [\n \"bool ctype_punct(mixed c)\",\n \"Checks for any printable character which is not whitespace or an alphanumeric character\"\n ],\n \"ctype_space\": [\n \"bool ctype_space(mixed c)\",\n \"Checks for whitespace character(s)\"\n ],\n \"ctype_upper\": [\n \"bool ctype_upper(mixed c)\",\n \"Checks for uppercase character(s)\"\n ],\n \"ctype_xdigit\": [\n \"bool ctype_xdigit(mixed c)\",\n \"Checks for character(s) representing a hexadecimal digit\"\n ],\n \"curl_close\": [\n \"void curl_close(resource ch)\",\n \"Close a cURL session\"\n ],\n \"curl_copy_handle\": [\n \"resource curl_copy_handle(resource ch)\",\n \"Copy a cURL handle along with all of it's preferences\"\n ],\n \"curl_errno\": [\n \"int curl_errno(resource ch)\",\n \"Return an integer containing the last error number\"\n ],\n \"curl_error\": [\n \"string curl_error(resource ch)\",\n \"Return a string contain the last error for the current session\"\n ],\n \"curl_exec\": [\n \"bool curl_exec(resource ch)\",\n \"Perform a cURL session\"\n ],\n \"curl_getinfo\": [\n \"mixed curl_getinfo(resource ch [, int option])\",\n \"Get information regarding a specific transfer\"\n ],\n \"curl_init\": [\n \"resource curl_init([string url])\",\n \"Initialize a cURL session\"\n ],\n \"curl_multi_add_handle\": [\n \"int curl_multi_add_handle(resource mh, resource ch)\",\n \"Add a normal cURL handle to a cURL multi handle\"\n ],\n \"curl_multi_close\": [\n \"void curl_multi_close(resource mh)\",\n \"Close a set of cURL handles\"\n ],\n \"curl_multi_exec\": [\n \"int curl_multi_exec(resource mh, int &still_running)\",\n \"Run the sub-connections of the current cURL handle\"\n ],\n \"curl_multi_getcontent\": [\n \"string curl_multi_getcontent(resource ch)\",\n \"Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set\"\n ],\n \"curl_multi_info_read\": [\n \"array curl_multi_info_read(resource mh [, long msgs_in_queue])\",\n \"Get information about the current transfers\"\n ],\n \"curl_multi_init\": [\n \"resource curl_multi_init(void)\",\n \"Returns a new cURL multi handle\"\n ],\n \"curl_multi_remove_handle\": [\n \"int curl_multi_remove_handle(resource mh, resource ch)\",\n \"Remove a multi handle from a set of cURL handles\"\n ],\n \"curl_multi_select\": [\n \"int curl_multi_select(resource mh[, double timeout])\",\n \"Get all the sockets associated with the cURL extension, which can then be \\\"selected\\\"\"\n ],\n \"curl_setopt\": [\n \"bool curl_setopt(resource ch, int option, mixed value)\",\n \"Set an option for a cURL transfer\"\n ],\n \"curl_setopt_array\": [\n \"bool curl_setopt_array(resource ch, array options)\",\n \"Set an array of option for a cURL transfer\"\n ],\n \"curl_version\": [\n \"array curl_version([int version])\",\n \"Return cURL version information.\"\n ],\n \"current\": [\n \"mixed current(array array_arg)\",\n \"Return the element currently pointed to by the internal array pointer\"\n ],\n \"date\": [\n \"string date(string format [, long timestamp])\",\n \"Format a local date/time\"\n ],\n \"date_add\": [\n \"DateTime date_add(DateTime object, DateInterval interval)\",\n \"Adds an interval to the current date in object.\"\n ],\n \"date_create\": [\n \"DateTime date_create([string time[, DateTimeZone object]])\",\n \"Returns new DateTime object\"\n ],\n \"date_create_from_format\": [\n \"DateTime date_create_from_format(string format, string time[, DateTimeZone object])\",\n \"Returns new DateTime object formatted according to the specified format\"\n ],\n \"date_date_set\": [\n \"DateTime date_date_set(DateTime object, long year, long month, long day)\",\n \"Sets the date.\"\n ],\n \"date_default_timezone_get\": [\n \"string date_default_timezone_get()\",\n \"Gets the default timezone used by all date/time functions in a script\"\n ],\n \"date_default_timezone_set\": [\n \"bool date_default_timezone_set(string timezone_identifier)\",\n \"Sets the default timezone used by all date/time functions in a script\"\n ],\n \"date_diff\": [\n \"DateInterval date_diff(DateTime object [, bool absolute])\",\n \"Returns the difference between two DateTime objects.\"\n ],\n \"date_format\": [\n \"string date_format(DateTime object, string format)\",\n \"Returns date formatted according to given format\"\n ],\n \"date_get_last_errors\": [\n \"array date_get_last_errors()\",\n \"Returns the warnings and errors found while parsing a date/time string.\"\n ],\n \"date_interval_create_from_date_string\": [\n \"DateInterval date_interval_create_from_date_string(string time)\",\n \"Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string\"\n ],\n \"date_interval_format\": [\n \"string date_interval_format(DateInterval object, string format)\",\n \"Formats the interval.\"\n ],\n \"date_isodate_set\": [\n \"DateTime date_isodate_set(DateTime object, long year, long week[, long day])\",\n \"Sets the ISO date.\"\n ],\n \"date_modify\": [\n \"DateTime date_modify(DateTime object, string modify)\",\n \"Alters the timestamp.\"\n ],\n \"date_offset_get\": [\n \"long date_offset_get(DateTime object)\",\n \"Returns the DST offset.\"\n ],\n \"date_parse\": [\n \"array date_parse(string date)\",\n \"Returns associative array with detailed info about given date\"\n ],\n \"date_parse_from_format\": [\n \"array date_parse_from_format(string format, string date)\",\n \"Returns associative array with detailed info about given date\"\n ],\n \"date_sub\": [\n \"DateTime date_sub(DateTime object, DateInterval interval)\",\n \"Subtracts an interval to the current date in object.\"\n ],\n \"date_sun_info\": [\n \"array date_sun_info(long time, float latitude, float longitude)\",\n \"Returns an array with information about sun set/rise and twilight begin/end\"\n ],\n \"date_sunrise\": [\n \"mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])\",\n \"Returns time of sunrise for a given day and location\"\n ],\n \"date_sunset\": [\n \"mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])\",\n \"Returns time of sunset for a given day and location\"\n ],\n \"date_time_set\": [\n \"DateTime date_time_set(DateTime object, long hour, long minute[, long second])\",\n \"Sets the time.\"\n ],\n \"date_timestamp_get\": [\n \"long date_timestamp_get(DateTime object)\",\n \"Gets the Unix timestamp.\"\n ],\n \"date_timestamp_set\": [\n \"DateTime date_timestamp_set(DateTime object, long unixTimestamp)\",\n \"Sets the date and time based on an Unix timestamp.\"\n ],\n \"date_timezone_get\": [\n \"DateTimeZone date_timezone_get(DateTime object)\",\n \"Return new DateTimeZone object relative to give DateTime\"\n ],\n \"date_timezone_set\": [\n \"DateTime date_timezone_set(DateTime object, DateTimeZone object)\",\n \"Sets the timezone for the DateTime object.\"\n ],\n \"datefmt_create\": [\n \"IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )\",\n \"* Create formatter.\"\n ],\n \"datefmt_format\": [\n \"string datefmt_format( [mixed]int $args or array $args )\",\n \"* Format the time value as a string. }}}\"\n ],\n \"datefmt_get_calendar\": [\n \"string datefmt_get_calendar( IntlDateFormatter $mf )\",\n \"* Get formatter calendar.\"\n ],\n \"datefmt_get_datetype\": [\n \"string datefmt_get_datetype( IntlDateFormatter $mf )\",\n \"* Get formatter datetype.\"\n ],\n \"datefmt_get_error_code\": [\n \"int datefmt_get_error_code( IntlDateFormatter $nf )\",\n \"* Get formatter's last error code.\"\n ],\n \"datefmt_get_error_message\": [\n \"string datefmt_get_error_message( IntlDateFormatter $coll )\",\n \"* Get text description for formatter's last error code.\"\n ],\n \"datefmt_get_locale\": [\n \"string datefmt_get_locale(IntlDateFormatter $mf)\",\n \"* Get formatter locale.\"\n ],\n \"datefmt_get_pattern\": [\n \"string datefmt_get_pattern( IntlDateFormatter $mf )\",\n \"* Get formatter pattern.\"\n ],\n \"datefmt_get_timetype\": [\n \"string datefmt_get_timetype( IntlDateFormatter $mf )\",\n \"* Get formatter timetype.\"\n ],\n \"datefmt_get_timezone_id\": [\n \"string datefmt_get_timezone_id( IntlDateFormatter $mf )\",\n \"* Get formatter timezone_id.\"\n ],\n \"datefmt_isLenient\": [\n \"string datefmt_isLenient(IntlDateFormatter $mf)\",\n \"* Get formatter locale.\"\n ],\n \"datefmt_localtime\": [\n \"integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])\",\n \"* Parse the string $value to a localtime array }}}\"\n ],\n \"datefmt_parse\": [\n \"integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )\",\n \"* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}\"\n ],\n \"datefmt_setLenient\": [\n \"string datefmt_setLenient(IntlDateFormatter $mf)\",\n \"* Set formatter lenient.\"\n ],\n \"datefmt_set_calendar\": [\n \"bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )\",\n \"* Set formatter calendar.\"\n ],\n \"datefmt_set_pattern\": [\n \"bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )\",\n \"* Set formatter pattern.\"\n ],\n \"datefmt_set_timezone_id\": [\n \"boolean datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)\",\n \"* Set formatter timezone_id.\"\n ],\n \"dba_close\": [\n \"void dba_close(resource handle)\",\n \"Closes database\"\n ],\n \"dba_delete\": [\n \"bool dba_delete(string key, resource handle)\",\n \"Deletes the entry associated with key If inifile: remove all other key lines\"\n ],\n \"dba_exists\": [\n \"bool dba_exists(string key, resource handle)\",\n \"Checks, if the specified key exists\"\n ],\n \"dba_fetch\": [\n \"string dba_fetch(string key, [int skip ,] resource handle)\",\n \"Fetches the data associated with key\"\n ],\n \"dba_firstkey\": [\n \"string dba_firstkey(resource handle)\",\n \"Resets the internal key pointer and returns the first key\"\n ],\n \"dba_handlers\": [\n \"array dba_handlers([bool full_info])\",\n \"List configured database handlers\"\n ],\n \"dba_insert\": [\n \"bool dba_insert(string key, string value, resource handle)\",\n \"If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)\"\n ],\n \"dba_key_split\": [\n \"array|false dba_key_split(string key)\",\n \"Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null\"\n ],\n \"dba_list\": [\n \"array dba_list()\",\n \"List opened databases\"\n ],\n \"dba_nextkey\": [\n \"string dba_nextkey(resource handle)\",\n \"Returns the next key\"\n ],\n \"dba_open\": [\n \"resource dba_open(string path, string mode [, string handlername, string ...])\",\n \"Opens path using the specified handler in mode\"\n ],\n \"dba_optimize\": [\n \"bool dba_optimize(resource handle)\",\n \"Optimizes (e.g. clean up, vacuum) database\"\n ],\n \"dba_popen\": [\n \"resource dba_popen(string path, string mode [, string handlername, string ...])\",\n \"Opens path using the specified handler in mode persistently\"\n ],\n \"dba_replace\": [\n \"bool dba_replace(string key, string value, resource handle)\",\n \"Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines\"\n ],\n \"dba_sync\": [\n \"bool dba_sync(resource handle)\",\n \"Synchronizes database\"\n ],\n \"dcgettext\": [\n \"string dcgettext(string domain_name, string msgid, long category)\",\n \"Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist\"\n ],\n \"dcngettext\": [\n \"string dcngettext (string domain, string msgid1, string msgid2, int n, int category)\",\n \"Plural version of dcgettext()\"\n ],\n \"debug_backtrace\": [\n \"array debug_backtrace([bool provide_object])\",\n \"Return backtrace as array\"\n ],\n \"debug_print_backtrace\": [\n \"void debug_print_backtrace(void) */\",\n \"ZEND_FUNCTION(debug_print_backtrace) { zend_execute_data *ptr, *skip; int lineno; char *function_name; char *filename; char *class_name = NULL; char *call_type; char *include_filename = NULL; zval *arg_array = NULL; int indent = 0; if (zend_parse_parameters_none() == FAILURE) { return; } ptr = EG(current_execute_data);\",\n \"PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file\"\n ],\n \"dom_document_relaxNG_validate_xml\": [\n \"boolean dom_document_relaxNG_validate_xml(string source); */\",\n \"PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml\"\n ],\n \"dom_document_rename_node\": [\n \"DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3\"\n ],\n \"dom_document_save\": [\n \"int dom_document_save(string file);\",\n \"Convenience method to save to file\"\n ],\n \"dom_document_save_html\": [\n \"string dom_document_save_html();\",\n \"Convenience method to output as html\"\n ],\n \"dom_document_save_html_file\": [\n \"int dom_document_save_html_file(string file);\",\n \"Convenience method to save to file as html\"\n ],\n \"dom_document_savexml\": [\n \"string dom_document_savexml([node n]);\",\n \"URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3\"\n ],\n \"dom_document_schema_validate\": [\n \"boolean dom_document_schema_validate(string source); */\",\n \"PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate\"\n ],\n \"dom_document_schema_validate_file\": [\n \"boolean dom_document_schema_validate_file(string filename); */\",\n \"PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file\"\n ],\n \"dom_document_validate\": [\n \"boolean dom_document_validate();\",\n \"Since: DOM extended\"\n ],\n \"dom_document_xinclude\": [\n \"int dom_document_xinclude([int options])\",\n \"Substitutues xincludes in a DomDocument\"\n ],\n \"dom_domconfiguration_can_set_parameter\": [\n \"boolean dom_domconfiguration_can_set_parameter(string name, domuserdata value);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:\"\n ],\n \"dom_domconfiguration_get_parameter\": [\n \"domdomuserdata dom_domconfiguration_get_parameter(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:\"\n ],\n \"dom_domconfiguration_set_parameter\": [\n \"dom_void dom_domconfiguration_set_parameter(string name, domuserdata value);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:\"\n ],\n \"dom_domerrorhandler_handle_error\": [\n \"dom_boolean dom_domerrorhandler_handle_error(domerror error);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:\"\n ],\n \"dom_domimplementation_create_document\": [\n \"DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2\"\n ],\n \"dom_domimplementation_create_document_type\": [\n \"DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2\"\n ],\n \"dom_domimplementation_get_feature\": [\n \"DOMNode dom_domimplementation_get_feature(string feature, string version);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3\"\n ],\n \"dom_domimplementation_has_feature\": [\n \"boolean dom_domimplementation_has_feature(string feature, string version);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:\"\n ],\n \"dom_domimplementationlist_item\": [\n \"domdomimplementation dom_domimplementationlist_item(int index);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:\"\n ],\n \"dom_domimplementationsource_get_domimplementation\": [\n \"domdomimplementation dom_domimplementationsource_get_domimplementation(string features);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:\"\n ],\n \"dom_domimplementationsource_get_domimplementations\": [\n \"domimplementationlist dom_domimplementationsource_get_domimplementations(string features);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:\"\n ],\n \"dom_domstringlist_item\": [\n \"domstring dom_domstringlist_item(int index);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:\"\n ],\n \"dom_element_get_attribute\": [\n \"string dom_element_get_attribute(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:\"\n ],\n \"dom_element_get_attribute_node\": [\n \"DOMAttr dom_element_get_attribute_node(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:\"\n ],\n \"dom_element_get_attribute_node_ns\": [\n \"DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2\"\n ],\n \"dom_element_get_attribute_ns\": [\n \"string dom_element_get_attribute_ns(string namespaceURI, string localName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2\"\n ],\n \"dom_element_get_elements_by_tag_name\": [\n \"DOMNodeList dom_element_get_elements_by_tag_name(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:\"\n ],\n \"dom_element_get_elements_by_tag_name_ns\": [\n \"DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2\"\n ],\n \"dom_element_has_attribute\": [\n \"boolean dom_element_has_attribute(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2\"\n ],\n \"dom_element_has_attribute_ns\": [\n \"boolean dom_element_has_attribute_ns(string namespaceURI, string localName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2\"\n ],\n \"dom_element_remove_attribute\": [\n \"void dom_element_remove_attribute(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:\"\n ],\n \"dom_element_remove_attribute_node\": [\n \"DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:\"\n ],\n \"dom_element_remove_attribute_ns\": [\n \"void dom_element_remove_attribute_ns(string namespaceURI, string localName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2\"\n ],\n \"dom_element_set_attribute\": [\n \"void dom_element_set_attribute(string name, string value);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:\"\n ],\n \"dom_element_set_attribute_node\": [\n \"DOMAttr dom_element_set_attribute_node(DOMAttr newAttr);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:\"\n ],\n \"dom_element_set_attribute_node_ns\": [\n \"DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2\"\n ],\n \"dom_element_set_attribute_ns\": [\n \"void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2\"\n ],\n \"dom_element_set_id_attribute\": [\n \"void dom_element_set_id_attribute(string name, boolean isId);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3\"\n ],\n \"dom_element_set_id_attribute_node\": [\n \"void dom_element_set_id_attribute_node(attr idAttr, boolean isId);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3\"\n ],\n \"dom_element_set_id_attribute_ns\": [\n \"void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3\"\n ],\n \"dom_import_simplexml\": [\n \"somNode dom_import_simplexml(sxeobject node)\",\n \"Get a simplexml_element object from dom to allow for processing\"\n ],\n \"dom_namednodemap_get_named_item\": [\n \"DOMNode dom_namednodemap_get_named_item(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:\"\n ],\n \"dom_namednodemap_get_named_item_ns\": [\n \"DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2\"\n ],\n \"dom_namednodemap_item\": [\n \"DOMNode dom_namednodemap_item(int index);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:\"\n ],\n \"dom_namednodemap_remove_named_item\": [\n \"DOMNode dom_namednodemap_remove_named_item(string name);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:\"\n ],\n \"dom_namednodemap_remove_named_item_ns\": [\n \"DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2\"\n ],\n \"dom_namednodemap_set_named_item\": [\n \"DOMNode dom_namednodemap_set_named_item(DOMNode arg);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:\"\n ],\n \"dom_namednodemap_set_named_item_ns\": [\n \"DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2\"\n ],\n \"dom_namelist_get_name\": [\n \"string dom_namelist_get_name(int index);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:\"\n ],\n \"dom_namelist_get_namespace_uri\": [\n \"string dom_namelist_get_namespace_uri(int index);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:\"\n ],\n \"dom_node_append_child\": [\n \"DomNode dom_node_append_child(DomNode newChild);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:\"\n ],\n \"dom_node_clone_node\": [\n \"DomNode dom_node_clone_node(boolean deep);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:\"\n ],\n \"dom_node_compare_document_position\": [\n \"short dom_node_compare_document_position(DomNode other);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3\"\n ],\n \"dom_node_get_feature\": [\n \"DomNode dom_node_get_feature(string feature, string version);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3\"\n ],\n \"dom_node_get_user_data\": [\n \"mixed dom_node_get_user_data(string key);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3\"\n ],\n \"dom_node_has_attributes\": [\n \"boolean dom_node_has_attributes();\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2\"\n ],\n \"dom_node_has_child_nodes\": [\n \"boolean dom_node_has_child_nodes();\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:\"\n ],\n \"dom_node_insert_before\": [\n \"domnode dom_node_insert_before(DomNode newChild, DomNode refChild);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:\"\n ],\n \"dom_node_is_default_namespace\": [\n \"boolean dom_node_is_default_namespace(string namespaceURI);\",\n \"URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3\"\n ],\n \"dom_node_is_equal_node\": [\n \"boolean dom_node_is_equal_node(DomNode arg);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3\"\n ],\n \"dom_node_is_same_node\": [\n \"boolean dom_node_is_same_node(DomNode other);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3\"\n ],\n \"dom_node_is_supported\": [\n \"boolean dom_node_is_supported(string feature, string version);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2\"\n ],\n \"dom_node_lookup_namespace_uri\": [\n \"string dom_node_lookup_namespace_uri(string prefix);\",\n \"URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3\"\n ],\n \"dom_node_lookup_prefix\": [\n \"string dom_node_lookup_prefix(string namespaceURI);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3\"\n ],\n \"dom_node_normalize\": [\n \"void dom_node_normalize();\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:\"\n ],\n \"dom_node_remove_child\": [\n \"DomNode dom_node_remove_child(DomNode oldChild);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:\"\n ],\n \"dom_node_replace_child\": [\n \"DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:\"\n ],\n \"dom_node_set_user_data\": [\n \"mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3\"\n ],\n \"dom_nodelist_item\": [\n \"DOMNode dom_nodelist_item(int index);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:\"\n ],\n \"dom_string_extend_find_offset16\": [\n \"int dom_string_extend_find_offset16(int offset32);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:\"\n ],\n \"dom_string_extend_find_offset32\": [\n \"int dom_string_extend_find_offset32(int offset16);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:\"\n ],\n \"dom_text_is_whitespace_in_element_content\": [\n \"boolean dom_text_is_whitespace_in_element_content();\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3\"\n ],\n \"dom_text_replace_whole_text\": [\n \"DOMText dom_text_replace_whole_text(string content);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3\"\n ],\n \"dom_text_split_text\": [\n \"DOMText dom_text_split_text(int offset);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:\"\n ],\n \"dom_userdatahandler_handle\": [\n \"dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:\"\n ],\n \"dom_xpath_evaluate\": [\n \"mixed dom_xpath_evaluate(string expr [,DOMNode context]); */\",\n \"PHP_FUNCTION(dom_xpath_evaluate) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_EVALUATE); } /* }}} end dom_xpath_evaluate\"\n ],\n \"dom_xpath_query\": [\n \"DOMNodeList dom_xpath_query(string expr [,DOMNode context]); */\",\n \"PHP_FUNCTION(dom_xpath_query) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_QUERY); } /* }}} end dom_xpath_query\"\n ],\n \"dom_xpath_register_ns\": [\n \"boolean dom_xpath_register_ns(string prefix, string uri); */\",\n \"PHP_FUNCTION(dom_xpath_register_ns) { zval *id; xmlXPathContextPtr ctxp; int prefix_len, ns_uri_len; dom_xpath_object *intern; unsigned char *prefix, *ns_uri; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \\\"Oss\\\", &id, dom_xpath_class_entry, &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) { return; } intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); ctxp = (xmlXPathContextPtr) intern->ptr; if (ctxp == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \\\"Invalid XPath Context\\\"); RETURN_FALSE; } if (xmlXPathRegisterNs(ctxp, prefix, ns_uri) != 0) { RETURN_FALSE } RETURN_TRUE; } /* }}}\"\n ],\n \"dom_xpath_register_php_functions\": [\n \"void dom_xpath_register_php_functions() */\",\n \"PHP_FUNCTION(dom_xpath_register_php_functions) { zval *id; dom_xpath_object *intern; zval *array_value, **entry, *new_string; int name_len = 0; char *name; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \\\"a\\\", &array_value) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value)); while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) { SEPARATE_ZVAL(entry); convert_to_string_ex(entry); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL); zend_hash_move_forward(Z_ARRVAL_P(array_value)); } intern->registerPhpFunctions = 2; RETURN_TRUE; } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \\\"s\\\", &name, &name_len) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL); intern->registerPhpFunctions = 2; } else { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); intern->registerPhpFunctions = 1; } } /* }}} end dom_xpath_register_php_functions\"\n ],\n \"each\": [\n \"array each(array arr)\",\n \"Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element\"\n ],\n \"easter_date\": [\n \"int easter_date([int year])\",\n \"Return the timestamp of midnight on Easter of a given year (defaults to current year)\"\n ],\n \"easter_days\": [\n \"int easter_days([int year, [int method]])\",\n \"Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)\"\n ],\n \"echo\": [\n \"void echo(string arg1 [, string ...])\",\n \"Output one or more strings\"\n ],\n \"empty\": [\n \"bool empty( mixed var )\",\n \"Determine whether a variable is empty\"\n ],\n \"enchant_broker_describe\": [\n \"array enchant_broker_describe(resource broker)\",\n \"Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()\"\n ],\n \"enchant_broker_dict_exists\": [\n \"bool enchant_broker_dict_exists(resource broker, string tag)\",\n \"Wether a dictionary exists or not. Using non-empty tag\"\n ],\n \"enchant_broker_free\": [\n \"boolean enchant_broker_free(resource broker)\",\n \"Destroys the broker object and its dictionnaries\"\n ],\n \"enchant_broker_free_dict\": [\n \"resource enchant_broker_free_dict(resource dict)\",\n \"Free the dictionary resource\"\n ],\n \"enchant_broker_get_dict_path\": [\n \"string enchant_broker_get_dict_path(resource broker, int dict_type)\",\n \"Get the directory path for a given backend, works with ispell and myspell\"\n ],\n \"enchant_broker_get_error\": [\n \"string enchant_broker_get_error(resource broker)\",\n \"Returns the last error of the broker\"\n ],\n \"enchant_broker_init\": [\n \"resource enchant_broker_init()\",\n \"create a new broker object capable of requesting\"\n ],\n \"enchant_broker_list_dicts\": [\n \"string enchant_broker_list_dicts(resource broker)\",\n \"Lists the dictionaries available for the given broker\"\n ],\n \"enchant_broker_request_dict\": [\n \"resource enchant_broker_request_dict(resource broker, string tag)\",\n \"create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for (\\\"en_US\\\", \\\"de_DE\\\", ...)\"\n ],\n \"enchant_broker_request_pwl_dict\": [\n \"resource enchant_broker_request_pwl_dict(resource broker, string filename)\",\n \"creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call.\"\n ],\n \"enchant_broker_set_dict_path\": [\n \"bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)\",\n \"Set the directory path for a given backend, works with ispell and myspell\"\n ],\n \"enchant_broker_set_ordering\": [\n \"bool enchant_broker_set_ordering(resource broker, string tag, string ordering)\",\n \"Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \\\"*\\\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering.\"\n ],\n \"enchant_dict_add_to_personal\": [\n \"void enchant_dict_add_to_personal(resource dict, string word)\",\n \"add 'word' to personal word list\"\n ],\n \"enchant_dict_add_to_session\": [\n \"void enchant_dict_add_to_session(resource dict, string word)\",\n \"add 'word' to this spell-checking session\"\n ],\n \"enchant_dict_check\": [\n \"bool enchant_dict_check(resource dict, string word)\",\n \"If the word is correctly spelled return true, otherwise return false\"\n ],\n \"enchant_dict_describe\": [\n \"array enchant_dict_describe(resource dict)\",\n \"Describes an individual dictionary 'dict'\"\n ],\n \"enchant_dict_get_error\": [\n \"string enchant_dict_get_error(resource dict)\",\n \"Returns the last error of the current spelling-session\"\n ],\n \"enchant_dict_is_in_session\": [\n \"bool enchant_dict_is_in_session(resource dict, string word)\",\n \"whether or not 'word' exists in this spelling-session\"\n ],\n \"enchant_dict_quick_check\": [\n \"bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])\",\n \"If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives.\"\n ],\n \"enchant_dict_store_replacement\": [\n \"void enchant_dict_store_replacement(resource dict, string mis, string cor)\",\n \"add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list.\"\n ],\n \"enchant_dict_suggest\": [\n \"array enchant_dict_suggest(resource dict, string word)\",\n \"Will return a list of values if any of those pre-conditions are not met.\"\n ],\n \"end\": [\n \"mixed end(array array_arg)\",\n \"Advances array argument's internal pointer to the last element and return it\"\n ],\n \"ereg\": [\n \"int ereg(string pattern, string string [, array registers])\",\n \"Regular expression match\"\n ],\n \"ereg_replace\": [\n \"string ereg_replace(string pattern, string replacement, string string)\",\n \"Replace regular expression\"\n ],\n \"eregi\": [\n \"int eregi(string pattern, string string [, array registers])\",\n \"Case-insensitive regular expression match\"\n ],\n \"eregi_replace\": [\n \"string eregi_replace(string pattern, string replacement, string string)\",\n \"Case insensitive replace regular expression\"\n ],\n \"error_get_last\": [\n \"array error_get_last()\",\n \"Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet.\"\n ],\n \"error_log\": [\n \"bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])\",\n \"Send an error message somewhere\"\n ],\n \"error_reporting\": [\n \"int error_reporting([int new_error_level])\",\n \"Return the current error_reporting level, and if an argument was passed - change to the new level\"\n ],\n \"escapeshellarg\": [\n \"string escapeshellarg(string arg)\",\n \"Quote and escape an argument for use in a shell command\"\n ],\n \"escapeshellcmd\": [\n \"string escapeshellcmd(string command)\",\n \"Escape shell metacharacters\"\n ],\n \"exec\": [\n \"string exec(string command [, array &output [, int &return_value]])\",\n \"Execute an external program\"\n ],\n \"exif_imagetype\": [\n \"int exif_imagetype(string imagefile)\",\n \"Get the type of an image\"\n ],\n \"exif_read_data\": [\n \"array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])\",\n \"Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails\"\n ],\n \"exif_tagname\": [\n \"string exif_tagname(index)\",\n \"Get headername for index or false if not defined\"\n ],\n \"exif_thumbnail\": [\n \"string exif_thumbnail(string filename [, &width, &height [, &imagetype]])\",\n \"Reads the embedded thumbnail\"\n ],\n \"exit\": [\n \"void exit([mixed status])\",\n \"Output a message and terminate the current script\"\n ],\n \"exp\": [\n \"float exp(float number)\",\n \"Returns e raised to the power of the number\"\n ],\n \"explode\": [\n \"array explode(string separator, string str [, int limit])\",\n \"Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned.\"\n ],\n \"expm1\": [\n \"float expm1(float number)\",\n \"Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero\"\n ],\n \"extension_loaded\": [\n \"bool extension_loaded(string extension_name)\",\n \"Returns true if the named extension is loaded\"\n ],\n \"extract\": [\n \"int extract(array var_array [, int extract_type [, string prefix]])\",\n \"Imports variables into symbol table from an array\"\n ],\n \"ezmlm_hash\": [\n \"int ezmlm_hash(string addr)\",\n \"Calculate EZMLM list hash value.\"\n ],\n \"fclose\": [\n \"bool fclose(resource fp)\",\n \"Close an open file pointer\"\n ],\n \"feof\": [\n \"bool feof(resource fp)\",\n \"Test for end-of-file on a file pointer\"\n ],\n \"fflush\": [\n \"bool fflush(resource fp)\",\n \"Flushes output\"\n ],\n \"fgetc\": [\n \"string fgetc(resource fp)\",\n \"Get a character from file pointer\"\n ],\n \"fgetcsv\": [\n \"array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])\",\n \"Get line from file pointer and parse for CSV fields\"\n ],\n \"fgets\": [\n \"string fgets(resource fp[, int length])\",\n \"Get a line from file pointer\"\n ],\n \"fgetss\": [\n \"string fgetss(resource fp [, int length [, string allowable_tags]])\",\n \"Get a line from file pointer and strip HTML tags\"\n ],\n \"file\": [\n \"array file(string filename [, int flags[, resource context]])\",\n \"Read entire file into an array\"\n ],\n \"file_exists\": [\n \"bool file_exists(string filename)\",\n \"Returns true if filename exists\"\n ],\n \"file_get_contents\": [\n \"string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])\",\n \"Read the entire file into a string\"\n ],\n \"file_put_contents\": [\n \"int file_put_contents(string file, mixed data [, int flags [, resource context]])\",\n \"Write/Create a file with contents data and return the number of bytes written\"\n ],\n \"fileatime\": [\n \"int fileatime(string filename)\",\n \"Get last access time of file\"\n ],\n \"filectime\": [\n \"int filectime(string filename)\",\n \"Get inode modification time of file\"\n ],\n \"filegroup\": [\n \"int filegroup(string filename)\",\n \"Get file group\"\n ],\n \"fileinode\": [\n \"int fileinode(string filename)\",\n \"Get file inode\"\n ],\n \"filemtime\": [\n \"int filemtime(string filename)\",\n \"Get last modification time of file\"\n ],\n \"fileowner\": [\n \"int fileowner(string filename)\",\n \"Get file owner\"\n ],\n \"fileperms\": [\n \"int fileperms(string filename)\",\n \"Get file permissions\"\n ],\n \"filesize\": [\n \"int filesize(string filename)\",\n \"Get file size\"\n ],\n \"filetype\": [\n \"string filetype(string filename)\",\n \"Get file type\"\n ],\n \"filter_has_var\": [\n \"mixed filter_has_var(constant type, string variable_name)\",\n \"* Returns true if the variable with the name 'name' exists in source.\"\n ],\n \"filter_input\": [\n \"mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])\",\n \"* Returns the filtered variable 'name'* from source `type`.\"\n ],\n \"filter_input_array\": [\n \"mixed filter_input_array(constant type, [, mixed options]])\",\n \"* Returns an array with all arguments defined in 'definition'.\"\n ],\n \"filter_var\": [\n \"mixed filter_var(mixed variable [, long filter [, mixed options]])\",\n \"* Returns the filtered version of the vriable.\"\n ],\n \"filter_var_array\": [\n \"mixed filter_var_array(array data, [, mixed options]])\",\n \"* Returns an array with all arguments defined in 'definition'.\"\n ],\n \"finfo_buffer\": [\n \"string finfo_buffer(resource finfo, char *string [, int options [, resource context]])\",\n \"Return infromation about a string buffer.\"\n ],\n \"finfo_close\": [\n \"resource finfo_close(resource finfo)\",\n \"Close fileinfo resource.\"\n ],\n \"finfo_file\": [\n \"string finfo_file(resource finfo, char *file_name [, int options [, resource context]])\",\n \"Return information about a file.\"\n ],\n \"finfo_open\": [\n \"resource finfo_open([int options [, string arg]])\",\n \"Create a new fileinfo resource.\"\n ],\n \"finfo_set_flags\": [\n \"bool finfo_set_flags(resource finfo, int options)\",\n \"Set libmagic configuration options.\"\n ],\n \"floatval\": [\n \"float floatval(mixed var)\",\n \"Get the float value of a variable\"\n ],\n \"flock\": [\n \"bool flock(resource fp, int operation [, int &wouldblock])\",\n \"Portable file locking\"\n ],\n \"floor\": [\n \"float floor(float number)\",\n \"Returns the next lowest integer value from the number\"\n ],\n \"flush\": [\n \"void flush(void)\",\n \"Flush the output buffer\"\n ],\n \"fmod\": [\n \"float fmod(float x, float y)\",\n \"Returns the remainder of dividing x by y as a float\"\n ],\n \"fnmatch\": [\n \"bool fnmatch(string pattern, string filename [, int flags])\",\n \"Match filename against pattern\"\n ],\n \"fopen\": [\n \"resource fopen(string filename, string mode [, bool use_include_path [, resource context]])\",\n \"Open a file or a URL and return a file pointer\"\n ],\n \"forward_static_call\": [\n \"mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])\",\n \"Call a user function which is the first parameter\"\n ],\n \"fpassthru\": [\n \"int fpassthru(resource fp)\",\n \"Output all remaining data from a file pointer\"\n ],\n \"fprintf\": [\n \"int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])\",\n \"Output a formatted string into a stream\"\n ],\n \"fputcsv\": [\n \"int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])\",\n \"Format line as CSV and write to file pointer\"\n ],\n \"fread\": [\n \"string fread(resource fp, int length)\",\n \"Binary-safe file read\"\n ],\n \"frenchtojd\": [\n \"int frenchtojd(int month, int day, int year)\",\n \"Converts a french republic calendar date to julian day count\"\n ],\n \"fscanf\": [\n \"mixed fscanf(resource stream, string format [, string ...])\",\n \"Implements a mostly ANSI compatible fscanf()\"\n ],\n \"fseek\": [\n \"int fseek(resource fp, int offset [, int whence])\",\n \"Seek on a file pointer\"\n ],\n \"fsockopen\": [\n \"resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])\",\n \"Open Internet or Unix domain socket connection\"\n ],\n \"fstat\": [\n \"array fstat(resource fp)\",\n \"Stat() on a filehandle\"\n ],\n \"ftell\": [\n \"int ftell(resource fp)\",\n \"Get file pointer's read/write position\"\n ],\n \"ftok\": [\n \"int ftok(string pathname, string proj)\",\n \"Convert a pathname and a project identifier to a System V IPC key\"\n ],\n \"ftp_alloc\": [\n \"bool ftp_alloc(resource stream, int size[, &response])\",\n \"Attempt to allocate space on the remote FTP server\"\n ],\n \"ftp_cdup\": [\n \"bool ftp_cdup(resource stream)\",\n \"Changes to the parent directory\"\n ],\n \"ftp_chdir\": [\n \"bool ftp_chdir(resource stream, string directory)\",\n \"Changes directories\"\n ],\n \"ftp_chmod\": [\n \"int ftp_chmod(resource stream, int mode, string filename)\",\n \"Sets permissions on a file\"\n ],\n \"ftp_close\": [\n \"bool ftp_close(resource stream)\",\n \"Closes the FTP stream\"\n ],\n \"ftp_connect\": [\n \"resource ftp_connect(string host [, int port [, int timeout]])\",\n \"Opens a FTP stream\"\n ],\n \"ftp_delete\": [\n \"bool ftp_delete(resource stream, string file)\",\n \"Deletes a file\"\n ],\n \"ftp_exec\": [\n \"bool ftp_exec(resource stream, string command)\",\n \"Requests execution of a program on the FTP server\"\n ],\n \"ftp_fget\": [\n \"bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])\",\n \"Retrieves a file from the FTP server and writes it to an open file\"\n ],\n \"ftp_fput\": [\n \"bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])\",\n \"Stores a file from an open file to the FTP server\"\n ],\n \"ftp_get\": [\n \"bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])\",\n \"Retrieves a file from the FTP server and writes it to a local file\"\n ],\n \"ftp_get_option\": [\n \"mixed ftp_get_option(resource stream, int option)\",\n \"Gets an FTP option\"\n ],\n \"ftp_login\": [\n \"bool ftp_login(resource stream, string username, string password)\",\n \"Logs into the FTP server\"\n ],\n \"ftp_mdtm\": [\n \"int ftp_mdtm(resource stream, string filename)\",\n \"Returns the last modification time of the file, or -1 on error\"\n ],\n \"ftp_mkdir\": [\n \"string ftp_mkdir(resource stream, string directory)\",\n \"Creates a directory and returns the absolute path for the new directory or false on error\"\n ],\n \"ftp_nb_continue\": [\n \"int ftp_nb_continue(resource stream)\",\n \"Continues retrieving/sending a file nbronously\"\n ],\n \"ftp_nb_fget\": [\n \"int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])\",\n \"Retrieves a file from the FTP server asynchronly and writes it to an open file\"\n ],\n \"ftp_nb_fput\": [\n \"int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])\",\n \"Stores a file from an open file to the FTP server nbronly\"\n ],\n \"ftp_nb_get\": [\n \"int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])\",\n \"Retrieves a file from the FTP server nbhronly and writes it to a local file\"\n ],\n \"ftp_nb_put\": [\n \"int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])\",\n \"Stores a file on the FTP server\"\n ],\n \"ftp_nlist\": [\n \"array ftp_nlist(resource stream, string directory)\",\n \"Returns an array of filenames in the given directory\"\n ],\n \"ftp_pasv\": [\n \"bool ftp_pasv(resource stream, bool pasv)\",\n \"Turns passive mode on or off\"\n ],\n \"ftp_put\": [\n \"bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])\",\n \"Stores a file on the FTP server\"\n ],\n \"ftp_pwd\": [\n \"string ftp_pwd(resource stream)\",\n \"Returns the present working directory\"\n ],\n \"ftp_raw\": [\n \"array ftp_raw(resource stream, string command)\",\n \"Sends a literal command to the FTP server\"\n ],\n \"ftp_rawlist\": [\n \"array ftp_rawlist(resource stream, string directory [, bool recursive])\",\n \"Returns a detailed listing of a directory as an array of output lines\"\n ],\n \"ftp_rename\": [\n \"bool ftp_rename(resource stream, string src, string dest)\",\n \"Renames the given file to a new path\"\n ],\n \"ftp_rmdir\": [\n \"bool ftp_rmdir(resource stream, string directory)\",\n \"Removes a directory\"\n ],\n \"ftp_set_option\": [\n \"bool ftp_set_option(resource stream, int option, mixed value)\",\n \"Sets an FTP option\"\n ],\n \"ftp_site\": [\n \"bool ftp_site(resource stream, string cmd)\",\n \"Sends a SITE command to the server\"\n ],\n \"ftp_size\": [\n \"int ftp_size(resource stream, string filename)\",\n \"Returns the size of the file, or -1 on error\"\n ],\n \"ftp_ssl_connect\": [\n \"resource ftp_ssl_connect(string host [, int port [, int timeout]])\",\n \"Opens a FTP-SSL stream\"\n ],\n \"ftp_systype\": [\n \"string ftp_systype(resource stream)\",\n \"Returns the system type identifier\"\n ],\n \"ftruncate\": [\n \"bool ftruncate(resource fp, int size)\",\n \"Truncate file to 'size' length\"\n ],\n \"func_get_arg\": [\n \"mixed func_get_arg(int arg_num)\",\n \"Get the $arg_num'th argument that was passed to the function\"\n ],\n \"func_get_args\": [\n \"array func_get_args()\",\n \"Get an array of the arguments that were passed to the function\"\n ],\n \"func_num_args\": [\n \"int func_num_args(void)\",\n \"Get the number of arguments that were passed to the function\"\n ],\n \"function_exists\": [\n \"bool function_exists(string function_name)\",\n \"Checks if the function exists\"\n ],\n \"fwrite\": [\n \"int fwrite(resource fp, string str [, int length])\",\n \"Binary-safe file write\"\n ],\n \"gc_collect_cycles\": [\n \"int gc_collect_cycles(void)\",\n \"Forces collection of any existing garbage cycles. Returns number of freed zvals\"\n ],\n \"gc_disable\": [\n \"void gc_disable(void)\",\n \"Deactivates the circular reference collector\"\n ],\n \"gc_enable\": [\n \"void gc_enable(void)\",\n \"Activates the circular reference collector\"\n ],\n \"gc_enabled\": [\n \"void gc_enabled(void)\",\n \"Returns status of the circular reference collector\"\n ],\n \"gd_info\": [\n \"array gd_info()\",\n \"\"\n ],\n \"getKeywords\": [\n \"static array getKeywords(string $locale) {\",\n \"* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!) * }}}\"\n ],\n \"get_browser\": [\n \"mixed get_browser([string browser_name [, bool return_array]])\",\n \"Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array.\"\n ],\n \"get_called_class\": [\n \"string get_called_class()\",\n \"Retrieves the \\\"Late Static Binding\\\" class name\"\n ],\n \"get_cfg_var\": [\n \"mixed get_cfg_var(string option_name)\",\n \"Get the value of a PHP configuration option\"\n ],\n \"get_class\": [\n \"string get_class([object object])\",\n \"Retrieves the class name\"\n ],\n \"get_class_methods\": [\n \"array get_class_methods(mixed class)\",\n \"Returns an array of method names for class or class instance.\"\n ],\n \"get_class_vars\": [\n \"array get_class_vars(string class_name)\",\n \"Returns an array of default properties of the class.\"\n ],\n \"get_current_user\": [\n \"string get_current_user(void)\",\n \"Get the name of the owner of the current PHP script\"\n ],\n \"get_declared_classes\": [\n \"array get_declared_classes()\",\n \"Returns an array of all declared classes.\"\n ],\n \"get_declared_interfaces\": [\n \"array get_declared_interfaces()\",\n \"Returns an array of all declared interfaces.\"\n ],\n \"get_defined_constants\": [\n \"array get_defined_constants([bool categorize])\",\n \"Return an array containing the names and values of all defined constants\"\n ],\n \"get_defined_functions\": [\n \"array get_defined_functions(void)\",\n \"Returns an array of all defined functions\"\n ],\n \"get_defined_vars\": [\n \"array get_defined_vars(void)\",\n \"Returns an associative array of names and values of all currently defined variable names (variables in the current scope)\"\n ],\n \"get_display_language\": [\n \"static string get_display_language($locale[, $in_locale = null])\",\n \"* gets the language for the $locale in $in_locale or default_locale\"\n ],\n \"get_display_name\": [\n \"static string get_display_name($locale[, $in_locale = null])\",\n \"* gets the name for the $locale in $in_locale or default_locale\"\n ],\n \"get_display_region\": [\n \"static string get_display_region($locale, $in_locale = null)\",\n \"* gets the region for the $locale in $in_locale or default_locale\"\n ],\n \"get_display_script\": [\n \"static string get_display_script($locale, $in_locale = null)\",\n \"* gets the script for the $locale in $in_locale or default_locale\"\n ],\n \"get_extension_funcs\": [\n \"array get_extension_funcs(string extension_name)\",\n \"Returns an array with the names of functions belonging to the named extension\"\n ],\n \"get_headers\": [\n \"array get_headers(string url[, int format])\",\n \"fetches all the headers sent by the server in response to a HTTP request\"\n ],\n \"get_html_translation_table\": [\n \"array get_html_translation_table([int table [, int quote_style]])\",\n \"Returns the internal translation table used by htmlspecialchars and htmlentities\"\n ],\n \"get_include_path\": [\n \"string get_include_path()\",\n \"Get the current include_path configuration option\"\n ],\n \"get_included_files\": [\n \"array get_included_files(void)\",\n \"Returns an array with the file names that were include_once()'d\"\n ],\n \"get_loaded_extensions\": [\n \"array get_loaded_extensions([bool zend_extensions])\",\n \"Return an array containing names of loaded extensions\"\n ],\n \"get_magic_quotes_gpc\": [\n \"int get_magic_quotes_gpc(void)\",\n \"Get the current active configuration setting of magic_quotes_gpc\"\n ],\n \"get_magic_quotes_runtime\": [\n \"int get_magic_quotes_runtime(void)\",\n \"Get the current active configuration setting of magic_quotes_runtime\"\n ],\n \"get_meta_tags\": [\n \"array get_meta_tags(string filename [, bool use_include_path])\",\n \"Extracts all meta tag content attributes from a file and returns an array\"\n ],\n \"get_object_vars\": [\n \"array get_object_vars(object obj)\",\n \"Returns an array of object properties\"\n ],\n \"get_parent_class\": [\n \"string get_parent_class([mixed object])\",\n \"Retrieves the parent class name for object or class or current scope.\"\n ],\n \"get_resource_type\": [\n \"string get_resource_type(resource res)\",\n \"Get the resource type name for a given resource\"\n ],\n \"getallheaders\": [\n \"array getallheaders(void)\",\n \"\"\n ],\n \"getcwd\": [\n \"mixed getcwd(void)\",\n \"Gets the current directory\"\n ],\n \"getdate\": [\n \"array getdate([int timestamp])\",\n \"Get date/time information\"\n ],\n \"getenv\": [\n \"string getenv(string varname)\",\n \"Get the value of an environment variable\"\n ],\n \"gethostbyaddr\": [\n \"string gethostbyaddr(string ip_address)\",\n \"Get the Internet host name corresponding to a given IP address\"\n ],\n \"gethostbyname\": [\n \"string gethostbyname(string hostname)\",\n \"Get the IP address corresponding to a given Internet host name\"\n ],\n \"gethostbynamel\": [\n \"array gethostbynamel(string hostname)\",\n \"Return a list of IP addresses that a given hostname resolves to.\"\n ],\n \"gethostname\": [\n \"string gethostname()\",\n \"Get the host name of the current machine\"\n ],\n \"getimagesize\": [\n \"array getimagesize(string imagefile [, array info])\",\n \"Get the size of an image as 4-element array\"\n ],\n \"getlastmod\": [\n \"int getlastmod(void)\",\n \"Get time of last page modification\"\n ],\n \"getmygid\": [\n \"int getmygid(void)\",\n \"Get PHP script owner's GID\"\n ],\n \"getmyinode\": [\n \"int getmyinode(void)\",\n \"Get the inode of the current script being parsed\"\n ],\n \"getmypid\": [\n \"int getmypid(void)\",\n \"Get current process ID\"\n ],\n \"getmyuid\": [\n \"int getmyuid(void)\",\n \"Get PHP script owner's UID\"\n ],\n \"getopt\": [\n \"array getopt(string options [, array longopts])\",\n \"Get options from the command line argument list\"\n ],\n \"getprotobyname\": [\n \"int getprotobyname(string name)\",\n \"Returns protocol number associated with name as per /etc/protocols\"\n ],\n \"getprotobynumber\": [\n \"string getprotobynumber(int proto)\",\n \"Returns protocol name associated with protocol number proto\"\n ],\n \"getrandmax\": [\n \"int getrandmax(void)\",\n \"Returns the maximum value a random number can have\"\n ],\n \"getrusage\": [\n \"array getrusage([int who])\",\n \"Returns an array of usage statistics\"\n ],\n \"getservbyname\": [\n \"int getservbyname(string service, string protocol)\",\n \"Returns port associated with service. Protocol must be \\\"tcp\\\" or \\\"udp\\\"\"\n ],\n \"getservbyport\": [\n \"string getservbyport(int port, string protocol)\",\n \"Returns service name associated with port. Protocol must be \\\"tcp\\\" or \\\"udp\\\"\"\n ],\n \"gettext\": [\n \"string gettext(string msgid)\",\n \"Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist\"\n ],\n \"gettimeofday\": [\n \"array gettimeofday([bool get_as_float])\",\n \"Returns the current time as array\"\n ],\n \"gettype\": [\n \"string gettype(mixed var)\",\n \"Returns the type of the variable\"\n ],\n \"glob\": [\n \"array glob(string pattern [, int flags])\",\n \"Find pathnames matching a pattern\"\n ],\n \"gmdate\": [\n \"string gmdate(string format [, long timestamp])\",\n \"Format a GMT date/time\"\n ],\n \"gmmktime\": [\n \"int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])\",\n \"Get UNIX timestamp for a GMT date\"\n ],\n \"gmp_abs\": [\n \"resource gmp_abs(resource a)\",\n \"Calculates absolute value\"\n ],\n \"gmp_add\": [\n \"resource gmp_add(resource a, resource b)\",\n \"Add a and b\"\n ],\n \"gmp_and\": [\n \"resource gmp_and(resource a, resource b)\",\n \"Calculates logical AND of a and b\"\n ],\n \"gmp_clrbit\": [\n \"void gmp_clrbit(resource &a, int index)\",\n \"Clears bit in a\"\n ],\n \"gmp_cmp\": [\n \"int gmp_cmp(resource a, resource b)\",\n \"Compares two numbers\"\n ],\n \"gmp_com\": [\n \"resource gmp_com(resource a)\",\n \"Calculates one's complement of a\"\n ],\n \"gmp_div_q\": [\n \"resource gmp_div_q(resource a, resource b [, int round])\",\n \"Divide a by b, returns quotient only\"\n ],\n \"gmp_div_qr\": [\n \"array gmp_div_qr(resource a, resource b [, int round])\",\n \"Divide a by b, returns quotient and reminder\"\n ],\n \"gmp_div_r\": [\n \"resource gmp_div_r(resource a, resource b [, int round])\",\n \"Divide a by b, returns reminder only\"\n ],\n \"gmp_divexact\": [\n \"resource gmp_divexact(resource a, resource b)\",\n \"Divide a by b using exact division algorithm\"\n ],\n \"gmp_fact\": [\n \"resource gmp_fact(int a)\",\n \"Calculates factorial function\"\n ],\n \"gmp_gcd\": [\n \"resource gmp_gcd(resource a, resource b)\",\n \"Computes greatest common denominator (gcd) of a and b\"\n ],\n \"gmp_gcdext\": [\n \"array gmp_gcdext(resource a, resource b)\",\n \"Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)\"\n ],\n \"gmp_hamdist\": [\n \"int gmp_hamdist(resource a, resource b)\",\n \"Calculates hamming distance between a and b\"\n ],\n \"gmp_init\": [\n \"resource gmp_init(mixed number [, int base])\",\n \"Initializes GMP number\"\n ],\n \"gmp_intval\": [\n \"int gmp_intval(resource gmpnumber)\",\n \"Gets signed long value of GMP number\"\n ],\n \"gmp_invert\": [\n \"resource gmp_invert(resource a, resource b)\",\n \"Computes the inverse of a modulo b\"\n ],\n \"gmp_jacobi\": [\n \"int gmp_jacobi(resource a, resource b)\",\n \"Computes Jacobi symbol\"\n ],\n \"gmp_legendre\": [\n \"int gmp_legendre(resource a, resource b)\",\n \"Computes Legendre symbol\"\n ],\n \"gmp_mod\": [\n \"resource gmp_mod(resource a, resource b)\",\n \"Computes a modulo b\"\n ],\n \"gmp_mul\": [\n \"resource gmp_mul(resource a, resource b)\",\n \"Multiply a and b\"\n ],\n \"gmp_neg\": [\n \"resource gmp_neg(resource a)\",\n \"Negates a number\"\n ],\n \"gmp_nextprime\": [\n \"resource gmp_nextprime(resource a)\",\n \"Finds next prime of a\"\n ],\n \"gmp_or\": [\n \"resource gmp_or(resource a, resource b)\",\n \"Calculates logical OR of a and b\"\n ],\n \"gmp_perfect_square\": [\n \"bool gmp_perfect_square(resource a)\",\n \"Checks if a is an exact square\"\n ],\n \"gmp_popcount\": [\n \"int gmp_popcount(resource a)\",\n \"Calculates the population count of a\"\n ],\n \"gmp_pow\": [\n \"resource gmp_pow(resource base, int exp)\",\n \"Raise base to power exp\"\n ],\n \"gmp_powm\": [\n \"resource gmp_powm(resource base, resource exp, resource mod)\",\n \"Raise base to power exp and take result modulo mod\"\n ],\n \"gmp_prob_prime\": [\n \"int gmp_prob_prime(resource a[, int reps])\",\n \"Checks if a is \\\"probably prime\\\"\"\n ],\n \"gmp_random\": [\n \"resource gmp_random([int limiter])\",\n \"Gets random number\"\n ],\n \"gmp_scan0\": [\n \"int gmp_scan0(resource a, int start)\",\n \"Finds first zero bit\"\n ],\n \"gmp_scan1\": [\n \"int gmp_scan1(resource a, int start)\",\n \"Finds first non-zero bit\"\n ],\n \"gmp_setbit\": [\n \"void gmp_setbit(resource &a, int index[, bool set_clear])\",\n \"Sets or clear bit in a\"\n ],\n \"gmp_sign\": [\n \"int gmp_sign(resource a)\",\n \"Gets the sign of the number\"\n ],\n \"gmp_sqrt\": [\n \"resource gmp_sqrt(resource a)\",\n \"Takes integer part of square root of a\"\n ],\n \"gmp_sqrtrem\": [\n \"array gmp_sqrtrem(resource a)\",\n \"Square root with remainder\"\n ],\n \"gmp_strval\": [\n \"string gmp_strval(resource gmpnumber [, int base])\",\n \"Gets string representation of GMP number\"\n ],\n \"gmp_sub\": [\n \"resource gmp_sub(resource a, resource b)\",\n \"Subtract b from a\"\n ],\n \"gmp_testbit\": [\n \"bool gmp_testbit(resource a, int index)\",\n \"Tests if bit is set in a\"\n ],\n \"gmp_xor\": [\n \"resource gmp_xor(resource a, resource b)\",\n \"Calculates logical exclusive OR of a and b\"\n ],\n \"gmstrftime\": [\n \"string gmstrftime(string format [, int timestamp])\",\n \"Format a GMT/UCT time/date according to locale settings\"\n ],\n \"grapheme_extract\": [\n \"string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])\",\n \"Function to extract a sequence of default grapheme clusters\"\n ],\n \"grapheme_stripos\": [\n \"int grapheme_stripos(string haystack, string needle [, int offset ])\",\n \"Find position of first occurrence of a string within another, ignoring case differences\"\n ],\n \"grapheme_stristr\": [\n \"string grapheme_stristr(string haystack, string needle[, bool part])\",\n \"Finds first occurrence of a string within another\"\n ],\n \"grapheme_strlen\": [\n \"int grapheme_strlen(string str)\",\n \"Get number of graphemes in a string\"\n ],\n \"grapheme_strpos\": [\n \"int grapheme_strpos(string haystack, string needle [, int offset ])\",\n \"Find position of first occurrence of a string within another\"\n ],\n \"grapheme_strripos\": [\n \"int grapheme_strripos(string haystack, string needle [, int offset])\",\n \"Find position of last occurrence of a string within another, ignoring case\"\n ],\n \"grapheme_strrpos\": [\n \"int grapheme_strrpos(string haystack, string needle [, int offset])\",\n \"Find position of last occurrence of a string within another\"\n ],\n \"grapheme_strstr\": [\n \"string grapheme_strstr(string haystack, string needle[, bool part])\",\n \"Finds first occurrence of a string within another\"\n ],\n \"grapheme_substr\": [\n \"string grapheme_substr(string str, int start [, int length])\",\n \"Returns part of a string\"\n ],\n \"gregoriantojd\": [\n \"int gregoriantojd(int month, int day, int year)\",\n \"Converts a gregorian calendar date to julian day count\"\n ],\n \"gzcompress\": [\n \"string gzcompress(string data [, int level])\",\n \"Gzip-compress a string\"\n ],\n \"gzdeflate\": [\n \"string gzdeflate(string data [, int level])\",\n \"Gzip-compress a string\"\n ],\n \"gzencode\": [\n \"string gzencode(string data [, int level [, int encoding_mode]])\",\n \"GZ encode a string\"\n ],\n \"gzfile\": [\n \"array gzfile(string filename [, int use_include_path])\",\n \"Read und uncompress entire .gz-file into an array\"\n ],\n \"gzinflate\": [\n \"string gzinflate(string data [, int length])\",\n \"Unzip a gzip-compressed string\"\n ],\n \"gzopen\": [\n \"resource gzopen(string filename, string mode [, int use_include_path])\",\n \"Open a .gz-file and return a .gz-file pointer\"\n ],\n \"gzuncompress\": [\n \"string gzuncompress(string data [, int length])\",\n \"Unzip a gzip-compressed string\"\n ],\n \"hash\": [\n \"string hash(string algo, string data[, bool raw_output = false])\",\n \"Generate a hash of a given input string Returns lowercase hexits by default\"\n ],\n \"hash_algos\": [\n \"array hash_algos(void)\",\n \"Return a list of registered hashing algorithms\"\n ],\n \"hash_copy\": [\n \"resource hash_copy(resource context)\",\n \"Copy hash resource\"\n ],\n \"hash_file\": [\n \"string hash_file(string algo, string filename[, bool raw_output = false])\",\n \"Generate a hash of a given file Returns lowercase hexits by default\"\n ],\n \"hash_final\": [\n \"string hash_final(resource context[, bool raw_output=false])\",\n \"Output resulting digest\"\n ],\n \"hash_hmac\": [\n \"string hash_hmac(string algo, string data, string key[, bool raw_output = false])\",\n \"Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default\"\n ],\n \"hash_hmac_file\": [\n \"string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])\",\n \"Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default\"\n ],\n \"hash_init\": [\n \"resource hash_init(string algo[, int options, string key])\",\n \"Initialize a hashing context\"\n ],\n \"hash_update\": [\n \"bool hash_update(resource context, string data)\",\n \"Pump data into the hashing algorithm\"\n ],\n \"hash_update_file\": [\n \"bool hash_update_file(resource context, string filename[, resource context])\",\n \"Pump data into the hashing algorithm from a file\"\n ],\n \"hash_update_stream\": [\n \"int hash_update_stream(resource context, resource handle[, integer length])\",\n \"Pump data into the hashing algorithm from an open stream\"\n ],\n \"header\": [\n \"void header(string header [, bool replace, [int http_response_code]])\",\n \"Sends a raw HTTP header\"\n ],\n \"header_remove\": [\n \"void header_remove([string name])\",\n \"Removes an HTTP header previously set using header()\"\n ],\n \"headers_list\": [\n \"array headers_list(void)\",\n \"Return list of headers to be sent / already sent\"\n ],\n \"headers_sent\": [\n \"bool headers_sent([string &$file [, int &$line]])\",\n \"Returns true if headers have already been sent, false otherwise\"\n ],\n \"hebrev\": [\n \"string hebrev(string str [, int max_chars_per_line])\",\n \"Converts logical Hebrew text to visual text\"\n ],\n \"hebrevc\": [\n \"string hebrevc(string str [, int max_chars_per_line])\",\n \"Converts logical Hebrew text to visual text with newline conversion\"\n ],\n \"hexdec\": [\n \"int hexdec(string hexadecimal_number)\",\n \"Returns the decimal equivalent of the hexadecimal number\"\n ],\n \"highlight_file\": [\n \"bool highlight_file(string file_name [, bool return] )\",\n \"Syntax highlight a source file\"\n ],\n \"highlight_string\": [\n \"bool highlight_string(string string [, bool return] )\",\n \"Syntax highlight a string or optionally return it\"\n ],\n \"html_entity_decode\": [\n \"string html_entity_decode(string string [, int quote_style][, string charset])\",\n \"Convert all HTML entities to their applicable characters\"\n ],\n \"htmlentities\": [\n \"string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])\",\n \"Convert all applicable characters to HTML entities\"\n ],\n \"htmlspecialchars\": [\n \"string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])\",\n \"Convert special characters to HTML entities\"\n ],\n \"htmlspecialchars_decode\": [\n \"string htmlspecialchars_decode(string string [, int quote_style])\",\n \"Convert special HTML entities back to characters\"\n ],\n \"http_build_query\": [\n \"string http_build_query(mixed formdata [, string prefix [, string arg_separator]])\",\n \"Generates a form-encoded query string from an associative array or object.\"\n ],\n \"hypot\": [\n \"float hypot(float num1, float num2)\",\n \"Returns sqrt(num1*num1 + num2*num2)\"\n ],\n \"ibase_add_user\": [\n \"bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])\",\n \"Add a user to security database\"\n ],\n \"ibase_affected_rows\": [\n \"int ibase_affected_rows( [ resource link_identifier ] )\",\n \"Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement\"\n ],\n \"ibase_backup\": [\n \"mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])\",\n \"Initiates a backup task in the service manager and returns immediately\"\n ],\n \"ibase_blob_add\": [\n \"bool ibase_blob_add(resource blob_handle, string data)\",\n \"Add data into created blob\"\n ],\n \"ibase_blob_cancel\": [\n \"bool ibase_blob_cancel(resource blob_handle)\",\n \"Cancel creating blob\"\n ],\n \"ibase_blob_close\": [\n \"string ibase_blob_close(resource blob_handle)\",\n \"Close blob\"\n ],\n \"ibase_blob_create\": [\n \"resource ibase_blob_create([resource link_identifier])\",\n \"Create blob for adding data\"\n ],\n \"ibase_blob_echo\": [\n \"bool ibase_blob_echo([ resource link_identifier, ] string blob_id)\",\n \"Output blob contents to browser\"\n ],\n \"ibase_blob_get\": [\n \"string ibase_blob_get(resource blob_handle, int len)\",\n \"Get len bytes data from open blob\"\n ],\n \"ibase_blob_import\": [\n \"string ibase_blob_import([ resource link_identifier, ] resource file)\",\n \"Create blob, copy file in it, and close it\"\n ],\n \"ibase_blob_info\": [\n \"array ibase_blob_info([ resource link_identifier, ] string blob_id)\",\n \"Return blob length and other useful info\"\n ],\n \"ibase_blob_open\": [\n \"resource ibase_blob_open([ resource link_identifier, ] string blob_id)\",\n \"Open blob for retrieving data parts\"\n ],\n \"ibase_close\": [\n \"bool ibase_close([resource link_identifier])\",\n \"Close an InterBase connection\"\n ],\n \"ibase_commit\": [\n \"bool ibase_commit( resource link_identifier )\",\n \"Commit transaction\"\n ],\n \"ibase_commit_ret\": [\n \"bool ibase_commit_ret( resource link_identifier )\",\n \"Commit transaction and retain the transaction context\"\n ],\n \"ibase_connect\": [\n \"resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])\",\n \"Open a connection to an InterBase database\"\n ],\n \"ibase_db_info\": [\n \"string ibase_db_info(resource service_handle, string db, int action [, int argument])\",\n \"Request statistics about a database\"\n ],\n \"ibase_delete_user\": [\n \"bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])\",\n \"Delete a user from security database\"\n ],\n \"ibase_drop_db\": [\n \"bool ibase_drop_db([resource link_identifier])\",\n \"Drop an InterBase database\"\n ],\n \"ibase_errcode\": [\n \"int ibase_errcode(void)\",\n \"Return error code\"\n ],\n \"ibase_errmsg\": [\n \"string ibase_errmsg(void)\",\n \"Return error message\"\n ],\n \"ibase_execute\": [\n \"mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])\",\n \"Execute a previously prepared query\"\n ],\n \"ibase_fetch_assoc\": [\n \"array ibase_fetch_assoc(resource result [, int fetch_flags])\",\n \"Fetch a row from the results of a query\"\n ],\n \"ibase_fetch_object\": [\n \"object ibase_fetch_object(resource result [, int fetch_flags])\",\n \"Fetch a object from the results of a query\"\n ],\n \"ibase_fetch_row\": [\n \"array ibase_fetch_row(resource result [, int fetch_flags])\",\n \"Fetch a row from the results of a query\"\n ],\n \"ibase_field_info\": [\n \"array ibase_field_info(resource query_result, int field_number)\",\n \"Get information about a field\"\n ],\n \"ibase_free_event_handler\": [\n \"bool ibase_free_event_handler(resource event)\",\n \"Frees the event handler set by ibase_set_event_handler()\"\n ],\n \"ibase_free_query\": [\n \"bool ibase_free_query(resource query)\",\n \"Free memory used by a query\"\n ],\n \"ibase_free_result\": [\n \"bool ibase_free_result(resource result)\",\n \"Free the memory used by a result\"\n ],\n \"ibase_gen_id\": [\n \"int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])\",\n \"Increments the named generator and returns its new value\"\n ],\n \"ibase_maintain_db\": [\n \"bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])\",\n \"Execute a maintenance command on the database server\"\n ],\n \"ibase_modify_user\": [\n \"bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])\",\n \"Modify a user in security database\"\n ],\n \"ibase_name_result\": [\n \"bool ibase_name_result(resource result, string name)\",\n \"Assign a name to a result for use with ... WHERE CURRENT OF statements\"\n ],\n \"ibase_num_fields\": [\n \"int ibase_num_fields(resource query_result)\",\n \"Get the number of fields in result\"\n ],\n \"ibase_num_params\": [\n \"int ibase_num_params(resource query)\",\n \"Get the number of params in a prepared query\"\n ],\n \"ibase_num_rows\": [\n \"int ibase_num_rows( resource result_identifier )\",\n \"Return the number of rows that are available in a result\"\n ],\n \"ibase_param_info\": [\n \"array ibase_param_info(resource query, int field_number)\",\n \"Get information about a parameter\"\n ],\n \"ibase_pconnect\": [\n \"resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])\",\n \"Open a persistent connection to an InterBase database\"\n ],\n \"ibase_prepare\": [\n \"resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])\",\n \"Prepare a query for later execution\"\n ],\n \"ibase_query\": [\n \"mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])\",\n \"Execute a query\"\n ],\n \"ibase_restore\": [\n \"mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])\",\n \"Initiates a restore task in the service manager and returns immediately\"\n ],\n \"ibase_rollback\": [\n \"bool ibase_rollback( resource link_identifier )\",\n \"Rollback transaction\"\n ],\n \"ibase_rollback_ret\": [\n \"bool ibase_rollback_ret( resource link_identifier )\",\n \"Rollback transaction and retain the transaction context\"\n ],\n \"ibase_server_info\": [\n \"string ibase_server_info(resource service_handle, int action)\",\n \"Request information about a database server\"\n ],\n \"ibase_service_attach\": [\n \"resource ibase_service_attach(string host, string dba_username, string dba_password)\",\n \"Connect to the service manager\"\n ],\n \"ibase_service_detach\": [\n \"bool ibase_service_detach(resource service_handle)\",\n \"Disconnect from the service manager\"\n ],\n \"ibase_set_event_handler\": [\n \"resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])\",\n \"Register the callback for handling each of the named events\"\n ],\n \"ibase_trans\": [\n \"resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])\",\n \"Start a transaction over one or several databases\"\n ],\n \"ibase_wait_event\": [\n \"string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])\",\n \"Waits for any one of the passed Interbase events to be posted by the database, and returns its name\"\n ],\n \"iconv\": [\n \"string iconv(string in_charset, string out_charset, string str)\",\n \"Returns str converted to the out_charset character set\"\n ],\n \"iconv_get_encoding\": [\n \"mixed iconv_get_encoding([string type])\",\n \"Get internal encoding and output encoding for ob_iconv_handler()\"\n ],\n \"iconv_mime_decode\": [\n \"string iconv_mime_decode(string encoded_string [, int mode, string charset])\",\n \"Decodes a mime header field\"\n ],\n \"iconv_mime_decode_headers\": [\n \"array iconv_mime_decode_headers(string headers [, int mode, string charset])\",\n \"Decodes multiple mime header fields\"\n ],\n \"iconv_mime_encode\": [\n \"string iconv_mime_encode(string field_name, string field_value [, array preference])\",\n \"Composes a mime header field with field_name and field_value in a specified scheme\"\n ],\n \"iconv_set_encoding\": [\n \"bool iconv_set_encoding(string type, string charset)\",\n \"Sets internal encoding and output encoding for ob_iconv_handler()\"\n ],\n \"iconv_strlen\": [\n \"int iconv_strlen(string str [, string charset])\",\n \"Returns the character count of str\"\n ],\n \"iconv_strpos\": [\n \"int iconv_strpos(string haystack, string needle [, int offset [, string charset]])\",\n \"Finds position of first occurrence of needle within part of haystack beginning with offset\"\n ],\n \"iconv_strrpos\": [\n \"int iconv_strrpos(string haystack, string needle [, string charset])\",\n \"Finds position of last occurrence of needle within part of haystack beginning with offset\"\n ],\n \"iconv_substr\": [\n \"string iconv_substr(string str, int offset, [int length, string charset])\",\n \"Returns specified part of a string\"\n ],\n \"idate\": [\n \"int idate(string format [, int timestamp])\",\n \"Format a local time/date as integer\"\n ],\n \"idn_to_ascii\": [\n \"int idn_to_ascii(string domain[, int options])\",\n \"Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC\"\n ],\n \"idn_to_utf8\": [\n \"int idn_to_utf8(string domain[, int options])\",\n \"Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC\"\n ],\n \"ignore_user_abort\": [\n \"int ignore_user_abort([string value])\",\n \"Set whether we want to ignore a user abort event or not\"\n ],\n \"image2wbmp\": [\n \"bool image2wbmp(resource im [, string filename [, int threshold]])\",\n \"Output WBMP image to browser or file\"\n ],\n \"image_type_to_extension\": [\n \"string image_type_to_extension(int imagetype [, bool include_dot])\",\n \"Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype\"\n ],\n \"image_type_to_mime_type\": [\n \"string image_type_to_mime_type(int imagetype)\",\n \"Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype\"\n ],\n \"imagealphablending\": [\n \"bool imagealphablending(resource im, bool on)\",\n \"Turn alpha blending mode on or off for the given image\"\n ],\n \"imageantialias\": [\n \"bool imageantialias(resource im, bool on)\",\n \"Should antialiased functions used or not\"\n ],\n \"imagearc\": [\n \"bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)\",\n \"Draw a partial ellipse\"\n ],\n \"imagechar\": [\n \"bool imagechar(resource im, int font, int x, int y, string c, int col)\",\n \"Draw a character\"\n ],\n \"imagecharup\": [\n \"bool imagecharup(resource im, int font, int x, int y, string c, int col)\",\n \"Draw a character rotated 90 degrees counter-clockwise\"\n ],\n \"imagecolorallocate\": [\n \"int imagecolorallocate(resource im, int red, int green, int blue)\",\n \"Allocate a color for an image\"\n ],\n \"imagecolorallocatealpha\": [\n \"int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)\",\n \"Allocate a color with an alpha level. Works for true color and palette based images\"\n ],\n \"imagecolorat\": [\n \"int imagecolorat(resource im, int x, int y)\",\n \"Get the index of the color of a pixel\"\n ],\n \"imagecolorclosest\": [\n \"int imagecolorclosest(resource im, int red, int green, int blue)\",\n \"Get the index of the closest color to the specified color\"\n ],\n \"imagecolorclosestalpha\": [\n \"int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)\",\n \"Find the closest matching colour with alpha transparency\"\n ],\n \"imagecolorclosesthwb\": [\n \"int imagecolorclosesthwb(resource im, int red, int green, int blue)\",\n \"Get the index of the color which has the hue, white and blackness nearest to the given color\"\n ],\n \"imagecolordeallocate\": [\n \"bool imagecolordeallocate(resource im, int index)\",\n \"De-allocate a color for an image\"\n ],\n \"imagecolorexact\": [\n \"int imagecolorexact(resource im, int red, int green, int blue)\",\n \"Get the index of the specified color\"\n ],\n \"imagecolorexactalpha\": [\n \"int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)\",\n \"Find exact match for colour with transparency\"\n ],\n \"imagecolormatch\": [\n \"bool imagecolormatch(resource im1, resource im2)\",\n \"Makes the colors of the palette version of an image more closely match the true color version\"\n ],\n \"imagecolorresolve\": [\n \"int imagecolorresolve(resource im, int red, int green, int blue)\",\n \"Get the index of the specified color or its closest possible alternative\"\n ],\n \"imagecolorresolvealpha\": [\n \"int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)\",\n \"Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images\"\n ],\n \"imagecolorset\": [\n \"void imagecolorset(resource im, int col, int red, int green, int blue)\",\n \"Set the color for the specified palette index\"\n ],\n \"imagecolorsforindex\": [\n \"array imagecolorsforindex(resource im, int col)\",\n \"Get the colors for an index\"\n ],\n \"imagecolorstotal\": [\n \"int imagecolorstotal(resource im)\",\n \"Find out the number of colors in an image's palette\"\n ],\n \"imagecolortransparent\": [\n \"int imagecolortransparent(resource im [, int col])\",\n \"Define a color as transparent\"\n ],\n \"imageconvolution\": [\n \"resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)\",\n \"Apply a 3x3 convolution matrix, using coefficient div and offset\"\n ],\n \"imagecopy\": [\n \"bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)\",\n \"Copy part of an image\"\n ],\n \"imagecopymerge\": [\n \"bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)\",\n \"Merge one part of an image with another\"\n ],\n \"imagecopymergegray\": [\n \"bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)\",\n \"Merge one part of an image with another\"\n ],\n \"imagecopyresampled\": [\n \"bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)\",\n \"Copy and resize part of an image using resampling to help ensure clarity\"\n ],\n \"imagecopyresized\": [\n \"bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)\",\n \"Copy and resize part of an image\"\n ],\n \"imagecreate\": [\n \"resource imagecreate(int x_size, int y_size)\",\n \"Create a new image\"\n ],\n \"imagecreatefromgd\": [\n \"resource imagecreatefromgd(string filename)\",\n \"Create a new image from GD file or URL\"\n ],\n \"imagecreatefromgd2\": [\n \"resource imagecreatefromgd2(string filename)\",\n \"Create a new image from GD2 file or URL\"\n ],\n \"imagecreatefromgd2part\": [\n \"resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)\",\n \"Create a new image from a given part of GD2 file or URL\"\n ],\n \"imagecreatefromgif\": [\n \"resource imagecreatefromgif(string filename)\",\n \"Create a new image from GIF file or URL\"\n ],\n \"imagecreatefromjpeg\": [\n \"resource imagecreatefromjpeg(string filename)\",\n \"Create a new image from JPEG file or URL\"\n ],\n \"imagecreatefrompng\": [\n \"resource imagecreatefrompng(string filename)\",\n \"Create a new image from PNG file or URL\"\n ],\n \"imagecreatefromstring\": [\n \"resource imagecreatefromstring(string image)\",\n \"Create a new image from the image stream in the string\"\n ],\n \"imagecreatefromwbmp\": [\n \"resource imagecreatefromwbmp(string filename)\",\n \"Create a new image from WBMP file or URL\"\n ],\n \"imagecreatefromxbm\": [\n \"resource imagecreatefromxbm(string filename)\",\n \"Create a new image from XBM file or URL\"\n ],\n \"imagecreatefromxpm\": [\n \"resource imagecreatefromxpm(string filename)\",\n \"Create a new image from XPM file or URL\"\n ],\n \"imagecreatetruecolor\": [\n \"resource imagecreatetruecolor(int x_size, int y_size)\",\n \"Create a new true color image\"\n ],\n \"imagedashedline\": [\n \"bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)\",\n \"Draw a dashed line\"\n ],\n \"imagedestroy\": [\n \"bool imagedestroy(resource im)\",\n \"Destroy an image\"\n ],\n \"imageellipse\": [\n \"bool imageellipse(resource im, int cx, int cy, int w, int h, int color)\",\n \"Draw an ellipse\"\n ],\n \"imagefill\": [\n \"bool imagefill(resource im, int x, int y, int col)\",\n \"Flood fill\"\n ],\n \"imagefilledarc\": [\n \"bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)\",\n \"Draw a filled partial ellipse\"\n ],\n \"imagefilledellipse\": [\n \"bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)\",\n \"Draw an ellipse\"\n ],\n \"imagefilledpolygon\": [\n \"bool imagefilledpolygon(resource im, array point, int num_points, int col)\",\n \"Draw a filled polygon\"\n ],\n \"imagefilledrectangle\": [\n \"bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)\",\n \"Draw a filled rectangle\"\n ],\n \"imagefilltoborder\": [\n \"bool imagefilltoborder(resource im, int x, int y, int border, int col)\",\n \"Flood fill to specific color\"\n ],\n \"imagefilter\": [\n \"bool imagefilter(resource src_im, int filtertype, [args] )\",\n \"Applies Filter an image using a custom angle\"\n ],\n \"imagefontheight\": [\n \"int imagefontheight(int font)\",\n \"Get font height\"\n ],\n \"imagefontwidth\": [\n \"int imagefontwidth(int font)\",\n \"Get font width\"\n ],\n \"imageftbbox\": [\n \"array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])\",\n \"Give the bounding box of a text using fonts via freetype2\"\n ],\n \"imagefttext\": [\n \"array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])\",\n \"Write text to the image using fonts via freetype2\"\n ],\n \"imagegammacorrect\": [\n \"bool imagegammacorrect(resource im, float inputgamma, float outputgamma)\",\n \"Apply a gamma correction to a GD image\"\n ],\n \"imagegd\": [\n \"bool imagegd(resource im [, string filename])\",\n \"Output GD image to browser or file\"\n ],\n \"imagegd2\": [\n \"bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])\",\n \"Output GD2 image to browser or file\"\n ],\n \"imagegif\": [\n \"bool imagegif(resource im [, string filename])\",\n \"Output GIF image to browser or file\"\n ],\n \"imagegrabscreen\": [\n \"resource imagegrabscreen()\",\n \"Grab a screenshot\"\n ],\n \"imagegrabwindow\": [\n \"resource imagegrabwindow(int window_handle [, int client_area])\",\n \"Grab a window or its client area using a windows handle (HWND property in COM instance)\"\n ],\n \"imageinterlace\": [\n \"int imageinterlace(resource im [, int interlace])\",\n \"Enable or disable interlace\"\n ],\n \"imageistruecolor\": [\n \"bool imageistruecolor(resource im)\",\n \"return true if the image uses truecolor\"\n ],\n \"imagejpeg\": [\n \"bool imagejpeg(resource im [, string filename [, int quality]])\",\n \"Output JPEG image to browser or file\"\n ],\n \"imagelayereffect\": [\n \"bool imagelayereffect(resource im, int effect)\",\n \"Set the alpha blending flag to use the bundled libgd layering effects\"\n ],\n \"imageline\": [\n \"bool imageline(resource im, int x1, int y1, int x2, int y2, int col)\",\n \"Draw a line\"\n ],\n \"imageloadfont\": [\n \"int imageloadfont(string filename)\",\n \"Load a new font\"\n ],\n \"imagepalettecopy\": [\n \"void imagepalettecopy(resource dst, resource src)\",\n \"Copy the palette from the src image onto the dst image\"\n ],\n \"imagepng\": [\n \"bool imagepng(resource im [, string filename])\",\n \"Output PNG image to browser or file\"\n ],\n \"imagepolygon\": [\n \"bool imagepolygon(resource im, array point, int num_points, int col)\",\n \"Draw a polygon\"\n ],\n \"imagepsbbox\": [\n \"array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])\",\n \"Return the bounding box needed by a string if rasterized\"\n ],\n \"imagepscopyfont\": [\n \"int imagepscopyfont(int font_index)\",\n \"Make a copy of a font for purposes like extending or reenconding\"\n ],\n \"imagepsencodefont\": [\n \"bool imagepsencodefont(resource font_index, string filename)\",\n \"To change a fonts character encoding vector\"\n ],\n \"imagepsextendfont\": [\n \"bool imagepsextendfont(resource font_index, float extend)\",\n \"Extend or or condense (if extend < 1) a font\"\n ],\n \"imagepsfreefont\": [\n \"bool imagepsfreefont(resource font_index)\",\n \"Free memory used by a font\"\n ],\n \"imagepsloadfont\": [\n \"resource imagepsloadfont(string pathname)\",\n \"Load a new font from specified file\"\n ],\n \"imagepsslantfont\": [\n \"bool imagepsslantfont(resource font_index, float slant)\",\n \"Slant a font\"\n ],\n \"imagepstext\": [\n \"array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])\",\n \"Rasterize a string over an image\"\n ],\n \"imagerectangle\": [\n \"bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)\",\n \"Draw a rectangle\"\n ],\n \"imagerotate\": [\n \"resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])\",\n \"Rotate an image using a custom angle\"\n ],\n \"imagesavealpha\": [\n \"bool imagesavealpha(resource im, bool on)\",\n \"Include alpha channel to a saved image\"\n ],\n \"imagesetbrush\": [\n \"bool imagesetbrush(resource image, resource brush)\",\n \"Set the brush image to $brush when filling $image with the \\\"IMG_COLOR_BRUSHED\\\" color\"\n ],\n \"imagesetpixel\": [\n \"bool imagesetpixel(resource im, int x, int y, int col)\",\n \"Set a single pixel\"\n ],\n \"imagesetstyle\": [\n \"bool imagesetstyle(resource im, array styles)\",\n \"Set the line drawing styles for use with imageline and IMG_COLOR_STYLED.\"\n ],\n \"imagesetthickness\": [\n \"bool imagesetthickness(resource im, int thickness)\",\n \"Set line thickness for drawing lines, ellipses, rectangles, polygons etc.\"\n ],\n \"imagesettile\": [\n \"bool imagesettile(resource image, resource tile)\",\n \"Set the tile image to $tile when filling $image with the \\\"IMG_COLOR_TILED\\\" color\"\n ],\n \"imagestring\": [\n \"bool imagestring(resource im, int font, int x, int y, string str, int col)\",\n \"Draw a string horizontally\"\n ],\n \"imagestringup\": [\n \"bool imagestringup(resource im, int font, int x, int y, string str, int col)\",\n \"Draw a string vertically - rotated 90 degrees counter-clockwise\"\n ],\n \"imagesx\": [\n \"int imagesx(resource im)\",\n \"Get image width\"\n ],\n \"imagesy\": [\n \"int imagesy(resource im)\",\n \"Get image height\"\n ],\n \"imagetruecolortopalette\": [\n \"void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)\",\n \"Convert a true colour image to a palette based image with a number of colours, optionally using dithering.\"\n ],\n \"imagettfbbox\": [\n \"array imagettfbbox(float size, float angle, string font_file, string text)\",\n \"Give the bounding box of a text using TrueType fonts\"\n ],\n \"imagettftext\": [\n \"array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)\",\n \"Write text to the image using a TrueType font\"\n ],\n \"imagetypes\": [\n \"int imagetypes(void)\",\n \"Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM\"\n ],\n \"imagewbmp\": [\n \"bool imagewbmp(resource im [, string filename, [, int foreground]])\",\n \"Output WBMP image to browser or file\"\n ],\n \"imagexbm\": [\n \"int imagexbm(int im, string filename [, int foreground])\",\n \"Output XBM image to browser or file\"\n ],\n \"imap_8bit\": [\n \"string imap_8bit(string text)\",\n \"Convert an 8-bit string to a quoted-printable string\"\n ],\n \"imap_alerts\": [\n \"array imap_alerts(void)\",\n \"Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called.\"\n ],\n \"imap_append\": [\n \"bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])\",\n \"Append a new message to a specified mailbox\"\n ],\n \"imap_base64\": [\n \"string imap_base64(string text)\",\n \"Decode BASE64 encoded text\"\n ],\n \"imap_binary\": [\n \"string imap_binary(string text)\",\n \"Convert an 8bit string to a base64 string\"\n ],\n \"imap_body\": [\n \"string imap_body(resource stream_id, int msg_no [, int options])\",\n \"Read the message body\"\n ],\n \"imap_bodystruct\": [\n \"object imap_bodystruct(resource stream_id, int msg_no, string section)\",\n \"Read the structure of a specified body section of a specific message\"\n ],\n \"imap_check\": [\n \"object imap_check(resource stream_id)\",\n \"Get mailbox properties\"\n ],\n \"imap_clearflag_full\": [\n \"bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])\",\n \"Clears flags on messages\"\n ],\n \"imap_close\": [\n \"bool imap_close(resource stream_id [, int options])\",\n \"Close an IMAP stream\"\n ],\n \"imap_createmailbox\": [\n \"bool imap_createmailbox(resource stream_id, string mailbox)\",\n \"Create a new mailbox\"\n ],\n \"imap_delete\": [\n \"bool imap_delete(resource stream_id, int msg_no [, int options])\",\n \"Mark a message for deletion\"\n ],\n \"imap_deletemailbox\": [\n \"bool imap_deletemailbox(resource stream_id, string mailbox)\",\n \"Delete a mailbox\"\n ],\n \"imap_errors\": [\n \"array imap_errors(void)\",\n \"Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called.\"\n ],\n \"imap_expunge\": [\n \"bool imap_expunge(resource stream_id)\",\n \"Permanently delete all messages marked for deletion\"\n ],\n \"imap_fetch_overview\": [\n \"array imap_fetch_overview(resource stream_id, string sequence [, int options])\",\n \"Read an overview of the information in the headers of the given message sequence\"\n ],\n \"imap_fetchbody\": [\n \"string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])\",\n \"Get a specific body section\"\n ],\n \"imap_fetchheader\": [\n \"string imap_fetchheader(resource stream_id, int msg_no [, int options])\",\n \"Get the full unfiltered header for a message\"\n ],\n \"imap_fetchstructure\": [\n \"object imap_fetchstructure(resource stream_id, int msg_no [, int options])\",\n \"Read the full structure of a message\"\n ],\n \"imap_gc\": [\n \"bool imap_gc(resource stream_id, int flags)\",\n \"This function garbage collects (purges) the cache of entries of a specific type.\"\n ],\n \"imap_get_quota\": [\n \"array imap_get_quota(resource stream_id, string qroot)\",\n \"Returns the quota set to the mailbox account qroot\"\n ],\n \"imap_get_quotaroot\": [\n \"array imap_get_quotaroot(resource stream_id, string mbox)\",\n \"Returns the quota set to the mailbox account mbox\"\n ],\n \"imap_getacl\": [\n \"array imap_getacl(resource stream_id, string mailbox)\",\n \"Gets the ACL for a given mailbox\"\n ],\n \"imap_getmailboxes\": [\n \"array imap_getmailboxes(resource stream_id, string ref, string pattern)\",\n \"Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter\"\n ],\n \"imap_getsubscribed\": [\n \"array imap_getsubscribed(resource stream_id, string ref, string pattern)\",\n \"Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()\"\n ],\n \"imap_headerinfo\": [\n \"object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])\",\n \"Read the headers of the message\"\n ],\n \"imap_headers\": [\n \"array imap_headers(resource stream_id)\",\n \"Returns headers for all messages in a mailbox\"\n ],\n \"imap_last_error\": [\n \"string imap_last_error(void)\",\n \"Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call.\"\n ],\n \"imap_list\": [\n \"array imap_list(resource stream_id, string ref, string pattern)\",\n \"Read the list of mailboxes\"\n ],\n \"imap_listscan\": [\n \"array imap_listscan(resource stream_id, string ref, string pattern, string content)\",\n \"Read list of mailboxes containing a certain string\"\n ],\n \"imap_lsub\": [\n \"array imap_lsub(resource stream_id, string ref, string pattern)\",\n \"Return a list of subscribed mailboxes\"\n ],\n \"imap_mail\": [\n \"bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])\",\n \"Send an email message\"\n ],\n \"imap_mail_compose\": [\n \"string imap_mail_compose(array envelope, array body)\",\n \"Create a MIME message based on given envelope and body sections\"\n ],\n \"imap_mail_copy\": [\n \"bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])\",\n \"Copy specified message to a mailbox\"\n ],\n \"imap_mail_move\": [\n \"bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])\",\n \"Move specified message to a mailbox\"\n ],\n \"imap_mailboxmsginfo\": [\n \"object imap_mailboxmsginfo(resource stream_id)\",\n \"Returns info about the current mailbox\"\n ],\n \"imap_mime_header_decode\": [\n \"array imap_mime_header_decode(string str)\",\n \"Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'\"\n ],\n \"imap_msgno\": [\n \"int imap_msgno(resource stream_id, int unique_msg_id)\",\n \"Get the sequence number associated with a UID\"\n ],\n \"imap_mutf7_to_utf8\": [\n \"string imap_mutf7_to_utf8(string in)\",\n \"Decode a modified UTF-7 string to UTF-8\"\n ],\n \"imap_num_msg\": [\n \"int imap_num_msg(resource stream_id)\",\n \"Gives the number of messages in the current mailbox\"\n ],\n \"imap_num_recent\": [\n \"int imap_num_recent(resource stream_id)\",\n \"Gives the number of recent messages in current mailbox\"\n ],\n \"imap_open\": [\n \"resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])\",\n \"Open an IMAP stream to a mailbox\"\n ],\n \"imap_ping\": [\n \"bool imap_ping(resource stream_id)\",\n \"Check if the IMAP stream is still active\"\n ],\n \"imap_qprint\": [\n \"string imap_qprint(string text)\",\n \"Convert a quoted-printable string to an 8-bit string\"\n ],\n \"imap_renamemailbox\": [\n \"bool imap_renamemailbox(resource stream_id, string old_name, string new_name)\",\n \"Rename a mailbox\"\n ],\n \"imap_reopen\": [\n \"bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])\",\n \"Reopen an IMAP stream to a new mailbox\"\n ],\n \"imap_rfc822_parse_adrlist\": [\n \"array imap_rfc822_parse_adrlist(string address_string, string default_host)\",\n \"Parses an address string\"\n ],\n \"imap_rfc822_parse_headers\": [\n \"object imap_rfc822_parse_headers(string headers [, string default_host])\",\n \"Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()\"\n ],\n \"imap_rfc822_write_address\": [\n \"string imap_rfc822_write_address(string mailbox, string host, string personal)\",\n \"Returns a properly formatted email address given the mailbox, host, and personal info\"\n ],\n \"imap_savebody\": [\n \"bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = \\\"\\\"[, int options = 0]])\",\n \"Save a specific body section to a file\"\n ],\n \"imap_search\": [\n \"array imap_search(resource stream_id, string criteria [, int options [, string charset]])\",\n \"Return a list of messages matching the given criteria\"\n ],\n \"imap_set_quota\": [\n \"bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)\",\n \"Will set the quota for qroot mailbox\"\n ],\n \"imap_setacl\": [\n \"bool imap_setacl(resource stream_id, string mailbox, string id, string rights)\",\n \"Sets the ACL for a given mailbox\"\n ],\n \"imap_setflag_full\": [\n \"bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])\",\n \"Sets flags on messages\"\n ],\n \"imap_sort\": [\n \"array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])\",\n \"Sort an array of message headers, optionally including only messages that meet specified criteria.\"\n ],\n \"imap_status\": [\n \"object imap_status(resource stream_id, string mailbox, int options)\",\n \"Get status info from a mailbox\"\n ],\n \"imap_subscribe\": [\n \"bool imap_subscribe(resource stream_id, string mailbox)\",\n \"Subscribe to a mailbox\"\n ],\n \"imap_thread\": [\n \"array imap_thread(resource stream_id [, int options])\",\n \"Return threaded by REFERENCES tree\"\n ],\n \"imap_timeout\": [\n \"mixed imap_timeout(int timeout_type [, int timeout])\",\n \"Set or fetch imap timeout\"\n ],\n \"imap_uid\": [\n \"int imap_uid(resource stream_id, int msg_no)\",\n \"Get the unique message id associated with a standard sequential message number\"\n ],\n \"imap_undelete\": [\n \"bool imap_undelete(resource stream_id, int msg_no [, int flags])\",\n \"Remove the delete flag from a message\"\n ],\n \"imap_unsubscribe\": [\n \"bool imap_unsubscribe(resource stream_id, string mailbox)\",\n \"Unsubscribe from a mailbox\"\n ],\n \"imap_utf7_decode\": [\n \"string imap_utf7_decode(string buf)\",\n \"Decode a modified UTF-7 string\"\n ],\n \"imap_utf7_encode\": [\n \"string imap_utf7_encode(string buf)\",\n \"Encode a string in modified UTF-7\"\n ],\n \"imap_utf8\": [\n \"string imap_utf8(string mime_encoded_text)\",\n \"Convert a mime-encoded text to UTF-8\"\n ],\n \"imap_utf8_to_mutf7\": [\n \"string imap_utf8_to_mutf7(string in)\",\n \"Encode a UTF-8 string to modified UTF-7\"\n ],\n \"implode\": [\n \"string implode([string glue,] array pieces)\",\n \"Joins array elements placing glue string between items and return one string\"\n ],\n \"import_request_variables\": [\n \"bool import_request_variables(string types [, string prefix])\",\n \"Import GET/POST/Cookie variables into the global scope\"\n ],\n \"in_array\": [\n \"bool in_array(mixed needle, array haystack [, bool strict])\",\n \"Checks if the given value exists in the array\"\n ],\n \"include\": [\n \"bool include(string path)\",\n \"Includes and evaluates the specified file\"\n ],\n \"include_once\": [\n \"bool include_once(string path)\",\n \"Includes and evaluates the specified file\"\n ],\n \"inet_ntop\": [\n \"string inet_ntop(string in_addr)\",\n \"Converts a packed inet address to a human readable IP address string\"\n ],\n \"inet_pton\": [\n \"string inet_pton(string ip_address)\",\n \"Converts a human readable IP address to a packed binary string\"\n ],\n \"ini_get\": [\n \"string ini_get(string varname)\",\n \"Get a configuration option\"\n ],\n \"ini_get_all\": [\n \"array ini_get_all([string extension[, bool details = true]])\",\n \"Get all configuration options\"\n ],\n \"ini_restore\": [\n \"void ini_restore(string varname)\",\n \"Restore the value of a configuration option specified by varname\"\n ],\n \"ini_set\": [\n \"string ini_set(string varname, string newvalue)\",\n \"Set a configuration option, returns false on error and the old value of the configuration option on success\"\n ],\n \"interface_exists\": [\n \"bool interface_exists(string classname [, bool autoload])\",\n \"Checks if the class exists\"\n ],\n \"intl_error_name\": [\n \"string intl_error_name()\",\n \"* Return a string for a given error code. * The string will be the same as the name of the error code constant.\"\n ],\n \"intl_get_error_code\": [\n \"int intl_get_error_code()\",\n \"* Get code of the last occured error.\"\n ],\n \"intl_get_error_message\": [\n \"string intl_get_error_message()\",\n \"* Get text description of the last occured error.\"\n ],\n \"intl_is_failure\": [\n \"bool intl_is_failure()\",\n \"* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning.\"\n ],\n \"intval\": [\n \"int intval(mixed var [, int base])\",\n \"Get the integer value of a variable using the optional base for the conversion\"\n ],\n \"ip2long\": [\n \"int ip2long(string ip_address)\",\n \"Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address\"\n ],\n \"iptcembed\": [\n \"array iptcembed(string iptcdata, string jpeg_file_name [, int spool])\",\n \"Embed binary IPTC data into a JPEG image.\"\n ],\n \"iptcparse\": [\n \"array iptcparse(string iptcdata)\",\n \"Parse binary IPTC-data into associative array\"\n ],\n \"is_a\": [\n \"bool is_a(object object, string class_name)\",\n \"Returns true if the object is of this class or has this class as one of its parents\"\n ],\n \"is_array\": [\n \"bool is_array(mixed var)\",\n \"Returns true if variable is an array\"\n ],\n \"is_bool\": [\n \"bool is_bool(mixed var)\",\n \"Returns true if variable is a boolean\"\n ],\n \"is_callable\": [\n \"bool is_callable(mixed var [, bool syntax_only [, string callable_name]])\",\n \"Returns true if var is callable.\"\n ],\n \"is_dir\": [\n \"bool is_dir(string filename)\",\n \"Returns true if file is directory\"\n ],\n \"is_executable\": [\n \"bool is_executable(string filename)\",\n \"Returns true if file is executable\"\n ],\n \"is_file\": [\n \"bool is_file(string filename)\",\n \"Returns true if file is a regular file\"\n ],\n \"is_finite\": [\n \"bool is_finite(float val)\",\n \"Returns whether argument is finite\"\n ],\n \"is_float\": [\n \"bool is_float(mixed var)\",\n \"Returns true if variable is float point\"\n ],\n \"is_infinite\": [\n \"bool is_infinite(float val)\",\n \"Returns whether argument is infinite\"\n ],\n \"is_link\": [\n \"bool is_link(string filename)\",\n \"Returns true if file is symbolic link\"\n ],\n \"is_long\": [\n \"bool is_long(mixed var)\",\n \"Returns true if variable is a long (integer)\"\n ],\n \"is_nan\": [\n \"bool is_nan(float val)\",\n \"Returns whether argument is not a number\"\n ],\n \"is_null\": [\n \"bool is_null(mixed var)\",\n \"Returns true if variable is null\"\n ],\n \"is_numeric\": [\n \"bool is_numeric(mixed value)\",\n \"Returns true if value is a number or a numeric string\"\n ],\n \"is_object\": [\n \"bool is_object(mixed var)\",\n \"Returns true if variable is an object\"\n ],\n \"is_readable\": [\n \"bool is_readable(string filename)\",\n \"Returns true if file can be read\"\n ],\n \"is_resource\": [\n \"bool is_resource(mixed var)\",\n \"Returns true if variable is a resource\"\n ],\n \"is_scalar\": [\n \"bool is_scalar(mixed value)\",\n \"Returns true if value is a scalar\"\n ],\n \"is_string\": [\n \"bool is_string(mixed var)\",\n \"Returns true if variable is a string\"\n ],\n \"is_subclass_of\": [\n \"bool is_subclass_of(object object, string class_name)\",\n \"Returns true if the object has this class as one of its parents\"\n ],\n \"is_uploaded_file\": [\n \"bool is_uploaded_file(string path)\",\n \"Check if file was created by rfc1867 upload\"\n ],\n \"is_writable\": [\n \"bool is_writable(string filename)\",\n \"Returns true if file can be written\"\n ],\n \"isset\": [\n \"bool isset(mixed var [, mixed var])\",\n \"Determine whether a variable is set\"\n ],\n \"iterator_apply\": [\n \"int iterator_apply(Traversable it, mixed function [, mixed params])\",\n \"Calls a function for every element in an iterator\"\n ],\n \"iterator_count\": [\n \"int iterator_count(Traversable it)\",\n \"Count the elements in an iterator\"\n ],\n \"iterator_to_array\": [\n \"array iterator_to_array(Traversable it [, bool use_keys = true])\",\n \"Copy the iterator into an array\"\n ],\n \"jddayofweek\": [\n \"mixed jddayofweek(int juliandaycount [, int mode])\",\n \"Returns name or number of day of week from julian day count\"\n ],\n \"jdmonthname\": [\n \"string jdmonthname(int juliandaycount, int mode)\",\n \"Returns name of month for julian day count\"\n ],\n \"jdtofrench\": [\n \"string jdtofrench(int juliandaycount)\",\n \"Converts a julian day count to a french republic calendar date\"\n ],\n \"jdtogregorian\": [\n \"string jdtogregorian(int juliandaycount)\",\n \"Converts a julian day count to a gregorian calendar date\"\n ],\n \"jdtojewish\": [\n \"string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])\",\n \"Converts a julian day count to a jewish calendar date\"\n ],\n \"jdtojulian\": [\n \"string jdtojulian(int juliandaycount)\",\n \"Convert a julian day count to a julian calendar date\"\n ],\n \"jdtounix\": [\n \"int jdtounix(int jday)\",\n \"Convert Julian Day to UNIX timestamp\"\n ],\n \"jewishtojd\": [\n \"int jewishtojd(int month, int day, int year)\",\n \"Converts a jewish calendar date to a julian day count\"\n ],\n \"join\": [\n \"string join(array src, string glue)\",\n \"An alias for implode\"\n ],\n \"jpeg2wbmp\": [\n \"bool jpeg2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)\",\n \"Convert JPEG image to WBMP image\"\n ],\n \"json_decode\": [\n \"mixed json_decode(string json [, bool assoc [, long depth]])\",\n \"Decodes the JSON representation into a PHP value\"\n ],\n \"json_encode\": [\n \"string json_encode(mixed data [, int options])\",\n \"Returns the JSON representation of a value\"\n ],\n \"json_last_error\": [\n \"int json_last_error()\",\n \"Returns the error code of the last json_decode().\"\n ],\n \"juliantojd\": [\n \"int juliantojd(int month, int day, int year)\",\n \"Converts a julian calendar date to julian day count\"\n ],\n \"key\": [\n \"mixed key(array array_arg)\",\n \"Return the key of the element currently pointed to by the internal array pointer\"\n ],\n \"krsort\": [\n \"bool krsort(array &array_arg [, int sort_flags])\",\n \"Sort an array by key value in reverse order\"\n ],\n \"ksort\": [\n \"bool ksort(array &array_arg [, int sort_flags])\",\n \"Sort an array by key\"\n ],\n \"lcfirst\": [\n \"string lcfirst(string str)\",\n \"Make a string's first character lowercase\"\n ],\n \"lcg_value\": [\n \"float lcg_value()\",\n \"Returns a value from the combined linear congruential generator\"\n ],\n \"lchgrp\": [\n \"bool lchgrp(string filename, mixed group)\",\n \"Change symlink group\"\n ],\n \"ldap_8859_to_t61\": [\n \"string ldap_8859_to_t61(string value)\",\n \"Translate 8859 characters to t61 characters\"\n ],\n \"ldap_add\": [\n \"bool ldap_add(resource link, string dn, array entry)\",\n \"Add entries to LDAP directory\"\n ],\n \"ldap_bind\": [\n \"bool ldap_bind(resource link [, string dn [, string password]])\",\n \"Bind to LDAP directory\"\n ],\n \"ldap_compare\": [\n \"bool ldap_compare(resource link, string dn, string attr, string value)\",\n \"Determine if an entry has a specific value for one of its attributes\"\n ],\n \"ldap_connect\": [\n \"resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])\",\n \"Connect to an LDAP server\"\n ],\n \"ldap_count_entries\": [\n \"int ldap_count_entries(resource link, resource result)\",\n \"Count the number of entries in a search result\"\n ],\n \"ldap_delete\": [\n \"bool ldap_delete(resource link, string dn)\",\n \"Delete an entry from a directory\"\n ],\n \"ldap_dn2ufn\": [\n \"string ldap_dn2ufn(string dn)\",\n \"Convert DN to User Friendly Naming format\"\n ],\n \"ldap_err2str\": [\n \"string ldap_err2str(int errno)\",\n \"Convert error number to error string\"\n ],\n \"ldap_errno\": [\n \"int ldap_errno(resource link)\",\n \"Get the current ldap error number\"\n ],\n \"ldap_error\": [\n \"string ldap_error(resource link)\",\n \"Get the current ldap error string\"\n ],\n \"ldap_explode_dn\": [\n \"array ldap_explode_dn(string dn, int with_attrib)\",\n \"Splits DN into its component parts\"\n ],\n \"ldap_first_attribute\": [\n \"string ldap_first_attribute(resource link, resource result_entry)\",\n \"Return first attribute\"\n ],\n \"ldap_first_entry\": [\n \"resource ldap_first_entry(resource link, resource result)\",\n \"Return first result id\"\n ],\n \"ldap_first_reference\": [\n \"resource ldap_first_reference(resource link, resource result)\",\n \"Return first reference\"\n ],\n \"ldap_free_result\": [\n \"bool ldap_free_result(resource result)\",\n \"Free result memory\"\n ],\n \"ldap_get_attributes\": [\n \"array ldap_get_attributes(resource link, resource result_entry)\",\n \"Get attributes from a search result entry\"\n ],\n \"ldap_get_dn\": [\n \"string ldap_get_dn(resource link, resource result_entry)\",\n \"Get the DN of a result entry\"\n ],\n \"ldap_get_entries\": [\n \"array ldap_get_entries(resource link, resource result)\",\n \"Get all result entries\"\n ],\n \"ldap_get_option\": [\n \"bool ldap_get_option(resource link, int option, mixed retval)\",\n \"Get the current value of various session-wide parameters\"\n ],\n \"ldap_get_values_len\": [\n \"array ldap_get_values_len(resource link, resource result_entry, string attribute)\",\n \"Get all values with lengths from a result entry\"\n ],\n \"ldap_list\": [\n \"resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])\",\n \"Single-level search\"\n ],\n \"ldap_mod_add\": [\n \"bool ldap_mod_add(resource link, string dn, array entry)\",\n \"Add attribute values to current\"\n ],\n \"ldap_mod_del\": [\n \"bool ldap_mod_del(resource link, string dn, array entry)\",\n \"Delete attribute values\"\n ],\n \"ldap_mod_replace\": [\n \"bool ldap_mod_replace(resource link, string dn, array entry)\",\n \"Replace attribute values with new ones\"\n ],\n \"ldap_next_attribute\": [\n \"string ldap_next_attribute(resource link, resource result_entry)\",\n \"Get the next attribute in result\"\n ],\n \"ldap_next_entry\": [\n \"resource ldap_next_entry(resource link, resource result_entry)\",\n \"Get next result entry\"\n ],\n \"ldap_next_reference\": [\n \"resource ldap_next_reference(resource link, resource reference_entry)\",\n \"Get next reference\"\n ],\n \"ldap_parse_reference\": [\n \"bool ldap_parse_reference(resource link, resource reference_entry, array referrals)\",\n \"Extract information from reference entry\"\n ],\n \"ldap_parse_result\": [\n \"bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)\",\n \"Extract information from result\"\n ],\n \"ldap_read\": [\n \"resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])\",\n \"Read an entry\"\n ],\n \"ldap_rename\": [\n \"bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn);\",\n \"Modify the name of an entry\"\n ],\n \"ldap_sasl_bind\": [\n \"bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])\",\n \"Bind to LDAP directory using SASL\"\n ],\n \"ldap_search\": [\n \"resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])\",\n \"Search LDAP tree under base_dn\"\n ],\n \"ldap_set_option\": [\n \"bool ldap_set_option(resource link, int option, mixed newval)\",\n \"Set the value of various session-wide parameters\"\n ],\n \"ldap_set_rebind_proc\": [\n \"bool ldap_set_rebind_proc(resource link, string callback)\",\n \"Set a callback function to do re-binds on referral chasing.\"\n ],\n \"ldap_sort\": [\n \"bool ldap_sort(resource link, resource result, string sortfilter)\",\n \"Sort LDAP result entries\"\n ],\n \"ldap_start_tls\": [\n \"bool ldap_start_tls(resource link)\",\n \"Start TLS\"\n ],\n \"ldap_t61_to_8859\": [\n \"string ldap_t61_to_8859(string value)\",\n \"Translate t61 characters to 8859 characters\"\n ],\n \"ldap_unbind\": [\n \"bool ldap_unbind(resource link)\",\n \"Unbind from LDAP directory\"\n ],\n \"leak\": [\n \"void leak(int num_bytes=3)\",\n \"Cause an intentional memory leak, for testing/debugging purposes\"\n ],\n \"levenshtein\": [\n \"int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])\",\n \"Calculate Levenshtein distance between two strings\"\n ],\n \"libxml_clear_errors\": [\n \"void libxml_clear_errors()\",\n \"Clear last error from libxml\"\n ],\n \"libxml_disable_entity_loader\": [\n \"bool libxml_disable_entity_loader([boolean disable])\",\n \"Disable/Enable ability to load external entities\"\n ],\n \"libxml_get_errors\": [\n \"object libxml_get_errors()\",\n \"Retrieve array of errors\"\n ],\n \"libxml_get_last_error\": [\n \"object libxml_get_last_error()\",\n \"Retrieve last error from libxml\"\n ],\n \"libxml_set_streams_context\": [\n \"void libxml_set_streams_context(resource streams_context)\",\n \"Set the streams context for the next libxml document load or write\"\n ],\n \"libxml_use_internal_errors\": [\n \"bool libxml_use_internal_errors([boolean use_errors])\",\n \"Disable libxml errors and allow user to fetch error information as needed\"\n ],\n \"link\": [\n \"int link(string target, string link)\",\n \"Create a hard link\"\n ],\n \"linkinfo\": [\n \"int linkinfo(string filename)\",\n \"Returns the st_dev field of the UNIX C stat structure describing the link\"\n ],\n \"litespeed_request_headers\": [\n \"array litespeed_request_headers(void)\",\n \"Fetch all HTTP request headers\"\n ],\n \"litespeed_response_headers\": [\n \"array litespeed_response_headers(void)\",\n \"Fetch all HTTP response headers\"\n ],\n \"locale_accept_from_http\": [\n \"string locale_accept_from_http(string $http_accept)\",\n null\n ],\n \"locale_canonicalize\": [\n \"static string locale_canonicalize(Locale $loc, string $locale)\",\n \"* @param string $locale The locale string to canonicalize\"\n ],\n \"locale_filter_matches\": [\n \"boolean locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])\",\n \"* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm\"\n ],\n \"locale_get_all_variants\": [\n \"static array locale_get_all_variants($locale)\",\n \"* gets an array containing the list of variants, or null\"\n ],\n \"locale_get_default\": [\n \"static string locale_get_default( )\",\n \"Get default locale\"\n ],\n \"locale_get_keywords\": [\n \"static array locale_get_keywords(string $locale) {\",\n \"* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!)\"\n ],\n \"locale_get_primary_language\": [\n \"static string locale_get_primary_language($locale)\",\n \"* gets the primary language for the $locale\"\n ],\n \"locale_get_region\": [\n \"static string locale_get_region($locale)\",\n \"* gets the region for the $locale\"\n ],\n \"locale_get_script\": [\n \"static string locale_get_script($locale)\",\n \"* gets the script for the $locale\"\n ],\n \"locale_lookup\": [\n \"string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])\",\n \"* Searchs the items in $langtag for the best match to the language * range\"\n ],\n \"locale_set_default\": [\n \"static string locale_set_default( string $locale )\",\n \"Set default locale\"\n ],\n \"localeconv\": [\n \"array localeconv(void)\",\n \"Returns numeric formatting information based on the current locale\"\n ],\n \"localtime\": [\n \"array localtime([int timestamp [, bool associative_array]])\",\n \"Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array\"\n ],\n \"log\": [\n \"float log(float number, [float base])\",\n \"Returns the natural logarithm of the number, or the base log if base is specified\"\n ],\n \"log10\": [\n \"float log10(float number)\",\n \"Returns the base-10 logarithm of the number\"\n ],\n \"log1p\": [\n \"float log1p(float number)\",\n \"Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero\"\n ],\n \"long2ip\": [\n \"string long2ip(int proper_address)\",\n \"Converts an (IPv4) Internet network address into a string in Internet standard dotted format\"\n ],\n \"lstat\": [\n \"array lstat(string filename)\",\n \"Give information about a file or symbolic link\"\n ],\n \"ltrim\": [\n \"string ltrim(string str [, string character_mask])\",\n \"Strips whitespace from the beginning of a string\"\n ],\n \"mail\": [\n \"int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])\",\n \"Send an email message\"\n ],\n \"max\": [\n \"mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])\",\n \"Return the highest value in an array or a series of arguments\"\n ],\n \"mb_check_encoding\": [\n \"bool mb_check_encoding([string var[, string encoding]])\",\n \"Check if the string is valid for the specified encoding\"\n ],\n \"mb_convert_case\": [\n \"string mb_convert_case(string sourcestring, int mode [, string encoding])\",\n \"Returns a case-folded version of sourcestring\"\n ],\n \"mb_convert_encoding\": [\n \"string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])\",\n \"Returns converted string in desired encoding\"\n ],\n \"mb_convert_kana\": [\n \"string mb_convert_kana(string str [, string option] [, string encoding])\",\n \"Conversion between full-width character and half-width character (Japanese)\"\n ],\n \"mb_convert_variables\": [\n \"string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])\",\n \"Converts the string resource in variables to desired encoding\"\n ],\n \"mb_decode_mimeheader\": [\n \"string mb_decode_mimeheader(string string)\",\n \"Decodes the MIME \\\"encoded-word\\\" in the string\"\n ],\n \"mb_decode_numericentity\": [\n \"string mb_decode_numericentity(string string, array convmap [, string encoding])\",\n \"Converts HTML numeric entities to character code\"\n ],\n \"mb_detect_encoding\": [\n \"string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])\",\n \"Encodings of the given string is returned (as a string)\"\n ],\n \"mb_detect_order\": [\n \"bool|array mb_detect_order([mixed encoding-list])\",\n \"Sets the current detect_order or Return the current detect_order as a array\"\n ],\n \"mb_encode_mimeheader\": [\n \"string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])\",\n \"Converts the string to MIME \\\"encoded-word\\\" in the format of =?charset?(B|Q)?encoded_string?=\"\n ],\n \"mb_encode_numericentity\": [\n \"string mb_encode_numericentity(string string, array convmap [, string encoding])\",\n \"Converts specified characters to HTML numeric entities\"\n ],\n \"mb_encoding_aliases\": [\n \"array mb_encoding_aliases(string encoding)\",\n \"Returns an array of the aliases of a given encoding name\"\n ],\n \"mb_ereg\": [\n \"int mb_ereg(string pattern, string string [, array registers])\",\n \"Regular expression match for multibyte string\"\n ],\n \"mb_ereg_match\": [\n \"bool mb_ereg_match(string pattern, string string [,string option])\",\n \"Regular expression match for multibyte string\"\n ],\n \"mb_ereg_replace\": [\n \"string mb_ereg_replace(string pattern, string replacement, string string [, string option])\",\n \"Replace regular expression for multibyte string\"\n ],\n \"mb_ereg_search\": [\n \"bool mb_ereg_search([string pattern[, string option]])\",\n \"Regular expression search for multibyte string\"\n ],\n \"mb_ereg_search_getpos\": [\n \"int mb_ereg_search_getpos(void)\",\n \"Get search start position\"\n ],\n \"mb_ereg_search_getregs\": [\n \"array mb_ereg_search_getregs(void)\",\n \"Get matched substring of the last time\"\n ],\n \"mb_ereg_search_init\": [\n \"bool mb_ereg_search_init(string string [, string pattern[, string option]])\",\n \"Initialize string and regular expression for search.\"\n ],\n \"mb_ereg_search_pos\": [\n \"array mb_ereg_search_pos([string pattern[, string option]])\",\n \"Regular expression search for multibyte string\"\n ],\n \"mb_ereg_search_regs\": [\n \"array mb_ereg_search_regs([string pattern[, string option]])\",\n \"Regular expression search for multibyte string\"\n ],\n \"mb_ereg_search_setpos\": [\n \"bool mb_ereg_search_setpos(int position)\",\n \"Set search start position\"\n ],\n \"mb_eregi\": [\n \"int mb_eregi(string pattern, string string [, array registers])\",\n \"Case-insensitive regular expression match for multibyte string\"\n ],\n \"mb_eregi_replace\": [\n \"string mb_eregi_replace(string pattern, string replacement, string string)\",\n \"Case insensitive replace regular expression for multibyte string\"\n ],\n \"mb_get_info\": [\n \"mixed mb_get_info([string type])\",\n \"Returns the current settings of mbstring\"\n ],\n \"mb_http_input\": [\n \"mixed mb_http_input([string type])\",\n \"Returns the input encoding\"\n ],\n \"mb_http_output\": [\n \"string mb_http_output([string encoding])\",\n \"Sets the current output_encoding or returns the current output_encoding as a string\"\n ],\n \"mb_internal_encoding\": [\n \"string mb_internal_encoding([string encoding])\",\n \"Sets the current internal encoding or Returns the current internal encoding as a string\"\n ],\n \"mb_language\": [\n \"string mb_language([string language])\",\n \"Sets the current language or Returns the current language as a string\"\n ],\n \"mb_list_encodings\": [\n \"mixed mb_list_encodings()\",\n \"Returns an array of all supported entity encodings\"\n ],\n \"mb_output_handler\": [\n \"string mb_output_handler(string contents, int status)\",\n \"Returns string in output buffer converted to the http_output encoding\"\n ],\n \"mb_parse_str\": [\n \"bool mb_parse_str(string encoded_string [, array result])\",\n \"Parses GET/POST/COOKIE data and sets global variables\"\n ],\n \"mb_preferred_mime_name\": [\n \"string mb_preferred_mime_name(string encoding)\",\n \"Return the preferred MIME name (charset) as a string\"\n ],\n \"mb_regex_encoding\": [\n \"string mb_regex_encoding([string encoding])\",\n \"Returns the current encoding for regex as a string.\"\n ],\n \"mb_regex_set_options\": [\n \"string mb_regex_set_options([string options])\",\n \"Set or get the default options for mbregex functions\"\n ],\n \"mb_send_mail\": [\n \"int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])\",\n \"* Sends an email message with MIME scheme\"\n ],\n \"mb_split\": [\n \"array mb_split(string pattern, string string [, int limit])\",\n \"split multibyte string into array by regular expression\"\n ],\n \"mb_strcut\": [\n \"string mb_strcut(string str, int start [, int length [, string encoding]])\",\n \"Returns part of a string\"\n ],\n \"mb_strimwidth\": [\n \"string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])\",\n \"Trim the string in terminal width\"\n ],\n \"mb_stripos\": [\n \"int mb_stripos(string haystack, string needle [, int offset [, string encoding]])\",\n \"Finds position of first occurrence of a string within another, case insensitive\"\n ],\n \"mb_stristr\": [\n \"string mb_stristr(string haystack, string needle[, bool part[, string encoding]])\",\n \"Finds first occurrence of a string within another, case insensitive\"\n ],\n \"mb_strlen\": [\n \"int mb_strlen(string str [, string encoding])\",\n \"Get character numbers of a string\"\n ],\n \"mb_strpos\": [\n \"int mb_strpos(string haystack, string needle [, int offset [, string encoding]])\",\n \"Find position of first occurrence of a string within another\"\n ],\n \"mb_strrchr\": [\n \"string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])\",\n \"Finds the last occurrence of a character in a string within another\"\n ],\n \"mb_strrichr\": [\n \"string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])\",\n \"Finds the last occurrence of a character in a string within another, case insensitive\"\n ],\n \"mb_strripos\": [\n \"int mb_strripos(string haystack, string needle [, int offset [, string encoding]])\",\n \"Finds position of last occurrence of a string within another, case insensitive\"\n ],\n \"mb_strrpos\": [\n \"int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])\",\n \"Find position of last occurrence of a string within another\"\n ],\n \"mb_strstr\": [\n \"string mb_strstr(string haystack, string needle[, bool part[, string encoding]])\",\n \"Finds first occurrence of a string within another\"\n ],\n \"mb_strtolower\": [\n \"string mb_strtolower(string sourcestring [, string encoding])\",\n \"* Returns a lowercased version of sourcestring\"\n ],\n \"mb_strtoupper\": [\n \"string mb_strtoupper(string sourcestring [, string encoding])\",\n \"* Returns a uppercased version of sourcestring\"\n ],\n \"mb_strwidth\": [\n \"int mb_strwidth(string str [, string encoding])\",\n \"Gets terminal width of a string\"\n ],\n \"mb_substitute_character\": [\n \"mixed mb_substitute_character([mixed substchar])\",\n \"Sets the current substitute_character or returns the current substitute_character\"\n ],\n \"mb_substr\": [\n \"string mb_substr(string str, int start [, int length [, string encoding]])\",\n \"Returns part of a string\"\n ],\n \"mb_substr_count\": [\n \"int mb_substr_count(string haystack, string needle [, string encoding])\",\n \"Count the number of substring occurrences\"\n ],\n \"mcrypt_cbc\": [\n \"string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)\",\n \"CBC crypt/decrypt data using key key with cipher cipher starting with iv\"\n ],\n \"mcrypt_cfb\": [\n \"string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)\",\n \"CFB crypt/decrypt data using key key with cipher cipher starting with iv\"\n ],\n \"mcrypt_create_iv\": [\n \"string mcrypt_create_iv(int size, int source)\",\n \"Create an initialization vector (IV)\"\n ],\n \"mcrypt_decrypt\": [\n \"string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)\",\n \"OFB crypt/decrypt data using key key with cipher cipher starting with iv\"\n ],\n \"mcrypt_ecb\": [\n \"string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)\",\n \"ECB crypt/decrypt data using key key with cipher cipher starting with iv\"\n ],\n \"mcrypt_enc_get_algorithms_name\": [\n \"string mcrypt_enc_get_algorithms_name(resource td)\",\n \"Returns the name of the algorithm specified by the descriptor td\"\n ],\n \"mcrypt_enc_get_block_size\": [\n \"int mcrypt_enc_get_block_size(resource td)\",\n \"Returns the block size of the cipher specified by the descriptor td\"\n ],\n \"mcrypt_enc_get_iv_size\": [\n \"int mcrypt_enc_get_iv_size(resource td)\",\n \"Returns the size of the IV in bytes of the algorithm specified by the descriptor td\"\n ],\n \"mcrypt_enc_get_key_size\": [\n \"int mcrypt_enc_get_key_size(resource td)\",\n \"Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td\"\n ],\n \"mcrypt_enc_get_modes_name\": [\n \"string mcrypt_enc_get_modes_name(resource td)\",\n \"Returns the name of the mode specified by the descriptor td\"\n ],\n \"mcrypt_enc_get_supported_key_sizes\": [\n \"array mcrypt_enc_get_supported_key_sizes(resource td)\",\n \"This function decrypts the crypttext\"\n ],\n \"mcrypt_enc_is_block_algorithm\": [\n \"bool mcrypt_enc_is_block_algorithm(resource td)\",\n \"Returns TRUE if the alrogithm is a block algorithms\"\n ],\n \"mcrypt_enc_is_block_algorithm_mode\": [\n \"bool mcrypt_enc_is_block_algorithm_mode(resource td)\",\n \"Returns TRUE if the mode is for use with block algorithms\"\n ],\n \"mcrypt_enc_is_block_mode\": [\n \"bool mcrypt_enc_is_block_mode(resource td)\",\n \"Returns TRUE if the mode outputs blocks\"\n ],\n \"mcrypt_enc_self_test\": [\n \"int mcrypt_enc_self_test(resource td)\",\n \"This function runs the self test on the algorithm specified by the descriptor td\"\n ],\n \"mcrypt_encrypt\": [\n \"string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)\",\n \"OFB crypt/decrypt data using key key with cipher cipher starting with iv\"\n ],\n \"mcrypt_generic\": [\n \"string mcrypt_generic(resource td, string data)\",\n \"This function encrypts the plaintext\"\n ],\n \"mcrypt_generic_deinit\": [\n \"bool mcrypt_generic_deinit(resource td)\",\n \"This function terminates encrypt specified by the descriptor td\"\n ],\n \"mcrypt_generic_init\": [\n \"int mcrypt_generic_init(resource td, string key, string iv)\",\n \"This function initializes all buffers for the specific module\"\n ],\n \"mcrypt_get_block_size\": [\n \"int mcrypt_get_block_size(string cipher, string module)\",\n \"Get the key size of cipher\"\n ],\n \"mcrypt_get_cipher_name\": [\n \"string mcrypt_get_cipher_name(string cipher)\",\n \"Get the key size of cipher\"\n ],\n \"mcrypt_get_iv_size\": [\n \"int mcrypt_get_iv_size(string cipher, string module)\",\n \"Get the IV size of cipher (Usually the same as the blocksize)\"\n ],\n \"mcrypt_get_key_size\": [\n \"int mcrypt_get_key_size(string cipher, string module)\",\n \"Get the key size of cipher\"\n ],\n \"mcrypt_list_algorithms\": [\n \"array mcrypt_list_algorithms([string lib_dir])\",\n \"List all algorithms in \\\"module_dir\\\"\"\n ],\n \"mcrypt_list_modes\": [\n \"array mcrypt_list_modes([string lib_dir])\",\n \"List all modes \\\"module_dir\\\"\"\n ],\n \"mcrypt_module_close\": [\n \"bool mcrypt_module_close(resource td)\",\n \"Free the descriptor td\"\n ],\n \"mcrypt_module_get_algo_block_size\": [\n \"int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])\",\n \"Returns the block size of the algorithm\"\n ],\n \"mcrypt_module_get_algo_key_size\": [\n \"int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])\",\n \"Returns the maximum supported key size of the algorithm\"\n ],\n \"mcrypt_module_get_supported_key_sizes\": [\n \"array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])\",\n \"This function decrypts the crypttext\"\n ],\n \"mcrypt_module_is_block_algorithm\": [\n \"bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])\",\n \"Returns TRUE if the algorithm is a block algorithm\"\n ],\n \"mcrypt_module_is_block_algorithm_mode\": [\n \"bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])\",\n \"Returns TRUE if the mode is for use with block algorithms\"\n ],\n \"mcrypt_module_is_block_mode\": [\n \"bool mcrypt_module_is_block_mode(string mode [, string lib_dir])\",\n \"Returns TRUE if the mode outputs blocks of bytes\"\n ],\n \"mcrypt_module_open\": [\n \"resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)\",\n \"Opens the module of the algorithm and the mode to be used\"\n ],\n \"mcrypt_module_self_test\": [\n \"bool mcrypt_module_self_test(string algorithm [, string lib_dir])\",\n \"Does a self test of the module \\\"module\\\"\"\n ],\n \"mcrypt_ofb\": [\n \"string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)\",\n \"OFB crypt/decrypt data using key key with cipher cipher starting with iv\"\n ],\n \"md5\": [\n \"string md5(string str, [ bool raw_output])\",\n \"Calculate the md5 hash of a string\"\n ],\n \"md5_file\": [\n \"string md5_file(string filename [, bool raw_output])\",\n \"Calculate the md5 hash of given filename\"\n ],\n \"mdecrypt_generic\": [\n \"string mdecrypt_generic(resource td, string data)\",\n \"This function decrypts the plaintext\"\n ],\n \"memory_get_peak_usage\": [\n \"int memory_get_peak_usage([real_usage])\",\n \"Returns the peak allocated by PHP memory\"\n ],\n \"memory_get_usage\": [\n \"int memory_get_usage([real_usage])\",\n \"Returns the allocated by PHP memory\"\n ],\n \"metaphone\": [\n \"string metaphone(string text[, int phones])\",\n \"Break english phrases down into their phonemes\"\n ],\n \"method_exists\": [\n \"bool method_exists(object object, string method)\",\n \"Checks if the class method exists\"\n ],\n \"mhash\": [\n \"string mhash(int hash, string data [, string key])\",\n \"Hash data with hash\"\n ],\n \"mhash_count\": [\n \"int mhash_count(void)\",\n \"Gets the number of available hashes\"\n ],\n \"mhash_get_block_size\": [\n \"int mhash_get_block_size(int hash)\",\n \"Gets the block size of hash\"\n ],\n \"mhash_get_hash_name\": [\n \"string mhash_get_hash_name(int hash)\",\n \"Gets the name of hash\"\n ],\n \"mhash_keygen_s2k\": [\n \"string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)\",\n \"Generates a key using hash functions\"\n ],\n \"microtime\": [\n \"mixed microtime([bool get_as_float])\",\n \"Returns either a string or a float containing the current time in seconds and microseconds\"\n ],\n \"mime_content_type\": [\n \"string mime_content_type(string filename|resource stream)\",\n \"Return content-type for file\"\n ],\n \"min\": [\n \"mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])\",\n \"Return the lowest value in an array or a series of arguments\"\n ],\n \"mkdir\": [\n \"bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])\",\n \"Create a directory\"\n ],\n \"mktime\": [\n \"int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])\",\n \"Get UNIX timestamp for a date\"\n ],\n \"money_format\": [\n \"string money_format(string format , float value)\",\n \"Convert monetary value(s) to string\"\n ],\n \"move_uploaded_file\": [\n \"bool move_uploaded_file(string path, string new_path)\",\n \"Move a file if and only if it was created by an upload\"\n ],\n \"msg_get_queue\": [\n \"resource msg_get_queue(int key [, int perms])\",\n \"Attach to a message queue\"\n ],\n \"msg_queue_exists\": [\n \"bool msg_queue_exists(int key)\",\n \"Check wether a message queue exists\"\n ],\n \"msg_receive\": [\n \"mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])\",\n \"Send a message of type msgtype (must be > 0) to a message queue\"\n ],\n \"msg_remove_queue\": [\n \"bool msg_remove_queue(resource queue)\",\n \"Destroy the queue\"\n ],\n \"msg_send\": [\n \"bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])\",\n \"Send a message of type msgtype (must be > 0) to a message queue\"\n ],\n \"msg_set_queue\": [\n \"bool msg_set_queue(resource queue, array data)\",\n \"Set information for a message queue\"\n ],\n \"msg_stat_queue\": [\n \"array msg_stat_queue(resource queue)\",\n \"Returns information about a message queue\"\n ],\n \"msgfmt_create\": [\n \"MessageFormatter msgfmt_create( string $locale, string $pattern )\",\n \"* Create formatter.\"\n ],\n \"msgfmt_format\": [\n \"mixed msgfmt_format( MessageFormatter $nf, array $args )\",\n \"* Format a message.\"\n ],\n \"msgfmt_format_message\": [\n \"mixed msgfmt_format_message( string $locale, string $pattern, array $args )\",\n \"* Format a message.\"\n ],\n \"msgfmt_get_error_code\": [\n \"int msgfmt_get_error_code( MessageFormatter $nf )\",\n \"* Get formatter's last error code.\"\n ],\n \"msgfmt_get_error_message\": [\n \"string msgfmt_get_error_message( MessageFormatter $coll )\",\n \"* Get text description for formatter's last error code.\"\n ],\n \"msgfmt_get_locale\": [\n \"string msgfmt_get_locale(MessageFormatter $mf)\",\n \"* Get formatter locale.\"\n ],\n \"msgfmt_get_pattern\": [\n \"string msgfmt_get_pattern( MessageFormatter $mf )\",\n \"* Get formatter pattern.\"\n ],\n \"msgfmt_parse\": [\n \"array msgfmt_parse( MessageFormatter $nf, string $source )\",\n \"* Parse a message.\"\n ],\n \"msgfmt_set_pattern\": [\n \"bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )\",\n \"* Set formatter pattern.\"\n ],\n \"mssql_bind\": [\n \"bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])\",\n \"Adds a parameter to a stored procedure or a remote stored procedure\"\n ],\n \"mssql_close\": [\n \"bool mssql_close([resource conn_id])\",\n \"Closes a connection to a MS-SQL server\"\n ],\n \"mssql_connect\": [\n \"int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])\",\n \"Establishes a connection to a MS-SQL server\"\n ],\n \"mssql_data_seek\": [\n \"bool mssql_data_seek(resource result_id, int offset)\",\n \"Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number\"\n ],\n \"mssql_execute\": [\n \"mixed mssql_execute(resource stmt [, bool skip_results = false])\",\n \"Executes a stored procedure on a MS-SQL server database\"\n ],\n \"mssql_fetch_array\": [\n \"array mssql_fetch_array(resource result_id [, int result_type])\",\n \"Returns an associative array of the current row in the result set specified by result_id\"\n ],\n \"mssql_fetch_assoc\": [\n \"array mssql_fetch_assoc(resource result_id)\",\n \"Returns an associative array of the current row in the result set specified by result_id\"\n ],\n \"mssql_fetch_batch\": [\n \"int mssql_fetch_batch(resource result_index)\",\n \"Returns the next batch of records\"\n ],\n \"mssql_fetch_field\": [\n \"object mssql_fetch_field(resource result_id [, int offset])\",\n \"Gets information about certain fields in a query result\"\n ],\n \"mssql_fetch_object\": [\n \"object mssql_fetch_object(resource result_id)\",\n \"Returns a pseudo-object of the current row in the result set specified by result_id\"\n ],\n \"mssql_fetch_row\": [\n \"array mssql_fetch_row(resource result_id)\",\n \"Returns an array of the current row in the result set specified by result_id\"\n ],\n \"mssql_field_length\": [\n \"int mssql_field_length(resource result_id [, int offset])\",\n \"Get the length of a MS-SQL field\"\n ],\n \"mssql_field_name\": [\n \"string mssql_field_name(resource result_id [, int offset])\",\n \"Returns the name of the field given by offset in the result set given by result_id\"\n ],\n \"mssql_field_seek\": [\n \"bool mssql_field_seek(resource result_id, int offset)\",\n \"Seeks to the specified field offset\"\n ],\n \"mssql_field_type\": [\n \"string mssql_field_type(resource result_id [, int offset])\",\n \"Returns the type of a field\"\n ],\n \"mssql_free_result\": [\n \"bool mssql_free_result(resource result_index)\",\n \"Free a MS-SQL result index\"\n ],\n \"mssql_free_statement\": [\n \"bool mssql_free_statement(resource result_index)\",\n \"Free a MS-SQL statement index\"\n ],\n \"mssql_get_last_message\": [\n \"string mssql_get_last_message(void)\",\n \"Gets the last message from the MS-SQL server\"\n ],\n \"mssql_guid_string\": [\n \"string mssql_guid_string(string binary [,bool short_format])\",\n \"Converts a 16 byte binary GUID to a string\"\n ],\n \"mssql_init\": [\n \"int mssql_init(string sp_name [, resource conn_id])\",\n \"Initializes a stored procedure or a remote stored procedure\"\n ],\n \"mssql_min_error_severity\": [\n \"void mssql_min_error_severity(int severity)\",\n \"Sets the lower error severity\"\n ],\n \"mssql_min_message_severity\": [\n \"void mssql_min_message_severity(int severity)\",\n \"Sets the lower message severity\"\n ],\n \"mssql_next_result\": [\n \"bool mssql_next_result(resource result_id)\",\n \"Move the internal result pointer to the next result\"\n ],\n \"mssql_num_fields\": [\n \"int mssql_num_fields(resource mssql_result_index)\",\n \"Returns the number of fields fetched in from the result id specified\"\n ],\n \"mssql_num_rows\": [\n \"int mssql_num_rows(resource mssql_result_index)\",\n \"Returns the number of rows fetched in from the result id specified\"\n ],\n \"mssql_pconnect\": [\n \"int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])\",\n \"Establishes a persistent connection to a MS-SQL server\"\n ],\n \"mssql_query\": [\n \"resource mssql_query(string query [, resource conn_id [, int batch_size]])\",\n \"Perform an SQL query on a MS-SQL server database\"\n ],\n \"mssql_result\": [\n \"string mssql_result(resource result_id, int row, mixed field)\",\n \"Returns the contents of one cell from a MS-SQL result set\"\n ],\n \"mssql_rows_affected\": [\n \"int mssql_rows_affected(resource conn_id)\",\n \"Returns the number of records affected by the query\"\n ],\n \"mssql_select_db\": [\n \"bool mssql_select_db(string database_name [, resource conn_id])\",\n \"Select a MS-SQL database\"\n ],\n \"mt_getrandmax\": [\n \"int mt_getrandmax(void)\",\n \"Returns the maximum value a random number from Mersenne Twister can have\"\n ],\n \"mt_rand\": [\n \"int mt_rand([int min, int max])\",\n \"Returns a random number from Mersenne Twister\"\n ],\n \"mt_srand\": [\n \"void mt_srand([int seed])\",\n \"Seeds Mersenne Twister random number generator\"\n ],\n \"mysql_affected_rows\": [\n \"int mysql_affected_rows([int link_identifier])\",\n \"Gets number of affected rows in previous MySQL operation\"\n ],\n \"mysql_client_encoding\": [\n \"string mysql_client_encoding([int link_identifier])\",\n \"Returns the default character set for the current connection\"\n ],\n \"mysql_close\": [\n \"bool mysql_close([int link_identifier])\",\n \"Close a MySQL connection\"\n ],\n \"mysql_connect\": [\n \"resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])\",\n \"Opens a connection to a MySQL Server\"\n ],\n \"mysql_create_db\": [\n \"bool mysql_create_db(string database_name [, int link_identifier])\",\n \"Create a MySQL database\"\n ],\n \"mysql_data_seek\": [\n \"bool mysql_data_seek(resource result, int row_number)\",\n \"Move internal result pointer\"\n ],\n \"mysql_db_query\": [\n \"resource mysql_db_query(string database_name, string query [, int link_identifier])\",\n \"Sends an SQL query to MySQL\"\n ],\n \"mysql_drop_db\": [\n \"bool mysql_drop_db(string database_name [, int link_identifier])\",\n \"Drops (delete) a MySQL database\"\n ],\n \"mysql_errno\": [\n \"int mysql_errno([int link_identifier])\",\n \"Returns the number of the error message from previous MySQL operation\"\n ],\n \"mysql_error\": [\n \"string mysql_error([int link_identifier])\",\n \"Returns the text of the error message from previous MySQL operation\"\n ],\n \"mysql_escape_string\": [\n \"string mysql_escape_string(string to_be_escaped)\",\n \"Escape string for mysql query\"\n ],\n \"mysql_fetch_array\": [\n \"array mysql_fetch_array(resource result [, int result_type])\",\n \"Fetch a result row as an array (associative, numeric or both)\"\n ],\n \"mysql_fetch_assoc\": [\n \"array mysql_fetch_assoc(resource result)\",\n \"Fetch a result row as an associative array\"\n ],\n \"mysql_fetch_field\": [\n \"object mysql_fetch_field(resource result [, int field_offset])\",\n \"Gets column information from a result and return as an object\"\n ],\n \"mysql_fetch_lengths\": [\n \"array mysql_fetch_lengths(resource result)\",\n \"Gets max data size of each column in a result\"\n ],\n \"mysql_fetch_object\": [\n \"object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])\",\n \"Fetch a result row as an object\"\n ],\n \"mysql_fetch_row\": [\n \"array mysql_fetch_row(resource result)\",\n \"Gets a result row as an enumerated array\"\n ],\n \"mysql_field_flags\": [\n \"string mysql_field_flags(resource result, int field_offset)\",\n \"Gets the flags associated with the specified field in a result\"\n ],\n \"mysql_field_len\": [\n \"int mysql_field_len(resource result, int field_offset)\",\n \"Returns the length of the specified field\"\n ],\n \"mysql_field_name\": [\n \"string mysql_field_name(resource result, int field_index)\",\n \"Gets the name of the specified field in a result\"\n ],\n \"mysql_field_seek\": [\n \"bool mysql_field_seek(resource result, int field_offset)\",\n \"Sets result pointer to a specific field offset\"\n ],\n \"mysql_field_table\": [\n \"string mysql_field_table(resource result, int field_offset)\",\n \"Gets name of the table the specified field is in\"\n ],\n \"mysql_field_type\": [\n \"string mysql_field_type(resource result, int field_offset)\",\n \"Gets the type of the specified field in a result\"\n ],\n \"mysql_free_result\": [\n \"bool mysql_free_result(resource result)\",\n \"Free result memory\"\n ],\n \"mysql_get_client_info\": [\n \"string mysql_get_client_info(void)\",\n \"Returns a string that represents the client library version\"\n ],\n \"mysql_get_host_info\": [\n \"string mysql_get_host_info([int link_identifier])\",\n \"Returns a string describing the type of connection in use, including the server host name\"\n ],\n \"mysql_get_proto_info\": [\n \"int mysql_get_proto_info([int link_identifier])\",\n \"Returns the protocol version used by current connection\"\n ],\n \"mysql_get_server_info\": [\n \"string mysql_get_server_info([int link_identifier])\",\n \"Returns a string that represents the server version number\"\n ],\n \"mysql_info\": [\n \"string mysql_info([int link_identifier])\",\n \"Returns a string containing information about the most recent query\"\n ],\n \"mysql_insert_id\": [\n \"int mysql_insert_id([int link_identifier])\",\n \"Gets the ID generated from the previous INSERT operation\"\n ],\n \"mysql_list_dbs\": [\n \"resource mysql_list_dbs([int link_identifier])\",\n \"List databases available on a MySQL server\"\n ],\n \"mysql_list_fields\": [\n \"resource mysql_list_fields(string database_name, string table_name [, int link_identifier])\",\n \"List MySQL result fields\"\n ],\n \"mysql_list_processes\": [\n \"resource mysql_list_processes([int link_identifier])\",\n \"Returns a result set describing the current server threads\"\n ],\n \"mysql_list_tables\": [\n \"resource mysql_list_tables(string database_name [, int link_identifier])\",\n \"List tables in a MySQL database\"\n ],\n \"mysql_num_fields\": [\n \"int mysql_num_fields(resource result)\",\n \"Gets number of fields in a result\"\n ],\n \"mysql_num_rows\": [\n \"int mysql_num_rows(resource result)\",\n \"Gets number of rows in a result\"\n ],\n \"mysql_pconnect\": [\n \"resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])\",\n \"Opens a persistent connection to a MySQL Server\"\n ],\n \"mysql_ping\": [\n \"bool mysql_ping([int link_identifier])\",\n \"Ping a server connection. If no connection then reconnect.\"\n ],\n \"mysql_query\": [\n \"resource mysql_query(string query [, int link_identifier])\",\n \"Sends an SQL query to MySQL\"\n ],\n \"mysql_real_escape_string\": [\n \"string mysql_real_escape_string(string to_be_escaped [, int link_identifier])\",\n \"Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection\"\n ],\n \"mysql_result\": [\n \"mixed mysql_result(resource result, int row [, mixed field])\",\n \"Gets result data\"\n ],\n \"mysql_select_db\": [\n \"bool mysql_select_db(string database_name [, int link_identifier])\",\n \"Selects a MySQL database\"\n ],\n \"mysql_set_charset\": [\n \"bool mysql_set_charset(string csname [, int link_identifier])\",\n \"sets client character set\"\n ],\n \"mysql_stat\": [\n \"string mysql_stat([int link_identifier])\",\n \"Returns a string containing status information\"\n ],\n \"mysql_thread_id\": [\n \"int mysql_thread_id([int link_identifier])\",\n \"Returns the thread id of current connection\"\n ],\n \"mysql_unbuffered_query\": [\n \"resource mysql_unbuffered_query(string query [, int link_identifier])\",\n \"Sends an SQL query to MySQL, without fetching and buffering the result rows\"\n ],\n \"mysqli_affected_rows\": [\n \"mixed mysqli_affected_rows(object link)\",\n \"Get number of affected rows in previous MySQL operation\"\n ],\n \"mysqli_autocommit\": [\n \"bool mysqli_autocommit(object link, bool mode)\",\n \"Turn auto commit on or of\"\n ],\n \"mysqli_cache_stats\": [\n \"array mysqli_cache_stats(void)\",\n \"Returns statistics about the zval cache\"\n ],\n \"mysqli_change_user\": [\n \"bool mysqli_change_user(object link, string user, string password, string database)\",\n \"Change logged-in user of the active connection\"\n ],\n \"mysqli_character_set_name\": [\n \"string mysqli_character_set_name(object link)\",\n \"Returns the name of the character set used for this connection\"\n ],\n \"mysqli_close\": [\n \"bool mysqli_close(object link)\",\n \"Close connection\"\n ],\n \"mysqli_commit\": [\n \"bool mysqli_commit(object link)\",\n \"Commit outstanding actions and close transaction\"\n ],\n \"mysqli_connect\": [\n \"object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])\",\n \"Open a connection to a mysql server\"\n ],\n \"mysqli_connect_errno\": [\n \"int mysqli_connect_errno(void)\",\n \"Returns the numerical value of the error message from last connect command\"\n ],\n \"mysqli_connect_error\": [\n \"string mysqli_connect_error(void)\",\n \"Returns the text of the error message from previous MySQL operation\"\n ],\n \"mysqli_data_seek\": [\n \"bool mysqli_data_seek(object result, int offset)\",\n \"Move internal result pointer\"\n ],\n \"mysqli_debug\": [\n \"void mysqli_debug(string debug)\",\n \"\"\n ],\n \"mysqli_dump_debug_info\": [\n \"bool mysqli_dump_debug_info(object link)\",\n \"\"\n ],\n \"mysqli_embedded_server_end\": [\n \"void mysqli_embedded_server_end(void)\",\n \"\"\n ],\n \"mysqli_embedded_server_start\": [\n \"bool mysqli_embedded_server_start(bool start, array arguments, array groups)\",\n \"initialize and start embedded server\"\n ],\n \"mysqli_errno\": [\n \"int mysqli_errno(object link)\",\n \"Returns the numerical value of the error message from previous MySQL operation\"\n ],\n \"mysqli_error\": [\n \"string mysqli_error(object link)\",\n \"Returns the text of the error message from previous MySQL operation\"\n ],\n \"mysqli_fetch_all\": [\n \"mixed mysqli_fetch_all (object result [,int resulttype])\",\n \"Fetches all result rows as an associative array, a numeric array, or both\"\n ],\n \"mysqli_fetch_array\": [\n \"mixed mysqli_fetch_array (object result [,int resulttype])\",\n \"Fetch a result row as an associative array, a numeric array, or both\"\n ],\n \"mysqli_fetch_assoc\": [\n \"mixed mysqli_fetch_assoc (object result)\",\n \"Fetch a result row as an associative array\"\n ],\n \"mysqli_fetch_field\": [\n \"mixed mysqli_fetch_field (object result)\",\n \"Get column information from a result and return as an object\"\n ],\n \"mysqli_fetch_field_direct\": [\n \"mixed mysqli_fetch_field_direct (object result, int offset)\",\n \"Fetch meta-data for a single field\"\n ],\n \"mysqli_fetch_fields\": [\n \"mixed mysqli_fetch_fields (object result)\",\n \"Return array of objects containing field meta-data\"\n ],\n \"mysqli_fetch_lengths\": [\n \"mixed mysqli_fetch_lengths (object result)\",\n \"Get the length of each output in a result\"\n ],\n \"mysqli_fetch_object\": [\n \"mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])\",\n \"Fetch a result row as an object\"\n ],\n \"mysqli_fetch_row\": [\n \"array mysqli_fetch_row (object result)\",\n \"Get a result row as an enumerated array\"\n ],\n \"mysqli_field_count\": [\n \"int mysqli_field_count(object link)\",\n \"Fetch the number of fields returned by the last query for the given link\"\n ],\n \"mysqli_field_seek\": [\n \"int mysqli_field_seek(object result, int fieldnr)\",\n \"Set result pointer to a specified field offset\"\n ],\n \"mysqli_field_tell\": [\n \"int mysqli_field_tell(object result)\",\n \"Get current field offset of result pointer\"\n ],\n \"mysqli_free_result\": [\n \"void mysqli_free_result(object result)\",\n \"Free query result memory for the given result handle\"\n ],\n \"mysqli_get_charset\": [\n \"object mysqli_get_charset(object link)\",\n \"returns a character set object\"\n ],\n \"mysqli_get_client_info\": [\n \"string mysqli_get_client_info(void)\",\n \"Get MySQL client info\"\n ],\n \"mysqli_get_client_stats\": [\n \"array mysqli_get_client_stats(void)\",\n \"Returns statistics about the zval cache\"\n ],\n \"mysqli_get_client_version\": [\n \"int mysqli_get_client_version(void)\",\n \"Get MySQL client info\"\n ],\n \"mysqli_get_connection_stats\": [\n \"array mysqli_get_connection_stats(void)\",\n \"Returns statistics about the zval cache\"\n ],\n \"mysqli_get_host_info\": [\n \"string mysqli_get_host_info (object link)\",\n \"Get MySQL host info\"\n ],\n \"mysqli_get_proto_info\": [\n \"int mysqli_get_proto_info(object link)\",\n \"Get MySQL protocol information\"\n ],\n \"mysqli_get_server_info\": [\n \"string mysqli_get_server_info(object link)\",\n \"Get MySQL server info\"\n ],\n \"mysqli_get_server_version\": [\n \"int mysqli_get_server_version(object link)\",\n \"Return the MySQL version for the server referenced by the given link\"\n ],\n \"mysqli_get_warnings\": [\n \"object mysqli_get_warnings(object link) */\",\n \"PHP_FUNCTION(mysqli_get_warnings) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \\\"O\\\", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \\\"mysqli_link\\\", MYSQLI_STATUS_VALID); if (mysql_warning_count(mysql->mysql)) { w = php_get_warnings(mysql->mysql TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}\"\n ],\n \"mysqli_info\": [\n \"string mysqli_info(object link)\",\n \"Get information about the most recent query\"\n ],\n \"mysqli_init\": [\n \"resource mysqli_init(void)\",\n \"Initialize mysqli and return a resource for use with mysql_real_connect\"\n ],\n \"mysqli_insert_id\": [\n \"mixed mysqli_insert_id(object link)\",\n \"Get the ID generated from the previous INSERT operation\"\n ],\n \"mysqli_kill\": [\n \"bool mysqli_kill(object link, int processid)\",\n \"Kill a mysql process on the server\"\n ],\n \"mysqli_link_construct\": [\n \"object mysqli_link_construct()\",\n \"\"\n ],\n \"mysqli_more_results\": [\n \"bool mysqli_more_results(object link)\",\n \"check if there any more query results from a multi query\"\n ],\n \"mysqli_multi_query\": [\n \"bool mysqli_multi_query(object link, string query)\",\n \"allows to execute multiple queries\"\n ],\n \"mysqli_next_result\": [\n \"bool mysqli_next_result(object link)\",\n \"read next result from multi_query\"\n ],\n \"mysqli_num_fields\": [\n \"int mysqli_num_fields(object result)\",\n \"Get number of fields in result\"\n ],\n \"mysqli_num_rows\": [\n \"mixed mysqli_num_rows(object result)\",\n \"Get number of rows in result\"\n ],\n \"mysqli_options\": [\n \"bool mysqli_options(object link, int flags, mixed values)\",\n \"Set options\"\n ],\n \"mysqli_ping\": [\n \"bool mysqli_ping(object link)\",\n \"Ping a server connection or reconnect if there is no connection\"\n ],\n \"mysqli_poll\": [\n \"int mysqli_poll(array read, array write, array error, long sec [, long usec])\",\n \"Poll connections\"\n ],\n \"mysqli_prepare\": [\n \"mixed mysqli_prepare(object link, string query)\",\n \"Prepare a SQL statement for execution\"\n ],\n \"mysqli_query\": [\n \"mixed mysqli_query(object link, string query [,int resultmode]) */\",\n \"PHP_FUNCTION(mysqli_query) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQL_RES *result; char *query = NULL; unsigned int query_len; unsigned long resultmode = MYSQLI_STORE_RESULT; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \\\"Os|l\\\", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) { return; } if (!query_len) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \\\"Empty query\\\"); RETURN_FALSE; } if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \\\"Invalid value for resultmode\\\"); RETURN_FALSE; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \\\"mysqli_link\\\", MYSQLI_STATUS_VALID); MYSQLI_DISABLE_MQ; #ifdef MYSQLI_USE_MYSQLND if (resultmode & MYSQLI_ASYNC) { if (mysqli_async_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC; RETURN_TRUE; } #endif if (mysql_real_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } if (!mysql_field_count(mysql->mysql)) { /* no result set - not a SELECT\"\n ],\n \"mysqli_real_connect\": [\n \"bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])\",\n \"Open a connection to a mysql server\"\n ],\n \"mysqli_real_escape_string\": [\n \"string mysqli_real_escape_string(object link, string escapestr)\",\n \"Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection\"\n ],\n \"mysqli_real_query\": [\n \"bool mysqli_real_query(object link, string query)\",\n \"Binary-safe version of mysql_query()\"\n ],\n \"mysqli_reap_async_query\": [\n \"int mysqli_reap_async_query(object link)\",\n \"Poll connections\"\n ],\n \"mysqli_refresh\": [\n \"bool mysqli_refresh(object link, long options)\",\n \"Flush tables or caches, or reset replication server information\"\n ],\n \"mysqli_report\": [\n \"bool mysqli_report(int flags)\",\n \"sets report level\"\n ],\n \"mysqli_rollback\": [\n \"bool mysqli_rollback(object link)\",\n \"Undo actions from current transaction\"\n ],\n \"mysqli_select_db\": [\n \"bool mysqli_select_db(object link, string dbname)\",\n \"Select a MySQL database\"\n ],\n \"mysqli_set_charset\": [\n \"bool mysqli_set_charset(object link, string csname)\",\n \"sets client character set\"\n ],\n \"mysqli_set_local_infile_default\": [\n \"void mysqli_set_local_infile_default(object link)\",\n \"unsets user defined handler for load local infile command\"\n ],\n \"mysqli_set_local_infile_handler\": [\n \"bool mysqli_set_local_infile_handler(object link, callback read_func)\",\n \"Set callback functions for LOAD DATA LOCAL INFILE\"\n ],\n \"mysqli_sqlstate\": [\n \"string mysqli_sqlstate(object link)\",\n \"Returns the SQLSTATE error from previous MySQL operation\"\n ],\n \"mysqli_ssl_set\": [\n \"bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])\",\n \"\"\n ],\n \"mysqli_stat\": [\n \"mixed mysqli_stat(object link)\",\n \"Get current system status\"\n ],\n \"mysqli_stmt_affected_rows\": [\n \"mixed mysqli_stmt_affected_rows(object stmt)\",\n \"Return the number of rows affected in the last query for the given link\"\n ],\n \"mysqli_stmt_attr_get\": [\n \"int mysqli_stmt_attr_get(object stmt, long attr)\",\n \"\"\n ],\n \"mysqli_stmt_attr_set\": [\n \"int mysqli_stmt_attr_set(object stmt, long attr, long mode)\",\n \"\"\n ],\n \"mysqli_stmt_bind_param\": [\n \"bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])\",\n \"Bind variables to a prepared statement as parameters\"\n ],\n \"mysqli_stmt_bind_result\": [\n \"bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])\",\n \"Bind variables to a prepared statement for result storage\"\n ],\n \"mysqli_stmt_close\": [\n \"bool mysqli_stmt_close(object stmt)\",\n \"Close statement\"\n ],\n \"mysqli_stmt_data_seek\": [\n \"void mysqli_stmt_data_seek(object stmt, int offset)\",\n \"Move internal result pointer\"\n ],\n \"mysqli_stmt_errno\": [\n \"int mysqli_stmt_errno(object stmt)\",\n \"\"\n ],\n \"mysqli_stmt_error\": [\n \"string mysqli_stmt_error(object stmt)\",\n \"\"\n ],\n \"mysqli_stmt_execute\": [\n \"bool mysqli_stmt_execute(object stmt)\",\n \"Execute a prepared statement\"\n ],\n \"mysqli_stmt_fetch\": [\n \"mixed mysqli_stmt_fetch(object stmt)\",\n \"Fetch results from a prepared statement into the bound variables\"\n ],\n \"mysqli_stmt_field_count\": [\n \"int mysqli_stmt_field_count(object stmt) {\",\n \"Return the number of result columns for the given statement\"\n ],\n \"mysqli_stmt_free_result\": [\n \"void mysqli_stmt_free_result(object stmt)\",\n \"Free stored result memory for the given statement handle\"\n ],\n \"mysqli_stmt_get_result\": [\n \"object mysqli_stmt_get_result(object link)\",\n \"Buffer result set on client\"\n ],\n \"mysqli_stmt_get_warnings\": [\n \"object mysqli_stmt_get_warnings(object link) */\",\n \"PHP_FUNCTION(mysqli_stmt_get_warnings) { MY_STMT *stmt; zval *stmt_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \\\"O\\\", &stmt_link, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, \\\"mysqli_stmt\\\", MYSQLI_STATUS_VALID); if (mysqli_stmt_warning_count(stmt->stmt)) { w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}\"\n ],\n \"mysqli_stmt_init\": [\n \"mixed mysqli_stmt_init(object link)\",\n \"Initialize statement object\"\n ],\n \"mysqli_stmt_insert_id\": [\n \"mixed mysqli_stmt_insert_id(object stmt)\",\n \"Get the ID generated from the previous INSERT operation\"\n ],\n \"mysqli_stmt_next_result\": [\n \"bool mysqli_stmt_next_result(object link)\",\n \"read next result from multi_query\"\n ],\n \"mysqli_stmt_num_rows\": [\n \"mixed mysqli_stmt_num_rows(object stmt)\",\n \"Return the number of rows in statements result set\"\n ],\n \"mysqli_stmt_param_count\": [\n \"int mysqli_stmt_param_count(object stmt)\",\n \"Return the number of parameter for the given statement\"\n ],\n \"mysqli_stmt_prepare\": [\n \"bool mysqli_stmt_prepare(object stmt, string query)\",\n \"prepare server side statement with query\"\n ],\n \"mysqli_stmt_reset\": [\n \"bool mysqli_stmt_reset(object stmt)\",\n \"reset a prepared statement\"\n ],\n \"mysqli_stmt_result_metadata\": [\n \"mixed mysqli_stmt_result_metadata(object stmt)\",\n \"return result set from statement\"\n ],\n \"mysqli_stmt_send_long_data\": [\n \"bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)\",\n \"\"\n ],\n \"mysqli_stmt_sqlstate\": [\n \"string mysqli_stmt_sqlstate(object stmt)\",\n \"\"\n ],\n \"mysqli_stmt_store_result\": [\n \"bool mysqli_stmt_store_result(stmt)\",\n \"\"\n ],\n \"mysqli_store_result\": [\n \"object mysqli_store_result(object link)\",\n \"Buffer result set on client\"\n ],\n \"mysqli_thread_id\": [\n \"int mysqli_thread_id(object link)\",\n \"Return the current thread ID\"\n ],\n \"mysqli_thread_safe\": [\n \"bool mysqli_thread_safe(void)\",\n \"Return whether thread safety is given or not\"\n ],\n \"mysqli_use_result\": [\n \"mixed mysqli_use_result(object link)\",\n \"Directly retrieve query results - do not buffer results on client side\"\n ],\n \"mysqli_warning_count\": [\n \"int mysqli_warning_count (object link)\",\n \"Return number of warnings from the last query for the given link\"\n ],\n \"natcasesort\": [\n \"void natcasesort(array &array_arg)\",\n \"Sort an array using case-insensitive natural sort\"\n ],\n \"natsort\": [\n \"void natsort(array &array_arg)\",\n \"Sort an array using natural sort\"\n ],\n \"next\": [\n \"mixed next(array array_arg)\",\n \"Move array argument's internal pointer to the next element and return it\"\n ],\n \"ngettext\": [\n \"string ngettext(string MSGID1, string MSGID2, int N)\",\n \"Plural version of gettext()\"\n ],\n \"nl2br\": [\n \"string nl2br(string str [, bool is_xhtml])\",\n \"Converts newlines to HTML line breaks\"\n ],\n \"nl_langinfo\": [\n \"string nl_langinfo(int item)\",\n \"Query language and locale information\"\n ],\n \"normalizer_is_normalize\": [\n \"bool normalizer_is_normalize( string $input [, string $form = FORM_C] )\",\n \"* Test if a string is in a given normalization form.\"\n ],\n \"normalizer_normalize\": [\n \"string normalizer_normalize( string $input [, string $form = FORM_C] )\",\n \"* Normalize a string.\"\n ],\n \"nsapi_request_headers\": [\n \"array nsapi_request_headers(void)\",\n \"Get all headers from the request\"\n ],\n \"nsapi_response_headers\": [\n \"array nsapi_response_headers(void)\",\n \"Get all headers from the response\"\n ],\n \"nsapi_virtual\": [\n \"bool nsapi_virtual(string uri)\",\n \"Perform an NSAPI sub-request\"\n ],\n \"number_format\": [\n \"string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])\",\n \"Formats a number with grouped thousands\"\n ],\n \"numfmt_create\": [\n \"NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )\",\n \"* Create number formatter.\"\n ],\n \"numfmt_format\": [\n \"mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )\",\n \"* Format a number.\"\n ],\n \"numfmt_format_currency\": [\n \"mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )\",\n \"* Format a number as currency.\"\n ],\n \"numfmt_get_attribute\": [\n \"mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )\",\n \"* Get formatter attribute value.\"\n ],\n \"numfmt_get_error_code\": [\n \"int numfmt_get_error_code( NumberFormatter $nf )\",\n \"* Get formatter's last error code.\"\n ],\n \"numfmt_get_error_message\": [\n \"string numfmt_get_error_message( NumberFormatter $nf )\",\n \"* Get text description for formatter's last error code.\"\n ],\n \"numfmt_get_locale\": [\n \"string numfmt_get_locale( NumberFormatter $nf[, int type] )\",\n \"* Get formatter locale.\"\n ],\n \"numfmt_get_pattern\": [\n \"string numfmt_get_pattern( NumberFormatter $nf )\",\n \"* Get formatter pattern.\"\n ],\n \"numfmt_get_symbol\": [\n \"string numfmt_get_symbol( NumberFormatter $nf, int $attr )\",\n \"* Get formatter symbol value.\"\n ],\n \"numfmt_get_text_attribute\": [\n \"string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )\",\n \"* Get formatter attribute value.\"\n ],\n \"numfmt_parse\": [\n \"mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])\",\n \"* Parse a number.\"\n ],\n \"numfmt_parse_currency\": [\n \"double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )\",\n \"* Parse a number as currency.\"\n ],\n \"numfmt_parse_message\": [\n \"array numfmt_parse_message( string $locale, string $pattern, string $source )\",\n \"* Parse a message.\"\n ],\n \"numfmt_set_attribute\": [\n \"bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )\",\n \"* Get formatter attribute value.\"\n ],\n \"numfmt_set_pattern\": [\n \"bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )\",\n \"* Set formatter pattern.\"\n ],\n \"numfmt_set_symbol\": [\n \"bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )\",\n \"* Set formatter symbol value.\"\n ],\n \"numfmt_set_text_attribute\": [\n \"bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )\",\n \"* Get formatter attribute value.\"\n ],\n \"ob_clean\": [\n \"bool ob_clean(void)\",\n \"Clean (delete) the current output buffer\"\n ],\n \"ob_end_clean\": [\n \"bool ob_end_clean(void)\",\n \"Clean the output buffer, and delete current output buffer\"\n ],\n \"ob_end_flush\": [\n \"bool ob_end_flush(void)\",\n \"Flush (send) the output buffer, and delete current output buffer\"\n ],\n \"ob_flush\": [\n \"bool ob_flush(void)\",\n \"Flush (send) contents of the output buffer. The last buffer content is sent to next buffer\"\n ],\n \"ob_get_clean\": [\n \"bool ob_get_clean(void)\",\n \"Get current buffer contents and delete current output buffer\"\n ],\n \"ob_get_contents\": [\n \"string ob_get_contents(void)\",\n \"Return the contents of the output buffer\"\n ],\n \"ob_get_flush\": [\n \"bool ob_get_flush(void)\",\n \"Get current buffer contents, flush (send) the output buffer, and delete current output buffer\"\n ],\n \"ob_get_length\": [\n \"int ob_get_length(void)\",\n \"Return the length of the output buffer\"\n ],\n \"ob_get_level\": [\n \"int ob_get_level(void)\",\n \"Return the nesting level of the output buffer\"\n ],\n \"ob_get_status\": [\n \"false|array ob_get_status([bool full_status])\",\n \"Return the status of the active or all output buffers\"\n ],\n \"ob_gzhandler\": [\n \"string ob_gzhandler(string str, int mode)\",\n \"Encode str based on accept-encoding setting - designed to be called from ob_start()\"\n ],\n \"ob_iconv_handler\": [\n \"string ob_iconv_handler(string contents, int status)\",\n \"Returns str in output buffer converted to the iconv.output_encoding character set\"\n ],\n \"ob_implicit_flush\": [\n \"void ob_implicit_flush([int flag])\",\n \"Turn implicit flush on/off and is equivalent to calling flush() after every output call\"\n ],\n \"ob_list_handlers\": [\n \"false|array ob_list_handlers()\",\n \"* List all output_buffers in an array\"\n ],\n \"ob_start\": [\n \"bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])\",\n \"Turn on Output Buffering (specifying an optional output handler).\"\n ],\n \"oci_bind_array_by_name\": [\n \"bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])\",\n \"Bind a PHP array to an Oracle PL/SQL type by name\"\n ],\n \"oci_bind_by_name\": [\n \"bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])\",\n \"Bind a PHP variable to an Oracle placeholder by name\"\n ],\n \"oci_cancel\": [\n \"bool oci_cancel(resource stmt)\",\n \"Cancel reading from a cursor\"\n ],\n \"oci_close\": [\n \"bool oci_close(resource connection)\",\n \"Disconnect from database\"\n ],\n \"oci_collection_append\": [\n \"bool oci_collection_append(string value)\",\n \"Append an object to the collection\"\n ],\n \"oci_collection_assign\": [\n \"bool oci_collection_assign(object from)\",\n \"Assign a collection from another existing collection\"\n ],\n \"oci_collection_element_assign\": [\n \"bool oci_collection_element_assign(int index, string val)\",\n \"Assign element val to collection at index ndx\"\n ],\n \"oci_collection_element_get\": [\n \"string oci_collection_element_get(int ndx)\",\n \"Retrieve the value at collection index ndx\"\n ],\n \"oci_collection_max\": [\n \"int oci_collection_max()\",\n \"Return the max value of a collection. For a varray this is the maximum length of the array\"\n ],\n \"oci_collection_size\": [\n \"int oci_collection_size()\",\n \"Return the size of a collection\"\n ],\n \"oci_collection_trim\": [\n \"bool oci_collection_trim(int num)\",\n \"Trim num elements from the end of a collection\"\n ],\n \"oci_commit\": [\n \"bool oci_commit(resource connection)\",\n \"Commit the current context\"\n ],\n \"oci_connect\": [\n \"resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])\",\n \"Connect to an Oracle database and log on. Returns a new session.\"\n ],\n \"oci_define_by_name\": [\n \"bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])\",\n \"Define a PHP variable to an Oracle column by name\"\n ],\n \"oci_error\": [\n \"array oci_error([resource stmt|connection|global])\",\n \"Return the last error of stmt|connection|global. If no error happened returns false.\"\n ],\n \"oci_execute\": [\n \"bool oci_execute(resource stmt [, int mode])\",\n \"Execute a parsed statement\"\n ],\n \"oci_fetch\": [\n \"bool oci_fetch(resource stmt)\",\n \"Prepare a new row of data for reading\"\n ],\n \"oci_fetch_all\": [\n \"int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])\",\n \"Fetch all rows of result data into an array\"\n ],\n \"oci_fetch_array\": [\n \"array oci_fetch_array( resource stmt [, int mode ])\",\n \"Fetch a result row as an array\"\n ],\n \"oci_fetch_assoc\": [\n \"array oci_fetch_assoc( resource stmt )\",\n \"Fetch a result row as an associative array\"\n ],\n \"oci_fetch_object\": [\n \"object oci_fetch_object( resource stmt )\",\n \"Fetch a result row as an object\"\n ],\n \"oci_fetch_row\": [\n \"array oci_fetch_row( resource stmt )\",\n \"Fetch a result row as an enumerated array\"\n ],\n \"oci_field_is_null\": [\n \"bool oci_field_is_null(resource stmt, int col)\",\n \"Tell whether a column is NULL\"\n ],\n \"oci_field_name\": [\n \"string oci_field_name(resource stmt, int col)\",\n \"Tell the name of a column\"\n ],\n \"oci_field_precision\": [\n \"int oci_field_precision(resource stmt, int col)\",\n \"Tell the precision of a column\"\n ],\n \"oci_field_scale\": [\n \"int oci_field_scale(resource stmt, int col)\",\n \"Tell the scale of a column\"\n ],\n \"oci_field_size\": [\n \"int oci_field_size(resource stmt, int col)\",\n \"Tell the maximum data size of a column\"\n ],\n \"oci_field_type\": [\n \"mixed oci_field_type(resource stmt, int col)\",\n \"Tell the data type of a column\"\n ],\n \"oci_field_type_raw\": [\n \"int oci_field_type_raw(resource stmt, int col)\",\n \"Tell the raw oracle data type of a column\"\n ],\n \"oci_free_collection\": [\n \"bool oci_free_collection()\",\n \"Deletes collection object\"\n ],\n \"oci_free_descriptor\": [\n \"bool oci_free_descriptor()\",\n \"Deletes large object description\"\n ],\n \"oci_free_statement\": [\n \"bool oci_free_statement(resource stmt)\",\n \"Free all resources associated with a statement\"\n ],\n \"oci_internal_debug\": [\n \"void oci_internal_debug(int onoff)\",\n \"Toggle internal debugging output for the OCI extension\"\n ],\n \"oci_lob_append\": [\n \"bool oci_lob_append( object lob )\",\n \"Appends data from a LOB to another LOB\"\n ],\n \"oci_lob_close\": [\n \"bool oci_lob_close()\",\n \"Closes lob descriptor\"\n ],\n \"oci_lob_copy\": [\n \"bool oci_lob_copy( object lob_to, object lob_from [, int length ] )\",\n \"Copies data from a LOB to another LOB\"\n ],\n \"oci_lob_eof\": [\n \"bool oci_lob_eof()\",\n \"Checks if EOF is reached\"\n ],\n \"oci_lob_erase\": [\n \"int oci_lob_erase( [ int offset [, int length ] ] )\",\n \"Erases a specified portion of the internal LOB, starting at a specified offset\"\n ],\n \"oci_lob_export\": [\n \"bool oci_lob_export([string filename [, int start [, int length]]])\",\n \"Writes a large object into a file\"\n ],\n \"oci_lob_flush\": [\n \"bool oci_lob_flush( [ int flag ] )\",\n \"Flushes the LOB buffer\"\n ],\n \"oci_lob_import\": [\n \"bool oci_lob_import( string filename )\",\n \"Loads file into a LOB\"\n ],\n \"oci_lob_is_equal\": [\n \"bool oci_lob_is_equal( object lob1, object lob2 )\",\n \"Tests to see if two LOB/FILE locators are equal\"\n ],\n \"oci_lob_load\": [\n \"string oci_lob_load()\",\n \"Loads a large object\"\n ],\n \"oci_lob_read\": [\n \"string oci_lob_read( int length )\",\n \"Reads particular part of a large object\"\n ],\n \"oci_lob_rewind\": [\n \"bool oci_lob_rewind()\",\n \"Rewind pointer of a LOB\"\n ],\n \"oci_lob_save\": [\n \"bool oci_lob_save( string data [, int offset ])\",\n \"Saves a large object\"\n ],\n \"oci_lob_seek\": [\n \"bool oci_lob_seek( int offset [, int whence ])\",\n \"Moves the pointer of a LOB\"\n ],\n \"oci_lob_size\": [\n \"int oci_lob_size()\",\n \"Returns size of a large object\"\n ],\n \"oci_lob_tell\": [\n \"int oci_lob_tell()\",\n \"Tells LOB pointer position\"\n ],\n \"oci_lob_truncate\": [\n \"bool oci_lob_truncate( [ int length ])\",\n \"Truncates a LOB\"\n ],\n \"oci_lob_write\": [\n \"int oci_lob_write( string string [, int length ])\",\n \"Writes data to current position of a LOB\"\n ],\n \"oci_lob_write_temporary\": [\n \"bool oci_lob_write_temporary(string var [, int lob_type])\",\n \"Writes temporary blob\"\n ],\n \"oci_new_collection\": [\n \"object oci_new_collection(resource connection, string tdo [, string schema])\",\n \"Initialize a new collection\"\n ],\n \"oci_new_connect\": [\n \"resource oci_new_connect(string user, string pass [, string db])\",\n \"Connect to an Oracle database and log on. Returns a new session.\"\n ],\n \"oci_new_cursor\": [\n \"resource oci_new_cursor(resource connection)\",\n \"Return a new cursor (Statement-Handle) - use this to bind ref-cursors!\"\n ],\n \"oci_new_descriptor\": [\n \"object oci_new_descriptor(resource connection [, int type])\",\n \"Initialize a new empty descriptor LOB/FILE (LOB is default)\"\n ],\n \"oci_num_fields\": [\n \"int oci_num_fields(resource stmt)\",\n \"Return the number of result columns in a statement\"\n ],\n \"oci_num_rows\": [\n \"int oci_num_rows(resource stmt)\",\n \"Return the row count of an OCI statement\"\n ],\n \"oci_parse\": [\n \"resource oci_parse(resource connection, string query)\",\n \"Parse a query and return a statement\"\n ],\n \"oci_password_change\": [\n \"bool oci_password_change(resource connection, string username, string old_password, string new_password)\",\n \"Changes the password of an account\"\n ],\n \"oci_pconnect\": [\n \"resource oci_pconnect(string user, string pass [, string db [, string charset ]])\",\n \"Connect to an Oracle database using a persistent connection and log on. Returns a new session.\"\n ],\n \"oci_result\": [\n \"string oci_result(resource stmt, mixed column)\",\n \"Return a single column of result data\"\n ],\n \"oci_rollback\": [\n \"bool oci_rollback(resource connection)\",\n \"Rollback the current context\"\n ],\n \"oci_server_version\": [\n \"string oci_server_version(resource connection)\",\n \"Return a string containing server version information\"\n ],\n \"oci_set_action\": [\n \"bool oci_set_action(resource connection, string value)\",\n \"Sets the action attribute on the connection\"\n ],\n \"oci_set_client_identifier\": [\n \"bool oci_set_client_identifier(resource connection, string value)\",\n \"Sets the client identifier attribute on the connection\"\n ],\n \"oci_set_client_info\": [\n \"bool oci_set_client_info(resource connection, string value)\",\n \"Sets the client info attribute on the connection\"\n ],\n \"oci_set_edition\": [\n \"bool oci_set_edition(string value)\",\n \"Sets the edition attribute for all subsequent connections created\"\n ],\n \"oci_set_module_name\": [\n \"bool oci_set_module_name(resource connection, string value)\",\n \"Sets the module attribute on the connection\"\n ],\n \"oci_set_prefetch\": [\n \"bool oci_set_prefetch(resource stmt, int prefetch_rows)\",\n \"Sets the number of rows to be prefetched on execute to prefetch_rows for stmt\"\n ],\n \"oci_statement_type\": [\n \"string oci_statement_type(resource stmt)\",\n \"Return the query type of an OCI statement\"\n ],\n \"ocifetchinto\": [\n \"int ocifetchinto(resource stmt, array &output [, int mode])\",\n \"Fetch a row of result data into an array\"\n ],\n \"ocigetbufferinglob\": [\n \"bool ocigetbufferinglob()\",\n \"Returns current state of buffering for a LOB\"\n ],\n \"ocisetbufferinglob\": [\n \"bool ocisetbufferinglob( boolean flag )\",\n \"Enables/disables buffering for a LOB\"\n ],\n \"octdec\": [\n \"int octdec(string octal_number)\",\n \"Returns the decimal equivalent of an octal string\"\n ],\n \"odbc_autocommit\": [\n \"mixed odbc_autocommit(resource connection_id [, int OnOff])\",\n \"Toggle autocommit mode or get status\"\n ],\n \"odbc_binmode\": [\n \"bool odbc_binmode(int result_id, int mode)\",\n \"Handle binary column data\"\n ],\n \"odbc_close\": [\n \"void odbc_close(resource connection_id)\",\n \"Close an ODBC connection\"\n ],\n \"odbc_close_all\": [\n \"void odbc_close_all(void)\",\n \"Close all ODBC connections\"\n ],\n \"odbc_columnprivileges\": [\n \"resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)\",\n \"Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table\"\n ],\n \"odbc_columns\": [\n \"resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])\",\n \"Returns a result identifier that can be used to fetch a list of column names in specified tables\"\n ],\n \"odbc_commit\": [\n \"bool odbc_commit(resource connection_id)\",\n \"Commit an ODBC transaction\"\n ],\n \"odbc_connect\": [\n \"resource odbc_connect(string DSN, string user, string password [, int cursor_option])\",\n \"Connect to a datasource\"\n ],\n \"odbc_cursor\": [\n \"string odbc_cursor(resource result_id)\",\n \"Get cursor name\"\n ],\n \"odbc_data_source\": [\n \"array odbc_data_source(resource connection_id, int fetch_type)\",\n \"Return information about the currently connected data source\"\n ],\n \"odbc_error\": [\n \"string odbc_error([resource connection_id])\",\n \"Get the last error code\"\n ],\n \"odbc_errormsg\": [\n \"string odbc_errormsg([resource connection_id])\",\n \"Get the last error message\"\n ],\n \"odbc_exec\": [\n \"resource odbc_exec(resource connection_id, string query [, int flags])\",\n \"Prepare and execute an SQL statement\"\n ],\n \"odbc_execute\": [\n \"bool odbc_execute(resource result_id [, array parameters_array])\",\n \"Execute a prepared statement\"\n ],\n \"odbc_fetch_array\": [\n \"array odbc_fetch_array(int result [, int rownumber])\",\n \"Fetch a result row as an associative array\"\n ],\n \"odbc_fetch_into\": [\n \"int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])\",\n \"Fetch one result row into an array\"\n ],\n \"odbc_fetch_object\": [\n \"object odbc_fetch_object(int result [, int rownumber])\",\n \"Fetch a result row as an object\"\n ],\n \"odbc_fetch_row\": [\n \"bool odbc_fetch_row(resource result_id [, int row_number])\",\n \"Fetch a row\"\n ],\n \"odbc_field_len\": [\n \"int odbc_field_len(resource result_id, int field_number)\",\n \"Get the length (precision) of a column\"\n ],\n \"odbc_field_name\": [\n \"string odbc_field_name(resource result_id, int field_number)\",\n \"Get a column name\"\n ],\n \"odbc_field_num\": [\n \"int odbc_field_num(resource result_id, string field_name)\",\n \"Return column number\"\n ],\n \"odbc_field_scale\": [\n \"int odbc_field_scale(resource result_id, int field_number)\",\n \"Get the scale of a column\"\n ],\n \"odbc_field_type\": [\n \"string odbc_field_type(resource result_id, int field_number)\",\n \"Get the datatype of a column\"\n ],\n \"odbc_foreignkeys\": [\n \"resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)\",\n \"Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table\"\n ],\n \"odbc_free_result\": [\n \"bool odbc_free_result(resource result_id)\",\n \"Free resources associated with a result\"\n ],\n \"odbc_gettypeinfo\": [\n \"resource odbc_gettypeinfo(resource connection_id [, int data_type])\",\n \"Returns a result identifier containing information about data types supported by the data source\"\n ],\n \"odbc_longreadlen\": [\n \"bool odbc_longreadlen(int result_id, int length)\",\n \"Handle LONG columns\"\n ],\n \"odbc_next_result\": [\n \"bool odbc_next_result(resource result_id)\",\n \"Checks if multiple results are avaiable\"\n ],\n \"odbc_num_fields\": [\n \"int odbc_num_fields(resource result_id)\",\n \"Get number of columns in a result\"\n ],\n \"odbc_num_rows\": [\n \"int odbc_num_rows(resource result_id)\",\n \"Get number of rows in a result\"\n ],\n \"odbc_pconnect\": [\n \"resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])\",\n \"Establish a persistent connection to a datasource\"\n ],\n \"odbc_prepare\": [\n \"resource odbc_prepare(resource connection_id, string query)\",\n \"Prepares a statement for execution\"\n ],\n \"odbc_primarykeys\": [\n \"resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)\",\n \"Returns a result identifier listing the column names that comprise the primary key for a table\"\n ],\n \"odbc_procedurecolumns\": [\n \"resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])\",\n \"Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures\"\n ],\n \"odbc_procedures\": [\n \"resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])\",\n \"Returns a result identifier containg the list of procedure names in a datasource\"\n ],\n \"odbc_result\": [\n \"mixed odbc_result(resource result_id, mixed field)\",\n \"Get result data\"\n ],\n \"odbc_result_all\": [\n \"int odbc_result_all(resource result_id [, string format])\",\n \"Print result as HTML table\"\n ],\n \"odbc_rollback\": [\n \"bool odbc_rollback(resource connection_id)\",\n \"Rollback a transaction\"\n ],\n \"odbc_setoption\": [\n \"bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)\",\n \"Sets connection or statement options\"\n ],\n \"odbc_specialcolumns\": [\n \"resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)\",\n \"Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction\"\n ],\n \"odbc_statistics\": [\n \"resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)\",\n \"Returns a result identifier that contains statistics about a single table and the indexes associated with the table\"\n ],\n \"odbc_tableprivileges\": [\n \"resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)\",\n \"Returns a result identifier containing a list of tables and the privileges associated with each table\"\n ],\n \"odbc_tables\": [\n \"resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])\",\n \"Call the SQLTables function\"\n ],\n \"opendir\": [\n \"mixed opendir(string path[, resource context])\",\n \"Open a directory and return a dir_handle\"\n ],\n \"openlog\": [\n \"bool openlog(string ident, int option, int facility)\",\n \"Open connection to system logger\"\n ],\n \"openssl_csr_export\": [\n \"bool openssl_csr_export(resource csr, string &out [, bool notext=true])\",\n \"Exports a CSR to file or a var\"\n ],\n \"openssl_csr_export_to_file\": [\n \"bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])\",\n \"Exports a CSR to file\"\n ],\n \"openssl_csr_get_public_key\": [\n \"mixed openssl_csr_get_public_key(mixed csr)\",\n \"Returns the subject of a CERT or FALSE on error\"\n ],\n \"openssl_csr_get_subject\": [\n \"mixed openssl_csr_get_subject(mixed csr)\",\n \"Returns the subject of a CERT or FALSE on error\"\n ],\n \"openssl_csr_new\": [\n \"bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])\",\n \"Generates a privkey and CSR\"\n ],\n \"openssl_csr_sign\": [\n \"resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])\",\n \"Signs a cert with another CERT\"\n ],\n \"openssl_decrypt\": [\n \"string openssl_decrypt(string data, string method, string password [, bool raw_input=false])\",\n \"Takes raw or base64 encoded string and dectupt it using given method and key\"\n ],\n \"openssl_dh_compute_key\": [\n \"string openssl_dh_compute_key(string pub_key, resource dh_key)\",\n \"Computes shared sicret for public value of remote DH key and local DH key\"\n ],\n \"openssl_digest\": [\n \"string openssl_digest(string data, string method [, bool raw_output=false])\",\n \"Computes digest hash value for given data using given method, returns raw or binhex encoded string\"\n ],\n \"openssl_encrypt\": [\n \"string openssl_encrypt(string data, string method, string password [, bool raw_output=false])\",\n \"Encrypts given data with given method and key, returns raw or base64 encoded string\"\n ],\n \"openssl_error_string\": [\n \"mixed openssl_error_string(void)\",\n \"Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages\"\n ],\n \"openssl_get_cipher_methods\": [\n \"array openssl_get_cipher_methods([bool aliases = false])\",\n \"Return array of available cipher methods\"\n ],\n \"openssl_get_md_methods\": [\n \"array openssl_get_md_methods([bool aliases = false])\",\n \"Return array of available digest methods\"\n ],\n \"openssl_open\": [\n \"bool openssl_open(string data, &string opendata, string ekey, mixed privkey)\",\n \"Opens data\"\n ],\n \"openssl_pkcs12_export\": [\n \"bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])\",\n \"Creates and exports a PKCS12 to a var\"\n ],\n \"openssl_pkcs12_export_to_file\": [\n \"bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])\",\n \"Creates and exports a PKCS to file\"\n ],\n \"openssl_pkcs12_read\": [\n \"bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)\",\n \"Parses a PKCS12 to an array\"\n ],\n \"openssl_pkcs7_decrypt\": [\n \"bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])\",\n \"Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key\"\n ],\n \"openssl_pkcs7_encrypt\": [\n \"bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])\",\n \"Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile\"\n ],\n \"openssl_pkcs7_sign\": [\n \"bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])\",\n \"Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum\"\n ],\n \"openssl_pkcs7_verify\": [\n \"bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])\",\n \"Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers\"\n ],\n \"openssl_pkey_export\": [\n \"bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])\",\n \"Gets an exportable representation of a key into a string or file\"\n ],\n \"openssl_pkey_export_to_file\": [\n \"bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)\",\n \"Gets an exportable representation of a key into a file\"\n ],\n \"openssl_pkey_free\": [\n \"void openssl_pkey_free(int key)\",\n \"Frees a key\"\n ],\n \"openssl_pkey_get_details\": [\n \"resource openssl_pkey_get_details(resource key)\",\n \"returns an array with the key details (bits, pkey, type)\"\n ],\n \"openssl_pkey_get_private\": [\n \"int openssl_pkey_get_private(string key [, string passphrase])\",\n \"Gets private keys\"\n ],\n \"openssl_pkey_get_public\": [\n \"int openssl_pkey_get_public(mixed cert)\",\n \"Gets public key from X.509 certificate\"\n ],\n \"openssl_pkey_new\": [\n \"resource openssl_pkey_new([array configargs])\",\n \"Generates a new private key\"\n ],\n \"openssl_private_decrypt\": [\n \"bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])\",\n \"Decrypts data with private key\"\n ],\n \"openssl_private_encrypt\": [\n \"bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])\",\n \"Encrypts data with private key\"\n ],\n \"openssl_public_decrypt\": [\n \"bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])\",\n \"Decrypts data with public key\"\n ],\n \"openssl_public_encrypt\": [\n \"bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])\",\n \"Encrypts data with public key\"\n ],\n \"openssl_random_pseudo_bytes\": [\n \"string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])\",\n \"Returns a string of the length specified filled with random pseudo bytes\"\n ],\n \"openssl_seal\": [\n \"int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)\",\n \"Seals data\"\n ],\n \"openssl_sign\": [\n \"bool openssl_sign(string data, &string signature, mixed key[, mixed method])\",\n \"Signs data\"\n ],\n \"openssl_verify\": [\n \"int openssl_verify(string data, string signature, mixed key[, mixed method])\",\n \"Verifys data\"\n ],\n \"openssl_x509_check_private_key\": [\n \"bool openssl_x509_check_private_key(mixed cert, mixed key)\",\n \"Checks if a private key corresponds to a CERT\"\n ],\n \"openssl_x509_checkpurpose\": [\n \"int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])\",\n \"Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs\"\n ],\n \"openssl_x509_export\": [\n \"bool openssl_x509_export(mixed x509, string &out [, bool notext = true])\",\n \"Exports a CERT to file or a var\"\n ],\n \"openssl_x509_export_to_file\": [\n \"bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])\",\n \"Exports a CERT to file or a var\"\n ],\n \"openssl_x509_free\": [\n \"void openssl_x509_free(resource x509)\",\n \"Frees X.509 certificates\"\n ],\n \"openssl_x509_parse\": [\n \"array openssl_x509_parse(mixed x509 [, bool shortnames=true])\",\n \"Returns an array of the fields/values of the CERT\"\n ],\n \"openssl_x509_read\": [\n \"resource openssl_x509_read(mixed cert)\",\n \"Reads X.509 certificates\"\n ],\n \"ord\": [\n \"int ord(string character)\",\n \"Returns ASCII value of character\"\n ],\n \"output_add_rewrite_var\": [\n \"bool output_add_rewrite_var(string name, string value)\",\n \"Add URL rewriter values\"\n ],\n \"output_reset_rewrite_vars\": [\n \"bool output_reset_rewrite_vars(void)\",\n \"Reset(clear) URL rewriter values\"\n ],\n \"pack\": [\n \"string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])\",\n \"Takes one or more arguments and packs them into a binary string according to the format argument\"\n ],\n \"parse_ini_file\": [\n \"array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])\",\n \"Parse configuration file\"\n ],\n \"parse_ini_string\": [\n \"array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])\",\n \"Parse configuration string\"\n ],\n \"parse_locale\": [\n \"static array parse_locale($locale)\",\n \"* parses a locale-id into an array the different parts of it\"\n ],\n \"parse_str\": [\n \"void parse_str(string encoded_string [, array result])\",\n \"Parses GET/POST/COOKIE data and sets global variables\"\n ],\n \"parse_url\": [\n \"mixed parse_url(string url, [int url_component])\",\n \"Parse a URL and return its components\"\n ],\n \"passthru\": [\n \"void passthru(string command [, int &return_value])\",\n \"Execute an external program and display raw output\"\n ],\n \"pathinfo\": [\n \"array pathinfo(string path[, int options])\",\n \"Returns information about a certain string\"\n ],\n \"pclose\": [\n \"int pclose(resource fp)\",\n \"Close a file pointer opened by popen()\"\n ],\n \"pcnlt_sigwaitinfo\": [\n \"int pcnlt_sigwaitinfo(array set[, array &siginfo])\",\n \"Synchronously wait for queued signals\"\n ],\n \"pcntl_alarm\": [\n \"int pcntl_alarm(int seconds)\",\n \"Set an alarm clock for delivery of a signal\"\n ],\n \"pcntl_exec\": [\n \"bool pcntl_exec(string path [, array args [, array envs]])\",\n \"Executes specified program in current process space as defined by exec(2)\"\n ],\n \"pcntl_fork\": [\n \"int pcntl_fork(void)\",\n \"Forks the currently running process following the same behavior as the UNIX fork() system call\"\n ],\n \"pcntl_getpriority\": [\n \"int pcntl_getpriority([int pid [, int process_identifier]])\",\n \"Get the priority of any process\"\n ],\n \"pcntl_setpriority\": [\n \"bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])\",\n \"Change the priority of any process\"\n ],\n \"pcntl_signal\": [\n \"bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])\",\n \"Assigns a system signal handler to a PHP function\"\n ],\n \"pcntl_signal_dispatch\": [\n \"bool pcntl_signal_dispatch()\",\n \"Dispatch signals to signal handlers\"\n ],\n \"pcntl_sigprocmask\": [\n \"bool pcntl_sigprocmask(int how, array set[, array &oldset])\",\n \"Examine and change blocked signals\"\n ],\n \"pcntl_sigtimedwait\": [\n \"int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])\",\n \"Wait for queued signals\"\n ],\n \"pcntl_wait\": [\n \"int pcntl_wait(int &status)\",\n \"Waits on or returns the status of a forked child as defined by the waitpid() system call\"\n ],\n \"pcntl_waitpid\": [\n \"int pcntl_waitpid(int pid, int &status, int options)\",\n \"Waits on or returns the status of a forked child as defined by the waitpid() system call\"\n ],\n \"pcntl_wexitstatus\": [\n \"int pcntl_wexitstatus(int status)\",\n \"Returns the status code of a child's exit\"\n ],\n \"pcntl_wifexited\": [\n \"bool pcntl_wifexited(int status)\",\n \"Returns true if the child status code represents a successful exit\"\n ],\n \"pcntl_wifsignaled\": [\n \"bool pcntl_wifsignaled(int status)\",\n \"Returns true if the child status code represents a process that was terminated due to a signal\"\n ],\n \"pcntl_wifstopped\": [\n \"bool pcntl_wifstopped(int status)\",\n \"Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)\"\n ],\n \"pcntl_wstopsig\": [\n \"int pcntl_wstopsig(int status)\",\n \"Returns the number of the signal that caused the process to stop who's status code is passed\"\n ],\n \"pcntl_wtermsig\": [\n \"int pcntl_wtermsig(int status)\",\n \"Returns the number of the signal that terminated the process who's status code is passed\"\n ],\n \"pdo_drivers\": [\n \"array pdo_drivers()\",\n \"Return array of available PDO drivers\"\n ],\n \"pfsockopen\": [\n \"resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])\",\n \"Open persistent Internet or Unix domain socket connection\"\n ],\n \"pg_affected_rows\": [\n \"int pg_affected_rows(resource result)\",\n \"Returns the number of affected tuples\"\n ],\n \"pg_cancel_query\": [\n \"bool pg_cancel_query(resource connection)\",\n \"Cancel request\"\n ],\n \"pg_client_encoding\": [\n \"string pg_client_encoding([resource connection])\",\n \"Get the current client encoding\"\n ],\n \"pg_close\": [\n \"bool pg_close([resource connection])\",\n \"Close a PostgreSQL connection\"\n ],\n \"pg_connect\": [\n \"resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)\",\n \"Open a PostgreSQL connection\"\n ],\n \"pg_connection_busy\": [\n \"bool pg_connection_busy(resource connection)\",\n \"Get connection is busy or not\"\n ],\n \"pg_connection_reset\": [\n \"bool pg_connection_reset(resource connection)\",\n \"Reset connection (reconnect)\"\n ],\n \"pg_connection_status\": [\n \"int pg_connection_status(resource connnection)\",\n \"Get connection status\"\n ],\n \"pg_convert\": [\n \"array pg_convert(resource db, string table, array values[, int options])\",\n \"Check and convert values for PostgreSQL SQL statement\"\n ],\n \"pg_copy_from\": [\n \"bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])\",\n \"Copy table from array\"\n ],\n \"pg_copy_to\": [\n \"array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])\",\n \"Copy table to array\"\n ],\n \"pg_dbname\": [\n \"string pg_dbname([resource connection])\",\n \"Get the database name\"\n ],\n \"pg_delete\": [\n \"mixed pg_delete(resource db, string table, array ids[, int options])\",\n \"Delete records has ids (id=>value)\"\n ],\n \"pg_end_copy\": [\n \"bool pg_end_copy([resource connection])\",\n \"Sync with backend. Completes the Copy command\"\n ],\n \"pg_escape_bytea\": [\n \"string pg_escape_bytea([resource connection,] string data)\",\n \"Escape binary for bytea type\"\n ],\n \"pg_escape_string\": [\n \"string pg_escape_string([resource connection,] string data)\",\n \"Escape string for text/char type\"\n ],\n \"pg_execute\": [\n \"resource pg_execute([resource connection,] string stmtname, array params)\",\n \"Execute a prepared query\"\n ],\n \"pg_fetch_all\": [\n \"array pg_fetch_all(resource result)\",\n \"Fetch all rows into array\"\n ],\n \"pg_fetch_all_columns\": [\n \"array pg_fetch_all_columns(resource result [, int column_number])\",\n \"Fetch all rows into array\"\n ],\n \"pg_fetch_array\": [\n \"array pg_fetch_array(resource result [, int row [, int result_type]])\",\n \"Fetch a row as an array\"\n ],\n \"pg_fetch_assoc\": [\n \"array pg_fetch_assoc(resource result [, int row])\",\n \"Fetch a row as an assoc array\"\n ],\n \"pg_fetch_object\": [\n \"object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])\",\n \"Fetch a row as an object\"\n ],\n \"pg_fetch_result\": [\n \"mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)\",\n \"Returns values from a result identifier\"\n ],\n \"pg_fetch_row\": [\n \"array pg_fetch_row(resource result [, int row [, int result_type]])\",\n \"Get a row as an enumerated array\"\n ],\n \"pg_field_is_null\": [\n \"int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)\",\n \"Test if a field is NULL\"\n ],\n \"pg_field_name\": [\n \"string pg_field_name(resource result, int field_number)\",\n \"Returns the name of the field\"\n ],\n \"pg_field_num\": [\n \"int pg_field_num(resource result, string field_name)\",\n \"Returns the field number of the named field\"\n ],\n \"pg_field_prtlen\": [\n \"int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)\",\n \"Returns the printed length\"\n ],\n \"pg_field_size\": [\n \"int pg_field_size(resource result, int field_number)\",\n \"Returns the internal size of the field\"\n ],\n \"pg_field_table\": [\n \"mixed pg_field_table(resource result, int field_number[, bool oid_only])\",\n \"Returns the name of the table field belongs to, or table's oid if oid_only is true\"\n ],\n \"pg_field_type\": [\n \"string pg_field_type(resource result, int field_number)\",\n \"Returns the type name for the given field\"\n ],\n \"pg_field_type_oid\": [\n \"string pg_field_type_oid(resource result, int field_number)\",\n \"Returns the type oid for the given field\"\n ],\n \"pg_free_result\": [\n \"bool pg_free_result(resource result)\",\n \"Free result memory\"\n ],\n \"pg_get_notify\": [\n \"array pg_get_notify([resource connection[, result_type]])\",\n \"Get asynchronous notification\"\n ],\n \"pg_get_pid\": [\n \"int pg_get_pid([resource connection)\",\n \"Get backend(server) pid\"\n ],\n \"pg_get_result\": [\n \"resource pg_get_result(resource connection)\",\n \"Get asynchronous query result\"\n ],\n \"pg_host\": [\n \"string pg_host([resource connection])\",\n \"Returns the host name associated with the connection\"\n ],\n \"pg_insert\": [\n \"mixed pg_insert(resource db, string table, array values[, int options])\",\n \"Insert values (filed=>value) to table\"\n ],\n \"pg_last_error\": [\n \"string pg_last_error([resource connection])\",\n \"Get the error message string\"\n ],\n \"pg_last_notice\": [\n \"string pg_last_notice(resource connection)\",\n \"Returns the last notice set by the backend\"\n ],\n \"pg_last_oid\": [\n \"string pg_last_oid(resource result)\",\n \"Returns the last object identifier\"\n ],\n \"pg_lo_close\": [\n \"bool pg_lo_close(resource large_object)\",\n \"Close a large object\"\n ],\n \"pg_lo_create\": [\n \"mixed pg_lo_create([resource connection],[mixed large_object_oid])\",\n \"Create a large object\"\n ],\n \"pg_lo_export\": [\n \"bool pg_lo_export([resource connection, ] int objoid, string filename)\",\n \"Export large object direct to filesystem\"\n ],\n \"pg_lo_import\": [\n \"int pg_lo_import([resource connection, ] string filename [, mixed oid])\",\n \"Import large object direct from filesystem\"\n ],\n \"pg_lo_open\": [\n \"resource pg_lo_open([resource connection,] int large_object_oid, string mode)\",\n \"Open a large object and return fd\"\n ],\n \"pg_lo_read\": [\n \"string pg_lo_read(resource large_object [, int len])\",\n \"Read a large object\"\n ],\n \"pg_lo_read_all\": [\n \"int pg_lo_read_all(resource large_object)\",\n \"Read a large object and send straight to browser\"\n ],\n \"pg_lo_seek\": [\n \"bool pg_lo_seek(resource large_object, int offset [, int whence])\",\n \"Seeks position of large object\"\n ],\n \"pg_lo_tell\": [\n \"int pg_lo_tell(resource large_object)\",\n \"Returns current position of large object\"\n ],\n \"pg_lo_unlink\": [\n \"bool pg_lo_unlink([resource connection,] string large_object_oid)\",\n \"Delete a large object\"\n ],\n \"pg_lo_write\": [\n \"int pg_lo_write(resource large_object, string buf [, int len])\",\n \"Write a large object\"\n ],\n \"pg_meta_data\": [\n \"array pg_meta_data(resource db, string table)\",\n \"Get meta_data\"\n ],\n \"pg_num_fields\": [\n \"int pg_num_fields(resource result)\",\n \"Return the number of fields in the result\"\n ],\n \"pg_num_rows\": [\n \"int pg_num_rows(resource result)\",\n \"Return the number of rows in the result\"\n ],\n \"pg_options\": [\n \"string pg_options([resource connection])\",\n \"Get the options associated with the connection\"\n ],\n \"pg_parameter_status\": [\n \"string|false pg_parameter_status([resource connection,] string param_name)\",\n \"Returns the value of a server parameter\"\n ],\n \"pg_pconnect\": [\n \"resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)\",\n \"Open a persistent PostgreSQL connection\"\n ],\n \"pg_ping\": [\n \"bool pg_ping([resource connection])\",\n \"Ping database. If connection is bad, try to reconnect.\"\n ],\n \"pg_port\": [\n \"int pg_port([resource connection])\",\n \"Return the port number associated with the connection\"\n ],\n \"pg_prepare\": [\n \"resource pg_prepare([resource connection,] string stmtname, string query)\",\n \"Prepare a query for future execution\"\n ],\n \"pg_put_line\": [\n \"bool pg_put_line([resource connection,] string query)\",\n \"Send null-terminated string to backend server\"\n ],\n \"pg_query\": [\n \"resource pg_query([resource connection,] string query)\",\n \"Execute a query\"\n ],\n \"pg_query_params\": [\n \"resource pg_query_params([resource connection,] string query, array params)\",\n \"Execute a query\"\n ],\n \"pg_result_error\": [\n \"string pg_result_error(resource result)\",\n \"Get error message associated with result\"\n ],\n \"pg_result_error_field\": [\n \"string pg_result_error_field(resource result, int fieldcode)\",\n \"Get error message field associated with result\"\n ],\n \"pg_result_seek\": [\n \"bool pg_result_seek(resource result, int offset)\",\n \"Set internal row offset\"\n ],\n \"pg_result_status\": [\n \"mixed pg_result_status(resource result[, long result_type])\",\n \"Get status of query result\"\n ],\n \"pg_select\": [\n \"mixed pg_select(resource db, string table, array ids[, int options])\",\n \"Select records that has ids (id=>value)\"\n ],\n \"pg_send_execute\": [\n \"bool pg_send_execute(resource connection, string stmtname, array params)\",\n \"Executes prevriously prepared stmtname asynchronously\"\n ],\n \"pg_send_prepare\": [\n \"bool pg_send_prepare(resource connection, string stmtname, string query)\",\n \"Asynchronously prepare a query for future execution\"\n ],\n \"pg_send_query\": [\n \"bool pg_send_query(resource connection, string query)\",\n \"Send asynchronous query\"\n ],\n \"pg_send_query_params\": [\n \"bool pg_send_query_params(resource connection, string query, array params)\",\n \"Send asynchronous parameterized query\"\n ],\n \"pg_set_client_encoding\": [\n \"int pg_set_client_encoding([resource connection,] string encoding)\",\n \"Set client encoding\"\n ],\n \"pg_set_error_verbosity\": [\n \"int pg_set_error_verbosity([resource connection,] int verbosity)\",\n \"Set error verbosity\"\n ],\n \"pg_trace\": [\n \"bool pg_trace(string filename [, string mode [, resource connection]])\",\n \"Enable tracing a PostgreSQL connection\"\n ],\n \"pg_transaction_status\": [\n \"int pg_transaction_status(resource connnection)\",\n \"Get transaction status\"\n ],\n \"pg_tty\": [\n \"string pg_tty([resource connection])\",\n \"Return the tty name associated with the connection\"\n ],\n \"pg_unescape_bytea\": [\n \"string pg_unescape_bytea(string data)\",\n \"Unescape binary for bytea type\"\n ],\n \"pg_untrace\": [\n \"bool pg_untrace([resource connection])\",\n \"Disable tracing of a PostgreSQL connection\"\n ],\n \"pg_update\": [\n \"mixed pg_update(resource db, string table, array fields, array ids[, int options])\",\n \"Update table using values (field=>value) and ids (id=>value)\"\n ],\n \"pg_version\": [\n \"array pg_version([resource connection])\",\n \"Returns an array with client, protocol and server version (when available)\"\n ],\n \"php_egg_logo_guid\": [\n \"string php_egg_logo_guid(void)\",\n \"Return the special ID used to request the PHP logo in phpinfo screens\"\n ],\n \"php_ini_loaded_file\": [\n \"string php_ini_loaded_file(void)\",\n \"Return the actual loaded ini filename\"\n ],\n \"php_ini_scanned_files\": [\n \"string php_ini_scanned_files(void)\",\n \"Return comma-separated string of .ini files parsed from the additional ini dir\"\n ],\n \"php_logo_guid\": [\n \"string php_logo_guid(void)\",\n \"Return the special ID used to request the PHP logo in phpinfo screens\"\n ],\n \"php_real_logo_guid\": [\n \"string php_real_logo_guid(void)\",\n \"Return the special ID used to request the PHP logo in phpinfo screens\"\n ],\n \"php_sapi_name\": [\n \"string php_sapi_name(void)\",\n \"Return the current SAPI module name\"\n ],\n \"php_snmpv3\": [\n \"void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)\",\n \"* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *\"\n ],\n \"php_strip_whitespace\": [\n \"string php_strip_whitespace(string file_name)\",\n \"Return source with stripped comments and whitespace\"\n ],\n \"php_uname\": [\n \"string php_uname(void)\",\n \"Return information about the system PHP was built on\"\n ],\n \"phpcredits\": [\n \"void phpcredits([int flag])\",\n \"Prints the list of people who've contributed to the PHP project\"\n ],\n \"phpinfo\": [\n \"void phpinfo([int what])\",\n \"Output a page of useful information about PHP and the current request\"\n ],\n \"phpversion\": [\n \"string phpversion([string extension])\",\n \"Return the current PHP version\"\n ],\n \"pi\": [\n \"float pi(void)\",\n \"Returns an approximation of pi\"\n ],\n \"png2wbmp\": [\n \"bool png2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)\",\n \"Convert PNG image to WBMP image\"\n ],\n \"popen\": [\n \"resource popen(string command, string mode)\",\n \"Execute a command and open either a read or a write pipe to it\"\n ],\n \"posix_access\": [\n \"bool posix_access(string file [, int mode])\",\n \"Determine accessibility of a file (POSIX.1 5.6.3)\"\n ],\n \"posix_ctermid\": [\n \"string posix_ctermid(void)\",\n \"Generate terminal path name (POSIX.1, 4.7.1)\"\n ],\n \"posix_get_last_error\": [\n \"int posix_get_last_error(void)\",\n \"Retrieve the error number set by the last posix function which failed.\"\n ],\n \"posix_getcwd\": [\n \"string posix_getcwd(void)\",\n \"Get working directory pathname (POSIX.1, 5.2.2)\"\n ],\n \"posix_getegid\": [\n \"int posix_getegid(void)\",\n \"Get the current effective group id (POSIX.1, 4.2.1)\"\n ],\n \"posix_geteuid\": [\n \"int posix_geteuid(void)\",\n \"Get the current effective user id (POSIX.1, 4.2.1)\"\n ],\n \"posix_getgid\": [\n \"int posix_getgid(void)\",\n \"Get the current group id (POSIX.1, 4.2.1)\"\n ],\n \"posix_getgrgid\": [\n \"array posix_getgrgid(long gid)\",\n \"Group database access (POSIX.1, 9.2.1)\"\n ],\n \"posix_getgrnam\": [\n \"array posix_getgrnam(string groupname)\",\n \"Group database access (POSIX.1, 9.2.1)\"\n ],\n \"posix_getgroups\": [\n \"array posix_getgroups(void)\",\n \"Get supplementary group id's (POSIX.1, 4.2.3)\"\n ],\n \"posix_getlogin\": [\n \"string posix_getlogin(void)\",\n \"Get user name (POSIX.1, 4.2.4)\"\n ],\n \"posix_getpgid\": [\n \"int posix_getpgid(void)\",\n \"Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)\"\n ],\n \"posix_getpgrp\": [\n \"int posix_getpgrp(void)\",\n \"Get current process group id (POSIX.1, 4.3.1)\"\n ],\n \"posix_getpid\": [\n \"int posix_getpid(void)\",\n \"Get the current process id (POSIX.1, 4.1.1)\"\n ],\n \"posix_getppid\": [\n \"int posix_getppid(void)\",\n \"Get the parent process id (POSIX.1, 4.1.1)\"\n ],\n \"posix_getpwnam\": [\n \"array posix_getpwnam(string groupname)\",\n \"User database access (POSIX.1, 9.2.2)\"\n ],\n \"posix_getpwuid\": [\n \"array posix_getpwuid(long uid)\",\n \"User database access (POSIX.1, 9.2.2)\"\n ],\n \"posix_getrlimit\": [\n \"array posix_getrlimit(void)\",\n \"Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)\"\n ],\n \"posix_getsid\": [\n \"int posix_getsid(void)\",\n \"Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)\"\n ],\n \"posix_getuid\": [\n \"int posix_getuid(void)\",\n \"Get the current user id (POSIX.1, 4.2.1)\"\n ],\n \"posix_initgroups\": [\n \"bool posix_initgroups(string name, int base_group_id)\",\n \"Calculate the group access list for the user specified in name.\"\n ],\n \"posix_isatty\": [\n \"bool posix_isatty(int fd)\",\n \"Determine if filedesc is a tty (POSIX.1, 4.7.1)\"\n ],\n \"posix_kill\": [\n \"bool posix_kill(int pid, int sig)\",\n \"Send a signal to a process (POSIX.1, 3.3.2)\"\n ],\n \"posix_mkfifo\": [\n \"bool posix_mkfifo(string pathname, int mode)\",\n \"Make a FIFO special file (POSIX.1, 5.4.2)\"\n ],\n \"posix_mknod\": [\n \"bool posix_mknod(string pathname, int mode [, int major [, int minor]])\",\n \"Make a special or ordinary file (POSIX.1)\"\n ],\n \"posix_setegid\": [\n \"bool posix_setegid(long uid)\",\n \"Set effective group id\"\n ],\n \"posix_seteuid\": [\n \"bool posix_seteuid(long uid)\",\n \"Set effective user id\"\n ],\n \"posix_setgid\": [\n \"bool posix_setgid(int uid)\",\n \"Set group id (POSIX.1, 4.2.2)\"\n ],\n \"posix_setpgid\": [\n \"bool posix_setpgid(int pid, int pgid)\",\n \"Set process group id for job control (POSIX.1, 4.3.3)\"\n ],\n \"posix_setsid\": [\n \"int posix_setsid(void)\",\n \"Create session and set process group id (POSIX.1, 4.3.2)\"\n ],\n \"posix_setuid\": [\n \"bool posix_setuid(long uid)\",\n \"Set user id (POSIX.1, 4.2.2)\"\n ],\n \"posix_strerror\": [\n \"string posix_strerror(int errno)\",\n \"Retrieve the system error message associated with the given errno.\"\n ],\n \"posix_times\": [\n \"array posix_times(void)\",\n \"Get process times (POSIX.1, 4.5.2)\"\n ],\n \"posix_ttyname\": [\n \"string posix_ttyname(int fd)\",\n \"Determine terminal device name (POSIX.1, 4.7.2)\"\n ],\n \"posix_uname\": [\n \"array posix_uname(void)\",\n \"Get system name (POSIX.1, 4.4.1)\"\n ],\n \"pow\": [\n \"number pow(number base, number exponent)\",\n \"Returns base raised to the power of exponent. Returns integer result when possible\"\n ],\n \"preg_filter\": [\n \"mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])\",\n \"Perform Perl-style regular expression replacement and only return matches.\"\n ],\n \"preg_grep\": [\n \"array preg_grep(string regex, array input [, int flags])\",\n \"Searches array and returns entries which match regex\"\n ],\n \"preg_last_error\": [\n \"int preg_last_error()\",\n \"Returns the error code of the last regexp execution.\"\n ],\n \"preg_match\": [\n \"int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])\",\n \"Perform a Perl-style regular expression match\"\n ],\n \"preg_match_all\": [\n \"int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])\",\n \"Perform a Perl-style global regular expression match\"\n ],\n \"preg_quote\": [\n \"string preg_quote(string str [, string delim_char])\",\n \"Quote regular expression characters plus an optional character\"\n ],\n \"preg_replace\": [\n \"mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])\",\n \"Perform Perl-style regular expression replacement.\"\n ],\n \"preg_replace_callback\": [\n \"mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])\",\n \"Perform Perl-style regular expression replacement using replacement callback.\"\n ],\n \"preg_split\": [\n \"array preg_split(string pattern, string subject [, int limit [, int flags]])\",\n \"Split string into an array using a perl-style regular expression as a delimiter\"\n ],\n \"prev\": [\n \"mixed prev(array array_arg)\",\n \"Move array argument's internal pointer to the previous element and return it\"\n ],\n \"print\": [\n \"int print(string arg)\",\n \"Output a string\"\n ],\n \"print_r\": [\n \"mixed print_r(mixed var [, bool return])\",\n \"Prints out or returns information about the specified variable\"\n ],\n \"printf\": [\n \"int printf(string format [, mixed arg1 [, mixed ...]])\",\n \"Output a formatted string\"\n ],\n \"proc_close\": [\n \"int proc_close(resource process)\",\n \"close a process opened by proc_open\"\n ],\n \"proc_get_status\": [\n \"array proc_get_status(resource process)\",\n \"get information about a process opened by proc_open\"\n ],\n \"proc_nice\": [\n \"bool proc_nice(int priority)\",\n \"Change the priority of the current process\"\n ],\n \"proc_open\": [\n \"resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])\",\n \"Run a process with more control over it's file descriptors\"\n ],\n \"proc_terminate\": [\n \"bool proc_terminate(resource process [, long signal])\",\n \"kill a process opened by proc_open\"\n ],\n \"property_exists\": [\n \"bool property_exists(mixed object_or_class, string property_name)\",\n \"Checks if the object or class has a property\"\n ],\n \"pspell_add_to_personal\": [\n \"bool pspell_add_to_personal(int pspell, string word)\",\n \"Adds a word to a personal list\"\n ],\n \"pspell_add_to_session\": [\n \"bool pspell_add_to_session(int pspell, string word)\",\n \"Adds a word to the current session\"\n ],\n \"pspell_check\": [\n \"bool pspell_check(int pspell, string word)\",\n \"Returns true if word is valid\"\n ],\n \"pspell_clear_session\": [\n \"bool pspell_clear_session(int pspell)\",\n \"Clears the current session\"\n ],\n \"pspell_config_create\": [\n \"int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])\",\n \"Create a new config to be used later to create a manager\"\n ],\n \"pspell_config_data_dir\": [\n \"bool pspell_config_data_dir(int conf, string directory)\",\n \"location of language data files\"\n ],\n \"pspell_config_dict_dir\": [\n \"bool pspell_config_dict_dir(int conf, string directory)\",\n \"location of the main word list\"\n ],\n \"pspell_config_ignore\": [\n \"bool pspell_config_ignore(int conf, int ignore)\",\n \"Ignore words <= n chars\"\n ],\n \"pspell_config_mode\": [\n \"bool pspell_config_mode(int conf, long mode)\",\n \"Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)\"\n ],\n \"pspell_config_personal\": [\n \"bool pspell_config_personal(int conf, string personal)\",\n \"Use a personal dictionary for this config\"\n ],\n \"pspell_config_repl\": [\n \"bool pspell_config_repl(int conf, string repl)\",\n \"Use a personal dictionary with replacement pairs for this config\"\n ],\n \"pspell_config_runtogether\": [\n \"bool pspell_config_runtogether(int conf, bool runtogether)\",\n \"Consider run-together words as valid components\"\n ],\n \"pspell_config_save_repl\": [\n \"bool pspell_config_save_repl(int conf, bool save)\",\n \"Save replacement pairs when personal list is saved for this config\"\n ],\n \"pspell_new\": [\n \"int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])\",\n \"Load a dictionary\"\n ],\n \"pspell_new_config\": [\n \"int pspell_new_config(int config)\",\n \"Load a dictionary based on the given config\"\n ],\n \"pspell_new_personal\": [\n \"int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])\",\n \"Load a dictionary with a personal wordlist\"\n ],\n \"pspell_save_wordlist\": [\n \"bool pspell_save_wordlist(int pspell)\",\n \"Saves the current (personal) wordlist\"\n ],\n \"pspell_store_replacement\": [\n \"bool pspell_store_replacement(int pspell, string misspell, string correct)\",\n \"Notify the dictionary of a user-selected replacement\"\n ],\n \"pspell_suggest\": [\n \"array pspell_suggest(int pspell, string word)\",\n \"Returns array of suggestions\"\n ],\n \"putenv\": [\n \"bool putenv(string setting)\",\n \"Set the value of an environment variable\"\n ],\n \"quoted_printable_decode\": [\n \"string quoted_printable_decode(string str)\",\n \"Convert a quoted-printable string to an 8 bit string\"\n ],\n \"quoted_printable_encode\": [\n \"string quoted_printable_encode(string str) */\",\n \"PHP_FUNCTION(quoted_printable_encode) { char *str, *new_str; int str_len; size_t new_str_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \\\"s\\\", &str, &str_len) != SUCCESS) { return; } if (!str_len) { RETURN_EMPTY_STRING(); } new_str = (char *)php_quot_print_encode((unsigned char *)str, (size_t)str_len, &new_str_len); RETURN_STRINGL(new_str, new_str_len, 0); } /* }}}\"\n ],\n \"quotemeta\": [\n \"string quotemeta(string str)\",\n \"Quotes meta characters\"\n ],\n \"rad2deg\": [\n \"float rad2deg(float number)\",\n \"Converts the radian number to the equivalent number in degrees\"\n ],\n \"rand\": [\n \"int rand([int min, int max])\",\n \"Returns a random number\"\n ],\n \"range\": [\n \"array range(mixed low, mixed high[, int step])\",\n \"Create an array containing the range of integers or characters from low to high (inclusive)\"\n ],\n \"rawurldecode\": [\n \"string rawurldecode(string str)\",\n \"Decodes URL-encodes string\"\n ],\n \"rawurlencode\": [\n \"string rawurlencode(string str)\",\n \"URL-encodes string\"\n ],\n \"readdir\": [\n \"string readdir([resource dir_handle])\",\n \"Read directory entry from dir_handle\"\n ],\n \"readfile\": [\n \"int readfile(string filename [, bool use_include_path[, resource context]])\",\n \"Output a file or a URL\"\n ],\n \"readgzfile\": [\n \"int readgzfile(string filename [, int use_include_path])\",\n \"Output a .gz-file\"\n ],\n \"readline\": [\n \"string readline([string prompt])\",\n \"Reads a line\"\n ],\n \"readline_add_history\": [\n \"bool readline_add_history(string prompt)\",\n \"Adds a line to the history\"\n ],\n \"readline_callback_handler_install\": [\n \"void readline_callback_handler_install(string prompt, mixed callback)\",\n \"Initializes the readline callback interface and terminal, prints the prompt and returns immediately\"\n ],\n \"readline_callback_handler_remove\": [\n \"bool readline_callback_handler_remove()\",\n \"Removes a previously installed callback handler and restores terminal settings\"\n ],\n \"readline_callback_read_char\": [\n \"void readline_callback_read_char()\",\n \"Informs the readline callback interface that a character is ready for input\"\n ],\n \"readline_clear_history\": [\n \"bool readline_clear_history(void)\",\n \"Clears the history\"\n ],\n \"readline_completion_function\": [\n \"bool readline_completion_function(string funcname)\",\n \"Readline completion function?\"\n ],\n \"readline_info\": [\n \"mixed readline_info([string varname [, string newvalue]])\",\n \"Gets/sets various internal readline variables.\"\n ],\n \"readline_list_history\": [\n \"array readline_list_history(void)\",\n \"Lists the history\"\n ],\n \"readline_on_new_line\": [\n \"void readline_on_new_line(void)\",\n \"Inform readline that the cursor has moved to a new line\"\n ],\n \"readline_read_history\": [\n \"bool readline_read_history([string filename])\",\n \"Reads the history\"\n ],\n \"readline_redisplay\": [\n \"void readline_redisplay(void)\",\n \"Ask readline to redraw the display\"\n ],\n \"readline_write_history\": [\n \"bool readline_write_history([string filename])\",\n \"Writes the history\"\n ],\n \"readlink\": [\n \"string readlink(string filename)\",\n \"Return the target of a symbolic link\"\n ],\n \"realpath\": [\n \"string realpath(string path)\",\n \"Return the resolved path\"\n ],\n \"realpath_cache_get\": [\n \"bool realpath_cache_get()\",\n \"Get current size of realpath cache\"\n ],\n \"realpath_cache_size\": [\n \"bool realpath_cache_size()\",\n \"Get current size of realpath cache\"\n ],\n \"recode_file\": [\n \"bool recode_file(string request, resource input, resource output)\",\n \"Recode file input into file output according to request\"\n ],\n \"recode_string\": [\n \"string recode_string(string request, string str)\",\n \"Recode string str according to request string\"\n ],\n \"register_shutdown_function\": [\n \"void register_shutdown_function(string function_name)\",\n \"Register a user-level function to be called on request termination\"\n ],\n \"register_tick_function\": [\n \"bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])\",\n \"Registers a tick callback function\"\n ],\n \"rename\": [\n \"bool rename(string old_name, string new_name[, resource context])\",\n \"Rename a file\"\n ],\n \"require\": [\n \"bool acequire(string path)\",\n \"Includes and evaluates the specified file, erroring if the file cannot be included\"\n ],\n \"acequire_once\": [\n \"bool acequire_once(string path)\",\n \"Includes and evaluates the specified file, erroring if the file cannot be included\"\n ],\n \"reset\": [\n \"mixed reset(array array_arg)\",\n \"Set array argument's internal pointer to the first element and return it\"\n ],\n \"restore_error_handler\": [\n \"void restore_error_handler(void)\",\n \"Restores the previously defined error handler function\"\n ],\n \"restore_exception_handler\": [\n \"void restore_exception_handler(void)\",\n \"Restores the previously defined exception handler function\"\n ],\n \"restore_include_path\": [\n \"void restore_include_path()\",\n \"Restore the value of the include_path configuration option\"\n ],\n \"rewind\": [\n \"bool rewind(resource fp)\",\n \"Rewind the position of a file pointer\"\n ],\n \"rewinddir\": [\n \"void rewinddir([resource dir_handle])\",\n \"Rewind dir_handle back to the start\"\n ],\n \"rmdir\": [\n \"bool rmdir(string dirname[, resource context])\",\n \"Remove a directory\"\n ],\n \"round\": [\n \"float round(float number [, int precision [, int mode]])\",\n \"Returns the number rounded to specified precision\"\n ],\n \"rsort\": [\n \"bool rsort(array &array_arg [, int sort_flags])\",\n \"Sort an array in reverse order\"\n ],\n \"rtrim\": [\n \"string rtrim(string str [, string character_mask])\",\n \"Removes trailing whitespace\"\n ],\n \"scandir\": [\n \"array scandir(string dir [, int sorting_order [, resource context]])\",\n \"List files & directories inside the specified path\"\n ],\n \"sem_acquire\": [\n \"bool sem_acquire(resource id)\",\n \"Acquires the semaphore with the given id, blocking if necessary\"\n ],\n \"sem_get\": [\n \"resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])\",\n \"Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously\"\n ],\n \"sem_release\": [\n \"bool sem_release(resource id)\",\n \"Releases the semaphore with the given id\"\n ],\n \"sem_remove\": [\n \"bool sem_remove(resource id)\",\n \"Removes semaphore from Unix systems\"\n ],\n \"serialize\": [\n \"string serialize(mixed variable)\",\n \"Returns a string representation of variable (which can later be unserialized)\"\n ],\n \"session_cache_expire\": [\n \"int session_cache_expire([int new_cache_expire])\",\n \"Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire\"\n ],\n \"session_cache_limiter\": [\n \"string session_cache_limiter([string new_cache_limiter])\",\n \"Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter\"\n ],\n \"session_decode\": [\n \"bool session_decode(string data)\",\n \"Deserializes data and reinitializes the variables\"\n ],\n \"session_destroy\": [\n \"bool session_destroy(void)\",\n \"Destroy the current session and all data associated with it\"\n ],\n \"session_encode\": [\n \"string session_encode(void)\",\n \"Serializes the current setup and returns the serialized representation\"\n ],\n \"session_get_cookie_params\": [\n \"array session_get_cookie_params(void)\",\n \"Return the session cookie parameters\"\n ],\n \"session_id\": [\n \"string session_id([string newid])\",\n \"Return the current session id. If newid is given, the session id is replaced with newid\"\n ],\n \"session_is_registered\": [\n \"bool session_is_registered(string varname)\",\n \"Checks if a variable is registered in session\"\n ],\n \"session_module_name\": [\n \"string session_module_name([string newname])\",\n \"Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname\"\n ],\n \"session_name\": [\n \"string session_name([string newname])\",\n \"Return the current session name. If newname is given, the session name is replaced with newname\"\n ],\n \"session_regenerate_id\": [\n \"bool session_regenerate_id([bool delete_old_session])\",\n \"Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session.\"\n ],\n \"session_register\": [\n \"bool session_register(mixed var_names [, mixed ...])\",\n \"Adds varname(s) to the list of variables which are freezed at the session end\"\n ],\n \"session_save_path\": [\n \"string session_save_path([string newname])\",\n \"Return the current save path passed to module_name. If newname is given, the save path is replaced with newname\"\n ],\n \"session_set_cookie_params\": [\n \"void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])\",\n \"Set session cookie parameters\"\n ],\n \"session_set_save_handler\": [\n \"void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)\",\n \"Sets user-level functions\"\n ],\n \"session_start\": [\n \"bool session_start(void)\",\n \"Begin session - reinitializes freezed variables, registers browsers etc\"\n ],\n \"session_unregister\": [\n \"bool session_unregister(string varname)\",\n \"Removes varname from the list of variables which are freezed at the session end\"\n ],\n \"session_unset\": [\n \"void session_unset(void)\",\n \"Unset all registered variables\"\n ],\n \"session_write_close\": [\n \"void session_write_close(void)\",\n \"Write session data and end session\"\n ],\n \"set_error_handler\": [\n \"string set_error_handler(string error_handler [, int error_types])\",\n \"Sets a user-defined error handler function. Returns the previously defined error handler, or false on error\"\n ],\n \"set_exception_handler\": [\n \"string set_exception_handler(callable exception_handler)\",\n \"Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error\"\n ],\n \"set_include_path\": [\n \"string set_include_path(string new_include_path)\",\n \"Sets the include_path configuration option\"\n ],\n \"set_magic_quotes_runtime\": [\n \"bool set_magic_quotes_runtime(int new_setting)\",\n \"Set the current active configuration setting of magic_quotes_runtime and return previous\"\n ],\n \"set_time_limit\": [\n \"bool set_time_limit(int seconds)\",\n \"Sets the maximum time a script can run\"\n ],\n \"setcookie\": [\n \"bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])\",\n \"Send a cookie\"\n ],\n \"setlocale\": [\n \"string setlocale(mixed category, string locale [, string ...])\",\n \"Set locale information\"\n ],\n \"setrawcookie\": [\n \"bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])\",\n \"Send a cookie with no url encoding of the value\"\n ],\n \"settype\": [\n \"bool settype(mixed var, string type)\",\n \"Set the type of the variable\"\n ],\n \"sha1\": [\n \"string sha1(string str [, bool raw_output])\",\n \"Calculate the sha1 hash of a string\"\n ],\n \"sha1_file\": [\n \"string sha1_file(string filename [, bool raw_output])\",\n \"Calculate the sha1 hash of given filename\"\n ],\n \"shell_exec\": [\n \"string shell_exec(string cmd)\",\n \"Execute command via shell and return complete output as string\"\n ],\n \"shm_attach\": [\n \"int shm_attach(int key [, int memsize [, int perm]])\",\n \"Creates or open a shared memory segment\"\n ],\n \"shm_detach\": [\n \"bool shm_detach(resource shm_identifier)\",\n \"Disconnects from shared memory segment\"\n ],\n \"shm_get_var\": [\n \"mixed shm_get_var(resource id, int variable_key)\",\n \"Returns a variable from shared memory\"\n ],\n \"shm_has_var\": [\n \"bool shm_has_var(resource id, int variable_key)\",\n \"Checks whether a specific entry exists\"\n ],\n \"shm_put_var\": [\n \"bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)\",\n \"Inserts or updates a variable in shared memory\"\n ],\n \"shm_remove\": [\n \"bool shm_remove(resource shm_identifier)\",\n \"Removes shared memory from Unix systems\"\n ],\n \"shm_remove_var\": [\n \"bool shm_remove_var(resource id, int variable_key)\",\n \"Removes variable from shared memory\"\n ],\n \"shmop_close\": [\n \"void shmop_close (int shmid)\",\n \"closes a shared memory segment\"\n ],\n \"shmop_delete\": [\n \"bool shmop_delete (int shmid)\",\n \"mark segment for deletion\"\n ],\n \"shmop_open\": [\n \"int shmop_open (int key, string flags, int mode, int size)\",\n \"gets and attaches a shared memory segment\"\n ],\n \"shmop_read\": [\n \"string shmop_read (int shmid, int start, int count)\",\n \"reads from a shm segment\"\n ],\n \"shmop_size\": [\n \"int shmop_size (int shmid)\",\n \"returns the shm size\"\n ],\n \"shmop_write\": [\n \"int shmop_write (int shmid, string data, int offset)\",\n \"writes to a shared memory segment\"\n ],\n \"shuffle\": [\n \"bool shuffle(array array_arg)\",\n \"Randomly shuffle the contents of an array\"\n ],\n \"similar_text\": [\n \"int similar_text(string str1, string str2 [, float percent])\",\n \"Calculates the similarity between two strings\"\n ],\n \"simplexml_import_dom\": [\n \"simplemxml_element simplexml_import_dom(domNode node [, string class_name])\",\n \"Get a simplexml_element object from dom to allow for processing\"\n ],\n \"simplexml_load_file\": [\n \"simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])\",\n \"Load a filename and return a simplexml_element object to allow for processing\"\n ],\n \"simplexml_load_string\": [\n \"simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])\",\n \"Load a string and return a simplexml_element object to allow for processing\"\n ],\n \"sin\": [\n \"float sin(float number)\",\n \"Returns the sine of the number in radians\"\n ],\n \"sinh\": [\n \"float sinh(float number)\",\n \"Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2\"\n ],\n \"sleep\": [\n \"void sleep(int seconds)\",\n \"Delay for a given number of seconds\"\n ],\n \"smfi_addheader\": [\n \"bool smfi_addheader(string headerf, string headerv)\",\n \"Adds a header to the current message.\"\n ],\n \"smfi_addrcpt\": [\n \"bool smfi_addrcpt(string rcpt)\",\n \"Add a recipient to the message envelope.\"\n ],\n \"smfi_chgheader\": [\n \"bool smfi_chgheader(string headerf, string headerv)\",\n \"Changes a header's value for the current message.\"\n ],\n \"smfi_delrcpt\": [\n \"bool smfi_delrcpt(string rcpt)\",\n \"Removes the named recipient from the current message's envelope.\"\n ],\n \"smfi_getsymval\": [\n \"string smfi_getsymval(string macro)\",\n \"Returns the value of the given macro or NULL if the macro is not defined.\"\n ],\n \"smfi_replacebody\": [\n \"bool smfi_replacebody(string body)\",\n \"Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body.\"\n ],\n \"smfi_setflags\": [\n \"void smfi_setflags(long flags)\",\n \"Sets the flags describing the actions the filter may take.\"\n ],\n \"smfi_setreply\": [\n \"bool smfi_setreply(string rcode, string xcode, string message)\",\n \"Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter.\"\n ],\n \"smfi_settimeout\": [\n \"void smfi_settimeout(long timeout)\",\n \"Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket.\"\n ],\n \"snmp2_get\": [\n \"string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Fetch a SNMP object\"\n ],\n \"snmp2_getnext\": [\n \"string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Fetch a SNMP object\"\n ],\n \"snmp2_real_walk\": [\n \"array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Return all objects including their respective object id withing the specified one\"\n ],\n \"snmp2_set\": [\n \"int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])\",\n \"Set the value of a SNMP object\"\n ],\n \"snmp2_walk\": [\n \"array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Return all objects under the specified object id\"\n ],\n \"snmp3_get\": [\n \"int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])\",\n \"Fetch the value of a SNMP object\"\n ],\n \"snmp3_getnext\": [\n \"int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])\",\n \"Fetch the value of a SNMP object\"\n ],\n \"snmp3_real_walk\": [\n \"int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])\",\n \"Fetch the value of a SNMP object\"\n ],\n \"snmp3_set\": [\n \"int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])\",\n \"Fetch the value of a SNMP object\"\n ],\n \"snmp3_walk\": [\n \"int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])\",\n \"Fetch the value of a SNMP object\"\n ],\n \"snmp_get_quick_print\": [\n \"bool snmp_get_quick_print(void)\",\n \"Return the current status of quick_print\"\n ],\n \"snmp_get_valueretrieval\": [\n \"int snmp_get_valueretrieval()\",\n \"Return the method how the SNMP values will be returned\"\n ],\n \"snmp_read_mib\": [\n \"int snmp_read_mib(string filename)\",\n \"Reads and parses a MIB file into the active MIB tree.\"\n ],\n \"snmp_set_enum_print\": [\n \"void snmp_set_enum_print(int enum_print)\",\n \"Return all values that are enums with their enum value instead of the raw integer\"\n ],\n \"snmp_set_oid_output_format\": [\n \"void snmp_set_oid_output_format(int oid_format)\",\n \"Set the OID output format.\"\n ],\n \"snmp_set_quick_print\": [\n \"void snmp_set_quick_print(int quick_print)\",\n \"Return all objects including their respective object id withing the specified one\"\n ],\n \"snmp_set_valueretrieval\": [\n \"void snmp_set_valueretrieval(int method)\",\n \"Specify the method how the SNMP values will be returned\"\n ],\n \"snmpget\": [\n \"string snmpget(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Fetch a SNMP object\"\n ],\n \"snmpgetnext\": [\n \"string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Fetch a SNMP object\"\n ],\n \"snmprealwalk\": [\n \"array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Return all objects including their respective object id withing the specified one\"\n ],\n \"snmpset\": [\n \"int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])\",\n \"Set the value of a SNMP object\"\n ],\n \"snmpwalk\": [\n \"array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])\",\n \"Return all objects under the specified object id\"\n ],\n \"socket_accept\": [\n \"resource socket_accept(resource socket)\",\n \"Accepts a connection on the listening socket fd\"\n ],\n \"socket_bind\": [\n \"bool socket_bind(resource socket, string addr [, int port])\",\n \"Binds an open socket to a listening port, port is only specified in AF_INET family.\"\n ],\n \"socket_clear_error\": [\n \"void socket_clear_error([resource socket])\",\n \"Clears the error on the socket or the last error code.\"\n ],\n \"socket_close\": [\n \"void socket_close(resource socket)\",\n \"Closes a file descriptor\"\n ],\n \"socket_connect\": [\n \"bool socket_connect(resource socket, string addr [, int port])\",\n \"Opens a connection to addr:port on the socket specified by socket\"\n ],\n \"socket_create\": [\n \"resource socket_create(int domain, int type, int protocol)\",\n \"Creates an endpoint for communication in the domain specified by domain, of type specified by type\"\n ],\n \"socket_create_listen\": [\n \"resource socket_create_listen(int port[, int backlog])\",\n \"Opens a socket on port to accept connections\"\n ],\n \"socket_create_pair\": [\n \"bool socket_create_pair(int domain, int type, int protocol, array &fd)\",\n \"Creates a pair of indistinguishable sockets and stores them in fds.\"\n ],\n \"socket_get_option\": [\n \"mixed socket_get_option(resource socket, int level, int optname)\",\n \"Gets socket options for the socket\"\n ],\n \"socket_getpeername\": [\n \"bool socket_getpeername(resource socket, string &addr[, int &port])\",\n \"Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type.\"\n ],\n \"socket_getsockname\": [\n \"bool socket_getsockname(resource socket, string &addr[, int &port])\",\n \"Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type.\"\n ],\n \"socket_last_error\": [\n \"int socket_last_error([resource socket])\",\n \"Returns the last socket error (either the last used or the provided socket resource)\"\n ],\n \"socket_listen\": [\n \"bool socket_listen(resource socket[, int backlog])\",\n \"Sets the maximum number of connections allowed to be waited for on the socket specified by fd\"\n ],\n \"socket_read\": [\n \"string socket_read(resource socket, int length [, int type])\",\n \"Reads a maximum of length bytes from socket\"\n ],\n \"socket_recv\": [\n \"int socket_recv(resource socket, string &buf, int len, int flags)\",\n \"Receives data from a connected socket\"\n ],\n \"socket_recvfrom\": [\n \"int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])\",\n \"Receives data from a socket, connected or not\"\n ],\n \"socket_select\": [\n \"int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])\",\n \"Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec\"\n ],\n \"socket_send\": [\n \"int socket_send(resource socket, string buf, int len, int flags)\",\n \"Sends data to a connected socket\"\n ],\n \"socket_sendto\": [\n \"int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])\",\n \"Sends a message to a socket, whether it is connected or not\"\n ],\n \"socket_set_block\": [\n \"bool socket_set_block(resource socket)\",\n \"Sets blocking mode on a socket resource\"\n ],\n \"socket_set_nonblock\": [\n \"bool socket_set_nonblock(resource socket)\",\n \"Sets nonblocking mode on a socket resource\"\n ],\n \"socket_set_option\": [\n \"bool socket_set_option(resource socket, int level, int optname, int|array optval)\",\n \"Sets socket options for the socket\"\n ],\n \"socket_shutdown\": [\n \"bool socket_shutdown(resource socket[, int how])\",\n \"Shuts down a socket for receiving, sending, or both.\"\n ],\n \"socket_strerror\": [\n \"string socket_strerror(int errno)\",\n \"Returns a string describing an error\"\n ],\n \"socket_write\": [\n \"int socket_write(resource socket, string buf[, int length])\",\n \"Writes the buffer to the socket resource, length is optional\"\n ],\n \"solid_fetch_prev\": [\n \"bool solid_fetch_prev(resource result_id)\",\n \"\"\n ],\n \"sort\": [\n \"bool sort(array &array_arg [, int sort_flags])\",\n \"Sort an array\"\n ],\n \"soundex\": [\n \"string soundex(string str)\",\n \"Calculate the soundex key of a string\"\n ],\n \"spl_autoload\": [\n \"void spl_autoload(string class_name [, string file_extensions])\",\n \"Default implementation for __autoload()\"\n ],\n \"spl_autoload_call\": [\n \"void spl_autoload_call(string class_name)\",\n \"Try all registerd autoload function to load the requested class\"\n ],\n \"spl_autoload_extensions\": [\n \"string spl_autoload_extensions([string file_extensions])\",\n \"Register and return default file extensions for spl_autoload\"\n ],\n \"spl_autoload_functions\": [\n \"false|array spl_autoload_functions()\",\n \"Return all registered __autoload() functionns\"\n ],\n \"spl_autoload_register\": [\n \"bool spl_autoload_register([mixed autoload_function = \\\"spl_autoload\\\" [, throw = true [, prepend]]])\",\n \"Register given function as __autoload() implementation\"\n ],\n \"spl_autoload_unregister\": [\n \"bool spl_autoload_unregister(mixed autoload_function)\",\n \"Unregister given function as __autoload() implementation\"\n ],\n \"spl_classes\": [\n \"array spl_classes()\",\n \"Return an array containing the names of all clsses and interfaces defined in SPL\"\n ],\n \"spl_object_hash\": [\n \"string spl_object_hash(object obj)\",\n \"Return hash id for given object\"\n ],\n \"split\": [\n \"array split(string pattern, string string [, int limit])\",\n \"Split string into array by regular expression\"\n ],\n \"spliti\": [\n \"array spliti(string pattern, string string [, int limit])\",\n \"Split string into array by regular expression case-insensitive\"\n ],\n \"sprintf\": [\n \"string sprintf(string format [, mixed arg1 [, mixed ...]])\",\n \"Return a formatted string\"\n ],\n \"sql_regcase\": [\n \"string sql_regcase(string string)\",\n \"Make regular expression for case insensitive match\"\n ],\n \"sqlite_array_query\": [\n \"array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])\",\n \"Executes a query against a given database and returns an array of arrays.\"\n ],\n \"sqlite_busy_timeout\": [\n \"void sqlite_busy_timeout(resource db, int ms)\",\n \"Set busy timeout duration. If ms <= 0, all busy handlers are disabled.\"\n ],\n \"sqlite_changes\": [\n \"int sqlite_changes(resource db)\",\n \"Returns the number of rows that were changed by the most recent SQL statement.\"\n ],\n \"sqlite_close\": [\n \"void sqlite_close(resource db)\",\n \"Closes an open sqlite database.\"\n ],\n \"sqlite_column\": [\n \"mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])\",\n \"Fetches a column from the current row of a result set.\"\n ],\n \"sqlite_create_aggregate\": [\n \"bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])\",\n \"Registers an aggregate function for queries.\"\n ],\n \"sqlite_create_function\": [\n \"bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])\",\n \"Registers a \\\"regular\\\" function for queries.\"\n ],\n \"sqlite_current\": [\n \"array sqlite_current(resource result [, int result_type [, bool decode_binary]])\",\n \"Fetches the current row from a result set as an array.\"\n ],\n \"sqlite_error_string\": [\n \"string sqlite_error_string(int error_code)\",\n \"Returns the textual description of an error code.\"\n ],\n \"sqlite_escape_string\": [\n \"string sqlite_escape_string(string item)\",\n \"Escapes a string for use as a query parameter.\"\n ],\n \"sqlite_exec\": [\n \"boolean sqlite_exec(string query, resource db[, string &error_message])\",\n \"Executes a result-less query against a given database\"\n ],\n \"sqlite_factory\": [\n \"object sqlite_factory(string filename [, int mode [, string &error_message]])\",\n \"Opens a SQLite database and creates an object for it. Will create the database if it does not exist.\"\n ],\n \"sqlite_fetch_all\": [\n \"array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])\",\n \"Fetches all rows from a result set as an array of arrays.\"\n ],\n \"sqlite_fetch_array\": [\n \"array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])\",\n \"Fetches the next row from a result set as an array.\"\n ],\n \"sqlite_fetch_column_types\": [\n \"resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])\",\n \"Return an array of column types from a particular table.\"\n ],\n \"sqlite_fetch_object\": [\n \"object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])\",\n \"Fetches the next row from a result set as an object.\"\n ],\n \"sqlite_fetch_single\": [\n \"string sqlite_fetch_single(resource result [, bool decode_binary])\",\n \"Fetches the first column of a result set as a string.\"\n ],\n \"sqlite_field_name\": [\n \"string sqlite_field_name(resource result, int field_index)\",\n \"Returns the name of a particular field of a result set.\"\n ],\n \"sqlite_has_prev\": [\n \"bool sqlite_has_prev(resource result)\",\n \"* Returns whether a previous row is available.\"\n ],\n \"sqlite_key\": [\n \"int sqlite_key(resource result)\",\n \"Return the current row index of a buffered result.\"\n ],\n \"sqlite_last_error\": [\n \"int sqlite_last_error(resource db)\",\n \"Returns the error code of the last error for a database.\"\n ],\n \"sqlite_last_insert_rowid\": [\n \"int sqlite_last_insert_rowid(resource db)\",\n \"Returns the rowid of the most recently inserted row.\"\n ],\n \"sqlite_libencoding\": [\n \"string sqlite_libencoding()\",\n \"Returns the encoding (iso8859 or UTF-8) of the linked SQLite library.\"\n ],\n \"sqlite_libversion\": [\n \"string sqlite_libversion()\",\n \"Returns the version of the linked SQLite library.\"\n ],\n \"sqlite_next\": [\n \"bool sqlite_next(resource result)\",\n \"Seek to the next row number of a result set.\"\n ],\n \"sqlite_num_fields\": [\n \"int sqlite_num_fields(resource result)\",\n \"Returns the number of fields in a result set.\"\n ],\n \"sqlite_num_rows\": [\n \"int sqlite_num_rows(resource result)\",\n \"Returns the number of rows in a buffered result set.\"\n ],\n \"sqlite_open\": [\n \"resource sqlite_open(string filename [, int mode [, string &error_message]])\",\n \"Opens a SQLite database. Will create the database if it does not exist.\"\n ],\n \"sqlite_popen\": [\n \"resource sqlite_popen(string filename [, int mode [, string &error_message]])\",\n \"Opens a persistent handle to a SQLite database. Will create the database if it does not exist.\"\n ],\n \"sqlite_prev\": [\n \"bool sqlite_prev(resource result)\",\n \"* Seek to the previous row number of a result set.\"\n ],\n \"sqlite_query\": [\n \"resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])\",\n \"Executes a query against a given database and returns a result handle.\"\n ],\n \"sqlite_rewind\": [\n \"bool sqlite_rewind(resource result)\",\n \"Seek to the first row number of a buffered result set.\"\n ],\n \"sqlite_seek\": [\n \"bool sqlite_seek(resource result, int row)\",\n \"Seek to a particular row number of a buffered result set.\"\n ],\n \"sqlite_single_query\": [\n \"array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])\",\n \"Executes a query and returns either an array for one single column or the value of the first row.\"\n ],\n \"sqlite_udf_decode_binary\": [\n \"string sqlite_udf_decode_binary(string data)\",\n \"Decode binary encoding on a string parameter passed to an UDF.\"\n ],\n \"sqlite_udf_encode_binary\": [\n \"string sqlite_udf_encode_binary(string data)\",\n \"Apply binary encoding (if acequired) to a string to return from an UDF.\"\n ],\n \"sqlite_unbuffered_query\": [\n \"resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])\",\n \"Executes a query that does not prefetch and buffer all data.\"\n ],\n \"sqlite_valid\": [\n \"bool sqlite_valid(resource result)\",\n \"Returns whether more rows are available.\"\n ],\n \"sqrt\": [\n \"float sqrt(float number)\",\n \"Returns the square root of the number\"\n ],\n \"srand\": [\n \"void srand([int seed])\",\n \"Seeds random number generator\"\n ],\n \"sscanf\": [\n \"mixed sscanf(string str, string format [, string ...])\",\n \"Implements an ANSI C compatible sscanf\"\n ],\n \"stat\": [\n \"array stat(string filename)\",\n \"Give information about a file\"\n ],\n \"str_getcsv\": [\n \"array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])\",\n \"Parse a CSV string into an array\"\n ],\n \"str_ireplace\": [\n \"mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])\",\n \"Replaces all occurrences of search in haystack with replace / case-insensitive\"\n ],\n \"str_pad\": [\n \"string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])\",\n \"Returns input string padded on the left or right to specified length with pad_string\"\n ],\n \"str_repeat\": [\n \"string str_repeat(string input, int mult)\",\n \"Returns the input string repeat mult times\"\n ],\n \"str_replace\": [\n \"mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])\",\n \"Replaces all occurrences of search in haystack with replace\"\n ],\n \"str_rot13\": [\n \"string str_rot13(string str)\",\n \"Perform the rot13 transform on a string\"\n ],\n \"str_shuffle\": [\n \"void str_shuffle(string str)\",\n \"Shuffles string. One permutation of all possible is created\"\n ],\n \"str_split\": [\n \"array str_split(string str [, int split_length])\",\n \"Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long.\"\n ],\n \"str_word_count\": [\n \"mixed str_word_count(string str, [int format [, string charlist]])\",\n \"Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \\\"'\\\" and \\\"-\\\" characters.\"\n ],\n \"strcasecmp\": [\n \"int strcasecmp(string str1, string str2)\",\n \"Binary safe case-insensitive string comparison\"\n ],\n \"strchr\": [\n \"string strchr(string haystack, string needle)\",\n \"An alias for strstr\"\n ],\n \"strcmp\": [\n \"int strcmp(string str1, string str2)\",\n \"Binary safe string comparison\"\n ],\n \"strcoll\": [\n \"int strcoll(string str1, string str2)\",\n \"Compares two strings using the current locale\"\n ],\n \"strcspn\": [\n \"int strcspn(string str, string mask [, start [, len]])\",\n \"Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)\"\n ],\n \"stream_bucket_append\": [\n \"void stream_bucket_append(resource brigade, resource bucket)\",\n \"Append bucket to brigade\"\n ],\n \"stream_bucket_make_writeable\": [\n \"object stream_bucket_make_writeable(resource brigade)\",\n \"Return a bucket object from the brigade for operating on\"\n ],\n \"stream_bucket_new\": [\n \"resource stream_bucket_new(resource stream, string buffer)\",\n \"Create a new bucket for use on the current stream\"\n ],\n \"stream_bucket_prepend\": [\n \"void stream_bucket_prepend(resource brigade, resource bucket)\",\n \"Prepend bucket to brigade\"\n ],\n \"stream_context_create\": [\n \"resource stream_context_create([array options[, array params]])\",\n \"Create a file context and optionally set parameters\"\n ],\n \"stream_context_get_default\": [\n \"resource stream_context_get_default([array options])\",\n \"Get a handle on the default file/stream context and optionally set parameters\"\n ],\n \"stream_context_get_options\": [\n \"array stream_context_get_options(resource context|resource stream)\",\n \"Retrieve options for a stream/wrapper/context\"\n ],\n \"stream_context_get_params\": [\n \"array stream_context_get_params(resource context|resource stream)\",\n \"Get parameters of a file context\"\n ],\n \"stream_context_set_default\": [\n \"resource stream_context_set_default(array options)\",\n \"Set default file/stream context, returns the context as a resource\"\n ],\n \"stream_context_set_option\": [\n \"bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)\",\n \"Set an option for a wrapper\"\n ],\n \"stream_context_set_params\": [\n \"bool stream_context_set_params(resource context|resource stream, array options)\",\n \"Set parameters for a file context\"\n ],\n \"stream_copy_to_stream\": [\n \"long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])\",\n \"Reads up to maxlen bytes from source stream and writes them to dest stream.\"\n ],\n \"stream_filter_append\": [\n \"resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])\",\n \"Append a filter to a stream\"\n ],\n \"stream_filter_prepend\": [\n \"resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])\",\n \"Prepend a filter to a stream\"\n ],\n \"stream_filter_register\": [\n \"bool stream_filter_register(string filtername, string classname)\",\n \"Registers a custom filter handler class\"\n ],\n \"stream_filter_remove\": [\n \"bool stream_filter_remove(resource stream_filter)\",\n \"Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource\"\n ],\n \"stream_get_contents\": [\n \"string stream_get_contents(resource source [, long maxlen [, long offset]])\",\n \"Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string.\"\n ],\n \"stream_get_filters\": [\n \"array stream_get_filters(void)\",\n \"Returns a list of registered filters\"\n ],\n \"stream_get_line\": [\n \"string stream_get_line(resource stream, int maxlen [, string ending])\",\n \"Read up to maxlen bytes from a stream or until the ending string is found\"\n ],\n \"stream_get_meta_data\": [\n \"array stream_get_meta_data(resource fp)\",\n \"Retrieves header/meta data from streams/file pointers\"\n ],\n \"stream_get_transports\": [\n \"array stream_get_transports()\",\n \"Retrieves list of registered socket transports\"\n ],\n \"stream_get_wrappers\": [\n \"array stream_get_wrappers()\",\n \"Retrieves list of registered stream wrappers\"\n ],\n \"stream_is_local\": [\n \"bool stream_is_local(resource stream|string url)\",\n \"\"\n ],\n \"stream_resolve_include_path\": [\n \"string stream_resolve_include_path(string filename)\",\n \"Determine what file will be opened by calls to fopen() with a relative path\"\n ],\n \"stream_select\": [\n \"int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])\",\n \"Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec\"\n ],\n \"stream_set_blocking\": [\n \"bool stream_set_blocking(resource socket, int mode)\",\n \"Set blocking/non-blocking mode on a socket or stream\"\n ],\n \"stream_set_timeout\": [\n \"bool stream_set_timeout(resource stream, int seconds [, int microseconds])\",\n \"Set timeout on stream read to seconds + microseonds\"\n ],\n \"stream_set_write_buffer\": [\n \"int stream_set_write_buffer(resource fp, int buffer)\",\n \"Set file write buffer\"\n ],\n \"stream_socket_accept\": [\n \"resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])\",\n \"Accept a client connection from a server socket\"\n ],\n \"stream_socket_client\": [\n \"resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])\",\n \"Open a client connection to a remote address\"\n ],\n \"stream_socket_enable_crypto\": [\n \"int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])\",\n \"Enable or disable a specific kind of crypto on the stream\"\n ],\n \"stream_socket_get_name\": [\n \"string stream_socket_get_name(resource stream, bool want_peer)\",\n \"Returns either the locally bound or remote name for a socket stream\"\n ],\n \"stream_socket_pair\": [\n \"array stream_socket_pair(int domain, int type, int protocol)\",\n \"Creates a pair of connected, indistinguishable socket streams\"\n ],\n \"stream_socket_recvfrom\": [\n \"string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])\",\n \"Receives data from a socket stream\"\n ],\n \"stream_socket_sendto\": [\n \"long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])\",\n \"Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format\"\n ],\n \"stream_socket_server\": [\n \"resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])\",\n \"Create a server socket bound to localaddress\"\n ],\n \"stream_socket_shutdown\": [\n \"int stream_socket_shutdown(resource stream, int how)\",\n \"causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed.\"\n ],\n \"stream_supports_lock\": [\n \"bool stream_supports_lock(resource stream)\",\n \"Tells wether the stream supports locking through flock().\"\n ],\n \"stream_wrapper_register\": [\n \"bool stream_wrapper_register(string protocol, string classname[, integer flags])\",\n \"Registers a custom URL protocol handler class\"\n ],\n \"stream_wrapper_restore\": [\n \"bool stream_wrapper_restore(string protocol)\",\n \"Restore the original protocol handler, overriding if necessary\"\n ],\n \"stream_wrapper_unregister\": [\n \"bool stream_wrapper_unregister(string protocol)\",\n \"Unregister a wrapper for the life of the current request.\"\n ],\n \"strftime\": [\n \"string strftime(string format [, int timestamp])\",\n \"Format a local time/date according to locale settings\"\n ],\n \"strip_tags\": [\n \"string strip_tags(string str [, string allowable_tags])\",\n \"Strips HTML and PHP tags from a string\"\n ],\n \"stripcslashes\": [\n \"string stripcslashes(string str)\",\n \"Strips backslashes from a string. Uses C-style conventions\"\n ],\n \"stripos\": [\n \"int stripos(string haystack, string needle [, int offset])\",\n \"Finds position of first occurrence of a string within another, case insensitive\"\n ],\n \"stripslashes\": [\n \"string stripslashes(string str)\",\n \"Strips backslashes from a string\"\n ],\n \"stristr\": [\n \"string stristr(string haystack, string needle[, bool part])\",\n \"Finds first occurrence of a string within another, case insensitive\"\n ],\n \"strlen\": [\n \"int strlen(string str)\",\n \"Get string length\"\n ],\n \"strnatcasecmp\": [\n \"int strnatcasecmp(string s1, string s2)\",\n \"Returns the result of case-insensitive string comparison using 'natural' algorithm\"\n ],\n \"strnatcmp\": [\n \"int strnatcmp(string s1, string s2)\",\n \"Returns the result of string comparison using 'natural' algorithm\"\n ],\n \"strncasecmp\": [\n \"int strncasecmp(string str1, string str2, int len)\",\n \"Binary safe string comparison\"\n ],\n \"strncmp\": [\n \"int strncmp(string str1, string str2, int len)\",\n \"Binary safe string comparison\"\n ],\n \"strpbrk\": [\n \"array strpbrk(string haystack, string char_list)\",\n \"Search a string for any of a set of characters\"\n ],\n \"strpos\": [\n \"int strpos(string haystack, string needle [, int offset])\",\n \"Finds position of first occurrence of a string within another\"\n ],\n \"strptime\": [\n \"string strptime(string timestamp, string format)\",\n \"Parse a time/date generated with strftime()\"\n ],\n \"strrchr\": [\n \"string strrchr(string haystack, string needle)\",\n \"Finds the last occurrence of a character in a string within another\"\n ],\n \"strrev\": [\n \"string strrev(string str)\",\n \"Reverse a string\"\n ],\n \"strripos\": [\n \"int strripos(string haystack, string needle [, int offset])\",\n \"Finds position of last occurrence of a string within another string\"\n ],\n \"strrpos\": [\n \"int strrpos(string haystack, string needle [, int offset])\",\n \"Finds position of last occurrence of a string within another string\"\n ],\n \"strspn\": [\n \"int strspn(string str, string mask [, start [, len]])\",\n \"Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)\"\n ],\n \"strstr\": [\n \"string strstr(string haystack, string needle[, bool part])\",\n \"Finds first occurrence of a string within another\"\n ],\n \"strtok\": [\n \"string strtok([string str,] string token)\",\n \"Tokenize a string\"\n ],\n \"strtolower\": [\n \"string strtolower(string str)\",\n \"Makes a string lowercase\"\n ],\n \"strtotime\": [\n \"int strtotime(string time [, int now ])\",\n \"Convert string representation of date and time to a timestamp\"\n ],\n \"strtoupper\": [\n \"string strtoupper(string str)\",\n \"Makes a string uppercase\"\n ],\n \"strtr\": [\n \"string strtr(string str, string from[, string to])\",\n \"Translates characters in str using given translation tables\"\n ],\n \"strval\": [\n \"string strval(mixed var)\",\n \"Get the string value of a variable\"\n ],\n \"substr\": [\n \"string substr(string str, int start [, int length])\",\n \"Returns part of a string\"\n ],\n \"substr_compare\": [\n \"int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])\",\n \"Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters\"\n ],\n \"substr_count\": [\n \"int substr_count(string haystack, string needle [, int offset [, int length]])\",\n \"Returns the number of times a substring occurs in the string\"\n ],\n \"substr_replace\": [\n \"mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])\",\n \"Replaces part of a string with another string\"\n ],\n \"sybase_affected_rows\": [\n \"int sybase_affected_rows([resource link_id])\",\n \"Get number of affected rows in last query\"\n ],\n \"sybase_close\": [\n \"bool sybase_close([resource link_id])\",\n \"Close Sybase connection\"\n ],\n \"sybase_connect\": [\n \"int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])\",\n \"Open Sybase server connection\"\n ],\n \"sybase_data_seek\": [\n \"bool sybase_data_seek(resource result, int offset)\",\n \"Move internal row pointer\"\n ],\n \"sybase_deadlock_retry_count\": [\n \"void sybase_deadlock_retry_count(int retry_count)\",\n \"Sets deadlock retry count\"\n ],\n \"sybase_fetch_array\": [\n \"array sybase_fetch_array(resource result)\",\n \"Fetch row as array\"\n ],\n \"sybase_fetch_assoc\": [\n \"array sybase_fetch_assoc(resource result)\",\n \"Fetch row as array without numberic indices\"\n ],\n \"sybase_fetch_field\": [\n \"object sybase_fetch_field(resource result [, int offset])\",\n \"Get field information\"\n ],\n \"sybase_fetch_object\": [\n \"object sybase_fetch_object(resource result [, mixed object])\",\n \"Fetch row as object\"\n ],\n \"sybase_fetch_row\": [\n \"array sybase_fetch_row(resource result)\",\n \"Get row as enumerated array\"\n ],\n \"sybase_field_seek\": [\n \"bool sybase_field_seek(resource result, int offset)\",\n \"Set field offset\"\n ],\n \"sybase_free_result\": [\n \"bool sybase_free_result(resource result)\",\n \"Free result memory\"\n ],\n \"sybase_get_last_message\": [\n \"string sybase_get_last_message(void)\",\n \"Returns the last message from server (over min_message_severity)\"\n ],\n \"sybase_min_client_severity\": [\n \"void sybase_min_client_severity(int severity)\",\n \"Sets minimum client severity\"\n ],\n \"sybase_min_server_severity\": [\n \"void sybase_min_server_severity(int severity)\",\n \"Sets minimum server severity\"\n ],\n \"sybase_num_fields\": [\n \"int sybase_num_fields(resource result)\",\n \"Get number of fields in result\"\n ],\n \"sybase_num_rows\": [\n \"int sybase_num_rows(resource result)\",\n \"Get number of rows in result\"\n ],\n \"sybase_pconnect\": [\n \"int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])\",\n \"Open persistent Sybase connection\"\n ],\n \"sybase_query\": [\n \"int sybase_query(string query [, resource link_id])\",\n \"Send Sybase query\"\n ],\n \"sybase_result\": [\n \"string sybase_result(resource result, int row, mixed field)\",\n \"Get result data\"\n ],\n \"sybase_select_db\": [\n \"bool sybase_select_db(string database [, resource link_id])\",\n \"Select Sybase database\"\n ],\n \"sybase_set_message_handler\": [\n \"bool sybase_set_message_handler(mixed error_func [, resource connection])\",\n \"Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted\"\n ],\n \"sybase_unbuffered_query\": [\n \"int sybase_unbuffered_query(string query [, resource link_id])\",\n \"Send Sybase query\"\n ],\n \"symlink\": [\n \"int symlink(string target, string link)\",\n \"Create a symbolic link\"\n ],\n \"sys_get_temp_dir\": [\n \"string sys_get_temp_dir()\",\n \"Returns directory path used for temporary files\"\n ],\n \"sys_getloadavg\": [\n \"array sys_getloadavg()\",\n \"\"\n ],\n \"syslog\": [\n \"bool syslog(int priority, string message)\",\n \"Generate a system log message\"\n ],\n \"system\": [\n \"int system(string command [, int &return_value])\",\n \"Execute an external program and display output\"\n ],\n \"tan\": [\n \"float tan(float number)\",\n \"Returns the tangent of the number in radians\"\n ],\n \"tanh\": [\n \"float tanh(float number)\",\n \"Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)\"\n ],\n \"tempnam\": [\n \"string tempnam(string dir, string prefix)\",\n \"Create a unique filename in a directory\"\n ],\n \"textdomain\": [\n \"string textdomain(string domain)\",\n \"Set the textdomain to \\\"domain\\\". Returns the current domain\"\n ],\n \"tidy_access_count\": [\n \"int tidy_access_count()\",\n \"Returns the Number of Tidy accessibility warnings encountered for specified document.\"\n ],\n \"tidy_clean_repair\": [\n \"boolean tidy_clean_repair()\",\n \"Execute configured cleanup and repair operations on parsed markup\"\n ],\n \"tidy_config_count\": [\n \"int tidy_config_count()\",\n \"Returns the Number of Tidy configuration errors encountered for specified document.\"\n ],\n \"tidy_diagnose\": [\n \"boolean tidy_diagnose()\",\n \"Run configured diagnostics on parsed and repaired markup.\"\n ],\n \"tidy_error_count\": [\n \"int tidy_error_count()\",\n \"Returns the Number of Tidy errors encountered for specified document.\"\n ],\n \"tidy_get_body\": [\n \"TidyNode tidy_get_body(resource tidy)\",\n \"Returns a TidyNode Object starting from the tag of the tidy parse tree\"\n ],\n \"tidy_get_config\": [\n \"array tidy_get_config()\",\n \"Get current Tidy configuarion\"\n ],\n \"tidy_get_error_buffer\": [\n \"string tidy_get_error_buffer([boolean detailed])\",\n \"Return warnings and errors which occured parsing the specified document\"\n ],\n \"tidy_get_head\": [\n \"TidyNode tidy_get_head()\",\n \"Returns a TidyNode Object starting from the tag of the tidy parse tree\"\n ],\n \"tidy_get_html\": [\n \"TidyNode tidy_get_html()\",\n \"Returns a TidyNode Object starting from the tag of the tidy parse tree\"\n ],\n \"tidy_get_html_ver\": [\n \"int tidy_get_html_ver()\",\n \"Get the Detected HTML version for the specified document.\"\n ],\n \"tidy_get_opt_doc\": [\n \"string tidy_get_opt_doc(tidy resource, string optname)\",\n \"Returns the documentation for the given option name\"\n ],\n \"tidy_get_output\": [\n \"string tidy_get_output()\",\n \"Return a string representing the parsed tidy markup\"\n ],\n \"tidy_get_release\": [\n \"string tidy_get_release()\",\n \"Get release date (version) for Tidy library\"\n ],\n \"tidy_get_root\": [\n \"TidyNode tidy_get_root()\",\n \"Returns a TidyNode Object representing the root of the tidy parse tree\"\n ],\n \"tidy_get_status\": [\n \"int tidy_get_status()\",\n \"Get status of specfied document.\"\n ],\n \"tidy_getopt\": [\n \"mixed tidy_getopt(string option)\",\n \"Returns the value of the specified configuration option for the tidy document.\"\n ],\n \"tidy_is_xhtml\": [\n \"boolean tidy_is_xhtml()\",\n \"Indicates if the document is a XHTML document.\"\n ],\n \"tidy_is_xml\": [\n \"boolean tidy_is_xml()\",\n \"Indicates if the document is a generic (non HTML/XHTML) XML document.\"\n ],\n \"tidy_parse_file\": [\n \"boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])\",\n \"Parse markup in file or URI\"\n ],\n \"tidy_parse_string\": [\n \"bool tidy_parse_string(string input [, mixed config_options [, string encoding]])\",\n \"Parse a document stored in a string\"\n ],\n \"tidy_repair_file\": [\n \"boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])\",\n \"Repair a file using an optionally provided configuration file\"\n ],\n \"tidy_repair_string\": [\n \"boolean tidy_repair_string(string data [, mixed config_file [, string encoding]])\",\n \"Repair a string using an optionally provided configuration file\"\n ],\n \"tidy_warning_count\": [\n \"int tidy_warning_count()\",\n \"Returns the Number of Tidy warnings encountered for specified document.\"\n ],\n \"time\": [\n \"int time(void)\",\n \"Return current UNIX timestamp\"\n ],\n \"time_nanosleep\": [\n \"mixed time_nanosleep(long seconds, long nanoseconds)\",\n \"Delay for a number of seconds and nano seconds\"\n ],\n \"time_sleep_until\": [\n \"mixed time_sleep_until(float timestamp)\",\n \"Make the script sleep until the specified time\"\n ],\n \"timezone_abbreviations_list\": [\n \"array timezone_abbreviations_list()\",\n \"Returns associative array containing dst, offset and the timezone name\"\n ],\n \"timezone_identifiers_list\": [\n \"array timezone_identifiers_list([long what[, string country]])\",\n \"Returns numerically index array with all timezone identifiers.\"\n ],\n \"timezone_location_get\": [\n \"array timezone_location_get()\",\n \"Returns location information for a timezone, including country code, latitude/longitude and comments\"\n ],\n \"timezone_name_from_abbr\": [\n \"string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])\",\n \"Returns the timezone name from abbrevation\"\n ],\n \"timezone_name_get\": [\n \"string timezone_name_get(DateTimeZone object)\",\n \"Returns the name of the timezone.\"\n ],\n \"timezone_offset_get\": [\n \"long timezone_offset_get(DateTimeZone object, DateTime object)\",\n \"Returns the timezone offset.\"\n ],\n \"timezone_open\": [\n \"DateTimeZone timezone_open(string timezone)\",\n \"Returns new DateTimeZone object\"\n ],\n \"timezone_transitions_get\": [\n \"array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])\",\n \"Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone.\"\n ],\n \"timezone_version_get\": [\n \"array timezone_version_get()\",\n \"Returns the Olson database version number.\"\n ],\n \"tmpfile\": [\n \"resource tmpfile(void)\",\n \"Create a temporary file that will be deleted automatically after use\"\n ],\n \"token_get_all\": [\n \"array token_get_all(string source)\",\n \"\"\n ],\n \"token_name\": [\n \"string token_name(int type)\",\n \"\"\n ],\n \"touch\": [\n \"bool touch(string filename [, int time [, int atime]])\",\n \"Set modification time of file\"\n ],\n \"trigger_error\": [\n \"void trigger_error(string messsage [, int error_type])\",\n \"Generates a user-level error/warning/notice message\"\n ],\n \"trim\": [\n \"string trim(string str [, string character_mask])\",\n \"Strips whitespace from the beginning and end of a string\"\n ],\n \"uasort\": [\n \"bool uasort(array array_arg, string cmp_function)\",\n \"Sort an array with a user-defined comparison function and maintain index association\"\n ],\n \"ucfirst\": [\n \"string ucfirst(string str)\",\n \"Make a string's first character lowercase\"\n ],\n \"ucwords\": [\n \"string ucwords(string str)\",\n \"Uppercase the first character of every word in a string\"\n ],\n \"uksort\": [\n \"bool uksort(array array_arg, string cmp_function)\",\n \"Sort an array by keys using a user-defined comparison function\"\n ],\n \"umask\": [\n \"int umask([int mask])\",\n \"Return or change the umask\"\n ],\n \"uniqid\": [\n \"string uniqid([string prefix [, bool more_entropy]])\",\n \"Generates a unique ID\"\n ],\n \"unixtojd\": [\n \"int unixtojd([int timestamp])\",\n \"Convert UNIX timestamp to Julian Day\"\n ],\n \"unlink\": [\n \"bool unlink(string filename[, context context])\",\n \"Delete a file\"\n ],\n \"unpack\": [\n \"array unpack(string format, string input)\",\n \"Unpack binary string into named array elements according to format argument\"\n ],\n \"unregister_tick_function\": [\n \"void unregister_tick_function(string function_name)\",\n \"Unregisters a tick callback function\"\n ],\n \"unserialize\": [\n \"mixed unserialize(string variable_representation)\",\n \"Takes a string representation of variable and recreates it\"\n ],\n \"unset\": [\n \"void unset (mixed var [, mixed var])\",\n \"Unset a given variable\"\n ],\n \"urldecode\": [\n \"string urldecode(string str)\",\n \"Decodes URL-encoded string\"\n ],\n \"urlencode\": [\n \"string urlencode(string str)\",\n \"URL-encodes string\"\n ],\n \"usleep\": [\n \"void usleep(int micro_seconds)\",\n \"Delay for a given number of micro seconds\"\n ],\n \"usort\": [\n \"bool usort(array array_arg, string cmp_function)\",\n \"Sort an array by values using a user-defined comparison function\"\n ],\n \"utf8_decode\": [\n \"string utf8_decode(string data)\",\n \"Converts a UTF-8 encoded string to ISO-8859-1\"\n ],\n \"utf8_encode\": [\n \"string utf8_encode(string data)\",\n \"Encodes an ISO-8859-1 string to UTF-8\"\n ],\n \"var_dump\": [\n \"void var_dump(mixed var)\",\n \"Dumps a string representation of variable to output\"\n ],\n \"var_export\": [\n \"mixed var_export(mixed var [, bool return])\",\n \"Outputs or returns a string representation of a variable\"\n ],\n \"variant_abs\": [\n \"mixed variant_abs(mixed left)\",\n \"Returns the absolute value of a variant\"\n ],\n \"variant_add\": [\n \"mixed variant_add(mixed left, mixed right)\",\n \"\\\"Adds\\\" two variant values together and returns the result\"\n ],\n \"variant_and\": [\n \"mixed variant_and(mixed left, mixed right)\",\n \"performs a bitwise AND operation between two variants and returns the result\"\n ],\n \"variant_cast\": [\n \"object variant_cast(object variant, int type)\",\n \"Convert a variant into a new variant object of another type\"\n ],\n \"variant_cat\": [\n \"mixed variant_cat(mixed left, mixed right)\",\n \"concatenates two variant values together and returns the result\"\n ],\n \"variant_cmp\": [\n \"int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])\",\n \"Compares two variants\"\n ],\n \"variant_date_from_timestamp\": [\n \"object variant_date_from_timestamp(int timestamp)\",\n \"Returns a variant date representation of a unix timestamp\"\n ],\n \"variant_date_to_timestamp\": [\n \"int variant_date_to_timestamp(object variant)\",\n \"Converts a variant date/time value to unix timestamp\"\n ],\n \"variant_div\": [\n \"mixed variant_div(mixed left, mixed right)\",\n \"Returns the result from dividing two variants\"\n ],\n \"variant_eqv\": [\n \"mixed variant_eqv(mixed left, mixed right)\",\n \"Performs a bitwise equivalence on two variants\"\n ],\n \"variant_fix\": [\n \"mixed variant_fix(mixed left)\",\n \"Returns the integer part ? of a variant\"\n ],\n \"variant_get_type\": [\n \"int variant_get_type(object variant)\",\n \"Returns the VT_XXX type code for a variant\"\n ],\n \"variant_idiv\": [\n \"mixed variant_idiv(mixed left, mixed right)\",\n \"Converts variants to integers and then returns the result from dividing them\"\n ],\n \"variant_imp\": [\n \"mixed variant_imp(mixed left, mixed right)\",\n \"Performs a bitwise implication on two variants\"\n ],\n \"variant_int\": [\n \"mixed variant_int(mixed left)\",\n \"Returns the integer portion of a variant\"\n ],\n \"variant_mod\": [\n \"mixed variant_mod(mixed left, mixed right)\",\n \"Divides two variants and returns only the remainder\"\n ],\n \"variant_mul\": [\n \"mixed variant_mul(mixed left, mixed right)\",\n \"multiplies the values of the two variants and returns the result\"\n ],\n \"variant_neg\": [\n \"mixed variant_neg(mixed left)\",\n \"Performs logical negation on a variant\"\n ],\n \"variant_not\": [\n \"mixed variant_not(mixed left)\",\n \"Performs bitwise not negation on a variant\"\n ],\n \"variant_or\": [\n \"mixed variant_or(mixed left, mixed right)\",\n \"Performs a logical disjunction on two variants\"\n ],\n \"variant_pow\": [\n \"mixed variant_pow(mixed left, mixed right)\",\n \"Returns the result of performing the power function with two variants\"\n ],\n \"variant_round\": [\n \"mixed variant_round(mixed left, int decimals)\",\n \"Rounds a variant to the specified number of decimal places\"\n ],\n \"variant_set\": [\n \"void variant_set(object variant, mixed value)\",\n \"Assigns a new value for a variant object\"\n ],\n \"variant_set_type\": [\n \"void variant_set_type(object variant, int type)\",\n \"Convert a variant into another type. Variant is modified \\\"in-place\\\"\"\n ],\n \"variant_sub\": [\n \"mixed variant_sub(mixed left, mixed right)\",\n \"subtracts the value of the right variant from the left variant value and returns the result\"\n ],\n \"variant_xor\": [\n \"mixed variant_xor(mixed left, mixed right)\",\n \"Performs a logical exclusion on two variants\"\n ],\n \"version_compare\": [\n \"int version_compare(string ver1, string ver2 [, string oper])\",\n \"Compares two \\\"PHP-standardized\\\" version number strings\"\n ],\n \"vfprintf\": [\n \"int vfprintf(resource stream, string format, array args)\",\n \"Output a formatted string into a stream\"\n ],\n \"virtual\": [\n \"bool virtual(string filename)\",\n \"Perform an Apache sub-request\"\n ],\n \"vprintf\": [\n \"int vprintf(string format, array args)\",\n \"Output a formatted string\"\n ],\n \"vsprintf\": [\n \"string vsprintf(string format, array args)\",\n \"Return a formatted string\"\n ],\n \"wddx_add_vars\": [\n \"int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])\",\n \"Serializes given variables and adds them to packet given by packet_id\"\n ],\n \"wddx_deserialize\": [\n \"mixed wddx_deserialize(mixed packet)\",\n \"Deserializes given packet and returns a PHP value\"\n ],\n \"wddx_packet_end\": [\n \"string wddx_packet_end(resource packet_id)\",\n \"Ends specified WDDX packet and returns the string containing the packet\"\n ],\n \"wddx_packet_start\": [\n \"resource wddx_packet_start([string comment])\",\n \"Starts a WDDX packet with optional comment and returns the packet id\"\n ],\n \"wddx_serialize_value\": [\n \"string wddx_serialize_value(mixed var [, string comment])\",\n \"Creates a new packet and serializes the given value\"\n ],\n \"wddx_serialize_vars\": [\n \"string wddx_serialize_vars(mixed var_name [, mixed ...])\",\n \"Creates a new packet and serializes given variables into a struct\"\n ],\n \"wordwrap\": [\n \"string wordwrap(string str [, int width [, string break [, boolean cut]]])\",\n \"Wraps buffer to selected number of characters using string break char\"\n ],\n \"xml_error_string\": [\n \"string xml_error_string(int code)\",\n \"Get XML parser error string\"\n ],\n \"xml_get_current_byte_index\": [\n \"int xml_get_current_byte_index(resource parser)\",\n \"Get current byte index for an XML parser\"\n ],\n \"xml_get_current_column_number\": [\n \"int xml_get_current_column_number(resource parser)\",\n \"Get current column number for an XML parser\"\n ],\n \"xml_get_current_line_number\": [\n \"int xml_get_current_line_number(resource parser)\",\n \"Get current line number for an XML parser\"\n ],\n \"xml_get_error_code\": [\n \"int xml_get_error_code(resource parser)\",\n \"Get XML parser error code\"\n ],\n \"xml_parse\": [\n \"int xml_parse(resource parser, string data [, int isFinal])\",\n \"Start parsing an XML document\"\n ],\n \"xml_parse_into_struct\": [\n \"int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])\",\n \"Parsing a XML document\"\n ],\n \"xml_parser_create\": [\n \"resource xml_parser_create([string encoding])\",\n \"Create an XML parser\"\n ],\n \"xml_parser_create_ns\": [\n \"resource xml_parser_create_ns([string encoding [, string sep]])\",\n \"Create an XML parser\"\n ],\n \"xml_parser_free\": [\n \"int xml_parser_free(resource parser)\",\n \"Free an XML parser\"\n ],\n \"xml_parser_get_option\": [\n \"int xml_parser_get_option(resource parser, int option)\",\n \"Get options from an XML parser\"\n ],\n \"xml_parser_set_option\": [\n \"int xml_parser_set_option(resource parser, int option, mixed value)\",\n \"Set options in an XML parser\"\n ],\n \"xml_set_character_data_handler\": [\n \"int xml_set_character_data_handler(resource parser, string hdl)\",\n \"Set up character data handler\"\n ],\n \"xml_set_default_handler\": [\n \"int xml_set_default_handler(resource parser, string hdl)\",\n \"Set up default handler\"\n ],\n \"xml_set_element_handler\": [\n \"int xml_set_element_handler(resource parser, string shdl, string ehdl)\",\n \"Set up start and end element handlers\"\n ],\n \"xml_set_end_namespace_decl_handler\": [\n \"int xml_set_end_namespace_decl_handler(resource parser, string hdl)\",\n \"Set up character data handler\"\n ],\n \"xml_set_external_entity_ref_handler\": [\n \"int xml_set_external_entity_ref_handler(resource parser, string hdl)\",\n \"Set up external entity reference handler\"\n ],\n \"xml_set_notation_decl_handler\": [\n \"int xml_set_notation_decl_handler(resource parser, string hdl)\",\n \"Set up notation declaration handler\"\n ],\n \"xml_set_object\": [\n \"int xml_set_object(resource parser, object &obj)\",\n \"Set up object which should be used for callbacks\"\n ],\n \"xml_set_processing_instruction_handler\": [\n \"int xml_set_processing_instruction_handler(resource parser, string hdl)\",\n \"Set up processing instruction (PI) handler\"\n ],\n \"xml_set_start_namespace_decl_handler\": [\n \"int xml_set_start_namespace_decl_handler(resource parser, string hdl)\",\n \"Set up character data handler\"\n ],\n \"xml_set_unparsed_entity_decl_handler\": [\n \"int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)\",\n \"Set up unparsed entity declaration handler\"\n ],\n \"xmlrpc_decode\": [\n \"array xmlrpc_decode(string xml [, string encoding])\",\n \"Decodes XML into native PHP types\"\n ],\n \"xmlrpc_decode_request\": [\n \"array xmlrpc_decode_request(string xml, string& method [, string encoding])\",\n \"Decodes XML into native PHP types\"\n ],\n \"xmlrpc_encode\": [\n \"string xmlrpc_encode(mixed value)\",\n \"Generates XML for a PHP value\"\n ],\n \"xmlrpc_encode_request\": [\n \"string xmlrpc_encode_request(string method, mixed params [, array output_options])\",\n \"Generates XML for a method request\"\n ],\n \"xmlrpc_get_type\": [\n \"string xmlrpc_get_type(mixed value)\",\n \"Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings\"\n ],\n \"xmlrpc_is_fault\": [\n \"bool xmlrpc_is_fault(array)\",\n \"Determines if an array value represents an XMLRPC fault.\"\n ],\n \"xmlrpc_parse_method_descriptions\": [\n \"array xmlrpc_parse_method_descriptions(string xml)\",\n \"Decodes XML into a list of method descriptions\"\n ],\n \"xmlrpc_server_add_introspection_data\": [\n \"int xmlrpc_server_add_introspection_data(resource server, array desc)\",\n \"Adds introspection documentation\"\n ],\n \"xmlrpc_server_call_method\": [\n \"mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])\",\n \"Parses XML requests and call methods\"\n ],\n \"xmlrpc_server_create\": [\n \"resource xmlrpc_server_create(void)\",\n \"Creates an xmlrpc server\"\n ],\n \"xmlrpc_server_destroy\": [\n \"int xmlrpc_server_destroy(resource server)\",\n \"Destroys server resources\"\n ],\n \"xmlrpc_server_register_introspection_callback\": [\n \"bool xmlrpc_server_register_introspection_callback(resource server, string function)\",\n \"Register a PHP function to generate documentation\"\n ],\n \"xmlrpc_server_register_method\": [\n \"bool xmlrpc_server_register_method(resource server, string method_name, string function)\",\n \"Register a PHP function to handle method matching method_name\"\n ],\n \"xmlrpc_set_type\": [\n \"bool xmlrpc_set_type(string value, string type)\",\n \"Sets xmlrpc type, base64 or datetime, for a PHP string value\"\n ],\n \"xmlwriter_end_attribute\": [\n \"bool xmlwriter_end_attribute(resource xmlwriter)\",\n \"End attribute - returns FALSE on error\"\n ],\n \"xmlwriter_end_cdata\": [\n \"bool xmlwriter_end_cdata(resource xmlwriter)\",\n \"End current CDATA - returns FALSE on error\"\n ],\n \"xmlwriter_end_comment\": [\n \"bool xmlwriter_end_comment(resource xmlwriter)\",\n \"Create end comment - returns FALSE on error\"\n ],\n \"xmlwriter_end_document\": [\n \"bool xmlwriter_end_document(resource xmlwriter)\",\n \"End current document - returns FALSE on error\"\n ],\n \"xmlwriter_end_dtd\": [\n \"bool xmlwriter_end_dtd(resource xmlwriter)\",\n \"End current DTD - returns FALSE on error\"\n ],\n \"xmlwriter_end_dtd_attlist\": [\n \"bool xmlwriter_end_dtd_attlist(resource xmlwriter)\",\n \"End current DTD AttList - returns FALSE on error\"\n ],\n \"xmlwriter_end_dtd_element\": [\n \"bool xmlwriter_end_dtd_element(resource xmlwriter)\",\n \"End current DTD element - returns FALSE on error\"\n ],\n \"xmlwriter_end_dtd_entity\": [\n \"bool xmlwriter_end_dtd_entity(resource xmlwriter)\",\n \"End current DTD Entity - returns FALSE on error\"\n ],\n \"xmlwriter_end_element\": [\n \"bool xmlwriter_end_element(resource xmlwriter)\",\n \"End current element - returns FALSE on error\"\n ],\n \"xmlwriter_end_pi\": [\n \"bool xmlwriter_end_pi(resource xmlwriter)\",\n \"End current PI - returns FALSE on error\"\n ],\n \"xmlwriter_flush\": [\n \"mixed xmlwriter_flush(resource xmlwriter [,bool empty])\",\n \"Output current buffer\"\n ],\n \"xmlwriter_full_end_element\": [\n \"bool xmlwriter_full_end_element(resource xmlwriter)\",\n \"End current element - returns FALSE on error\"\n ],\n \"xmlwriter_open_memory\": [\n \"resource xmlwriter_open_memory()\",\n \"Create new xmlwriter using memory for string output\"\n ],\n \"xmlwriter_open_uri\": [\n \"resource xmlwriter_open_uri(resource xmlwriter, string source)\",\n \"Create new xmlwriter using source uri for output\"\n ],\n \"xmlwriter_output_memory\": [\n \"string xmlwriter_output_memory(resource xmlwriter [,bool flush])\",\n \"Output current buffer as string\"\n ],\n \"xmlwriter_set_indent\": [\n \"bool xmlwriter_set_indent(resource xmlwriter, bool indent)\",\n \"Toggle indentation on/off - returns FALSE on error\"\n ],\n \"xmlwriter_set_indent_string\": [\n \"bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)\",\n \"Set string used for indenting - returns FALSE on error\"\n ],\n \"xmlwriter_start_attribute\": [\n \"bool xmlwriter_start_attribute(resource xmlwriter, string name)\",\n \"Create start attribute - returns FALSE on error\"\n ],\n \"xmlwriter_start_attribute_ns\": [\n \"bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)\",\n \"Create start namespaced attribute - returns FALSE on error\"\n ],\n \"xmlwriter_start_cdata\": [\n \"bool xmlwriter_start_cdata(resource xmlwriter)\",\n \"Create start CDATA tag - returns FALSE on error\"\n ],\n \"xmlwriter_start_comment\": [\n \"bool xmlwriter_start_comment(resource xmlwriter)\",\n \"Create start comment - returns FALSE on error\"\n ],\n \"xmlwriter_start_document\": [\n \"bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)\",\n \"Create document tag - returns FALSE on error\"\n ],\n \"xmlwriter_start_dtd\": [\n \"bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)\",\n \"Create start DTD tag - returns FALSE on error\"\n ],\n \"xmlwriter_start_dtd_attlist\": [\n \"bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)\",\n \"Create start DTD AttList - returns FALSE on error\"\n ],\n \"xmlwriter_start_dtd_element\": [\n \"bool xmlwriter_start_dtd_element(resource xmlwriter, string name)\",\n \"Create start DTD element - returns FALSE on error\"\n ],\n \"xmlwriter_start_dtd_entity\": [\n \"bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)\",\n \"Create start DTD Entity - returns FALSE on error\"\n ],\n \"xmlwriter_start_element\": [\n \"bool xmlwriter_start_element(resource xmlwriter, string name)\",\n \"Create start element tag - returns FALSE on error\"\n ],\n \"xmlwriter_start_element_ns\": [\n \"bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)\",\n \"Create start namespaced element tag - returns FALSE on error\"\n ],\n \"xmlwriter_start_pi\": [\n \"bool xmlwriter_start_pi(resource xmlwriter, string target)\",\n \"Create start PI tag - returns FALSE on error\"\n ],\n \"xmlwriter_text\": [\n \"bool xmlwriter_text(resource xmlwriter, string content)\",\n \"Write text - returns FALSE on error\"\n ],\n \"xmlwriter_write_attribute\": [\n \"bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)\",\n \"Write full attribute - returns FALSE on error\"\n ],\n \"xmlwriter_write_attribute_ns\": [\n \"bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)\",\n \"Write full namespaced attribute - returns FALSE on error\"\n ],\n \"xmlwriter_write_cdata\": [\n \"bool xmlwriter_write_cdata(resource xmlwriter, string content)\",\n \"Write full CDATA tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_comment\": [\n \"bool xmlwriter_write_comment(resource xmlwriter, string content)\",\n \"Write full comment tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_dtd\": [\n \"bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)\",\n \"Write full DTD tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_dtd_attlist\": [\n \"bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)\",\n \"Write full DTD AttList tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_dtd_element\": [\n \"bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)\",\n \"Write full DTD element tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_dtd_entity\": [\n \"bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])\",\n \"Write full DTD Entity tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_element\": [\n \"bool xmlwriter_write_element(resource xmlwriter, string name[, string content])\",\n \"Write full element tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_element_ns\": [\n \"bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])\",\n \"Write full namesapced element tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_pi\": [\n \"bool xmlwriter_write_pi(resource xmlwriter, string target, string content)\",\n \"Write full PI tag - returns FALSE on error\"\n ],\n \"xmlwriter_write_raw\": [\n \"bool xmlwriter_write_raw(resource xmlwriter, string content)\",\n \"Write text - returns FALSE on error\"\n ],\n \"xsl_xsltprocessor_get_parameter\": [\n \"string xsl_xsltprocessor_get_parameter(string namespace, string name);\",\n \"\"\n ],\n \"xsl_xsltprocessor_has_exslt_support\": [\n \"bool xsl_xsltprocessor_has_exslt_support();\",\n \"\"\n ],\n \"xsl_xsltprocessor_import_stylesheet\": [\n \"void xsl_xsltprocessor_import_stylesheet(domdocument doc);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:\"\n ],\n \"xsl_xsltprocessor_register_php_functions\": [\n \"void xsl_xsltprocessor_register_php_functions([mixed $restrict]);\",\n \"\"\n ],\n \"xsl_xsltprocessor_remove_parameter\": [\n \"bool xsl_xsltprocessor_remove_parameter(string namespace, string name);\",\n \"\"\n ],\n \"xsl_xsltprocessor_set_parameter\": [\n \"bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value]);\",\n \"\"\n ],\n \"xsl_xsltprocessor_set_profiling\": [\n \"bool xsl_xsltprocessor_set_profiling(string filename) */\",\n \"PHP_FUNCTION(xsl_xsltprocessor_set_profiling) { zval *id; xsl_object *intern; char *filename = NULL; int filename_len; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \\\"s!\\\", &filename, &filename_len) == SUCCESS) { intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern->profiling) { efree(intern->profiling); } if (filename != NULL) { intern->profiling = estrndup(filename,filename_len); } else { intern->profiling = NULL; } RETURN_TRUE; } else { WRONG_PARAM_COUNT; } } /* }}} end xsl_xsltprocessor_set_profiling\"\n ],\n \"xsl_xsltprocessor_transform_to_doc\": [\n \"domdocument xsl_xsltprocessor_transform_to_doc(domnode doc);\",\n \"URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:\"\n ],\n \"xsl_xsltprocessor_transform_to_uri\": [\n \"int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri);\",\n \"\"\n ],\n \"xsl_xsltprocessor_transform_to_xml\": [\n \"string xsl_xsltprocessor_transform_to_xml(domdocument doc);\",\n \"\"\n ],\n \"zend_logo_guid\": [\n \"string zend_logo_guid(void)\",\n \"Return the special ID used to request the Zend logo in phpinfo screens\"\n ],\n \"zend_version\": [\n \"string zend_version(void)\",\n \"Get the version of the Zend Engine\"\n ],\n \"zip_close\": [\n \"void zip_close(resource zip)\",\n \"Close a Zip archive\"\n ],\n \"zip_entry_close\": [\n \"void zip_entry_close(resource zip_ent)\",\n \"Close a zip entry\"\n ],\n \"zip_entry_compressedsize\": [\n \"int zip_entry_compressedsize(resource zip_entry)\",\n \"Return the compressed size of a ZZip entry\"\n ],\n \"zip_entry_compressionmethod\": [\n \"string zip_entry_compressionmethod(resource zip_entry)\",\n \"Return a string containing the compression method used on a particular entry\"\n ],\n \"zip_entry_filesize\": [\n \"int zip_entry_filesize(resource zip_entry)\",\n \"Return the actual filesize of a ZZip entry\"\n ],\n \"zip_entry_name\": [\n \"string zip_entry_name(resource zip_entry)\",\n \"Return the name given a ZZip entry\"\n ],\n \"zip_entry_open\": [\n \"bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])\",\n \"Open a Zip File, pointed by the resource entry\"\n ],\n \"zip_entry_read\": [\n \"mixed zip_entry_read(resource zip_entry [, int len])\",\n \"Read from an open directory entry\"\n ],\n \"zip_open\": [\n \"resource zip_open(string filename)\",\n \"Create new zip using source uri for output\"\n ],\n \"zip_read\": [\n \"resource zip_read(resource zip)\",\n \"Returns the next file in the archive\"\n ],\n \"zlib_get_coding_type\": [\n \"string zlib_get_coding_type(void)\",\n \"Returns the coding type used for output compression\"\n ]\n};\n\nvar variableMap = {\n \"$_COOKIE\": {\n type: \"array\"\n },\n \"$_ENV\": {\n type: \"array\"\n },\n \"$_FILES\": {\n type: \"array\"\n },\n \"$_GET\": {\n type: \"array\"\n },\n \"$_POST\": {\n type: \"array\"\n },\n \"$_REQUEST\": {\n type: \"array\"\n },\n \"$_SERVER\": {\n type: \"array\",\n value: {\n \"DOCUMENT_ROOT\": 1,\n \"GATEWAY_INTERFACE\": 1,\n \"HTTP_ACCEPT\": 1,\n \"HTTP_ACCEPT_CHARSET\": 1,\n \"HTTP_ACCEPT_ENCODING\": 1 ,\n \"HTTP_ACCEPT_LANGUAGE\": 1,\n \"HTTP_CONNECTION\": 1,\n \"HTTP_HOST\": 1,\n \"HTTP_REFERER\": 1,\n \"HTTP_USER_AGENT\": 1,\n \"PATH_TRANSLATED\": 1,\n \"PHP_SELF\": 1,\n \"QUERY_STRING\": 1,\n \"REMOTE_ADDR\": 1,\n \"REMOTE_PORT\": 1,\n \"REQUEST_METHOD\": 1,\n \"REQUEST_URI\": 1,\n \"SCRIPT_FILENAME\": 1,\n \"SCRIPT_NAME\": 1,\n \"SERVER_ADMIN\": 1,\n \"SERVER_NAME\": 1,\n \"SERVER_PORT\": 1,\n \"SERVER_PROTOCOL\": 1,\n \"SERVER_SIGNATURE\": 1,\n \"SERVER_SOFTWARE\": 1\n }\n },\n \"$_SESSION\": {\n type: \"array\"\n },\n \"$GLOBALS\": {\n type: \"array\"\n }\n};\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type) > -1;\n}\n\nvar PhpCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (token.type==='identifier')\n return this.getFunctionCompletions(state, session, pos, prefix);\n if (is(token, \"variable\"))\n return this.getVariableCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (token.type==='string' && /(\\$[\\w]*)\\[[\"']([^'\"]*)$/i.test(line))\n return this.getArrayKeyCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getFunctionCompletions = function(state, session, pos, prefix) {\n var functions = Object.keys(functionMap);\n return functions.map(function(func){\n return {\n caption: func,\n snippet: func + '($0)',\n meta: \"php function\",\n score: Number.MAX_VALUE,\n docHTML: functionMap[func][1]\n };\n });\n };\n\n this.getVariableCompletions = function(state, session, pos, prefix) {\n var variables = Object.keys(variableMap);\n return variables.map(function(variable){\n return {\n caption: variable,\n value: variable,\n meta: \"php variable\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getArrayKeyCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var variable = line.match(/(\\$[\\w]*)\\[[\"']([^'\"]*)$/i)[1];\n\n if (!variableMap[variable]) {\n return [];\n }\n\n var keys = [];\n if (variableMap[variable].type==='array' && variableMap[variable].value)\n keys = Object.keys(variableMap[variable].value);\n\n return keys.map(function(key) {\n return {\n caption: key,\n value: key,\n meta: \"php array key\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(PhpCompletions.prototype);\n\nexports.PhpCompletions = PhpCompletions;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/php\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/php_highlight_rules\",\"ace/mode/php_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/php_completions\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/unicode\",\"ace/mode/html\",\"ace/mode/javascript\",\"ace/mode/css\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar PhpHighlightRules = acequire(\"./php_highlight_rules\").PhpHighlightRules;\nvar PhpLangHighlightRules = acequire(\"./php_highlight_rules\").PhpLangHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar PhpCompletions = acequire(\"./php_completions\").PhpCompletions;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar unicode = acequire(\"../unicode\");\nvar HtmlMode = acequire(\"./html\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\n\nvar PhpMode = function(opts) {\n this.HighlightRules = PhpLangHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.$completer = new PhpCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(PhpMode, TextMode);\n\n(function() {\n\n this.tokenRe = new RegExp(\"^[\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"_]+\", \"g\"\n );\n\n this.nonTokenRe = new RegExp(\"^(?:[^\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"_]|\\\\s])+\", \"g\"\n );\n\n\n this.lineCommentStart = [\"//\", \"#\"];\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState != \"doc-start\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.$id = \"ace/mode/php-inline\";\n}).call(PhpMode.prototype);\n\nvar Mode = function(opts) {\n if (opts && opts.inline) {\n var mode = new PhpMode();\n mode.createWorker = this.createWorker;\n mode.inlinePhp = true;\n return mode;\n }\n HtmlMode.call(this);\n this.HighlightRules = PhpHighlightRules;\n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode,\n \"php-\": PhpMode\n });\n this.foldingRules.subModes[\"php-\"] = new CStyleFoldMode();\n};\noop.inherits(Mode, HtmlMode);\n\n(function() {\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], \"ace/mode/php_worker\", \"PhpWorker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.inlinePhp)\n worker.call(\"setOptions\", [{inline: true}]);\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/php\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/powershell_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar PowershellHighlightRules = function() {\n var keywords = (\n \"begin|break|catch|continue|data|do|dynamicparam|else|elseif|end|exit|filter|\" +\n \"finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|\" +\n \"process|return|sequence|switch|throw|trap|try|until|while|workflow\"\n );\n var builtinFunctions = (\n \"Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|\" +\n \"Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|\" +\n \"Get-AppxLastError|Get-AppxLog|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppxDefaultVolume|Get-AppxPackage|Get-AppxPackageManifest|Get-AppxVolume|Mount-AppxVolume|Move-AppxPackage|Remove-AppxPackage|Remove-AppxVolume|Set-AppxDefaultVolume|\" +\n \"Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|\" +\n \"Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|\" +\n \"Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|\" +\n \"Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|\" +\n \"Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|\" +\n \"ConvertFrom-CIPolicy|\" +\n \"Add-SignerRule|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|\" +\n \"Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|\" +\n \"Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|\" +\n \"Add-ProvisionedAppxPackage|Apply-WindowsUnattend|Get-ProvisionedAppxPackage|Remove-ProvisionedAppxPackage|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-WindowsEdition|Set-WindowsProductKey|Split-WindowsImage|Update-WIMBootEntry|Use-WindowsUnattend|\" +\n \"Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientNrptRule|Set-DnsClient|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Resolve-DnsName|\" +\n \"Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Remove-EtwTraceSession|Send-EtwTraceSession|Set-AutologgerConfig|Set-EtwTraceProvider|Set-EtwTraceSession|\" +\n \"Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|\" +\n \"Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|\" +\n \"Get-IseSnippet|Import-IseSnippet|New-IseSnippet|\" +\n \"Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|\" +\n \"Compress-Archive|Expand-Archive|\" +\n \"Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|\" +\n \"Start-Transcript|Stop-Transcript|\" +\n \"Add-Computer|Add-Content|Checkpoint-Computer|Clear-Content|Clear-EventLog|Clear-Item|Clear-ItemProperty|Clear-RecycleBin|Complete-Transaction|Convert-Path|Copy-Item|Copy-ItemProperty|Debug-Process|Disable-ComputerRestore|Enable-ComputerRestore|Get-ChildItem|Get-Clipboard|Get-ComputerRestorePoint|Get-Content|Get-ControlPanelItem|Get-EventLog|Get-HotFix|Get-Item|Get-ItemProperty|Get-ItemPropertyValue|Get-Location|Get-Process|Get-PSDrive|Get-PSProvider|Get-Service|Get-Transaction|Get-WmiObject|Invoke-Item|Invoke-WmiMethod|Join-Path|Limit-EventLog|Move-Item|Move-ItemProperty|New-EventLog|New-Item|New-ItemProperty|New-PSDrive|New-Service|New-WebServiceProxy|Pop-Location|Push-Location|Register-WmiEvent|Remove-Computer|Remove-EventLog|Remove-Item|Remove-ItemProperty|Remove-PSDrive|Remove-WmiObject|Rename-Computer|Rename-Item|Rename-ItemProperty|Reset-ComputerMachinePassword|Resolve-Path|Restart-Computer|Restart-Service|Restore-Computer|Resume-Service|Set-Clipboard|Set-Content|Set-Item|Set-ItemProperty|Set-Location|Set-Service|Set-WmiInstance|Show-ControlPanelItem|Show-EventLog|Split-Path|Start-Process|Start-Service|Start-Transaction|Stop-Computer|Stop-Process|Stop-Service|Suspend-Service|Test-ComputerSecureChannel|Test-Connection|Test-Path|Undo-Transaction|Use-Transaction|Wait-Process|Write-EventLog|\" +\n \"Export-ODataEndpointProxy|\" +\n \"ConvertFrom-SecureString|ConvertTo-SecureString|Get-Acl|Get-AuthenticodeSignature|Get-CmsMessage|Get-Credential|Get-ExecutionPolicy|Get-PfxCertificate|Protect-CmsMessage|Set-Acl|Set-AuthenticodeSignature|Set-ExecutionPolicy|Unprotect-CmsMessage|\" +\n \"ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|\" +\n \"Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|\" +\n \"Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|\" +\n \"Add-DtcClusterTMMapping|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Remove-DtcClusterTMMapping|Reset-DtcLog|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcTransactionsTraceSession|Test-Dtc|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Complete-DtcDiagnosticTransaction|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Send-DtcDiagnosticTransaction|Start-DtcDiagnosticResourceManager|Stop-DtcDiagnosticResourceManager|Undo-DtcDiagnosticTransaction|\" +\n \"Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPacketDirect|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPacketDirect|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPacketDirect|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPacketDirect|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterVmq|\" +\n \"Get-NetConnectionProfile|Set-NetConnectionProfile|\" +\n \"Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|\" +\n \"Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|\" +\n \"Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|\" +\n \"Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|\" +\n \"Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallRule|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetIPsecRule|Get-DAPolicyChange|New-NetIPsecAuthProposal|New-NetIPsecMainModeCryptoProposal|New-NetIPsecQuickModeCryptoProposal|\" +\n \"Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|\" +\n \"Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|\" +\n \"Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|\" +\n \"Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|\" +\n \"Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|\" +\n \"Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|\" +\n \"Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|\" +\n \"AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|\" +\n \"Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|\" +\n \"Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|\" +\n \"Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|\" +\n \"Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|\" +\n \"Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|\" +\n \"Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|\" +\n \"PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|\" +\n \"Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|\" +\n \"New-PSWorkflowSession|New-PSWorkflowExecutionOption|\" +\n \"Invoke-AsWorkflow|\" +\n \"Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|\" +\n \"Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|\" +\n \"Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbShare|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|\" +\n \"Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|\" +\n \"Get-StartApps|Export-StartLayout|Import-StartLayout|\" +\n \"Disable-PhysicalDiskIndication|Disable-StorageDiagnosticLog|Enable-PhysicalDiskIndication|Enable-StorageDiagnosticLog|Flush-Volume|Get-DiskSNV|Get-PhysicalDiskSNV|Get-StorageEnclosureSNV|Initialize-Volume|Write-FileSystemCache|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Clear-StorageDiagnosticInfo|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Format-Volume|Get-DedupProperties|Get-Disk|Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|\" +\n \"Disable-TlsCipherSuite|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|New-TlsSessionTicketKey|\" +\n \"Get-TroubleshootingPack|Invoke-TroubleshootingPack|\" +\n \"Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|\" +\n \"Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|\" +\n \"Add-OdbcDsn|Disable-OdbcPerfCounter|Disable-WdacBidTrace|Enable-OdbcPerfCounter|Enable-WdacBidTrace|Get-OdbcDriver|Get-OdbcDsn|Get-OdbcPerfCounter|Get-WdacBidTrace|Remove-OdbcDsn|Set-OdbcDriver|Set-OdbcDsn|\" +\n \"Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|\" +\n \"Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|\" +\n \"Get-WindowsSearchSetting|Set-WindowsSearchSetting|\" +\n \"Get-WindowsUpdateLog\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords\n }, \"identifier\");\n var binaryOperatorsRe = (\n \"eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|\" + \n \"ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|\" + \n \"ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|\" +\n \"and|or|xor|not|\" +\n \"split|join|replace|f|\" +\n \"csplit|creplace|\" +\n \"isplit|ireplace|\" +\n \"is|isnot|as|\" +\n \"shl|shr\"\n );\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"comment.start\",\n regex : \"<#\",\n next : \"comment\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"[$](?:[Tt]rue|[Ff]alse)\\\\b\"\n }, {\n token : \"constant.language\",\n regex : \"[$][Nn]ull\\\\b\"\n }, {\n token : \"variable.instance\",\n regex : \"[$][a-zA-Z][a-zA-Z0-9_]*\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$\\\\-]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\-(?:\" + binaryOperatorsRe + \")\"\n }, {\n token : \"keyword.operator\",\n regex : \"&|\\\\+|\\\\-|\\\\*|\\\\/|\\\\%|\\\\=|\\\\>|\\\\&|\\\\!|\\\\|\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment.end\",\n regex : \"#>\",\n next : \"start\"\n }, {\n token : \"doc.comment.tag\",\n regex : \"^\\\\.\\\\w+\"\n }, {\n defaultToken : \"comment\"\n }\n ]\n };\n};\n\noop.inherits(PowershellHighlightRules, TextHighlightRules);\n\nexports.PowershellHighlightRules = PowershellHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/powershell\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/powershell_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar PowershellHighlightRules = acequire(\"./powershell_highlight_rules\").PowershellHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = PowershellHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode({start: \"^\\\\s*(<#)\", end: \"^[#\\\\s]>\\\\s*$\"});\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"#\";\n this.blockComment = {start: \"<#\", end: \"#>\"};\n \n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n \n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.$id = \"ace/mode/powershell\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/prolog_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar PrologHighlightRules = function() {\n\n this.$rules = { start: \n [ { include: '#comment' },\n { include: '#basic_fact' },\n { include: '#rule' },\n { include: '#directive' },\n { include: '#fact' } ],\n '#atom': \n [ { token: 'constant.other.atom.prolog',\n regex: '\\\\b[a-z][a-zA-Z0-9_]*\\\\b' },\n { token: 'constant.numeric.prolog',\n regex: '-?\\\\d+(?:\\\\.\\\\d+)?' },\n { include: '#string' } ],\n '#basic_elem': \n [ { include: '#comment' },\n { include: '#statement' },\n { include: '#constants' },\n { include: '#operators' },\n { include: '#builtins' },\n { include: '#list' },\n { include: '#atom' },\n { include: '#variable' } ],\n '#basic_fact': \n [ { token: \n [ 'entity.name.function.fact.basic.prolog',\n 'punctuation.end.fact.basic.prolog' ],\n regex: '([a-z]\\\\w*)(\\\\.)' } ],\n '#builtins': \n [ { token: 'support.function.builtin.prolog',\n regex: '\\\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\\\b' } ],\n '#comment': \n [ { token: \n [ 'punctuation.definition.comment.prolog',\n 'comment.line.percentage.prolog' ],\n regex: '(%)(.*$)' },\n { token: 'punctuation.definition.comment.prolog',\n regex: '/\\\\*',\n push: \n [ { token: 'punctuation.definition.comment.prolog',\n regex: '\\\\*/',\n next: 'pop' },\n { defaultToken: 'comment.block.prolog' } ] } ],\n '#constants': \n [ { token: 'constant.language.prolog',\n regex: '\\\\b(?:true|false|yes|no)\\\\b' } ],\n '#directive': \n [ { token: 'keyword.operator.directive.prolog',\n regex: ':-',\n push: \n [ { token: 'meta.directive.prolog', regex: '\\\\.', next: 'pop' },\n { include: '#comment' },\n { include: '#statement' },\n { defaultToken: 'meta.directive.prolog' } ] } ],\n '#expr': \n [ { include: '#comments' },\n { token: 'meta.expression.prolog',\n regex: '\\\\(',\n push: \n [ { token: 'meta.expression.prolog', regex: '\\\\)', next: 'pop' },\n { include: '#expr' },\n { defaultToken: 'meta.expression.prolog' } ] },\n { token: 'keyword.control.cutoff.prolog', regex: '!' },\n { token: 'punctuation.control.and.prolog', regex: ',' },\n { token: 'punctuation.control.or.prolog', regex: ';' },\n { include: '#basic_elem' } ],\n '#fact': \n [ { token: \n [ 'entity.name.function.fact.prolog',\n 'punctuation.begin.fact.parameters.prolog' ],\n regex: '([a-z]\\\\w*)(\\\\()(?!.*:-)',\n push: \n [ { token: \n [ 'punctuation.end.fact.parameters.prolog',\n 'punctuation.end.fact.prolog' ],\n regex: '(\\\\))(\\\\.?)',\n next: 'pop' },\n { include: '#parameter' },\n { defaultToken: 'meta.fact.prolog' } ] } ],\n '#list': \n [ { token: 'punctuation.begin.list.prolog',\n regex: '\\\\[(?=.*\\\\])',\n push: \n [ { token: 'punctuation.end.list.prolog',\n regex: '\\\\]',\n next: 'pop' },\n { include: '#comment' },\n { token: 'punctuation.separator.list.prolog', regex: ',' },\n { token: 'punctuation.concat.list.prolog',\n regex: '\\\\|',\n push: \n [ { token: 'meta.list.concat.prolog',\n regex: '(?=\\\\s*\\\\])',\n next: 'pop' },\n { include: '#basic_elem' },\n { defaultToken: 'meta.list.concat.prolog' } ] },\n { include: '#basic_elem' },\n { defaultToken: 'meta.list.prolog' } ] } ],\n '#operators': \n [ { token: 'keyword.operator.prolog',\n regex: '\\\\\\\\\\\\+|\\\\bnot\\\\b|\\\\bis\\\\b|->|[><]|[><\\\\\\\\:=]?=|(?:=\\\\\\\\|\\\\\\\\=)=' } ],\n '#parameter': \n [ { token: 'variable.language.anonymous.prolog',\n regex: '\\\\b_\\\\b' },\n { token: 'variable.parameter.prolog',\n regex: '\\\\b[A-Z_]\\\\w*\\\\b' },\n { token: 'punctuation.separator.parameters.prolog', regex: ',' },\n { include: '#basic_elem' },\n { token: 'text', regex: '[^\\\\s]' } ],\n '#rule': \n [ { token: 'meta.rule.prolog',\n regex: '(?=[a-z]\\\\w*.*:-)',\n push: \n [ { token: 'punctuation.rule.end.prolog',\n regex: '\\\\.',\n next: 'pop' },\n { token: 'meta.rule.signature.prolog',\n regex: '(?=[a-z]\\\\w*.*:-)',\n push: \n [ { token: 'meta.rule.signature.prolog',\n regex: '(?=:-)',\n next: 'pop' },\n { token: 'entity.name.function.rule.prolog',\n regex: '[a-z]\\\\w*(?=\\\\(|\\\\s*:-)' },\n { token: 'punctuation.rule.parameters.begin.prolog',\n regex: '\\\\(',\n push: \n [ { token: 'punctuation.rule.parameters.end.prolog',\n regex: '\\\\)',\n next: 'pop' },\n { include: '#parameter' },\n { defaultToken: 'meta.rule.parameters.prolog' } ] },\n { defaultToken: 'meta.rule.signature.prolog' } ] },\n { token: 'keyword.operator.definition.prolog',\n regex: ':-',\n push: \n [ { token: 'meta.rule.definition.prolog',\n regex: '(?=\\\\.)',\n next: 'pop' },\n { include: '#comment' },\n { include: '#expr' },\n { defaultToken: 'meta.rule.definition.prolog' } ] },\n { defaultToken: 'meta.rule.prolog' } ] } ],\n '#statement': \n [ { token: 'meta.statement.prolog',\n regex: '(?=[a-z]\\\\w*\\\\()',\n push: \n [ { token: 'punctuation.end.statement.parameters.prolog',\n regex: '\\\\)',\n next: 'pop' },\n { include: '#builtins' },\n { include: '#atom' },\n { token: 'punctuation.begin.statement.parameters.prolog',\n regex: '\\\\(',\n push: \n [ { token: 'meta.statement.parameters.prolog',\n regex: '(?=\\\\))',\n next: 'pop' },\n { token: 'punctuation.separator.statement.prolog', regex: ',' },\n { include: '#basic_elem' },\n { defaultToken: 'meta.statement.parameters.prolog' } ] },\n { defaultToken: 'meta.statement.prolog' } ] } ],\n '#string': \n [ { token: 'punctuation.definition.string.begin.prolog',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.string.end.prolog',\n regex: '\\'',\n next: 'pop' },\n { token: 'constant.character.escape.prolog', regex: '\\\\\\\\.' },\n { token: 'constant.character.escape.quote.prolog',\n regex: '\\'\\'' },\n { defaultToken: 'string.quoted.single.prolog' } ] } ],\n '#variable': \n [ { token: 'variable.language.anonymous.prolog',\n regex: '\\\\b_\\\\b' },\n { token: 'variable.other.prolog',\n regex: '\\\\b[A-Z_][a-zA-Z0-9_]*\\\\b' } ] };\n \n this.normalizeRules();\n};\n\nPrologHighlightRules.metaData = { fileTypes: [ 'plg', 'prolog' ],\n foldingStartMarker: '(%\\\\s*region \\\\w*)|([a-z]\\\\w*.*:- ?)',\n foldingStopMarker: '(%\\\\s*end(\\\\s*region)?)|(?=\\\\.)',\n keyEquivalent: '^~P',\n name: 'Prolog',\n scopeName: 'source.prolog' };\n\n\noop.inherits(PrologHighlightRules, TextHighlightRules);\n\nexports.PrologHighlightRules = PrologHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/prolog\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/prolog_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar PrologHighlightRules = acequire(\"./prolog_highlight_rules\").PrologHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = PrologHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"%\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/prolog\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/c_cpp_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar cFunctions = exports.cFunctions = \"\\\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\\\b\";\n\nvar c_cppHighlightRules = function() {\n\n var keywordControls = (\n \"break|case|continue|default|do|else|for|goto|if|_Pragma|\" +\n \"return|switch|while|catch|operator|try|throw|using\"\n );\n \n var storageType = (\n \"asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|\" +\n \"_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|\" +\n \"class|wchar_t|template|char16_t|char32_t\"\n );\n\n var storageModifiers = (\n \"const|extern|register|restrict|static|volatile|inline|private|\" +\n \"protected|public|friend|explicit|virtual|export|mutable|typename|\" +\n \"constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local\"\n );\n\n var keywordOperators = (\n \"and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq\" +\n \"const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace\"\n );\n\n var builtinConstants = (\n \"NULL|true|false|TRUE|FALSE|nullptr\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword.control\" : keywordControls,\n \"storage.type\" : storageType,\n \"storage.modifier\" : storageModifiers,\n \"keyword.operator\" : keywordOperators,\n \"variable.language\": \"this\",\n \"constant.language\": builtinConstants\n }, \"identifier\");\n\n var identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\\\\b\";\n var escapeRe = /\\\\(?:['\"?\\\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}U[a-fA-F\\d]{8}|.)/.source;\n var formatRe = \"%\"\n + /(\\d+\\$)?/.source // field (argument #)\n + /[#0\\- +']*/.source // flags\n + /[,;:_]?/.source // separator character (AltiVec)\n + /((-?\\d+)|\\*(-?\\d+\\$)?)?/.source // minimum field width\n + /(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?/.source // precision\n + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier\n + /(\\[[^\"\\]]+\\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type\n\n this.$rules = { \n \"start\" : [\n {\n token : \"comment\",\n regex : \"//$\",\n next : \"start\"\n }, {\n token : \"comment\",\n regex : \"//\",\n next : \"singleLineComment\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // character\n regex : \"'(?:\" + escapeRe + \"|.)?'\"\n }, {\n token : \"string.start\",\n regex : '\"', \n stateName: \"qqstring\",\n next: [\n { token: \"string\", regex: /\\\\\\s*$/, next: \"qqstring\" },\n { token: \"constant.language.escape\", regex: escapeRe },\n { token: \"constant.language.escape\", regex: formatRe },\n { token: \"string.end\", regex: '\"|$', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"string.start\",\n regex : 'R\"\\\\(', \n stateName: \"rawString\",\n next: [\n { token: \"string.end\", regex: '\\\\)\"', next: \"start\" },\n { defaultToken: \"string\"}\n ]\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"#\\\\s*(?:include|import|pragma|line|define|undef)\\\\b\",\n next : \"directive\"\n }, {\n token : \"keyword\", // special case pre-compiler directive\n regex : \"#\\\\s*(?:endif|if|ifdef|else|elif|ifndef)\\\\b\"\n }, {\n token : \"support.function.C99.c\",\n regex : cFunctions\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|<<=|>>=|>>>=|<>|&&|\\|\\||\\?:|[*%\\/+\\-&\\^|~!<>=]=?/\n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\?|\\\\:|\\\\,|\\\\;|\\\\.\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"singleLineComment\" : [\n {\n token : \"comment\",\n regex : /\\\\$/,\n next : \"singleLineComment\"\n }, {\n token : \"comment\",\n regex : /$/,\n next : \"start\"\n }, {\n defaultToken: \"comment\"\n }\n ],\n \"directive\" : [\n {\n token : \"constant.other.multiline\",\n regex : /\\\\/\n },\n {\n token : \"constant.other.multiline\",\n regex : /.*\\\\/\n },\n {\n token : \"constant.other\",\n regex : \"\\\\s*<.+?>\",\n next : \"start\"\n },\n {\n token : \"constant.other\", // single line\n regex : '\\\\s*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]',\n next : \"start\"\n }, \n {\n token : \"constant.other\", // single line\n regex : \"\\\\s*['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\",\n next : \"start\"\n },\n {\n token : \"constant.other\",\n regex : /[^\\\\\\/]+/,\n next : \"start\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n this.normalizeRules();\n};\n\noop.inherits(c_cppHighlightRules, TextHighlightRules);\n\nexports.c_cppHighlightRules = c_cppHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/c_cpp\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/c_cpp_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar c_cppHighlightRules = acequire(\"./c_cpp_highlight_rules\").c_cppHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = c_cppHighlightRules;\n\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/c_cpp\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/protobuf_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var ProtobufHighlightRules = function() {\n\n var builtinTypes = \"double|float|int32|int64|uint32|uint64|sint32|\" +\n \"sint64|fixed32|fixed64|sfixed32|sfixed64|bool|\" +\n \"string|bytes\";\n var keywordDeclaration = \"message|acequired|optional|repeated|package|\" +\n \"import|option|enum\";\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword.declaration.protobuf\": keywordDeclaration,\n \"support.type\": builtinTypes\n }, \"identifier\");\n\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: /\\/\\/.*$/\n }, {\n token: \"comment\",\n regex: /\\/\\*/,\n next: \"comment\"\n }, {\n token: \"constant\",\n regex: \"<[^>]+>\"\n }, {\n regex: \"=\",\n token: \"keyword.operator.assignment.protobuf\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // single line\n regex : '[\\'](?:(?:\\\\\\\\.)|(?:[^\\'\\\\\\\\]))*?[\\']'\n }, {\n token: \"constant.numeric\", // hex\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\", // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }],\n \"comment\": [{\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }]\n };\n\n this.normalizeRules();\n };\n\n oop.inherits(ProtobufHighlightRules, TextHighlightRules);\n\n exports.ProtobufHighlightRules = ProtobufHighlightRules;\n});\n\nace.define(\"ace/mode/protobuf\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/c_cpp\",\"ace/mode/protobuf_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar CMode = acequire(\"./c_cpp\").Mode;\nvar ProtobufHighlightRules = acequire(\"./protobuf_highlight_rules\").ProtobufHighlightRules;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n CMode.call(this);\n this.foldingRules = new CStyleFoldMode();\n this.HighlightRules = ProtobufHighlightRules;\n};\noop.inherits(Mode, CMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$id = \"ace/mode/protobuf\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/python_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar PythonHighlightRules = function() {\n\n var keywords = (\n \"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" +\n \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" +\n \"raise|return|try|while|with|yield|async|await\"\n );\n\n var builtinConstants = (\n \"True|False|None|NotImplemented|Ellipsis|__debug__\"\n );\n\n var builtinFunctions = (\n \"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" +\n \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" +\n \"binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|\" +\n \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" +\n \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" +\n \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" +\n \"__import__|complex|hash|min|set|apply|delattr|help|next|setattr|\" +\n \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern\"\n );\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n\n var strPre = \"(?:r|u|ur|R|U|UR|Ur|uR)?\";\n\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"string\", // multi line \"\"\" string start\n regex : strPre + '\"{3}',\n next : \"qqstring3\"\n }, {\n token : \"string\", // \" string\n regex : strPre + '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"string\", // multi line ''' string start\n regex : strPre + \"'{3}\",\n next : \"qstring3\"\n }, {\n token : \"string\", // ' string\n regex : strPre + \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"constant.numeric\", // imaginary\n regex : \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : floatNumber\n }, {\n token : \"constant.numeric\", // long integer\n regex : integer + \"[lL]\\\\b\"\n }, {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\[\\\\(\\\\{]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]\\\\)\\\\}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ],\n \"qqstring3\" : [ {\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\", // multi line \"\"\" string end\n regex : '\"{3}',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n } ],\n \"qstring3\" : [ {\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\", // multi line ''' string end\n regex : \"'{3}\",\n next : \"start\"\n }, {\n defaultToken : \"string\"\n } ],\n \"qqstring\" : [{\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\" : [{\n token : \"constant.language.escape\",\n regex : stringEscape\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"start\"\n }, {\n defaultToken: \"string\"\n }]\n };\n};\n\noop.inherits(PythonHighlightRules, TextHighlightRules);\n\nexports.PythonHighlightRules = PythonHighlightRules;\n});\n\nace.define(\"ace/mode/folding/pythonic\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n if (match) {\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2])\n return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/python\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/python_highlight_rules\",\"ace/mode/folding/pythonic\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar PythonHighlightRules = acequire(\"./python_highlight_rules\").PythonHighlightRules;\nvar PythonFoldMode = acequire(\"./folding/pythonic\").FoldMode;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n \n this.checkOutdent = function(state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n \n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n \n if (!last)\n return false;\n \n return (last.type == \"keyword\" && outdents[last.value]);\n };\n\n this.autoOutdent = function(state, doc, row) {\n \n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length-tab.length, row, indent.length));\n };\n\n this.$id = \"ace/mode/python\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/tex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar TexHighlightRules = function(textClass) {\n\n if (!textClass)\n textClass = \"text\";\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"%.*$\"\n }, {\n token : textClass, // non-command\n regex : \"\\\\\\\\[$&%#\\\\{\\\\}]\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\\\b\",\n next : \"nospell\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[[({]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[\\\\])}]\"\n }, {\n token : textClass,\n regex : \"\\\\s+\"\n }\n ],\n \"nospell\" : [\n {\n token : \"comment\",\n regex : \"%.*$\",\n next : \"start\"\n }, {\n token : \"nospell.\" + textClass, // non-command\n regex : \"\\\\\\\\[$&%#\\\\{\\\\}]\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\\\b\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])\",\n next : \"start\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[[({]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[\\\\])]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"}\",\n next : \"start\"\n }, {\n token : \"nospell.\" + textClass,\n regex : \"\\\\s+\"\n }, {\n token : \"nospell.\" + textClass,\n regex : \"\\\\w+\"\n }\n ]\n };\n};\n\noop.inherits(TexHighlightRules, TextHighlightRules);\n\nexports.TexHighlightRules = TexHighlightRules;\n});\n\nace.define(\"ace/mode/r_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\",\"ace/mode/tex_highlight_rules\"], function(acequire, exports, module)\n{\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var TexHighlightRules = acequire(\"./tex_highlight_rules\").TexHighlightRules;\n\n var RHighlightRules = function()\n {\n\n var keywords = lang.arrayToMap(\n (\"function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|acequire|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass\")\n .split(\"|\")\n );\n\n var buildinConstants = lang.arrayToMap(\n (\"NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|\" +\n \"NA_complex_\").split(\"|\")\n );\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment.sectionhead\",\n regex : \"#+(?!').*(?:----|====|####)\\\\s*$\"\n },\n {\n token : \"comment\",\n regex : \"#+'\",\n next : \"rd-start\"\n },\n {\n token : \"comment\",\n regex : \"#.*$\"\n },\n {\n token : \"string\", // multi line string start\n regex : '[\"]',\n next : \"qqstring\"\n },\n {\n token : \"string\", // multi line string start\n regex : \"[']\",\n next : \"qstring\"\n },\n {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+[Li]?\\\\b\"\n },\n {\n token : \"constant.numeric\", // explicit integer\n regex : \"\\\\d+L\\\\b\"\n },\n {\n token : \"constant.numeric\", // number\n regex : \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\"\n },\n {\n token : \"constant.numeric\", // number with leading decimal\n regex : \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\"\n },\n {\n token : \"constant.language.boolean\",\n regex : \"(?:TRUE|FALSE|T|F)\\\\b\"\n },\n {\n token : \"identifier\",\n regex : \"`.*?`\"\n },\n {\n onMatch : function(value) {\n if (keywords[value])\n return \"keyword\";\n else if (buildinConstants[value])\n return \"constant.language\";\n else if (value == '...' || value.match(/^\\.\\.\\d+$/))\n return \"variable.language\";\n else\n return \"identifier\";\n },\n regex : \"[a-zA-Z.][a-zA-Z0-9._]*\\\\b\"\n },\n {\n token : \"keyword.operator\",\n regex : \"%%|>=|<=|==|!=|\\\\->|<\\\\-|\\\\|\\\\||&&|=|\\\\+|\\\\-|\\\\*|/|\\\\^|>|<|!|&|\\\\||~|\\\\$|:\"\n },\n {\n token : \"keyword.operator\", // infix operators\n regex : \"%.*?%\"\n },\n {\n token : \"paren.keyword.operator\",\n regex : \"[[({]\"\n },\n {\n token : \"paren.keyword.operator\",\n regex : \"[\\\\])}]\"\n },\n {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next : \"start\"\n },\n {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next : \"start\"\n },\n {\n token : \"string\",\n regex : '.+'\n }\n ]\n };\n\n var rdRules = new TexHighlightRules(\"comment\").getRules();\n for (var i = 0; i < rdRules[\"start\"].length; i++) {\n rdRules[\"start\"][i].token += \".virtual-comment\";\n }\n\n this.addRules(rdRules, \"rd-\");\n this.$rules[\"rd-start\"].unshift({\n token: \"text\",\n regex: \"^\",\n next: \"start\"\n });\n this.$rules[\"rd-start\"].unshift({\n token : \"keyword\",\n regex : \"@(?!@)[^ ]*\"\n });\n this.$rules[\"rd-start\"].unshift({\n token : \"comment\",\n regex : \"@@\"\n });\n this.$rules[\"rd-start\"].push({\n token : \"comment\",\n regex : \"[^%\\\\\\\\[({\\\\])}]+\"\n });\n };\n\n oop.inherits(RHighlightRules, TextHighlightRules);\n\n exports.RHighlightRules = RHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/r\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/text_highlight_rules\",\"ace/mode/r_highlight_rules\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var RHighlightRules = acequire(\"./r_highlight_rules\").RHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\n var Mode = function(){\n this.HighlightRules = RHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n };\n oop.inherits(Mode, TextMode);\n\n (function()\n {\n this.lineCommentStart = \"#\";\n this.$id = \"ace/mode/r\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\n","ace.define(\"ace/mode/latex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar LatexHighlightRules = function() { \n\n this.$rules = {\n \"start\" : [{\n token : \"comment\",\n regex : \"%.*$\"\n }, {\n token : [\"keyword\", \"lparen\", \"variable.parameter\", \"rparen\", \"lparen\", \"storage.type\", \"rparen\"],\n regex : \"(\\\\\\\\(?:documentclass|usepackage|input))(?:(\\\\[)([^\\\\]]*)(\\\\]))?({)([^}]*)(})\"\n }, {\n token : [\"keyword\",\"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?\"\n }, {\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\begin)({)(verbatim)(})\",\n next : \"verbatim\"\n }, {\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\begin)({)(lstlisting)(})\",\n next : \"lstlisting\"\n }, {\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\(?:begin|end))({)([\\\\w*]*)(})\"\n }, {\n token : \"storage.type\",\n regex : /\\\\verb\\b\\*?/,\n next : [{\n token : [\"keyword.operator\", \"string\", \"keyword.operator\"],\n regex : \"(.)(.*?)(\\\\1|$)|\",\n next : \"start\"\n }]\n }, {\n token : \"storage.type\",\n regex : \"\\\\\\\\[a-zA-Z]+\"\n }, {\n token : \"lparen\",\n regex : \"[[({]\"\n }, {\n token : \"rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"constant.character.escape\",\n regex : \"\\\\\\\\[^a-zA-Z]?\"\n }, {\n token : \"string\",\n regex : \"\\\\${1,2}\",\n next : \"equation\"\n }],\n \"equation\" : [{\n token : \"comment\",\n regex : \"%.*$\"\n }, {\n token : \"string\",\n regex : \"\\\\${1,2}\",\n next : \"start\"\n }, {\n token : \"constant.character.escape\",\n regex : \"\\\\\\\\(?:[^a-zA-Z]|[a-zA-Z]+)\"\n }, {\n token : \"error\", \n regex : \"^\\\\s*$\", \n next : \"start\" \n }, {\n defaultToken : \"string\"\n }],\n \"verbatim\": [{\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\end)({)(verbatim)(})\",\n next : \"start\"\n }, {\n defaultToken : \"text\"\n }],\n \"lstlisting\": [{\n token : [\"storage.type\", \"lparen\", \"variable.parameter\", \"rparen\"],\n regex : \"(\\\\\\\\end)({)(lstlisting)(})\",\n next : \"start\"\n }, {\n defaultToken : \"text\"\n }]\n };\n\n this.normalizeRules();\n};\noop.inherits(LatexHighlightRules, TextHighlightRules);\n\nexports.LatexHighlightRules = LatexHighlightRules;\n\n});\n\nace.define(\"ace/mode/rdoc_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\",\"ace/mode/latex_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar LaTeXHighlightRules = acequire(\"./latex_highlight_rules\");\n\nvar RDocHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"%.*$\"\n }, {\n token : \"text\", // non-command\n regex : \"\\\\\\\\[$&%#\\\\{\\\\}]\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\\\b\",\n next : \"nospell\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[[({]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"nospell\" : [\n {\n token : \"comment\",\n regex : \"%.*$\",\n next : \"start\"\n }, {\n token : \"nospell.text\", // non-command\n regex : \"\\\\\\\\[$&%#\\\\{\\\\}]\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\\\b\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])\",\n next : \"start\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[[({]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[\\\\])]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"}\",\n next : \"start\"\n }, {\n token : \"nospell.text\",\n regex : \"\\\\s+\"\n }, {\n token : \"nospell.text\",\n regex : \"\\\\w+\"\n }\n ]\n };\n};\n\noop.inherits(RDocHighlightRules, TextHighlightRules);\n\nexports.RDocHighlightRules = RDocHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/rdoc\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/rdoc_highlight_rules\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar RDocHighlightRules = acequire(\"./rdoc_highlight_rules\").RDocHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\nvar Mode = function(suppressHighlighting) {\n\tthis.HighlightRules = RDocHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n this.$id = \"ace/mode/rdoc\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/rst_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar RSTHighlightRules = function() {\n\n var tokens = {\n title: \"markup.heading\",\n list: \"markup.heading\",\n table: \"constant\",\n directive: \"keyword.operator\",\n entity: \"string\",\n link: \"markup.underline.list\",\n bold: \"markup.bold\",\n italic: \"markup.italic\",\n literal: \"support.function\",\n comment: \"comment\"\n };\n\n var startStringPrefix = \"(^|\\\\s|[\\\"'(<\\\\[{\\\\-/:])\";\n var endStringSuffix = \"(?:$|(?=\\\\s|[\\\\\\\\.,;!?\\\\-/:\\\"')>\\\\]}]))\";\n\n this.$rules = {\n \"start\": [\n {\n token : tokens.title,\n regex : \"(^)([\\\\=\\\\-`:\\\\.'\\\"~\\\\^_\\\\*\\\\+#])(\\\\2{2,}\\\\s*$)\"\n },\n {\n token : [\"text\", tokens.directive, tokens.literal],\n regex : \"(^\\\\s*\\\\.\\\\. )([^: ]+::)(.*$)\",\n next : \"codeblock\"\n },\n {\n token : tokens.directive,\n regex : \"::$\",\n next : \"codeblock\"\n },\n {\n token : [tokens.entity, tokens.link],\n regex : \"(^\\\\.\\\\. _[^:]+:)(.*$)\"\n },\n {\n token : [tokens.entity, tokens.link],\n regex : \"(^__ )(https?://.*$)\"\n },\n {\n token : tokens.entity,\n regex : \"^\\\\.\\\\. \\\\[[^\\\\]]+\\\\] \"\n },\n {\n token : tokens.comment,\n regex : \"^\\\\.\\\\. .*$\",\n next : \"comment\"\n },\n {\n token : tokens.list,\n regex : \"^\\\\s*[\\\\*\\\\+-] \"\n },\n {\n token : tokens.list,\n regex : \"^\\\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\\\. \"\n },\n {\n token : tokens.list,\n regex : \"^\\\\s*\\\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\\\) \"\n },\n {\n token : tokens.table,\n regex : \"^={2,}(?: +={2,})+$\"\n },\n {\n token : tokens.table,\n regex : \"^\\\\+-{2,}(?:\\\\+-{2,})+\\\\+$\"\n },\n {\n token : tokens.table,\n regex : \"^\\\\+={2,}(?:\\\\+={2,})+\\\\+$\"\n },\n {\n token : [\"text\", tokens.literal],\n regex : startStringPrefix + \"(``)(?=\\\\S)\",\n next : \"code\"\n },\n {\n token : [\"text\", tokens.bold],\n regex : startStringPrefix + \"(\\\\*\\\\*)(?=\\\\S)\",\n next : \"bold\"\n },\n {\n token : [\"text\", tokens.italic],\n regex : startStringPrefix + \"(\\\\*)(?=\\\\S)\",\n next : \"italic\"\n },\n {\n token : tokens.entity,\n regex : \"\\\\|[\\\\w\\\\-]+?\\\\|\"\n },\n {\n token : tokens.entity,\n regex : \":[\\\\w-:]+:`\\\\S\",\n next : \"entity\"\n },\n {\n token : [\"text\", tokens.entity],\n regex : startStringPrefix + \"(_`)(?=\\\\S)\",\n next : \"entity\"\n },\n {\n token : tokens.entity,\n regex : \"_[A-Za-z0-9\\\\-]+?\"\n },\n {\n token : [\"text\", tokens.link],\n regex : startStringPrefix + \"(`)(?=\\\\S)\",\n next : \"link\"\n },\n {\n token : tokens.link,\n regex : \"[A-Za-z0-9\\\\-]+?__?\"\n },\n {\n token : tokens.link,\n regex : \"\\\\[[^\\\\]]+?\\\\]_\"\n },\n {\n token : tokens.link,\n regex : \"https?://\\\\S+\"\n },\n {\n token : tokens.table,\n regex : \"\\\\|\"\n }\n ],\n \"codeblock\": [\n {\n token : tokens.literal,\n regex : \"^ +.+$\",\n next : \"codeblock\"\n },\n {\n token : tokens.literal,\n regex : '^$',\n next: \"codeblock\"\n },\n {\n token : \"empty\",\n regex : \"\",\n next : \"start\"\n }\n ],\n \"code\": [\n {\n token : tokens.literal,\n regex : \"\\\\S``\" + endStringSuffix,\n next : \"start\"\n },\n {\n defaultToken: tokens.literal\n }\n ],\n \"bold\": [\n {\n token : tokens.bold,\n regex : \"\\\\S\\\\*\\\\*\" + endStringSuffix,\n next : \"start\"\n },\n {\n defaultToken: tokens.bold\n }\n ],\n \"italic\": [\n {\n token : tokens.italic,\n regex : \"\\\\S\\\\*\" + endStringSuffix,\n next : \"start\"\n },\n {\n defaultToken: tokens.italic\n }\n ],\n \"entity\": [\n {\n token : tokens.entity,\n regex : \"\\\\S`\" + endStringSuffix,\n next : \"start\"\n },\n {\n defaultToken: tokens.entity\n }\n ],\n \"link\": [\n {\n token : tokens.link,\n regex : \"\\\\S`__?\" + endStringSuffix,\n next : \"start\"\n },\n {\n defaultToken: tokens.link\n }\n ],\n \"comment\": [\n {\n token : tokens.comment,\n regex : \"^ +.+$\",\n next : \"comment\"\n },\n {\n token : tokens.comment,\n regex : '^$',\n next: \"comment\"\n },\n {\n token : \"empty\",\n regex : \"\",\n next : \"start\"\n }\n ]\n };\n};\noop.inherits(RSTHighlightRules, TextHighlightRules);\n\nexports.RSTHighlightRules = RSTHighlightRules;\n});\n\nace.define(\"ace/mode/rst\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/rst_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar RSTHighlightRules = acequire(\"./rst_highlight_rules\").RSTHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = RSTHighlightRules;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.type = \"text\";\n\n this.$id = \"ace/mode/rst\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/ruby_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar constantOtherSymbol = exports.constantOtherSymbol = {\n token : \"constant.other.symbol.ruby\", // symbol\n regex : \"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?\"\n};\n\nvar qString = exports.qString = {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n};\n\nvar qqString = exports.qqString = {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n};\n\nvar tString = exports.tString = {\n token : \"string\", // backtick string\n regex : \"[`](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[`]\"\n};\n\nvar constantNumericHex = exports.constantNumericHex = {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\\\b\"\n};\n\nvar constantNumericFloat = exports.constantNumericFloat = {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d(?:\\\\d|_(?=\\\\d))*(?:(?:\\\\.\\\\d(?:\\\\d|_(?=\\\\d))*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n};\n\nvar instanceVariable = exports.instanceVariable = {\n token : \"variable.instance\", // instance variable\n regex : \"@{1,2}[a-zA-Z_\\\\d]+\"\n};\n\nvar RubyHighlightRules = function() {\n\n var builtinFunctions = (\n \"abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|\" +\n \"assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|\" +\n \"assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|\" +\n \"assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|\" +\n \"assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|\" +\n \"assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|\" +\n \"attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|\" +\n \"caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|\" +\n \"exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|\" +\n \"gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|\" +\n \"link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|\" +\n \"p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|\" +\n \"raw|readline|readlines|redirect?|request_via_redirect|acequire|scan|select|\" +\n \"set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|\" +\n \"throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|\" +\n \"render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|\" +\n \"content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|\" +\n \"fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|\" +\n \"time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|\" +\n \"select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|\" +\n \"file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|\" +\n \"protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|\" +\n \"send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|\" +\n \"validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|\" +\n \"validates_inclusion_of|validates_numericality_of|validates_with|validates_each|\" +\n \"authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|\" +\n \"filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|\" +\n \"translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|\" +\n \"cache|expire_fragment|expire_cache_for|observe|cache_sweeper|\" +\n \"has_many|has_one|belongs_to|has_and_belongs_to_many\"\n );\n\n var keywords = (\n \"alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|\" +\n \"__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|\" +\n \"redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield\"\n );\n\n var buildinConstants = (\n \"true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|\" +\n \"RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING\"\n );\n\n var builtinVariables = (\n \"$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|\" +\n \"$!|root_url|flash|session|cookies|params|request|response|logger|self\"\n );\n\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"variable.language\": builtinVariables,\n \"support.function\": builtinFunctions,\n \"invalid.deprecated\": \"debugger\" // TODO is this a remnant from js mode?\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"comment\", // multi line comment\n regex : \"^=begin(?:$|\\\\s.*$)\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n },\n\n [{\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren.lparen\";\n }\n if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1)\n return \"paren.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.start\",\n regex : /\"/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token : \"paren.start\",\n regex : /#{/,\n push : \"start\"\n }, {\n token : \"string.end\",\n regex : /\"/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token : \"paren.start\",\n regex : /#{/,\n push : \"start\"\n }, {\n token : \"string.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : /'/,\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\['\\\\]/\n }, {\n token : \"string.end\",\n regex : /'/,\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n {\n token : \"text\", // namespaces aren't symbols\n regex : \"::\"\n }, {\n token : \"variable.instance\", // instance variable\n regex : \"@{1,2}[a-zA-Z_\\\\d]+\"\n }, {\n token : \"support.class\", // class name\n regex : \"[A-Z][a-zA-Z_\\\\d]+\"\n },\n\n constantOtherSymbol,\n constantNumericHex,\n constantNumericFloat,\n\n {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"punctuation.separator.key-value\",\n regex : \"=>\"\n }, {\n stateName: \"heredoc\",\n onMatch : function(value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[3]);\n return [\n {type:\"constant\", value: tokens[1]},\n {type:\"string\", value: tokens[2]},\n {type:\"support.class\", value: tokens[3]},\n {type:\"string\", value: tokens[4]}\n ];\n },\n regex : \"(<<-?)(['\\\"`]?)([\\\\w]+)(['\\\"`]?)\",\n rules: {\n heredoc: [{\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^ +\"\n }, {\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex : \"$\",\n token : \"empty\",\n next : function(currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\")\n return stack[0];\n return currentState;\n }\n }, {\n token : \"string.character\",\n regex : \"\\\\B\\\\?.\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"^=end(?:$|\\\\s.*$)\",\n next : \"start\"\n }, {\n token : \"comment\", // comment spanning whole line\n regex : \".+\"\n }\n ]\n };\n\n this.normalizeRules();\n};\n\noop.inherits(RubyHighlightRules, TextHighlightRules);\n\nexports.RubyHighlightRules = RubyHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/ruby\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/ruby_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar RubyHighlightRules = acequire(\"./ruby_highlight_rules\").RubyHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = RubyHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new FoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n\n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n var startingClassOrMethod = line.match(/^\\s*(class|def|module)\\s.*$/);\n var startingDoBlock = line.match(/.*do(\\s*|\\s+\\|.*\\|\\s*)$/);\n var startingConditional = line.match(/^\\s*(if|else|when)\\s*/);\n if (match || startingClassOrMethod || startingDoBlock || startingConditional) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return /^\\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, session, row) {\n var line = session.getLine(row);\n if (/}/.test(line))\n return this.$outdent.autoOutdent(session, row);\n var indent = this.$getIndent(line);\n var prevLine = session.getLine(row - 1);\n var prevIndent = this.$getIndent(prevLine);\n var tab = session.getTabString();\n if (prevIndent.length <= indent.length) {\n if (indent.slice(-tab.length) == tab)\n session.remove(new Range(row, indent.length-tab.length, row, indent.length));\n }\n };\n\n this.$id = \"ace/mode/ruby\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/rust_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar stringEscape = /\\\\(?:[nrt0'\"\\\\]|x[\\da-fA-F]{2}|u\\{[\\da-fA-F]{6}\\})/.source;\nvar RustHighlightRules = function() {\n\n this.$rules = { start:\n [ { token: 'variable.other.source.rust',\n regex: '\\'[a-zA-Z_][a-zA-Z0-9_]*(?![\\\\\\'])' },\n { token: 'string.quoted.single.source.rust',\n regex: \"'(?:[^'\\\\\\\\]|\" + stringEscape + \")'\" },\n {\n stateName: \"bracketedComment\",\n onMatch : function(value, currentState, stack){\n stack.unshift(this.next, value.length - 1, currentState);\n return \"string.quoted.raw.source.rust\";\n },\n regex : /r#*\"/,\n next : [\n {\n onMatch : function(value, currentState, stack) {\n var token = \"string.quoted.raw.source.rust\";\n if (value.length >= stack[1]) {\n if (value.length > stack[1])\n token = \"invalid\";\n stack.shift();\n stack.shift();\n this.next = stack.shift();\n } else {\n this.next = \"\";\n }\n return token;\n },\n regex : /\"#*/,\n next : \"start\"\n }, {\n defaultToken : \"string.quoted.raw.source.rust\"\n }\n ]\n },\n { token: 'string.quoted.double.source.rust',\n regex: '\"',\n push: \n [ { token: 'string.quoted.double.source.rust',\n regex: '\"',\n next: 'pop' },\n { token: 'constant.character.escape.source.rust',\n regex: stringEscape },\n { defaultToken: 'string.quoted.double.source.rust' } ] },\n { token: [ 'keyword.source.rust', 'text', 'entity.name.function.source.rust' ],\n regex: '\\\\b(fn)(\\\\s+)([a-zA-Z_][a-zA-Z0-9_]*)' },\n { token: 'support.constant', regex: '\\\\b[a-zA-Z_][\\\\w\\\\d]*::' },\n { token: 'keyword.source.rust',\n regex: '\\\\b(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\\\b' },\n { token: 'storage.type.source.rust',\n regex: '\\\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\\\b' },\n { token: 'variable.language.source.rust', regex: '\\\\bself\\\\b' },\n \n { token: 'comment.line.doc.source.rust',\n regex: '//!.*$' },\n { token: 'comment.line.double-dash.source.rust',\n regex: '//.*$' },\n { token: 'comment.start.block.source.rust',\n regex: '/\\\\*',\n stateName: 'comment',\n push: \n [ { token: 'comment.start.block.source.rust',\n regex: '/\\\\*',\n push: 'comment' },\n { token: 'comment.end.block.source.rust',\n regex: '\\\\*/',\n next: 'pop' },\n { defaultToken: 'comment.block.source.rust' } ] },\n \n { token: 'keyword.operator',\n regex: /\\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/ },\n { token : \"punctuation.operator\", regex : /[?:,;.]/ },\n { token : \"paren.lparen\", regex : /[\\[({]/ },\n { token : \"paren.rparen\", regex : /[\\])}]/ },\n { token: 'constant.language.source.rust',\n regex: '\\\\b(?:true|false|Some|None|Ok|Err)\\\\b' },\n { token: 'support.constant.source.rust',\n regex: '\\\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\\\b' },\n { token: 'meta.preprocessor.source.rust',\n regex: '\\\\b\\\\w\\\\(\\\\w\\\\)*!|#\\\\[[\\\\w=\\\\(\\\\)_]+\\\\]\\\\b' },\n { token: 'constant.numeric.source.rust',\n regex: /\\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\\.))(?:[iu](?:size|8|16|32|64|128))?\\b/ },\n { token: 'constant.numeric.source.rust',\n regex: /\\b(?:[0-9][0-9_]*)(?:\\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\\b/ } ] };\n \n this.normalizeRules();\n};\n\nRustHighlightRules.metaData = { fileTypes: [ 'rs', 'rc' ],\n foldingStartMarker: '^.*\\\\bfn\\\\s*(\\\\w+\\\\s*)?\\\\([^\\\\)]*\\\\)(\\\\s*\\\\{[^\\\\}]*)?\\\\s*$',\n foldingStopMarker: '^\\\\s*\\\\}',\n name: 'Rust',\n scopeName: 'source.rust' };\n\n\noop.inherits(RustHighlightRules, TextHighlightRules);\n\nexports.RustHighlightRules = RustHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/rust\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/rust_highlight_rules\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar RustHighlightRules = acequire(\"./rust_highlight_rules\").RustHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = RustHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\", nestable: true};\n this.$quotes = { '\"': '\"' };\n this.$id = \"ace/mode/rust\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/scss_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ScssHighlightRules = function() {\n \n var properties = lang.arrayToMap( (function () {\n\n var browserPrefix = (\"-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-\").split(\"|\");\n \n var prefixProperties = (\"appearance|background-clip|background-inline-policy|background-origin|\" + \n \"background-size|binding|border-bottom-colors|border-left-colors|\" + \n \"border-right-colors|border-top-colors|border-end|border-end-color|\" + \n \"border-end-style|border-end-width|border-image|border-start|\" + \n \"border-start-color|border-start-style|border-start-width|box-align|\" + \n \"box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|\" + \n \"box-pack|box-sizing|column-count|column-gap|column-width|column-rule|\" + \n \"column-rule-width|column-rule-style|column-rule-color|float-edge|\" + \n \"font-feature-settings|font-language-override|force-broken-image-icon|\" + \n \"image-region|margin-end|margin-start|opacity|outline|outline-color|\" + \n \"outline-offset|outline-radius|outline-radius-bottomleft|\" + \n \"outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|\" + \n \"outline-style|outline-width|padding-end|padding-start|stack-sizing|\" + \n \"tab-size|text-blink|text-decoration-color|text-decoration-line|\" + \n \"text-decoration-style|transform|transform-origin|transition|\" + \n \"transition-delay|transition-duration|transition-property|\" + \n \"transition-timing-function|user-focus|user-input|user-modify|user-select|\" +\n \"window-shadow|border-radius\").split(\"|\");\n \n var properties = (\"azimuth|background-attachment|background-color|background-image|\" +\n \"background-position|background-repeat|background|border-bottom-color|\" +\n \"border-bottom-style|border-bottom-width|border-bottom|border-collapse|\" +\n \"border-color|border-left-color|border-left-style|border-left-width|\" +\n \"border-left|border-right-color|border-right-style|border-right-width|\" +\n \"border-right|border-spacing|border-style|border-top-color|\" +\n \"border-top-style|border-top-width|border-top|border-width|border|bottom|\" +\n \"box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|\" +\n \"counter-reset|cue-after|cue-before|cue|cursor|direction|display|\" +\n \"elevation|empty-cells|float|font-family|font-size-adjust|font-size|\" +\n \"font-stretch|font-style|font-variant|font-weight|font|height|left|\" +\n \"letter-spacing|line-height|list-style-image|list-style-position|\" +\n \"list-style-type|list-style|margin-bottom|margin-left|margin-right|\" +\n \"margin-top|marker-offset|margin|marks|max-height|max-width|min-height|\" +\n \"min-width|opacity|orphans|outline-color|\" +\n \"outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|\" +\n \"padding-left|padding-right|padding-top|padding|page-break-after|\" +\n \"page-break-before|page-break-inside|page|pause-after|pause-before|\" +\n \"pause|pitch-range|pitch|play-during|position|quotes|richness|right|\" +\n \"size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|\" +\n \"stress|table-layout|text-align|text-decoration|text-indent|\" +\n \"text-shadow|text-transform|top|unicode-bidi|vertical-align|\" +\n \"visibility|voice-family|volume|white-space|widows|width|word-spacing|\" +\n \"z-index\").split(\"|\");\n var ret = [];\n for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\\\+|\\\\$|\\\\+|\\\\*\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n caseInsensitive: true\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ]\n };\n};\n\noop.inherits(ScssHighlightRules, TextHighlightRules);\n\nexports.ScssHighlightRules = ScssHighlightRules;\n\n});\n\nace.define(\"ace/mode/sass_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/scss_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar ScssHighlightRules = acequire(\"./scss_highlight_rules\").ScssHighlightRules;\n\nvar SassHighlightRules = function() {\n ScssHighlightRules.call(this);\n var start = this.$rules.start;\n if (start[1].token == \"comment\") {\n start.splice(1, 1, {\n onMatch: function(value, currentState, stack) {\n stack.unshift(this.next, -1, value.length - 2, currentState);\n return \"comment\";\n },\n regex: /^\\s*\\/\\*/,\n next: \"comment\"\n }, {\n token: \"error.invalid\",\n regex: \"/\\\\*|[{;}]\"\n }, {\n token: \"support.type\",\n regex: /^\\s*:[\\w\\-]+\\s/\n });\n \n this.$rules.comment = [\n {regex: /^\\s*/, onMatch: function(value, currentState, stack) {\n if (stack[1] === -1)\n stack[1] = Math.max(stack[2], value.length - 1);\n if (value.length <= stack[1]) {stack.shift();stack.shift();stack.shift();\n this.next = stack.shift();\n return \"text\";\n } else {\n this.next = \"\";\n return \"comment\";\n }\n }, next: \"start\"},\n {defaultToken: \"comment\"}\n ];\n }\n};\n\noop.inherits(SassHighlightRules, ScssHighlightRules);\n\nexports.SassHighlightRules = SassHighlightRules;\n\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/sass\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/sass_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar SassHighlightRules = acequire(\"./sass_highlight_rules\").SassHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = SassHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() { \n this.lineCommentStart = \"//\";\n this.$id = \"ace/mode/sass\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/scad_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar scadHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": \"module|if|else|for\",\n \"constant.language\": \"NULL\"\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // multi line string start\n regex : '[\"].*\\\\\\\\$',\n next : \"qqstring\"\n }, {\n token : \"string\", // single line\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"string\", // multi line string start\n regex : \"['].*\\\\\\\\$\",\n next : \"qstring\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant\", // \n regex : \"<[a-zA-Z0-9.]+>\"\n }, {\n token : \"keyword\", // pre-compiler directivs\n regex : \"(?:use|include)\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|new|delete|typeof|void)\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ]\n };\n \n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(scadHighlightRules, TextHighlightRules);\n\nexports.scadHighlightRules = scadHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/scad\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/scad_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar scadHighlightRules = acequire(\"./scad_highlight_rules\").scadHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = scadHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/scad\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/scala_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ScalaHighlightRules = function() {\n\n var keywords = (\n \"case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|\" +\n \"abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|\" +\n \"override|package|private|protected|sealed|super|this|trait|type|val|var|with|\" +\n \"assert|assume|acequire|print|println|printf|readLine|readBoolean|readByte|readShort|\" + // package scala\n \"readChar|readInt|readLong|readFloat|readDouble\" // package scala\n );\n\n var buildinConstants = (\"true|false\");\n\n var langClasses = (\n \"AbstractMethodError|AssertionError|ClassCircularityError|\"+\n \"ClassFormatError|Deprecated|EnumConstantNotPresentException|\"+\n \"ExceptionInInitializerError|IllegalAccessError|\"+\n \"IllegalThreadStateException|InstantiationError|InternalError|\"+\n\n \"NegativeArraySizeException|NoSuchFieldError|Override|Process|\"+\n \"ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|\"+\n \"SuppressWarnings|TypeNotPresentException|UnknownError|\"+\n \"UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|\"+\n \"InstantiationException|IndexOutOfBoundsException|\"+\n \"ArrayIndexOutOfBoundsException|CloneNotSupportedException|\"+\n \"NoSuchFieldException|IllegalArgumentException|NumberFormatException|\"+\n \"SecurityException|Void|InheritableThreadLocal|IllegalStateException|\"+\n \"InterruptedException|NoSuchMethodException|IllegalAccessException|\"+\n \"UnsupportedOperationException|Enum|StrictMath|Package|Compiler|\"+\n \"Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|\"+\n \"NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|\"+\n \"NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|\"+\n \"Character|Boolean|StackTraceElement|Appendable|StringBuffer|\"+\n \"Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|\"+\n \"StackOverflowError|OutOfMemoryError|VirtualMachineError|\"+\n \"ArrayStoreException|ClassCastException|LinkageError|\"+\n \"NoClassDefFoundError|ClassNotFoundException|RuntimeException|\"+\n \"Exception|ThreadDeath|Error|Throwable|System|ClassLoader|\"+\n \"Cloneable|Class|CharSequence|Comparable|String|Object|\" +\n \"Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|\" +\n \"Option|Array|Char|Byte|Int|Long|Nothing|\" +\n\n \"App|Application|BufferedIterator|BigDecimal|BigInt|Console|Either|\" +\n \"Enumeration|Equiv|Fractional|Function|IndexedSeq|Integral|Iterator|\" +\n \"Map|Numeric|Nil|NotNull|Ordered|Ordering|PartialFunction|PartialOrdering|\" +\n \"Product|Proxy|Range|Responder|Seq|Serializable|Set|Specializable|Stream|\" +\n \"StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple\"\n\n\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"support.function\": langClasses,\n \"constant.language\": buildinConstants\n }, \"identifier\");\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"\\\\/\\\\/.*$\"\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment\", // multi line comment\n regex : \"\\\\/\\\\*\",\n next : \"comment\"\n }, {\n token : \"string.regexp\",\n regex : \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, {\n token : \"string\",\n regex : '\"\"\"',\n next : \"tstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)', // \" strings can't span multiple lines\n next : \"string\"\n }, {\n token : \"symbol.constant\", // single line\n regex : \"'[\\\\w\\\\d_]+\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"string\" : [\n {\n token : \"escape\",\n regex : '\\\\\\\\\"'\n }, {\n token : \"string\",\n regex : '\"',\n next : \"start\"\n }, {\n token : \"string.invalid\",\n regex : '[^\"\\\\\\\\]*$',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '[^\"\\\\\\\\]+'\n }\n ],\n \"tstring\" : [\n {\n token : \"string\",\n regex : '\"{3,5}',\n next : \"start\"\n }, {\n defaultToken : \"string\"\n }\n ]\n };\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n};\n\noop.inherits(ScalaHighlightRules, TextHighlightRules);\n\nexports.ScalaHighlightRules = ScalaHighlightRules;\n});\n\nace.define(\"ace/mode/scala\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript\",\"ace/mode/scala_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar ScalaHighlightRules = acequire(\"./scala_highlight_rules\").ScalaHighlightRules;\n\nvar Mode = function() {\n JavaScriptMode.call(this);\n this.HighlightRules = ScalaHighlightRules;\n};\noop.inherits(Mode, JavaScriptMode);\n\n(function() {\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.$id = \"ace/mode/scala\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/scheme_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar SchemeHighlightRules = function() {\n var keywordControl = \"case|do|let|loop|if|else|when\";\n var keywordOperator = \"eq?|eqv?|equal?|and|or|not|null?\";\n var constantLanguage = \"#t|#f\";\n var supportFunctions = \"cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load\";\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword.control\": keywordControl,\n \"keyword.operator\": keywordOperator,\n \"constant.language\": constantLanguage,\n \"support.function\": supportFunctions\n }, \"identifier\", true);\n\n this.$rules = \n {\n \"start\": [\n {\n token : \"comment\",\n regex : \";.*$\"\n },\n {\n \"token\": [\"storage.type.function-type.scheme\", \"text\", \"entity.name.function.scheme\"],\n \"regex\": \"(?:\\\\b(?:(define|define-syntax|define-macro))\\\\b)(\\\\s+)((?:\\\\w|\\\\-|\\\\!|\\\\?)*)\"\n },\n {\n \"token\": \"punctuation.definition.constant.character.scheme\",\n \"regex\": \"#:\\\\S+\"\n },\n {\n \"token\": [\"punctuation.definition.variable.scheme\", \"variable.other.global.scheme\", \"punctuation.definition.variable.scheme\"],\n \"regex\": \"(\\\\*)(\\\\S*)(\\\\*)\"\n },\n {\n \"token\" : \"constant.numeric\", // hex\n \"regex\" : \"#[xXoObB][0-9a-fA-F]+\"\n }, \n {\n \"token\" : \"constant.numeric\", // float\n \"regex\" : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\"\n },\n {\n \"token\" : keywordMapper,\n \"regex\" : \"[a-zA-Z_#][a-zA-Z0-9_\\\\-\\\\?\\\\!\\\\*]*\"\n },\n {\n \"token\" : \"string\",\n \"regex\" : '\"(?=.)',\n \"next\" : \"qqstring\"\n }\n ],\n \"qqstring\": [\n {\n \"token\": \"constant.character.escape.scheme\",\n \"regex\": \"\\\\\\\\.\"\n },\n {\n \"token\" : \"string\",\n \"regex\" : '[^\"\\\\\\\\]+',\n \"merge\" : true\n }, {\n \"token\" : \"string\",\n \"regex\" : \"\\\\\\\\$\",\n \"next\" : \"qqstring\",\n \"merge\" : true\n }, {\n \"token\" : \"string\",\n \"regex\" : '\"|$',\n \"next\" : \"start\",\n \"merge\" : true\n }\n ]\n};\n\n};\n\noop.inherits(SchemeHighlightRules, TextHighlightRules);\n\nexports.SchemeHighlightRules = SchemeHighlightRules;\n});\n\nace.define(\"ace/mode/matching_parens_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingParensOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\)/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\))/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n var match = line.match(/^(\\s+)/);\n if (match) {\n return match[1];\n }\n\n return \"\";\n };\n\n}).call(MatchingParensOutdent.prototype);\n\nexports.MatchingParensOutdent = MatchingParensOutdent;\n});\n\nace.define(\"ace/mode/scheme\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/scheme_highlight_rules\",\"ace/mode/matching_parens_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar SchemeHighlightRules = acequire(\"./scheme_highlight_rules\").SchemeHighlightRules;\nvar MatchingParensOutdent = acequire(\"./matching_parens_outdent\").MatchingParensOutdent;\n\nvar Mode = function() {\n this.HighlightRules = SchemeHighlightRules;\n\tthis.$outdent = new MatchingParensOutdent();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = \";\";\n this.minorIndentFunctions = [\"define\", \"lambda\", \"define-macro\", \"define-syntax\", \"syntax-rules\", \"define-record-type\", \"define-structure\"];\n\n this.$toIndent = function(str) {\n return str.split('').map(function(ch) {\n if (/\\s/.exec(ch)) {\n return ch;\n } else {\n return ' ';\n }\n }).join('');\n };\n\n this.$calculateIndent = function(line, tab) {\n var baseIndent = this.$getIndent(line);\n var delta = 0;\n var isParen, ch;\n for (var i = line.length - 1; i >= 0; i--) {\n ch = line[i];\n if (ch === '(') {\n delta--;\n isParen = true;\n } else if (ch === '(' || ch === '[' || ch === '{') {\n delta--;\n isParen = false;\n } else if (ch === ')' || ch === ']' || ch === '}') {\n delta++;\n }\n if (delta < 0) {\n break;\n }\n }\n if (delta < 0 && isParen) {\n i += 1;\n var iBefore = i;\n var fn = '';\n while (true) {\n ch = line[i];\n if (ch === ' ' || ch === '\\t') {\n if(this.minorIndentFunctions.indexOf(fn) !== -1) {\n return this.$toIndent(line.substring(0, iBefore - 1) + tab);\n } else {\n return this.$toIndent(line.substring(0, i + 1));\n }\n } else if (ch === undefined) {\n return this.$toIndent(line.substring(0, iBefore - 1) + tab);\n }\n fn += line[i];\n i++;\n }\n } else if(delta < 0 && !isParen) {\n return this.$toIndent(line.substring(0, i+1));\n } else if(delta > 0) {\n baseIndent = baseIndent.substring(0, baseIndent.length - tab.length);\n return baseIndent;\n } else {\n return baseIndent;\n }\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$calculateIndent(line, tab);\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n \n this.$id = \"ace/mode/scheme\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/scss_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ScssHighlightRules = function() {\n \n var properties = lang.arrayToMap( (function () {\n\n var browserPrefix = (\"-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-\").split(\"|\");\n \n var prefixProperties = (\"appearance|background-clip|background-inline-policy|background-origin|\" + \n \"background-size|binding|border-bottom-colors|border-left-colors|\" + \n \"border-right-colors|border-top-colors|border-end|border-end-color|\" + \n \"border-end-style|border-end-width|border-image|border-start|\" + \n \"border-start-color|border-start-style|border-start-width|box-align|\" + \n \"box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|\" + \n \"box-pack|box-sizing|column-count|column-gap|column-width|column-rule|\" + \n \"column-rule-width|column-rule-style|column-rule-color|float-edge|\" + \n \"font-feature-settings|font-language-override|force-broken-image-icon|\" + \n \"image-region|margin-end|margin-start|opacity|outline|outline-color|\" + \n \"outline-offset|outline-radius|outline-radius-bottomleft|\" + \n \"outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|\" + \n \"outline-style|outline-width|padding-end|padding-start|stack-sizing|\" + \n \"tab-size|text-blink|text-decoration-color|text-decoration-line|\" + \n \"text-decoration-style|transform|transform-origin|transition|\" + \n \"transition-delay|transition-duration|transition-property|\" + \n \"transition-timing-function|user-focus|user-input|user-modify|user-select|\" +\n \"window-shadow|border-radius\").split(\"|\");\n \n var properties = (\"azimuth|background-attachment|background-color|background-image|\" +\n \"background-position|background-repeat|background|border-bottom-color|\" +\n \"border-bottom-style|border-bottom-width|border-bottom|border-collapse|\" +\n \"border-color|border-left-color|border-left-style|border-left-width|\" +\n \"border-left|border-right-color|border-right-style|border-right-width|\" +\n \"border-right|border-spacing|border-style|border-top-color|\" +\n \"border-top-style|border-top-width|border-top|border-width|border|bottom|\" +\n \"box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|\" +\n \"counter-reset|cue-after|cue-before|cue|cursor|direction|display|\" +\n \"elevation|empty-cells|float|font-family|font-size-adjust|font-size|\" +\n \"font-stretch|font-style|font-variant|font-weight|font|height|left|\" +\n \"letter-spacing|line-height|list-style-image|list-style-position|\" +\n \"list-style-type|list-style|margin-bottom|margin-left|margin-right|\" +\n \"margin-top|marker-offset|margin|marks|max-height|max-width|min-height|\" +\n \"min-width|opacity|orphans|outline-color|\" +\n \"outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|\" +\n \"padding-left|padding-right|padding-top|padding|page-break-after|\" +\n \"page-break-before|page-break-inside|page|pause-after|pause-before|\" +\n \"pause|pitch-range|pitch|play-during|position|quotes|richness|right|\" +\n \"size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|\" +\n \"stress|table-layout|text-align|text-decoration|text-indent|\" +\n \"text-shadow|text-transform|top|unicode-bidi|vertical-align|\" +\n \"visibility|voice-family|volume|white-space|widows|width|word-spacing|\" +\n \"z-index\").split(\"|\");\n var ret = [];\n for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\\\+|\\\\$|\\\\+|\\\\*\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n caseInsensitive: true\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ]\n };\n};\n\noop.inherits(ScssHighlightRules, TextHighlightRules);\n\nexports.ScssHighlightRules = ScssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/scss\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/scss_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ScssHighlightRules = acequire(\"./scss_highlight_rules\").ScssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = ScssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/scss\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/sh_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar reservedKeywords = exports.reservedKeywords = (\n '!|{|}|case|do|done|elif|else|'+\n 'esac|fi|for|if|in|then|until|while|'+\n '&|;|export|local|read|typeset|unset|'+\n 'elif|select|set|function|declare|readonly'\n );\n\nvar languageConstructs = exports.languageConstructs = (\n '[|]|alias|bg|bind|break|builtin|'+\n 'cd|command|compgen|complete|continue|'+\n 'dirs|disown|echo|enable|eval|exec|'+\n 'exit|fc|fg|getopts|hash|help|history|'+\n 'jobs|kill|let|logout|popd|printf|pushd|'+\n 'pwd|return|set|shift|shopt|source|'+\n 'suspend|test|times|trap|type|ulimit|'+\n 'umask|unalias|wait'\n);\n\nvar ShHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"keyword\": reservedKeywords,\n \"support.function.builtin\": languageConstructs,\n \"invalid.deprecated\": \"debugger\"\n }, \"identifier\");\n\n var integer = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var fileDescriptor = \"(?:&\" + intPart + \")\";\n\n var variableName = \"[a-zA-Z_][a-zA-Z0-9_]*\";\n var variable = \"(?:\" + variableName + \"(?==))\";\n\n var builtinVariable = \"(?:\\\\$(?:SHLVL|\\\\$|\\\\!|\\\\?))\";\n\n var func = \"(?:\" + variableName + \"\\\\s*\\\\(\\\\))\";\n\n this.$rules = {\n \"start\" : [{\n token : \"constant\",\n regex : /\\\\./\n }, {\n token : [\"text\", \"comment\"],\n regex : /(^|\\s)(#.*)$/\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[$`\"\\\\]|$)/\n }, {\n include : \"variables\"\n }, {\n token : \"keyword.operator\",\n regex : /`/ // TODO highlight `\n }, {\n token : \"string.end\",\n regex : '\"',\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string\",\n regex : \"\\\\$'\",\n push : [{\n token : \"constant.language.escape\",\n regex : /\\\\(?:[abeEfnrtv\\\\'\"]|x[a-fA-F\\d]{1,2}|u[a-fA-F\\d]{4}([a-fA-F\\d]{4})?|c.|\\d{1,3})/\n }, {\n token : \"string\",\n regex : \"'\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n regex : \"<<<\",\n token : \"keyword.operator\"\n }, {\n stateName: \"heredoc\",\n regex : \"(<<-?)(\\\\s*)(['\\\"`]?)([\\\\w\\\\-]+)(['\\\"`]?)\",\n onMatch : function(value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[4]);\n return [\n {type:\"constant\", value: tokens[1]},\n {type:\"text\", value: tokens[2]},\n {type:\"string\", value: tokens[3]},\n {type:\"support.class\", value: tokens[4]},\n {type:\"string\", value: tokens[5]}\n ];\n },\n rules: {\n heredoc: [{\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^\\t+\"\n }, {\n onMatch: function(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex : \"$\",\n token : \"empty\",\n next : function(currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\")\n return stack[0];\n return currentState;\n }\n }, {\n token : [\"keyword\", \"text\", \"text\", \"text\", \"variable\"],\n regex : /(declare|local|readonly)(\\s+)(?:(-[fixar]+)(\\s+))?([a-zA-Z_][a-zA-Z0-9_]*\\b)/\n }, {\n token : \"variable.language\",\n regex : builtinVariable\n }, {\n token : \"variable\",\n regex : variable\n }, {\n include : \"variables\"\n }, {\n token : \"support.function\",\n regex : func\n }, {\n token : \"support.function\",\n regex : fileDescriptor\n }, {\n token : \"string\", // ' string\n start : \"'\", end : \"'\"\n }, {\n token : \"constant.numeric\", // float\n regex : floatNumber\n }, {\n token : \"constant.numeric\", // integer\n regex : integer + \"\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_][a-zA-Z0-9_]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|~|<|>|<=|=>|=|!=|[%&|`]\"\n }, {\n token : \"punctuation.operator\",\n regex : \";\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\[\\\\(\\\\{]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\]]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)\\\\}]\",\n next : \"pop\"\n }],\n variables: [{\n token : \"variable\",\n regex : /(\\$)(\\w+)/\n }, {\n token : [\"variable\", \"paren.lparen\"],\n regex : /(\\$)(\\()/,\n push : \"start\"\n }, {\n token : [\"variable\", \"paren.lparen\", \"keyword.operator\", \"variable\", \"keyword.operator\"],\n regex : /(\\$)(\\{)([#!]?)(\\w+|[*@#?\\-$!0_])(:[?+\\-=]?|##?|%%?|,,?\\/|\\^\\^?)?/,\n push : \"start\"\n }, {\n token : \"variable\",\n regex : /\\$[*@#?\\-$!0_]/\n }, {\n token : [\"variable\", \"paren.lparen\"],\n regex : /(\\$)(\\{)/,\n push : \"start\"\n }]\n };\n \n this.normalizeRules();\n};\n\noop.inherits(ShHighlightRules, TextHighlightRules);\n\nexports.ShHighlightRules = ShHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/sh\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/sh_highlight_rules\",\"ace/range\",\"ace/mode/folding/cstyle\",\"ace/mode/behaviour/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ShHighlightRules = acequire(\"./sh_highlight_rules\").ShHighlightRules;\nvar Range = acequire(\"../range\").Range;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n\nvar Mode = function() {\n this.HighlightRules = ShHighlightRules;\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = new CstyleBehaviour();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n \n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n\n this.checkOutdent = function(state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\")\n return false;\n\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n\n if (!tokens)\n return false;\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || (last.type == \"text\" && last.value.match(/^\\s+$/))));\n\n if (!last)\n return false;\n\n return (last.type == \"keyword\" && outdents[last.value]);\n };\n\n this.autoOutdent = function(state, doc, row) {\n\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab)\n doc.remove(new Range(row, indent.length-tab.length, row, indent.length));\n };\n\n this.$id = \"ace/mode/sh\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/sjs_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar SJSHighlightRules = function() {\n var parent = new JavaScriptHighlightRules({noES6: true});\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-6][0-7]?|\" + // oct\n \"37[0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n var contextAware = function(f) {\n f.isContextAware = true;\n return f;\n };\n\n var ctxBegin = function(opts) {\n return {\n token: opts.token,\n regex: opts.regex,\n next: contextAware(function(currentState, stack) {\n if (stack.length === 0)\n stack.unshift(currentState);\n stack.unshift(opts.next);\n return opts.next;\n })\n };\n };\n\n var ctxEnd = function(opts) {\n return {\n token: opts.token,\n regex: opts.regex,\n next: contextAware(function(currentState, stack) {\n stack.shift();\n return stack[0] || \"start\";\n })\n };\n };\n\n this.$rules = parent.$rules;\n this.$rules.no_regex = [\n {\n token: \"keyword\",\n regex: \"(waitfor|or|and|collapse|spawn|retract)\\\\b\"\n },\n {\n token: \"keyword.operator\",\n regex: \"(->|=>|\\\\.\\\\.)\"\n },\n {\n token: \"variable.language\",\n regex: \"(hold|default)\\\\b\"\n },\n ctxBegin({\n token: \"string\",\n regex: \"`\",\n next: \"bstring\"\n }),\n ctxBegin({\n token: \"string\",\n regex: '\"',\n next: \"qqstring\"\n }),\n ctxBegin({\n token: \"string\",\n regex: '\"',\n next: \"qqstring\"\n }),\n {\n token: [\"paren.lparen\", \"text\", \"paren.rparen\"],\n regex: \"(\\\\{)(\\\\s*)(\\\\|)\",\n next: \"block_arguments\"\n }\n\n ].concat(this.$rules.no_regex);\n\n this.$rules.block_arguments = [\n {\n token: \"paren.rparen\",\n regex: \"\\\\|\",\n next: \"no_regex\"\n }\n ].concat(this.$rules.function_arguments);\n\n this.$rules.bstring = [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n },\n {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next: \"bstring\"\n },\n ctxBegin({\n token : \"paren.lparen\",\n regex : \"\\\\$\\\\{\",\n next: \"string_interp\"\n }),\n ctxBegin({\n token : \"paren.lparen\",\n regex : \"\\\\$\",\n next: \"bstring_interp_single\"\n }),\n ctxEnd({\n token : \"string\",\n regex : \"`\"\n }),\n {\n defaultToken: \"string\"\n }\n ];\n \n this.$rules.qqstring = [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n },\n {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next: \"qqstring\"\n },\n ctxBegin({\n token : \"paren.lparen\",\n regex : \"#\\\\{\",\n next: \"string_interp\"\n }),\n ctxEnd({\n token : \"string\",\n regex : '\"'\n }),\n {\n defaultToken: \"string\"\n }\n ];\n var embeddableRules = [];\n for (var i=0; i < this.$rules.no_regex.length; i++) {\n var rule = this.$rules.no_regex[i];\n var token = String(rule.token);\n if (token.indexOf('paren') == -1 && (!rule.next || rule.next.isContextAware)) {\n embeddableRules.push(rule);\n }\n }\n\n this.$rules.string_interp = [\n ctxEnd({\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }),\n ctxBegin({\n token: \"paren.lparen\",\n regex: '{',\n next: \"string_interp\"\n })\n ].concat(embeddableRules);\n this.$rules.bstring_interp_single = [\n {\n token: [\"identifier\", \"paren.lparen\"],\n regex: '(\\\\w+)(\\\\()',\n next: 'bstring_interp_single_call'\n },\n ctxEnd({\n token : \"identifier\",\n regex : \"\\\\w*\"\n })\n ];\n this.$rules.bstring_interp_single_call = [\n ctxBegin({\n token: \"paren.lparen\",\n regex: \"\\\\(\",\n next: \"bstring_interp_single_call\"\n }),\n ctxEnd({\n token: \"paren.rparen\",\n regex: \"\\\\)\"\n })\n ].concat(embeddableRules);\n};\noop.inherits(SJSHighlightRules, TextHighlightRules);\n\nexports.SJSHighlightRules = SJSHighlightRules;\n});\n\nace.define(\"ace/mode/sjs\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript\",\"ace/mode/sjs_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\nvar oop = acequire(\"../lib/oop\");\nvar JSMode = acequire(\"./javascript\").Mode;\nvar SJSHighlightRules = acequire(\"./sjs_highlight_rules\").SJSHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = SJSHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, JSMode);\n(function() {\n this.createWorker = function(session) {\n return null;\n };\n this.$id = \"ace/mode/sjs\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/smarty_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\n\nvar SmartyHighlightRules = function() {\n HtmlHighlightRules.call(this);\n var smartyRules = { start: \n [ { include: '#comments' },\n { include: '#blocks' } ],\n '#blocks': \n [ { token: 'punctuation.section.embedded.begin.smarty',\n regex: '\\\\{%?',\n push: \n [ { token: 'punctuation.section.embedded.end.smarty',\n regex: '%?\\\\}',\n next: 'pop' },\n { include: '#strings' },\n { include: '#variables' },\n { include: '#lang' },\n { defaultToken: 'source.smarty' } ] } ],\n '#comments': \n [ { token: \n [ 'punctuation.definition.comment.smarty',\n 'comment.block.smarty' ],\n regex: '(\\\\{%?)(\\\\*)',\n push: \n [ { token: 'comment.block.smarty', regex: '\\\\*%?\\\\}', next: 'pop' },\n { defaultToken: 'comment.block.smarty' } ] } ],\n '#lang': \n [ { token: 'keyword.operator.smarty',\n regex: '(?:!=|!|<=|>=|<|>|===|==|%|&&|\\\\|\\\\|)|\\\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\\\b' },\n { token: 'constant.language.smarty',\n regex: '\\\\b(?:TRUE|FALSE|true|false)\\\\b' },\n { token: 'keyword.control.smarty',\n regex: '\\\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\\\b' },\n { token: 'variable.parameter.smarty', regex: '\\\\b[a-zA-Z]+=' },\n { token: 'support.function.built-in.smarty',\n regex: '\\\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\\\b' },\n { token: 'support.function.variable-modifier.smarty',\n regex: '\\\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)' } ],\n '#strings': \n [ { token: 'punctuation.definition.string.begin.smarty',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.string.end.smarty',\n regex: '\\'',\n next: 'pop' },\n { token: 'constant.character.escape.smarty', regex: '\\\\\\\\.' },\n { defaultToken: 'string.quoted.single.smarty' } ] },\n { token: 'punctuation.definition.string.begin.smarty',\n regex: '\"',\n push: \n [ { token: 'punctuation.definition.string.end.smarty',\n regex: '\"',\n next: 'pop' },\n { token: 'constant.character.escape.smarty', regex: '\\\\\\\\.' },\n { defaultToken: 'string.quoted.double.smarty' } ] } ],\n '#variables': \n [ { token: \n [ 'punctuation.definition.variable.smarty',\n 'variable.other.global.smarty' ],\n regex: '\\\\b(\\\\$)(Smarty\\\\.)' },\n { token: \n [ 'punctuation.definition.variable.smarty',\n 'variable.other.smarty' ],\n regex: '(\\\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\\\b' },\n { token: [ 'keyword.operator.smarty', 'variable.other.property.smarty' ],\n regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)\\\\b' },\n { token: \n [ 'keyword.operator.smarty',\n 'meta.function-call.object.smarty',\n 'punctuation.definition.variable.smarty',\n 'variable.other.smarty',\n 'punctuation.definition.variable.smarty' ],\n regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()(.*?)(\\\\))' } ] };\n \n var smartyStart = smartyRules.start;\n \n for (var rule in this.$rules) {\n this.$rules[rule].unshift.apply(this.$rules[rule], smartyStart);\n }\n \n Object.keys(smartyRules).forEach(function(x) {\n if (!this.$rules[x])\n this.$rules[x] = smartyRules[x];\n }, this);\n \n this.normalizeRules();\n};\n\nSmartyHighlightRules.metaData = { fileTypes: [ 'tpl' ],\n foldingStartMarker: '\\\\{%?',\n foldingStopMarker: '%?\\\\}',\n name: 'Smarty',\n scopeName: 'text.html.smarty' };\n\n\noop.inherits(SmartyHighlightRules, HtmlHighlightRules);\n\nexports.SmartyHighlightRules = SmartyHighlightRules;\n});\n\nace.define(\"ace/mode/smarty\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html\",\"ace/mode/smarty_highlight_rules\"], function(acequire, exports, module) {\n \"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlMode = acequire(\"./html\").Mode;\nvar SmartyHighlightRules = acequire(\"./smarty_highlight_rules\").SmartyHighlightRules;\n\nvar Mode = function() {\n HtmlMode.call(this);\n this.HighlightRules = SmartyHighlightRules;\n};\n\noop.inherits(Mode, HtmlMode);\n\n(function() {\n \n this.$id = \"ace/mode/smarty\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/sql_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar SqlHighlightRules = function() {\n\n var keywords = (\n \"select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|\" +\n \"when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|\" +\n \"foreign|not|references|default|null|inner|cross|natural|database|drop|grant\"\n );\n\n var builtinConstants = (\n \"true|false\"\n );\n\n var builtinFunctions = (\n \"avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|\" + \n \"coalesce|ifnull|isnull|nvl\"\n );\n\n var dataTypes = (\n \"int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|\" +\n \"money|real|number|integer\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"storage.type\": dataTypes\n }, \"identifier\", true);\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"--.*$\"\n }, {\n token : \"comment\",\n start : \"/\\\\*\",\n end : \"\\\\*/\"\n }, {\n token : \"string\", // \" string\n regex : '\".*?\"'\n }, {\n token : \"string\", // ' string\n regex : \"'.*?'\"\n }, {\n token : \"string\", // ` string (apache drill)\n regex : \"`.*?`\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ]\n };\n this.normalizeRules();\n};\n\noop.inherits(SqlHighlightRules, TextHighlightRules);\n\nexports.SqlHighlightRules = SqlHighlightRules;\n});\n\nace.define(\"ace/mode/sql\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/sql_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar SqlHighlightRules = acequire(\"./sql_highlight_rules\").SqlHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = SqlHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"--\";\n\n this.$id = \"ace/mode/sql\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/stylus_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\",\"ace/mode/css_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\");\n\nvar StylusHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.type\": CssHighlightRules.supportType,\n \"support.function\": CssHighlightRules.supportFunction,\n \"support.constant\": CssHighlightRules.supportConstant,\n \"support.constant.color\": CssHighlightRules.supportConstantColor,\n \"support.constant.fonts\": CssHighlightRules.supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n start: [\n {\n token : \"comment\",\n regex : /\\/\\/.*$/\n },\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next : \"comment\"\n },\n {\n token: [\"entity.name.function.stylus\", \"text\"],\n regex: \"^([-a-zA-Z_][-\\\\w]*)?(\\\\()\"\n },\n {\n token: [\"entity.other.attribute-name.class.stylus\"],\n regex: \"\\\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*\"\n },\n {\n token: [\"entity.language.stylus\"],\n regex: \"^ *&\"\n },\n {\n token: [\"variable.language.stylus\"],\n regex: \"(arguments)\"\n },\n {\n token: [\"keyword.stylus\"],\n regex: \"@[-\\\\w]+\"\n },\n {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : CssHighlightRules.pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : CssHighlightRules.pseudoClasses\n }, \n {\n token: [\"entity.name.tag.stylus\"],\n regex: \"(?:\\\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\\\b)\"\n },\n {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, \n {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, \n {\n token: [\"punctuation.definition.entity.stylus\", \"entity.other.attribute-name.id.stylus\"],\n regex: \"(#)([a-zA-Z][a-zA-Z0-9_-]*)\"\n },\n {\n token: \"meta.vendor-prefix.stylus\",\n regex: \"-webkit-|-moz\\\\-|-ms-|-o-\"\n },\n {\n token: \"keyword.control.stylus\",\n regex: \"(?:!important|for|in|return|true|false|null|if|else|unless|return)\\\\b\"\n },\n {\n token: \"keyword.operator.stylus\",\n regex: \"!|~|\\\\+|-|(?:\\\\*)?\\\\*|\\\\/|%|(?:\\\\.)\\\\.\\\\.|<|>|(?:=|:|\\\\?|\\\\+|-|\\\\*|\\\\/|%|<|>)?=|!=\"\n },\n {\n token: \"keyword.operator.stylus\",\n regex: \"(?:in|is(?:nt)?|not)\\\\b\"\n },\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, \n {\n token : \"constant.numeric\",\n regex : CssHighlightRules.numRe\n }, \n {\n token : \"keyword\",\n regex : \"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\\\b\"\n }, \n {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }\n ],\n \"comment\" : [\n {\n token : \"comment\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : \"start\"\n }, {\n defaultToken : \"comment\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : '[^\"\\\\\\\\]+'\n }, \n {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n }, \n {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n }\n ],\n \"qstring\" : [\n {\n token : \"string\",\n regex : \"[^'\\\\\\\\]+\"\n }, \n {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qstring\"\n }, \n {\n token : \"string\",\n regex : \"'|$\",\n next : \"start\"\n }\n ]\n};\n\n};\n\noop.inherits(StylusHighlightRules, TextHighlightRules);\n\nexports.StylusHighlightRules = StylusHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/stylus\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/stylus_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar StylusHighlightRules = acequire(\"./stylus_highlight_rules\").StylusHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = StylusHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n \n this.$id = \"ace/mode/stylus\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = acequire(\"./folding/xml\").FoldMode;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\nvar Mode = function() {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\n\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.voidElements = lang.arrayToMap([]);\n\n this.blockComment = {start: \"\"};\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/xml\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n \n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/svg_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar SvgHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.embedTagRules(JavaScriptHighlightRules, \"js-\", \"script\");\n\n this.normalizeRules();\n};\n\noop.inherits(SvgHighlightRules, XmlHighlightRules);\n\nexports.SvgHighlightRules = SvgHighlightRules;\n});\n\nace.define(\"ace/mode/folding/mixed\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(defaultMode, subModes) {\n this.defaultMode = defaultMode;\n this.subModes = subModes;\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n\n this.$getMode = function(state) {\n if (typeof state != \"string\") \n state = state[0];\n for (var key in this.subModes) {\n if (state.indexOf(key) === 0)\n return this.subModes[key];\n }\n return null;\n };\n \n this.$tryMode = function(state, session, foldStyle, row) {\n var mode = this.$getMode(state);\n return (mode ? mode.getFoldWidget(session, foldStyle, row) : \"\");\n };\n\n this.getFoldWidget = function(session, foldStyle, row) {\n return (\n this.$tryMode(session.getState(row-1), session, foldStyle, row) ||\n this.$tryMode(session.getState(row), session, foldStyle, row) ||\n this.defaultMode.getFoldWidget(session, foldStyle, row)\n );\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var mode = this.$getMode(session.getState(row-1));\n \n if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n mode = this.$getMode(session.getState(row));\n \n if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n mode = this.defaultMode;\n \n return mode.getFoldWidgetRange(session, foldStyle, row);\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/svg\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/xml\",\"ace/mode/javascript\",\"ace/mode/svg_highlight_rules\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar XmlMode = acequire(\"./xml\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar SvgHighlightRules = acequire(\"./svg_highlight_rules\").SvgHighlightRules;\nvar MixedFoldMode = acequire(\"./folding/mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./folding/xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n XmlMode.call(this);\n \n this.HighlightRules = SvgHighlightRules;\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode\n });\n \n this.foldingRules = new MixedFoldMode(new XmlFoldMode(), {\n \"js-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(Mode, XmlMode);\n\n(function() {\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n \n\n this.$id = \"ace/mode/svg\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/swift_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar SwiftHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"\",\n \"keyword\": \"__COLUMN__|__FILE__|__FUNCTION__|__LINE__\"\n + \"|as|associativity|break|case|class|continue|default|deinit|didSet\"\n + \"|do|dynamicType|else|enum|extension|fallthrough|for|func|get|if|import\"\n + \"|in|infix|init|inout|is|left|let|let|mutating|new|none|nonmutating\"\n + \"|operator|override|postfix|precedence|prefix|protocol|return|right\"\n + \"|safe|Self|self|set|struct|subscript|switch|Type|typealias\"\n + \"|unowned|unsafe|var|weak|where|while|willSet\"\n + \"|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix\"\n + \"|prefix|acequired|static|guard|defer\",\n \"storage.type\": \"bool|double|Double\"\n + \"|extension|float|Float|int|Int|private|public|string|String\",\n \"constant.language\":\n \"false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes\",\n \"support.function\":\n \"\"\n }, \"identifier\");\n \n function string(start, options) {\n var nestable = options.nestable || options.interpolation;\n var interpStart = options.interpolation && options.interpolation.nextState || \"start\";\n var mainRule = {\n regex: start + (options.multiline ? \"\" : \"(?=.)\"),\n token: \"string.start\"\n };\n var nextState = [\n options.escape && {\n regex: options.escape,\n token: \"character.escape\"\n },\n options.interpolation && {\n token : \"paren.quasi.start\",\n regex : lang.escapeRegExp(options.interpolation.lead + options.interpolation.open),\n push : interpStart\n },\n options.error && {\n regex: options.error,\n token: \"error.invalid\"\n }, \n {\n regex: start + (options.multiline ? \"\" : \"|$\"),\n token: \"string.end\",\n next: nestable ? \"pop\" : \"start\"\n }, {\n defaultToken: \"string\"\n }\n ].filter(Boolean);\n \n if (nestable)\n mainRule.push = nextState;\n else\n mainRule.next = nextState;\n \n if (!options.interpolation)\n return mainRule;\n \n var open = options.interpolation.open;\n var close = options.interpolation.close;\n var counter = {\n regex: \"[\" + lang.escapeRegExp(open + close) + \"]\",\n onMatch: function(val, state, stack) {\n this.next = val == open ? this.nextState : \"\";\n if (val == open && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren\";\n }\n if (val == close && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1)\n return \"paren.quasi.end\";\n }\n return val == open ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: interpStart\n };\n return [counter, mainRule];\n }\n \n function comments() {\n return [{\n token : \"comment\",\n regex : \"\\\\/\\\\/(?=.)\",\n next : [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next: \"start\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n },\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n {\n token : \"comment.start\",\n regex : /\\/\\*/,\n stateName: \"nested_comment\",\n push : [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment.start\", regex : /\\/\\*/, push: \"nested_comment\"},\n {token : \"comment.end\", regex : \"\\\\*\\\\/\", next : \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n }\n \n\n this.$rules = {\n start: [\n string('\"', {\n escape: /\\\\(?:[0\\\\tnr\"']|u{[a-fA-F1-9]{0,8}})/,\n interpolation: {lead: \"\\\\\", open: \"(\", close: \")\"},\n error: /\\\\./,\n multiline: false\n }),\n comments({type: \"c\", nestable: true}),\n {\n regex: /@[a-zA-Z_$][a-zA-Z_$\\d\\u0080-\\ufffe]*/,\n token: \"variable.parameter\"\n },\n {\n regex: /[a-zA-Z_$][a-zA-Z_$\\d\\u0080-\\ufffe]*/,\n token: keywordMapper\n }, \n {\n token : \"constant.numeric\", \n regex : /[+-]?(?:0(?:b[01]+|o[0-7]+|x[\\da-fA-F])|\\d+(?:(?:\\.\\d*)?(?:[PpEe][+-]?\\d+)?)\\b)/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n } \n \n ]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"start\") ]);\n \n this.normalizeRules();\n};\n\n\noop.inherits(SwiftHighlightRules, TextHighlightRules);\n\nexports.HighlightRules = SwiftHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/swift\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/swift_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar HighlightRules = acequire(\"./swift_highlight_rules\").HighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = HighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = new CstyleBehaviour();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\", nestable: true};\n \n this.$id = \"ace/mode/swift\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/tcl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar TclHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"#.*\\\\\\\\$\",\n next : \"commentfollow\"\n }, {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"support.function\",\n regex : '[\\\\\\\\]$',\n next : \"splitlineStart\"\n }, {\n token : \"text\",\n regex : /\\\\(?:[\"{}\\[\\]$\\\\])/\n }, {\n token : \"text\", // last value before command\n regex : '^|[^{][;][^}]|[/\\r/]',\n next : \"commandItem\"\n }, {\n token : \"string\", // single line\n regex : '[ ]*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // multi line \"\"\" string start\n regex : '[ ]*[\"]',\n next : \"qqstring\"\n }, {\n token : \"variable.instance\",\n regex : \"[$]\",\n next : \"variable\"\n }, {\n token : \"support.function\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|{\\\\*}|;|::\"\n }, {\n token : \"identifier\",\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[{]\",\n next : \"commandItem\"\n }, {\n token : \"paren.lparen\",\n regex : \"[(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n }\n ],\n \"commandItem\" : [\n {\n token : \"comment\",\n regex : \"#.*\\\\\\\\$\",\n next : \"commentfollow\"\n }, {\n token : \"comment\",\n regex : \"#.*$\",\n next : \"start\"\n }, {\n token : \"string\", // single line\n regex : '[ ]*[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"variable.instance\", \n regex : \"[$]\",\n next : \"variable\"\n }, {\n token : \"support.function\",\n regex : \"(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])\",\n next : \"commandItem\"\n }, {\n token : \"support.function\",\n regex : \"[a-zA-Z0-9_/]+(?:[:][:])\",\n next : \"commandItem\"\n }, {\n token : \"support.function\",\n regex : \"(?:[:][:])\",\n next : \"commandItem\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"support.function\",\n regex : \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|{\\\\*}|;|::\"\n }, {\n token : \"keyword\",\n regex : \"[a-zA-Z0-9_/]+\",\n next : \"start\"\n } ],\n \"commentfollow\" : [ \n {\n token : \"comment\",\n regex : \".*\\\\\\\\$\",\n next : \"commentfollow\"\n }, {\n token : \"comment\",\n regex : '.+',\n next : \"start\"\n } ],\n \"splitlineStart\" : [ \n {\n token : \"text\",\n regex : \"^.\",\n next : \"start\"\n }],\n \"variable\" : [ \n {\n token : \"variable.instance\", // variable tcl\n regex : \"[a-zA-Z_\\\\d]+(?:[(][a-zA-Z_\\\\d]+[)])?\",\n next : \"start\"\n }, {\n token : \"variable.instance\", // variable tcl with braces\n regex : \"{?[a-zA-Z_\\\\d]+}?\",\n next : \"start\"\n }], \n \"qqstring\" : [ {\n token : \"string\", // multi line \"\"\" string end\n regex : '(?:[^\\\\\\\\]|\\\\\\\\.)*?[\"]',\n next : \"start\"\n }, {\n token : \"string\",\n regex : '.+'\n } ]\n };\n};\n\noop.inherits(TclHighlightRules, TextHighlightRules);\n\nexports.TclHighlightRules = TclHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/tcl\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/folding/cstyle\",\"ace/mode/tcl_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar TclHighlightRules = acequire(\"./tcl_highlight_rules\").TclHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TclHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new CStyleFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n \n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.$id = \"ace/mode/tcl\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/tex_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar TexHighlightRules = function(textClass) {\n\n if (!textClass)\n textClass = \"text\";\n\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"%.*$\"\n }, {\n token : textClass, // non-command\n regex : \"\\\\\\\\[$&%#\\\\{\\\\}]\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\\\b\",\n next : \"nospell\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[[({]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[\\\\])}]\"\n }, {\n token : textClass,\n regex : \"\\\\s+\"\n }\n ],\n \"nospell\" : [\n {\n token : \"comment\",\n regex : \"%.*$\",\n next : \"start\"\n }, {\n token : \"nospell.\" + textClass, // non-command\n regex : \"\\\\\\\\[$&%#\\\\{\\\\}]\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\\\b\"\n }, {\n token : \"keyword\", // command\n regex : \"\\\\\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])\",\n next : \"start\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[[({]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"[\\\\])]\"\n }, {\n token : \"paren.keyword.operator\",\n regex : \"}\",\n next : \"start\"\n }, {\n token : \"nospell.\" + textClass,\n regex : \"\\\\s+\"\n }, {\n token : \"nospell.\" + textClass,\n regex : \"\\\\w+\"\n }\n ]\n };\n};\n\noop.inherits(TexHighlightRules, TextHighlightRules);\n\nexports.TexHighlightRules = TexHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/tex\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/text_highlight_rules\",\"ace/mode/tex_highlight_rules\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar TexHighlightRules = acequire(\"./tex_highlight_rules\").TexHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\nvar Mode = function(suppressHighlighting) {\n if (suppressHighlighting)\n this.HighlightRules = TextHighlightRules;\n else\n this.HighlightRules = TexHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"%\";\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.allowAutoInsert = function() {\n return false;\n };\n this.$id = \"ace/mode/tex\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/textile_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar TextileHighlightRules = function() {\n this.$rules = {\n \"start\" : [\n {\n token : function(value) {\n if (value.charAt(0) == \"h\")\n return \"markup.heading.\" + value.charAt(1);\n else\n return \"markup.heading\";\n },\n regex : \"h1|h2|h3|h4|h5|h6|bq|p|bc|pre\",\n next : \"blocktag\"\n },\n {\n token : \"keyword\",\n regex : \"[\\\\*]+|[#]+\"\n },\n {\n token : \"text\",\n regex : \".+\"\n }\n ],\n \"blocktag\" : [\n {\n token : \"keyword\",\n regex : \"\\\\. \",\n next : \"start\"\n },\n {\n token : \"keyword\",\n regex : \"\\\\(\",\n next : \"blocktagproperties\"\n }\n ],\n \"blocktagproperties\" : [\n {\n token : \"keyword\",\n regex : \"\\\\)\",\n next : \"blocktag\"\n },\n {\n token : \"string\",\n regex : \"[a-zA-Z0-9\\\\-_]+\"\n },\n {\n token : \"keyword\",\n regex : \"#\"\n }\n ]\n };\n};\n\noop.inherits(TextileHighlightRules, TextHighlightRules);\n\nexports.TextileHighlightRules = TextileHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/textile\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/textile_highlight_rules\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar TextileHighlightRules = acequire(\"./textile_highlight_rules\").TextileHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\nvar Mode = function() {\n this.HighlightRules = TextileHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.type = \"text\";\n this.getNextLineIndent = function(state, line, tab) {\n if (state == \"intag\")\n return tab;\n \n return \"\";\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n \n this.$id = \"ace/mode/textile\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/toml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar TomlHighlightRules = function() {\n var keywordMapper = this.createKeywordMapper({\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n\n var identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\\\\b\";\n\n this.$rules = {\n \"start\": [\n {\n token: \"comment.toml\",\n regex: /#.*$/\n },\n {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n },\n {\n token: [\"variable.keygroup.toml\"],\n regex: \"(?:^\\\\s*)(\\\\[\\\\[([^\\\\]]+)\\\\]\\\\])\"\n },\n {\n token: [\"variable.keygroup.toml\"],\n regex: \"(?:^\\\\s*)(\\\\[([^\\\\]]+)\\\\])\"\n },\n {\n token : keywordMapper,\n regex : identifierRe\n },\n {\n token : \"support.date.toml\",\n regex: \"\\\\d{4}-\\\\d{2}-\\\\d{2}(T)\\\\d{2}:\\\\d{2}:\\\\d{2}(Z)\"\n },\n {\n token: \"constant.numeric.toml\",\n regex: \"-?\\\\d+(\\\\.?\\\\d+)?\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n next : \"qqstring\"\n },\n {\n token : \"constant.language.escape\",\n regex : '\\\\\\\\[0tnr\"\\\\\\\\]'\n },\n {\n token : \"string\",\n regex : '\"|$',\n next : \"start\"\n },\n {\n defaultToken: \"string\"\n }\n ]\n };\n\n};\n\noop.inherits(TomlHighlightRules, TextHighlightRules);\n\nexports.TomlHighlightRules = TomlHighlightRules;\n});\n\nace.define(\"ace/mode/folding/ini\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function() {\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /^\\s*\\[([^\\])]*)]\\s*(?:$|[;#])/;\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var re = this.foldingStartMarker;\n var line = session.getLine(row);\n \n var m = line.match(re);\n \n if (!m) return;\n \n var startName = m[1] + \".\";\n \n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n if (/^\\s*$/.test(line))\n continue;\n m = line.match(re);\n if (m && m[1].lastIndexOf(startName, 0) !== 0)\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/toml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/toml_highlight_rules\",\"ace/mode/folding/ini\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar TomlHighlightRules = acequire(\"./toml_highlight_rules\").TomlHighlightRules;\nvar FoldMode = acequire(\"./folding/ini\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = TomlHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"#\";\n this.$id = \"ace/mode/toml\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n },\n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n\n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n\n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/typescript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n\nvar TypeScriptHighlightRules = function(options) {\n\n var tsRules = [\n {\n token: [\"keyword.operator.ts\", \"text\", \"variable.parameter.function.ts\", \"text\"],\n regex: \"\\\\b(module)(\\\\s*)([a-zA-Z0-9_?.$][\\\\w?.$]*)(\\\\s*\\\\{)\"\n },\n {\n token: [\"storage.type.variable.ts\", \"text\", \"keyword.other.ts\", \"text\"],\n regex: \"(super)(\\\\s*\\\\()([a-zA-Z0-9,_?.$\\\\s]+\\\\s*)(\\\\))\"\n },\n {\n token: [\"entity.name.function.ts\",\"paren.lparen\", \"paren.rparen\"],\n regex: \"([a-zA-Z_?.$][\\\\w?.$]*)(\\\\()(\\\\))\"\n },\n {\n token: [\"variable.parameter.function.ts\", \"text\", \"variable.parameter.function.ts\"],\n regex: \"([a-zA-Z0-9_?.$][\\\\w?.$]*)(\\\\s*:\\\\s*)([a-zA-Z0-9_?.$][\\\\w?.$]*)\"\n },\n {\n token: [\"keyword.operator.ts\"],\n regex: \"(?:\\\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\\\b)\"\n },\n {\n token: [\"storage.type.variable.ts\"],\n regex: \"(?:\\\\b(this\\\\.|string\\\\b|bool\\\\b|number)\\\\b)\"\n },\n {\n token: [\"keyword.operator.ts\", \"storage.type.variable.ts\", \"keyword.operator.ts\", \"storage.type.variable.ts\"],\n regex: \"(class)(\\\\s+[a-zA-Z0-9_?.$][\\\\w?.$]*\\\\s+)(extends)(\\\\s+[a-zA-Z0-9_?.$][\\\\w?.$]*\\\\s+)?\"\n },\n {\n token: \"keyword\",\n regex: \"(?:super|export|class|extends|import)\\\\b\"\n }\n ];\n\n var JSRules = new JavaScriptHighlightRules({jsx: (options && options.jsx) == true}).getRules();\n\n JSRules.start = tsRules.concat(JSRules.start);\n this.$rules = JSRules;\n};\n\noop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules);\n\nexports.TypeScriptHighlightRules = TypeScriptHighlightRules;\n});\n\nace.define(\"ace/mode/typescript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript\",\"ace/mode/typescript_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar jsMode = acequire(\"./javascript\").Mode;\nvar TypeScriptHighlightRules = acequire(\"./typescript_highlight_rules\").TypeScriptHighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\nvar Mode = function() {\n this.HighlightRules = TypeScriptHighlightRules;\n\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, jsMode);\n\n(function() {\n this.createWorker = function(session) {\n return null;\n };\n this.$id = \"ace/mode/typescript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/tsx\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/typescript\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar tsMode = acequire(\"./typescript\").Mode;\n\nvar Mode = function() {\n tsMode.call(this);\n this.$highlightRuleConfig = {jsx: true};\n};\noop.inherits(Mode, tsMode);\n\n(function() {\n this.$id = \"ace/mode/tsx\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n\nvar tagMap = lang.createMap({\n a : 'anchor',\n button \t : 'form',\n form : 'form',\n img : 'image',\n input : 'form',\n label : 'form',\n option : 'form',\n script : 'script',\n select : 'form',\n textarea : 'form',\n style : 'style',\n table : 'table',\n tbody : 'table',\n td : 'table',\n tfoot : 'table',\n th : 'table',\n tr : 'table'\n});\n\nvar HtmlHighlightRules = function() {\n XmlHighlightRules.call(this);\n\n this.addRules({\n attributes: [{\n include : \"tag_whitespace\"\n }, {\n token : \"entity.other.attribute-name.xml\",\n regex : \"[-_a-zA-Z0-9:.]+\"\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\",\n push : [{\n include: \"tag_whitespace\"\n }, {\n token : \"string.unquoted.attribute-value.html\",\n regex : \"[^<>='\\\"`\\\\s]+\",\n next : \"pop\"\n }, {\n token : \"empty\",\n regex : \"\",\n next : \"pop\"\n }]\n }, {\n include : \"attribute_value\"\n }],\n tag: [{\n token : function(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex : \"(\", next : \"start\"}\n ]\n });\n\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), \"js-\", \"script\");\n\n if (this.constructor === HtmlHighlightRules)\n this.normalizeRules();\n};\n\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\n\nexports.HtmlHighlightRules = HtmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar MixedFoldMode = acequire(\"./mixed\").FoldMode;\nvar XmlFoldMode = acequire(\"./xml\").FoldMode;\nvar CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n};\n\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nvar commonAttributes = [\n \"accesskey\",\n \"class\",\n \"contenteditable\",\n \"contextmenu\",\n \"dir\",\n \"draggable\",\n \"dropzone\",\n \"hidden\",\n \"id\",\n \"inert\",\n \"itemid\",\n \"itemprop\",\n \"itemref\",\n \"itemscope\",\n \"itemtype\",\n \"lang\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"title\",\n \"translate\"\n];\n\nvar eventAttributes = [\n \"onabort\",\n \"onblur\",\n \"oncancel\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"onchange\",\n \"onclick\",\n \"onclose\",\n \"oncontextmenu\",\n \"oncuechange\",\n \"ondblclick\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onended\",\n \"onerror\",\n \"onfocus\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadstart\",\n \"onmousedown\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onprogress\",\n \"onratechange\",\n \"onreset\",\n \"onscroll\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onshow\",\n \"onstalled\",\n \"onsubmit\",\n \"onsuspend\",\n \"ontimeupdate\",\n \"onvolumechange\",\n \"onwaiting\"\n];\n\nvar globalAttributes = commonAttributes.concat(eventAttributes);\n\nvar attributeMap = {\n \"html\": {\"manifest\": 1},\n \"head\": {},\n \"title\": {},\n \"base\": {\"href\": 1, \"target\": 1},\n \"link\": {\"href\": 1, \"hreflang\": 1, \"rel\": {\"stylesheet\": 1, \"icon\": 1}, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"type\": {\"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1}, \"sizes\": 1},\n \"meta\": {\"http-equiv\": {\"content-type\": 1}, \"name\": {\"description\": 1, \"keywords\": 1}, \"content\": {\"text/html; charset=UTF-8\": 1}, \"charset\": 1},\n \"style\": {\"type\": 1, \"media\": {\"all\": 1, \"screen\": 1, \"print\": 1}, \"scoped\": 1},\n \"script\": {\"charset\": 1, \"type\": {\"text/javascript\": 1}, \"src\": 1, \"defer\": 1, \"async\": 1},\n \"noscript\": {\"href\": 1},\n \"body\": {\"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1},\n \"section\": {},\n \"nav\": {},\n \"article\": {\"pubdate\": 1},\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\"cite\": 1},\n \"ol\": {\"start\": 1, \"reversed\": 1},\n \"ul\": {},\n \"li\": {\"value\": 1},\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\"href\": 1, \"target\": {\"_blank\": 1, \"top\": 1}, \"ping\": 1, \"rel\": {\"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1}, \"media\": 1, \"hreflang\": 1, \"type\": 1},\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\"cite\": 1},\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\"datetime\": 1},\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\"cite\": 1, \"datetime\": 1},\n \"del\": {\"cite\": 1, \"datetime\": 1},\n \"img\": {\"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1},\n \"iframe\": {\"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": {\"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1}, \"seamless\": {\"seamless\": 1}},\n \"embed\": {\"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1},\n \"object\": {\"param\": 1, \"data\": 1, \"type\": 1, \"height\" : 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1},\n \"param\": {\"name\": 1, \"value\": 1},\n \"video\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1}},\n \"audio\": {\"src\": 1, \"autobuffer\": 1, \"autoplay\": {\"autoplay\": 1}, \"loop\": {\"loop\": 1}, \"controls\": {\"controls\": 1}, \"muted\": {\"muted\": 1}, \"preload\": {\"auto\": 1, \"metadata\": 1, \"none\": 1 }},\n \"source\": {\"src\": 1, \"type\": 1, \"media\": 1},\n \"track\": {\"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1},\n \"canvas\": {\"width\": 1, \"height\": 1},\n \"map\": {\"name\": 1},\n \"area\": {\"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1},\n \"svg\": {},\n \"math\": {},\n \"table\": {\"summary\": 1},\n \"caption\": {},\n \"colgroup\": {\"span\": 1},\n \"col\": {\"span\": 1},\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1},\n \"th\": {\"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1},\n \"form\": {\"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": {\"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1}, \"method\": {\"get\": 1, \"post\": 1}, \"name\": 1, \"novalidate\": 1, \"target\": {\"_blank\": 1, \"top\": 1}},\n \"fieldset\": {\"disabled\": 1, \"form\": 1, \"name\": 1},\n \"legend\": {},\n \"label\": {\"form\": 1, \"for\": 1},\n \"input\": {\n \"type\": {\"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1},\n \"accept\": 1, \"alt\": 1, \"autocomplete\": {\"on\": 1, \"off\": 1}, \"autofocus\": {\"autofocus\": 1}, \"checked\": {\"checked\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": {\"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1}, \"formmethod\": {\"get\": 1, \"post\": 1}, \"formnovalidate\": {\"formnovalidate\": 1}, \"formtarget\": {\"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1}, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1},\n \"button\": {\"autofocus\": 1, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": {\"button\": 1, \"submit\": 1}},\n \"select\": {\"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": {\"multiple\": 1}, \"name\": 1, \"size\": 1, \"readonly\":{\"readonly\": 1}},\n \"datalist\": {},\n \"optgroup\": {\"disabled\": 1, \"label\": 1},\n \"option\": {\"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1},\n \"textarea\": {\"autofocus\": {\"autofocus\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": {\"readonly\": 1}, \"acequired\": {\"acequired\": 1}, \"rows\": 1, \"cols\": 1, \"wrap\": {\"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1}},\n \"keygen\": {\"autofocus\": 1, \"challenge\": {\"challenge\": 1}, \"disabled\": {\"disabled\": 1}, \"form\": 1, \"keytype\": {\"rsa\": 1, \"dsa\": 1, \"ec\": 1}, \"name\": 1},\n \"output\": {\"for\": 1, \"form\": 1, \"name\": 1},\n \"progress\": {\"value\": 1, \"max\": 1},\n \"meter\": {\"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1},\n \"details\": {\"open\": 1},\n \"summary\": {},\n \"command\": {\"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1},\n \"menu\": {\"type\": 1, \"label\": 1},\n \"dialog\": {\"open\": 1}\n};\n\nvar elements = Object.keys(attributeMap);\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nfunction findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"tag-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nfunction findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n while (token && !is(token, \"attribute-name\")){\n token = iterator.stepBackward();\n }\n if (token)\n return token.value;\n}\n\nvar HtmlCompletions = function() {\n\n};\n\n(function() {\n\n this.getCompletions = function(state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\"))\n return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line))\n return this.getHTMLEntityCompletions(state, session, pos, prefix);\n\n return [];\n };\n\n this.getTagCompletions = function(state, session, pos, prefix) {\n return elements.map(function(element){\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName)\n return [];\n var attributes = globalAttributes;\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n return attributes.map(function(attribute){\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function(state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n \n if (!tagName)\n return [];\n var values = [];\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function(state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(HtmlCompletions.prototype);\n\nexports.HtmlCompletions = HtmlCompletions;\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptMode = acequire(\"./javascript\").Mode;\nvar CssMode = acequire(\"./css\").Mode;\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\nvar HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\nvar Mode = function(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n \n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n \n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.blockComment = {start: \"\"};\n\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n if (this.constructor != Mode)\n return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n if (this.fragmentContext)\n worker.call(\"setOptions\", [{context: this.fragmentContext}]);\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/twig_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/html_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar TwigHighlightRules = function() {\n HtmlHighlightRules.call(this);\n\n var tags = \"autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim\";\n tags = tags + \"|end\" + tags.replace(/\\|/g, \"|end\");\n var filters = \"abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode\";\n var functions = \"attribute|constant|cycle|date|dump|parent|random|range|template_from_string\";\n var tests = \"constant|divisibleby|sameas|defined|empty|even|iterable|odd\";\n var constants = \"null|none|true|false\";\n var operators = \"b-and|b-xor|b-or|in|is|and|or|not\";\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword.control.twig\": tags,\n \"support.function.twig\": [filters, functions, tests].join(\"|\"),\n \"keyword.operator.twig\": operators,\n \"constant.language.twig\": constants\n }, \"identifier\");\n for (var rule in this.$rules) {\n this.$rules[rule].unshift({\n token : \"variable.other.readwrite.local.twig\",\n regex : \"\\\\{\\\\{-?\",\n push : \"twig-start\"\n }, {\n token : \"meta.tag.twig\",\n regex : \"\\\\{%-?\",\n push : \"twig-start\"\n }, {\n token : \"comment.block.twig\",\n regex : \"\\\\{#-?\",\n push : \"twig-comment\"\n });\n }\n this.$rules[\"twig-comment\"] = [{\n token : \"comment.block.twig\",\n regex : \".*-?#\\\\}\",\n next : \"pop\"\n }];\n\n this.$rules[\"twig-start\"] = [{\n token : \"variable.other.readwrite.local.twig\",\n regex : \"-?\\\\}\\\\}\",\n next : \"pop\"\n }, {\n token : \"meta.tag.twig\",\n regex : \"-?%\\\\}\",\n next : \"pop\"\n }, {\n token : \"string\",\n regex : \"'\",\n next : \"twig-qstring\"\n }, {\n token : \"string\",\n regex : '\"',\n next : \"twig-qqstring\"\n }, {\n token : \"constant.numeric\", // hex\n regex : \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"constant.language.boolean\",\n regex : \"(?:true|false)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator.assignment\",\n regex : \"=|~\"\n }, {\n token : \"keyword.operator.comparison\",\n regex : \"==|!=|<|>|>=|<=|===\"\n }, {\n token : \"keyword.operator.arithmetic\",\n regex : \"\\\\+|-|/|%|//|\\\\*|\\\\*\\\\*\"\n }, {\n token : \"keyword.operator.other\",\n regex : \"\\\\.\\\\.|\\\\|\"\n }, {\n token : \"punctuation.operator\",\n regex : /\\?|:|,|;|\\./\n }, {\n token : \"paren.lparen\",\n regex : /[\\[\\({]/\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ];\n\n this.$rules[\"twig-qqstring\"] = [{\n token : \"constant.language.escape\",\n regex : /\\\\[\\\\\"$#ntr]|#{[^\"}]*}/\n }, {\n token : \"string\",\n regex : '\"',\n next : \"twig-start\"\n }, {\n defaultToken : \"string\"\n }\n ];\n\n this.$rules[\"twig-qstring\"] = [{\n token : \"constant.language.escape\",\n regex : /\\\\[\\\\'ntr]}/\n }, {\n token : \"string\",\n regex : \"'\",\n next : \"twig-start\"\n }, {\n defaultToken : \"string\"\n }\n ];\n\n this.normalizeRules();\n};\n\noop.inherits(TwigHighlightRules, TextHighlightRules);\n\nexports.TwigHighlightRules = TwigHighlightRules;\n});\n\nace.define(\"ace/mode/twig\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html\",\"ace/mode/twig_highlight_rules\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar HtmlMode = acequire(\"./html\").Mode;\nvar TwigHighlightRules = acequire(\"./twig_highlight_rules\").TwigHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\nvar Mode = function() {\n HtmlMode.call(this);\n this.HighlightRules = TwigHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n};\noop.inherits(Mode, HtmlMode);\n\n(function() {\n this.blockComment = {start: \"{#\", end: \"#}\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/twig\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/mode/typescript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n\nvar TypeScriptHighlightRules = function(options) {\n\n var tsRules = [\n {\n token: [\"keyword.operator.ts\", \"text\", \"variable.parameter.function.ts\", \"text\"],\n regex: \"\\\\b(module)(\\\\s*)([a-zA-Z0-9_?.$][\\\\w?.$]*)(\\\\s*\\\\{)\"\n }, \n {\n token: [\"storage.type.variable.ts\", \"text\", \"keyword.other.ts\", \"text\"],\n regex: \"(super)(\\\\s*\\\\()([a-zA-Z0-9,_?.$\\\\s]+\\\\s*)(\\\\))\"\n },\n {\n token: [\"entity.name.function.ts\",\"paren.lparen\", \"paren.rparen\"],\n regex: \"([a-zA-Z_?.$][\\\\w?.$]*)(\\\\()(\\\\))\"\n },\n {\n token: [\"variable.parameter.function.ts\", \"text\", \"variable.parameter.function.ts\"],\n regex: \"([a-zA-Z0-9_?.$][\\\\w?.$]*)(\\\\s*:\\\\s*)([a-zA-Z0-9_?.$][\\\\w?.$]*)\"\n }, \n {\n token: [\"keyword.operator.ts\"],\n regex: \"(?:\\\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\\\b)\"\n }, \n {\n token: [\"storage.type.variable.ts\"],\n regex: \"(?:\\\\b(this\\\\.|string\\\\b|bool\\\\b|number)\\\\b)\"\n }, \n {\n token: [\"keyword.operator.ts\", \"storage.type.variable.ts\", \"keyword.operator.ts\", \"storage.type.variable.ts\"],\n regex: \"(class)(\\\\s+[a-zA-Z0-9_?.$][\\\\w?.$]*\\\\s+)(extends)(\\\\s+[a-zA-Z0-9_?.$][\\\\w?.$]*\\\\s+)?\"\n },\n {\n token: \"keyword\",\n regex: \"(?:super|export|class|extends|import)\\\\b\"\n }\n ];\n\n var JSRules = new JavaScriptHighlightRules({jsx: (options && options.jsx) == true}).getRules();\n \n JSRules.start = tsRules.concat(JSRules.start);\n this.$rules = JSRules;\n};\n\noop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules);\n\nexports.TypeScriptHighlightRules = TypeScriptHighlightRules;\n});\n\nace.define(\"ace/mode/typescript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/javascript\",\"ace/mode/typescript_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar jsMode = acequire(\"./javascript\").Mode;\nvar TypeScriptHighlightRules = acequire(\"./typescript_highlight_rules\").TypeScriptHighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\nvar Mode = function() {\n this.HighlightRules = TypeScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, jsMode);\n\n(function() {\n this.createWorker = function(session) {\n return null;\n };\n this.$id = \"ace/mode/typescript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/vala_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ValaHighlightRules = function() {\n\n this.$rules = { start: \n [ { token: \n [ 'meta.using.vala',\n 'keyword.other.using.vala',\n 'meta.using.vala',\n 'storage.modifier.using.vala',\n 'meta.using.vala',\n 'punctuation.terminator.vala' ],\n regex: '^(\\\\s*)(using)\\\\b(?:(\\\\s*)([^ ;$]+)(\\\\s*)((?:;)?))?' },\n { include: '#code' } ],\n '#all-types': \n [ { include: '#primitive-arrays' },\n { include: '#primitive-types' },\n { include: '#object-types' } ],\n '#annotations': \n [ { token: \n [ 'storage.type.annotation.vala',\n 'punctuation.definition.annotation-arguments.begin.vala' ],\n regex: '(@[^ (]+)(\\\\()',\n push: \n [ { token: 'punctuation.definition.annotation-arguments.end.vala',\n regex: '\\\\)',\n next: 'pop' },\n { token: \n [ 'constant.other.key.vala',\n 'text',\n 'keyword.operator.assignment.vala' ],\n regex: '(\\\\w*)(\\\\s*)(=)' },\n { include: '#code' },\n { token: 'punctuation.seperator.property.vala', regex: ',' },\n { defaultToken: 'meta.declaration.annotation.vala' } ] },\n { token: 'storage.type.annotation.vala', regex: '@\\\\w*' } ],\n '#anonymous-classes-and-new': \n [ { token: 'keyword.control.new.vala',\n regex: '\\\\bnew\\\\b',\n push_disabled: \n [ { token: 'text',\n regex: '(?<=\\\\)|\\\\])(?!\\\\s*{)|(?<=})|(?=;)',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?<=\\\\)|\\\\])(?!\\\\s*{)|(?<=})|(?=;)',\n next: 'pop' },\n { token: [ 'storage.type.vala', 'text' ],\n regex: '(\\\\w+)(\\\\s*)(?=\\\\[)',\n push: \n [ { token: 'text', regex: '}|(?=;|\\\\))', next: 'pop' },\n { token: 'text',\n regex: '\\\\[',\n push: \n [ { token: 'text', regex: '\\\\]', next: 'pop' },\n { include: '#code' } ] },\n { token: 'text',\n regex: '{',\n push: \n [ { token: 'text', regex: '(?=})', next: 'pop' },\n { include: '#code' } ] } ] },\n { token: 'text',\n regex: '(?=\\\\w.*\\\\()',\n push: \n [ { token: 'text',\n regex: '(?<=\\\\))',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?<=\\\\))',\n next: 'pop' },\n { include: '#object-types' },\n { token: 'text',\n regex: '\\\\(',\n push: \n [ { token: 'text', regex: '\\\\)', next: 'pop' },\n { include: '#code' } ] } ] },\n { token: 'meta.inner-class.vala',\n regex: '{',\n push: \n [ { token: 'meta.inner-class.vala', regex: '}', next: 'pop' },\n { include: '#class-body' },\n { defaultToken: 'meta.inner-class.vala' } ] } ] } ],\n '#assertions': \n [ { token: \n [ 'keyword.control.assert.vala',\n 'meta.declaration.assertion.vala' ],\n regex: '\\\\b(assert|acequires|ensures)(\\\\s)',\n push: \n [ { token: 'meta.declaration.assertion.vala',\n regex: '$',\n next: 'pop' },\n { token: 'keyword.operator.assert.expression-seperator.vala',\n regex: ':' },\n { include: '#code' },\n { defaultToken: 'meta.declaration.assertion.vala' } ] } ],\n '#class': \n [ { token: 'meta.class.vala',\n regex: '(?=\\\\w?[\\\\w\\\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\\\s+\\\\w+)',\n push: \n [ { token: 'paren.vala',\n regex: '}',\n next: 'pop' },\n { include: '#storage-modifiers' },\n { include: '#comments' },\n { token: \n [ 'storage.modifier.vala',\n 'meta.class.identifier.vala',\n 'entity.name.type.class.vala' ],\n regex: '(class|(?:@)?interface|enum|struct|namespace)(\\\\s+)([\\\\w\\\\.]+)' },\n { token: 'storage.modifier.extends.vala',\n regex: ':',\n push: \n [ { token: 'meta.definition.class.inherited.classes.vala',\n regex: '(?={|,)',\n next: 'pop' },\n { include: '#object-types-inherited' },\n { include: '#comments' },\n { defaultToken: 'meta.definition.class.inherited.classes.vala' } ] },\n { token: \n [ 'storage.modifier.implements.vala',\n 'meta.definition.class.implemented.interfaces.vala' ],\n regex: '(,)(\\\\s)',\n push: \n [ { token: 'meta.definition.class.implemented.interfaces.vala',\n regex: '(?=\\\\{)',\n next: 'pop' },\n { include: '#object-types-inherited' },\n { include: '#comments' },\n { defaultToken: 'meta.definition.class.implemented.interfaces.vala' } ] },\n { token: 'paren.vala',\n regex: '{',\n push: \n [ { token: 'paren.vala', regex: '(?=})', next: 'pop' },\n { include: '#class-body' },\n { defaultToken: 'meta.class.body.vala' } ] },\n { defaultToken: 'meta.class.vala' } ],\n comment: 'attempting to put namespace in here.' } ],\n '#class-body': \n [ { include: '#comments' },\n { include: '#class' },\n { include: '#enums' },\n { include: '#methods' },\n { include: '#annotations' },\n { include: '#storage-modifiers' },\n { include: '#code' } ],\n '#code': \n [ { include: '#comments' },\n { include: '#class' },\n { token: 'text',\n regex: '{',\n push: \n [ { token: 'text', regex: '}', next: 'pop' },\n { include: '#code' } ] },\n { include: '#assertions' },\n { include: '#parens' },\n { include: '#constants-and-special-vars' },\n { include: '#anonymous-classes-and-new' },\n { include: '#keywords' },\n { include: '#storage-modifiers' },\n { include: '#strings' },\n { include: '#all-types' } ],\n '#comments': \n [ { token: 'punctuation.definition.comment.vala',\n regex: '/\\\\*\\\\*/' },\n { include: 'text.html.javadoc' },\n { include: '#comments-inline' } ],\n '#comments-inline': \n [ { token: 'punctuation.definition.comment.vala',\n regex: '/\\\\*',\n push: \n [ { token: 'punctuation.definition.comment.vala',\n regex: '\\\\*/',\n next: 'pop' },\n { defaultToken: 'comment.block.vala' } ] },\n { token: \n [ 'text',\n 'punctuation.definition.comment.vala',\n 'comment.line.double-slash.vala' ],\n regex: '(\\\\s*)(//)(.*$)' } ],\n '#constants-and-special-vars': \n [ { token: 'constant.language.vala',\n regex: '\\\\b(?:true|false|null)\\\\b' },\n { token: 'variable.language.vala',\n regex: '\\\\b(?:this|base)\\\\b' },\n { token: 'constant.numeric.vala',\n regex: '\\\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\\\.?[0-9]*|\\\\.[0-9]+)(?:(?:e|E)(?:\\\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\\\b' },\n { token: [ 'keyword.operator.dereference.vala', 'constant.other.vala' ],\n regex: '((?:\\\\.)?)\\\\b([A-Z][A-Z0-9_]+)(?!<|\\\\.class|\\\\s*\\\\w+\\\\s*=)\\\\b' } ],\n '#enums': \n [ { token: 'text',\n regex: '^(?=\\\\s*[A-Z0-9_]+\\\\s*(?:{|\\\\(|,))',\n push: \n [ { token: 'text', regex: '(?=;|})', next: 'pop' },\n { token: 'constant.other.enum.vala',\n regex: '\\\\w+',\n push: \n [ { token: 'meta.enum.vala', regex: '(?=,|;|})', next: 'pop' },\n { include: '#parens' },\n { token: 'text',\n regex: '{',\n push: \n [ { token: 'text', regex: '}', next: 'pop' },\n { include: '#class-body' } ] },\n { defaultToken: 'meta.enum.vala' } ] } ] } ],\n '#keywords': \n [ { token: 'keyword.control.catch-exception.vala',\n regex: '\\\\b(?:try|catch|finally|throw)\\\\b' },\n { token: 'keyword.control.vala', regex: '\\\\?|:|\\\\?\\\\?' },\n { token: 'keyword.control.vala',\n regex: '\\\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\\\b' },\n { token: 'keyword.operator.vala',\n regex: '\\\\b(?:typeof|is|as)\\\\b' },\n { token: 'keyword.operator.comparison.vala',\n regex: '==|!=|<=|>=|<>|<|>' },\n { token: 'keyword.operator.assignment.vala', regex: '=' },\n { token: 'keyword.operator.increment-decrement.vala',\n regex: '\\\\-\\\\-|\\\\+\\\\+' },\n { token: 'keyword.operator.arithmetic.vala',\n regex: '\\\\-|\\\\+|\\\\*|\\\\/|%' },\n { token: 'keyword.operator.logical.vala', regex: '!|&&|\\\\|\\\\|' },\n { token: 'keyword.operator.dereference.vala',\n regex: '\\\\.(?=\\\\S)',\n originalRegex: '(?<=\\\\S)\\\\.(?=\\\\S)' },\n { token: 'punctuation.terminator.vala', regex: ';' },\n { token: 'keyword.operator.ownership', regex: 'owned|unowned' } ],\n '#methods': \n [ { token: 'meta.method.vala',\n regex: '(?!new)(?=\\\\w.*\\\\s+)(?=[^=]+\\\\()',\n push: \n [ { token: 'paren.vala', regex: '}|(?=;)', next: 'pop' },\n { include: '#storage-modifiers' },\n { token: [ 'entity.name.function.vala', 'meta.method.identifier.vala' ],\n regex: '([\\\\~\\\\w\\\\.]+)(\\\\s*\\\\()',\n push: \n [ { token: 'meta.method.identifier.vala',\n regex: '\\\\)',\n next: 'pop' },\n { include: '#parameters' },\n { defaultToken: 'meta.method.identifier.vala' } ] },\n { token: 'meta.method.return-type.vala',\n regex: '(?=\\\\w.*\\\\s+\\\\w+\\\\s*\\\\()',\n push: \n [ { token: 'meta.method.return-type.vala',\n regex: '(?=\\\\w+\\\\s*\\\\()',\n next: 'pop' },\n { include: '#all-types' },\n { defaultToken: 'meta.method.return-type.vala' } ] },\n { include: '#throws' },\n { token: 'paren.vala',\n regex: '{',\n push: \n [ { token: 'paren.vala', regex: '(?=})', next: 'pop' },\n { include: '#code' },\n { defaultToken: 'meta.method.body.vala' } ] },\n { defaultToken: 'meta.method.vala' } ] } ],\n '#namespace': \n [ { token: 'text',\n regex: '^(?=\\\\s*[A-Z0-9_]+\\\\s*(?:{|\\\\(|,))',\n push: \n [ { token: 'text', regex: '(?=;|})', next: 'pop' },\n { token: 'constant.other.namespace.vala',\n regex: '\\\\w+',\n push: \n [ { token: 'meta.namespace.vala', regex: '(?=,|;|})', next: 'pop' },\n { include: '#parens' },\n { token: 'text',\n regex: '{',\n push: \n [ { token: 'text', regex: '}', next: 'pop' },\n { include: '#code' } ] },\n { defaultToken: 'meta.namespace.vala' } ] } ],\n comment: 'This is not quite right. See the class grammar right now' } ],\n '#object-types': \n [ { token: 'storage.type.generic.vala',\n regex: '\\\\b(?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*<',\n push: \n [ { token: 'storage.type.generic.vala',\n regex: '>|[^\\\\w\\\\s,\\\\?<\\\\[()\\\\]]',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '>|[^\\\\w\\\\s,\\\\?<\\\\[(?:[,]+)\\\\]]',\n next: 'pop' },\n { include: '#object-types' },\n { token: 'storage.type.generic.vala',\n regex: '<',\n push: \n [ { token: 'storage.type.generic.vala',\n regex: '>|[^\\\\w\\\\s,\\\\[\\\\]<]',\n next: 'pop' },\n { defaultToken: 'storage.type.generic.vala' } ],\n comment: 'This is just to support <>\\'s with no actual type prefix' },\n { defaultToken: 'storage.type.generic.vala' } ] },\n { token: 'storage.type.object.array.vala',\n regex: '\\\\b(?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*(?=\\\\[)',\n push: \n [ { token: 'storage.type.object.array.vala',\n regex: '(?=[^\\\\]\\\\s])',\n next: 'pop' },\n { token: 'text',\n regex: '\\\\[',\n push: \n [ { token: 'text', regex: '\\\\]', next: 'pop' },\n { include: '#code' } ] },\n { defaultToken: 'storage.type.object.array.vala' } ] },\n { token: \n [ 'storage.type.vala',\n 'keyword.operator.dereference.vala',\n 'storage.type.vala' ],\n regex: '\\\\b(?:([a-z]\\\\w*)(\\\\.))*([A-Z]+\\\\w*\\\\b)' } ],\n '#object-types-inherited': \n [ { token: 'entity.other.inherited-class.vala',\n regex: '\\\\b(?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*<',\n push: \n [ { token: 'entity.other.inherited-class.vala',\n regex: '>|[^\\\\w\\\\s,<]',\n next: 'pop' },\n { include: '#object-types' },\n { token: 'storage.type.generic.vala',\n regex: '<',\n push: \n [ { token: 'storage.type.generic.vala',\n regex: '>|[^\\\\w\\\\s,<]',\n next: 'pop' },\n { defaultToken: 'storage.type.generic.vala' } ],\n comment: 'This is just to support <>\\'s with no actual type prefix' },\n { defaultToken: 'entity.other.inherited-class.vala' } ] },\n { token: \n [ 'entity.other.inherited-class.vala',\n 'keyword.operator.dereference.vala',\n 'entity.other.inherited-class.vala' ],\n regex: '\\\\b(?:([a-z]\\\\w*)(\\\\.))*([A-Z]+\\\\w*)' } ],\n '#parameters': \n [ { token: 'storage.modifier.vala', regex: 'final' },\n { include: '#primitive-arrays' },\n { include: '#primitive-types' },\n { include: '#object-types' },\n { token: 'variable.parameter.vala', regex: '\\\\w+' } ],\n '#parens': \n [ { token: 'text',\n regex: '\\\\(',\n push: \n [ { token: 'text', regex: '\\\\)', next: 'pop' },\n { include: '#code' } ] } ],\n '#primitive-arrays': \n [ { token: 'storage.type.primitive.array.vala',\n regex: '\\\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\\\[\\\\])*\\\\b' } ],\n '#primitive-types': \n [ { token: 'storage.type.primitive.vala',\n regex: '\\\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\\\b',\n comment: 'var is not really a primitive, but acts like one in most cases' } ],\n '#storage-modifiers': \n [ { token: 'storage.modifier.vala',\n regex: '\\\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\\\b',\n comment: 'Not sure about unsafe and readonly' } ],\n '#strings': \n [ { token: 'punctuation.definition.string.begin.vala',\n regex: '@\"',\n push: \n [ { token: 'punctuation.definition.string.end.vala',\n regex: '\"',\n next: 'pop' },\n { token: 'constant.character.escape.vala',\n regex: '\\\\\\\\.|%[\\\\w\\\\.\\\\-]+|\\\\$(?:\\\\w+|\\\\([\\\\w\\\\s\\\\+\\\\-\\\\*\\\\/]+\\\\))' },\n { defaultToken: 'string.quoted.interpolated.vala' } ] },\n { token: 'punctuation.definition.string.begin.vala',\n regex: '\"',\n push: \n [ { token: 'punctuation.definition.string.end.vala',\n regex: '\"',\n next: 'pop' },\n { token: 'constant.character.escape.vala', regex: '\\\\\\\\.' },\n { token: 'constant.character.escape.vala',\n regex: '%[\\\\w\\\\.\\\\-]+' },\n { defaultToken: 'string.quoted.double.vala' } ] },\n { token: 'punctuation.definition.string.begin.vala',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.string.end.vala',\n regex: '\\'',\n next: 'pop' },\n { token: 'constant.character.escape.vala', regex: '\\\\\\\\.' },\n { defaultToken: 'string.quoted.single.vala' } ] },\n { token: 'punctuation.definition.string.begin.vala',\n regex: '\"\"\"',\n push: \n [ { token: 'punctuation.definition.string.end.vala',\n regex: '\"\"\"',\n next: 'pop' },\n { token: 'constant.character.escape.vala',\n regex: '%[\\\\w\\\\.\\\\-]+' },\n { defaultToken: 'string.quoted.triple.vala' } ] } ],\n '#throws': \n [ { token: 'storage.modifier.vala',\n regex: 'throws',\n push: \n [ { token: 'meta.throwables.vala', regex: '(?={|;)', next: 'pop' },\n { include: '#object-types' },\n { defaultToken: 'meta.throwables.vala' } ] } ],\n '#values': \n [ { include: '#strings' },\n { include: '#object-types' },\n { include: '#constants-and-special-vars' } ] };\n \n this.normalizeRules();\n};\n\nValaHighlightRules.metaData = { \n comment: 'Based heavily on the Java bundle\\'s language syntax. TODO:\\n* Closures\\n* Delegates\\n* Properties: Better support for properties.\\n* Annotations\\n* Error domains\\n* Named arguments\\n* Array slicing, negative indexes, multidimensional\\n* construct blocks\\n* lock blocks?\\n* regex literals\\n* DocBlock syntax highlighting. (Currently importing javadoc)\\n* Folding rule for comments.\\n',\n fileTypes: [ 'vala' ],\n foldingStartMarker: '(\\\\{\\\\s*(//.*)?$|^\\\\s*// \\\\{\\\\{\\\\{)',\n foldingStopMarker: '^\\\\s*(\\\\}|// \\\\}\\\\}\\\\}$)',\n name: 'Vala',\n scopeName: 'source.vala' };\n\n\noop.inherits(ValaHighlightRules, TextHighlightRules);\n\nexports.ValaHighlightRules = ValaHighlightRules;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/vala\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/vala_highlight_rules\",\"ace/mode/folding/cstyle\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/mode/matching_brace_outdent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar Tokenizer = acequire(\"../tokenizer\").Tokenizer;\nvar ValaHighlightRules = acequire(\"./vala_highlight_rules\").ValaHighlightRules;\nvar FoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\nvar Mode = function() {\n this.HighlightRules = ValaHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n this.$id = \"ace/mode/vala\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/vbscript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar VBScriptHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword.control.asp\": \"If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return\"\n + \"|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf\",\n \"storage.type.asp\": \"Dim|Call|Class|Const|Dim|Redim|Set|Let|Get|New|Randomize|Option|Explicit\",\n \"storage.modifier.asp\": \"Private|Public|Default\",\n \"keyword.operator.asp\": \"Mod|And|Not|Or|Xor|as\",\n \"constant.language.asp\": \"Empty|False|Nothing|Null|True\",\n \"support.class.asp\": \"Application|ObjectContext|Request|Response|Server|Session\",\n \"support.class.collection.asp\": \"Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables\",\n \"support.constant.asp\": \"TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute\"\n + \"|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout\",\n \"support.function.asp\": \"Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog\"\n + \"|BinaryWrite|Clear|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex\",\n \"support.function.event.asp\": \"Application_OnEnd|Application_OnStart\"\n + \"|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart\",\n \"support.function.vb.asp\": \"Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng\"\n + \"|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial\"\n + \"|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency\"\n + \"|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex\"\n + \"|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric\"\n + \"|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim\"\n + \"|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace\"\n + \"|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion\"\n + \"|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse\"\n + \"|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year\",\n \"support.type.vb.asp\": \"vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|\"\n + \"int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday\"\n + \"|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek\"\n + \"|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger\"\n + \"|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant\"\n + \"|vbDataObject|vbDecimal|vbByte|vbArray\"\n }, \"identifier\", true);\n\n this.$rules = {\n \"start\": [\n {\n token: [\n \"meta.ending-space\"\n ],\n regex: \"$\"\n },\n {\n token: [null],\n regex: \"^(?=\\\\t)\",\n next: \"state_3\"\n },\n {\n token: [null],\n regex: \"^(?= )\",\n next: \"state_4\"\n },\n {\n token: [\n \"text\",\n \"storage.type.function.asp\",\n \"text\",\n \"entity.name.function.asp\",\n \"text\",\n \"punctuation.definition.parameters.asp\",\n \"variable.parameter.function.asp\",\n \"punctuation.definition.parameters.asp\"\n ],\n regex: \"^(\\\\s*)(Function|Sub)(\\\\s+)([a-zA-Z_]\\\\w*)(\\\\s*)(\\\\()([^)]*)(\\\\))\"\n },\n {\n token: \"punctuation.definition.comment.asp\",\n regex: \"'|REM(?=\\\\s|$)\",\n next: \"comment\",\n caseInsensitive: true\n },\n {\n token: \"storage.type.asp\",\n regex: \"On Error Resume Next|On Error GoTo\",\n caseInsensitive: true\n },\n {\n token: \"punctuation.definition.string.begin.asp\",\n regex: '\"',\n next: \"string\"\n },\n {\n token: [\n \"punctuation.definition.variable.asp\"\n ],\n regex: \"(\\\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b\\\\s*\"\n },\n {\n token: \"constant.numeric.asp\",\n regex: \"-?\\\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\\\.?[0-9]*)|(?:\\\\.[0-9]+))(?:(?:e|E)(?:\\\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\\\b\"\n },\n {\n regex: \"\\\\w+\",\n token: keywordMapper\n },\n {\n token: [\"entity.name.function.asp\"],\n regex: \"(?:(\\\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b)(?=\\\\(\\\\)?))\"\n },\n {\n token: [\"keyword.operator.asp\"],\n regex: \"\\\\-|\\\\+|\\\\*\\\\/|\\\\>|\\\\<|\\\\=|\\\\&\"\n }\n ],\n \"state_3\": [\n {\n token: [\n \"meta.odd-tab.tabs\",\n \"meta.even-tab.tabs\"\n ],\n regex: \"(\\\\t)(\\\\t)?\"\n },\n {\n token: \"meta.leading-space\",\n regex: \"(?=[^\\\\t])\",\n next: \"start\"\n },\n {\n token: \"meta.leading-space\",\n regex: \".\",\n next: \"state_3\"\n }\n ],\n \"state_4\": [\n {\n token: [\"meta.odd-tab.spaces\", \"meta.even-tab.spaces\"],\n regex: \"( )( )?\"\n },\n {\n token: \"meta.leading-space\",\n regex: \"(?=[^ ])\",\n next: \"start\"\n },\n {\n defaultToken: \"meta.leading-space\"\n }\n ],\n \"comment\": [\n {\n token: \"comment.line.apostrophe.asp\",\n regex: \"$|(?=(?:%>))\",\n next: \"start\"\n },\n {\n defaultToken: \"comment.line.apostrophe.asp\"\n }\n ],\n \"string\": [\n {\n token: \"constant.character.escape.apostrophe.asp\",\n regex: '\"\"'\n },\n {\n token: \"string.quoted.double.asp\",\n regex: '\"',\n next: \"start\"\n },\n {\n defaultToken: \"string.quoted.double.asp\"\n }\n ]\n};\n\n};\n\noop.inherits(VBScriptHighlightRules, TextHighlightRules);\n\nexports.VBScriptHighlightRules = VBScriptHighlightRules;\n});\n\nace.define(\"ace/mode/vbscript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/vbscript_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar VBScriptHighlightRules = acequire(\"./vbscript_highlight_rules\").VBScriptHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = VBScriptHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n \n this.lineCommentStart = [\"'\", \"REM\"];\n \n this.$id = \"ace/mode/vbscript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/verilog_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar VerilogHighlightRules = function() {\nvar keywords = \"always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|\" +\n \"deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|\" +\n \"endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|\" +\n \"highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|\" +\n \"macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|\" +\n \"posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|\" +\n \"reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|\" +\n \"strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|\" +\n \"unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xor\" +\n \"begin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|\" +\n \"endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|\" +\n \"macromodule|module|primitive|repeat|specify|table|task|while\";\n\n var builtinConstants = (\n \"true|false|null\"\n );\n\n var builtinFunctions = (\n \"count|min|max|avg|sum|rank|now|coalesce|main\"\n );\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtinFunctions,\n \"keyword\": keywords,\n \"constant.language\": builtinConstants\n }, \"identifier\", true);\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"//.*$\"\n }, {\n token : \"comment.start\",\n regex : \"/\\\\*\",\n next : [\n { token : \"comment.end\", regex : \"\\\\*/\", next: \"start\" },\n { defaultToken : \"comment\" }\n ]\n }, {\n token : \"string\", // \" string\n regex : '\".*?\"'\n }, {\n token : \"string\", // ' string\n regex : \"'.*?'\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token : \"paren.lparen\",\n regex : \"[\\\\(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\)]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ]\n };\n this.normalizeRules();\n};\n\noop.inherits(VerilogHighlightRules, TextHighlightRules);\n\nexports.VerilogHighlightRules = VerilogHighlightRules;\n});\n\nace.define(\"ace/mode/verilog\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/verilog_highlight_rules\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar VerilogHighlightRules = acequire(\"./verilog_highlight_rules\").VerilogHighlightRules;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = VerilogHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.$id = \"ace/mode/verilog\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/vhdl_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar VHDLHighlightRules = function() {\n\n\n \n var keywords = \"access|after|ailas|all|architecture|assert|attribute|\"+\n \"begin|block|buffer|bus|case|component|configuration|\"+\n \"disconnect|downto|else|elsif|end|entity|file|for|function|\"+\n \"generate|generic|guarded|if|impure|in|inertial|inout|is|\"+\n \"label|linkage|literal|loop|mapnew|next|of|on|open|\"+\n \"others|out|port|process|pure|range|record|reject|\"+\n \"report|return|select|shared|subtype|then|to|transport|\"+\n \"type|unaffected|united|until|wait|when|while|with\";\n \n var storageType = \"bit|bit_vector|boolean|character|integer|line|natural|\"+\n \"positive|real|register|severity|signal|signed|\"+\n \"std_logic|std_logic_vector|string||text|time|unsigned|\"+\n \"variable\";\n \n var storageModifiers = \"array|constant\";\n \n var keywordOperators = \"abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|sra\"+\n \"srl|xnor|xor\";\n \n var builtinConstants = (\n \"true|false|null\"\n );\n\n\n var keywordMapper = this.createKeywordMapper({\n \"keyword.operator\": keywordOperators,\n \"keyword\": keywords,\n \"constant.language\": builtinConstants,\n \"storage.modifier\": storageModifiers,\n \"storage.type\": storageType\n }, \"identifier\", true);\n\n this.$rules = {\n \"start\" : [ {\n token : \"comment\",\n regex : \"--.*$\"\n }, {\n token : \"string\", // \" string\n regex : '\".*?\"'\n }, {\n token : \"string\", // ' string\n regex : \"'.*?'\"\n }, {\n token : \"constant.numeric\", // float\n regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token : \"keyword\", // pre-compiler directives\n regex : \"\\\\s*(?:library|package|use)\\\\b\"\n }, {\n token : keywordMapper,\n regex : \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token : \"keyword.operator\",\n regex : \"&|\\\\*|\\\\+|\\\\-|\\\\/|<|=|>|\\\\||=>|\\\\*\\\\*|:=|\\\\/=|>=|<=|<>\" \n }, {\n token : \"punctuation.operator\",\n regex : \"\\\\'|\\\\:|\\\\,|\\\\;|\\\\.\"\n },{\n token : \"paren.lparen\",\n regex : \"[[(]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])]\"\n }, {\n token : \"text\",\n regex : \"\\\\s+\"\n } ]\n\n \n };\n};\n\noop.inherits(VHDLHighlightRules, TextHighlightRules);\n\nexports.VHDLHighlightRules = VHDLHighlightRules;\n});\n\nace.define(\"ace/mode/vhdl\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/vhdl_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar VHDLHighlightRules = acequire(\"./vhdl_highlight_rules\").VHDLHighlightRules;\n\nvar Mode = function() {\n this.HighlightRules = VHDLHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"--\";\n\n this.$id = \"ace/mode/vhdl\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","ace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar XmlHighlightRules = function(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n\n this.$rules = {\n start : [\n {token : \"string.cdata.xml\", regex : \"<\\\\!\\\\[CDATA\\\\[\", next : \"cdata\"},\n {\n token : [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex : \"(<\\\\?)(\" + tagRegex + \")\", next : \"processing_instruction\"\n },\n {token : \"comment.start.xml\", regex : \"<\\\\!--\", next : \"comment\"},\n {\n token : [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex : \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next : \"doctype\", caseInsensitive: true\n },\n {include : \"tag\"},\n {token : \"text.end-tag-open.xml\", regex: \"\",\n next : \"start\"\n }],\n\n doctype : [\n {include : \"whitespace\"},\n {include : \"string\"},\n {token : \"xml-pe.doctype.xml\", regex : \">\", next : \"start\"},\n {token : \"xml-pe.xml\", regex : \"[-_a-zA-Z0-9:]+\"},\n {token : \"punctuation.int-subset\", regex : \"\\\\[\", push : \"int_subset\"}\n ],\n\n int_subset : [{\n token : \"text.xml\",\n regex : \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token : [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex : \"(<\\\\!)(\" + tagRegex + \")\",\n push : [{\n token : \"text\",\n regex : \"\\\\s+\"\n },\n {\n token : \"punctuation.markup-decl.xml\",\n regex : \">\",\n next : \"pop\"\n },\n {include : \"string\"}]\n }],\n\n cdata : [\n {token : \"string.cdata.xml\", regex : \"\\\\]\\\\]>\", next : \"start\"},\n {token : \"text.xml\", regex : \"\\\\s+\"},\n {token : \"text.xml\", regex : \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"}\n ],\n\n comment : [\n {token : \"comment.end.xml\", regex : \"-->\", next : \"start\"},\n {defaultToken : \"comment.xml\"}\n ],\n\n reference : [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n attr_reference : [{\n token : \"constant.language.escape.reference.attribute-value.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n\n tag : [{\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex : \"(?:(<)|(\", next : \"start\"}\n ]\n }],\n\n tag_whitespace : [\n {token : \"text.tag-whitespace.xml\", regex : \"\\\\s+\"}\n ],\n whitespace : [\n {token : \"text.whitespace.xml\", regex : \"\\\\s+\"}\n ],\n string: [{\n token : \"string.xml\",\n regex : \"'\",\n push : [\n {token : \"string.xml\", regex: \"'\", next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }, {\n token : \"string.xml\",\n regex : '\"',\n push : [\n {token : \"string.xml\", regex: '\"', next: \"pop\"},\n {defaultToken : \"string.xml\"}\n ]\n }],\n\n attributes: [{\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n\n attribute_value: [{\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"attr_reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }]\n };\n\n if (this.constructor === XmlHighlightRules)\n this.normalizeRules();\n};\n\n\n(function() {\n\n this.embedTagRules = function(HighlightRules, prefix, tag){\n this.$rules.tag.unshift({\n token : [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next : prefix + \"start\"}\n ]\n });\n\n this.$rules[tag + \"-end\"] = [\n {include : \"attributes\"},\n {token : \"meta.tag.punctuation.tag-close.xml\", regex : \"/?>\", next: \"start\",\n onMatch : function(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }}\n ];\n\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex : \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex : \"\\\\]\\\\]>\"\n }]);\n };\n\n}).call(TextHighlightRules.prototype);\n\noop.inherits(XmlHighlightRules, TextHighlightRules);\n\nexports.XmlHighlightRules = XmlHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nfunction is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n\nvar XmlBehaviour = function () {\n\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token)\n token = iterator.stepBackward();\n\n if (!token)\n return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n return;\n if (is(token, \"reference.attribute-value\"))\n return;\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar)\n return;\n }\n }\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\"))\n return;\n\n var element = token.value;\n if (tokenRow == position.row)\n element = element.substring(0, position.column - tokenColumn);\n\n if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n return;\n\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\")\n return;\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column+1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n}\n\n(function() {\n\n this.getFoldWidget = function(session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag)\n return this.getCommentFoldWidget(session, row);\n\n if (tag.closing || (!tag.tagName && tag.selfClosing))\n return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n return \"\";\n\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n return \"\";\n\n return \"start\";\n };\n\n this.getCommentFoldWidget = function(session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function(session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn)\n continue;\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName)\n return true;\n }\n }\n return false;\n };\n this._readTagForward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while(token = iterator.stepForward());\n\n return null;\n };\n \n this._readTagBackward = function(iterator) {\n var token = iterator.getCurrentToken();\n if (!token)\n return null;\n\n var tag = new Tag();\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while(token = iterator.stepBackward());\n\n return null;\n };\n \n this._pop = function(stack, tag) {\n while (stack.length) {\n \n var top = stack[stack.length-1];\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n }\n else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n \n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n \n if (!firstTag) {\n return this.getCommentFoldWidget(session, row)\n && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n \n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n \n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row)\n start.column = firstTag.end.column;\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0)\n return Range.fromPoints(start, tag.start);\n }\n else {\n stack.push(tag);\n }\n }\n }\n else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n \n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else\n continue;\n }\n \n if (!tag.closing) {\n this._pop(stack, tag);\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n }\n else {\n stack.push(tag);\n }\n }\n }\n \n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/xml_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/xml\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextMode = acequire(\"./text\").Mode;\nvar XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\nvar XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\nvar XmlFoldMode = acequire(\"./folding/xml\").FoldMode;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\nvar Mode = function() {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n};\n\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.voidElements = lang.arrayToMap([]);\n\n this.blockComment = {start: \"\"};\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/xml\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"error\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n \n this.$id = \"ace/mode/xml\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/mode/yaml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar YamlHighlightRules = function() {\n this.$rules = {\n \"start\" : [\n {\n token : \"comment\",\n regex : \"#.*$\"\n }, {\n token : \"list.markup\",\n regex : /^(?:-{3}|\\.{3})\\s*(?=#|$)/\n }, {\n token : \"list.markup\",\n regex : /^\\s*[\\-?](?:$|\\s)/\n }, {\n token: \"constant\",\n regex: \"!![\\\\w//]+\"\n }, {\n token: \"constant.language\",\n regex: \"[&\\\\*][a-zA-Z0-9-_]+\"\n }, {\n token: [\"meta.tag\", \"keyword\"],\n regex: /^(\\s*\\w.*?)(:(?=\\s|$))/\n },{\n token: [\"meta.tag\", \"keyword\"],\n regex: /(\\w+?)(\\s*:(?=\\s|$))/\n }, {\n token : \"keyword.operator\",\n regex : \"<<\\\\w*:\\\\w*\"\n }, {\n token : \"keyword.operator\",\n regex : \"-\\\\s*(?=[{])\"\n }, {\n token : \"string\", // single line\n regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token : \"string\", // multi line string start\n regex : /[|>][-+\\d\\s]*$/,\n onMatch: function(val, state, stack, line) {\n var indent = /^\\s*/.exec(line)[0];\n if (stack.length < 1) {\n stack.push(this.next);\n } else {\n stack[0] = \"mlString\";\n }\n\n if (stack.length < 2) {\n stack.push(indent.length);\n }\n else {\n stack[1] = indent.length;\n }\n return this.token;\n },\n next : \"mlString\"\n }, {\n token : \"string\", // single quoted string\n regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token : \"constant.numeric\", // float\n regex : /(\\b|[+\\-\\.])[\\d_]+(?:(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)(?=[^\\d-\\w]|$)/\n }, {\n token : \"constant.numeric\", // other number\n regex : /[+\\-]?\\.inf\\b|NaN\\b|0x[\\dA-Fa-f_]+|0b[10_]+/\n }, {\n token : \"constant.language.boolean\",\n regex : \"\\\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\\\b\"\n }, {\n token : \"paren.lparen\",\n regex : \"[[({]\"\n }, {\n token : \"paren.rparen\",\n regex : \"[\\\\])}]\"\n }, {\n token : \"text\",\n regex : /[^\\s,:\\[\\]\\{\\}]+/\n }\n ],\n \"mlString\" : [\n {\n token : \"indent\",\n regex : /^\\s*$/\n }, {\n token : \"indent\",\n regex : /^\\s*/,\n onMatch: function(val, state, stack) {\n var curIndent = stack[1];\n\n if (curIndent >= val.length) {\n this.next = \"start\";\n stack.splice(0);\n }\n else {\n this.next = \"mlString\";\n }\n return this.token;\n },\n next : \"mlString\"\n }, {\n token : \"string\",\n regex : '.+'\n }\n ]};\n this.normalizeRules();\n\n};\n\noop.inherits(YamlHighlightRules, TextHighlightRules);\n\nexports.YamlHighlightRules = YamlHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/yaml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/yaml_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar YamlHighlightRules = acequire(\"./yaml_highlight_rules\").YamlHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = YamlHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = [\"#\", \"//\"];\n \n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n\n this.$id = \"ace/mode/yaml\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n"],"sourceRoot":""}