-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathext-language_tools.js
More file actions
1 lines (1 loc) · 38.7 KB
/
ext-language_tools.js
File metadata and controls
1 lines (1 loc) · 38.7 KB
1
define("ace/snippets","require exports module ace/lib/dom ace/lib/oop ace/lib/event_emitter ace/lib/lang ace/range ace/range_list ace/keyboard/hash_handler ace/tokenizer ace/clipboard ace/editor".split(" "),function(g,n,A){function p(a){a=(new Date).toLocaleString("en-us",a);return 1==a.length?"0"+a:a}A=g("./lib/dom");var w=g("./lib/oop"),t=g("./lib/event_emitter").EventEmitter,u=g("./lib/lang"),x=g("./range").Range,y=g("./range_list").RangeList,B=g("./keyboard/hash_handler").HashHandler,l=g("./tokenizer").Tokenizer,v=g("./clipboard"),b={CURRENT_WORD:function(a){return a.session.getTextRange(a.session.getWordRange())},SELECTION:function(a,c,m){a=a.session.getTextRange();return m?a.replace(/\n\r?([ \t]*\S)/g,"\n"+m+"$1"):a},CURRENT_LINE:function(a){return a.session.getLine(a.getCursorPosition().row)},PREV_LINE:function(a){return a.session.getLine(a.getCursorPosition().row-1)},LINE_INDEX:function(a){return a.getCursorPosition().row},LINE_NUMBER:function(a){return a.getCursorPosition().row+1},SOFT_TABS:function(a){return a.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(a){return a.session.getTabSize()},CLIPBOARD:function(a){return v.getText&&v.getText()},FILENAME:function(a){return/[^/\\]*$/.exec(this.FILEPATH(a))[0]},FILENAME_BASE:function(a){return/[^/\\]*$/.exec(this.FILEPATH(a))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(a){return this.FILEPATH(a).replace(/[^/\\]*$/,"")},FILEPATH:function(a){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(a){a=a.session.$mode||{};return a.blockComment&&a.blockComment.start||""},BLOCK_COMMENT_END:function(a){a=a.session.$mode||{};return a.blockComment&&a.blockComment.end||""},LINE_COMMENT:function(a){return(a.session.$mode||{}).lineCommentStart||""},CURRENT_YEAR:p.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:p.bind(null,{year:"2-digit"}),CURRENT_MONTH:p.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:p.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:p.bind(null,{month:"short"}),CURRENT_DATE:p.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:p.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:p.bind(null,{weekday:"short"}),CURRENT_HOUR:p.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:p.bind(null,{minute:"2-digit"}),CURRENT_SECOND:p.bind(null,{second:"2-digit"})};b.SELECTED_TEXT=b.SELECTION;var d=function(){this.snippetMap={};this.snippetNameMap={}};(function(){w.implement(this,t);this.getTokenizer=function(){return d.$tokenizer||this.createTokenizer()};this.createTokenizer=function(){function a(c){c=c.substr(1);return/^\d+$/.test(c)?[{tabstopId:parseInt(c,10)}]:[{text:c}]}var c={regex:"/((?:[^\\\\/]|\\\\.)+)/",onMatch:function(c,a,b){a=b[0];a.fmtString=!0;a.guard=c.slice(1,-1);return a.flag=""},next:"formatString"};d.$tokenizer=new l({start:[{regex:/\\./,onMatch:function(c,a,b){a=c[1];"}"==a&&b.length?c=a:-1!="`$\\".indexOf(a)&&(c=a);return[c]}},{regex:/}/,onMatch:function(c,a,b){return[b.length?b.shift():c]}},{regex:/\$(?:\d+|\w+)/,onMatch:a},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(c,b,h){c=a(c.substr(1));h.unshift(c[0]);return c},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|(?:[^\\\\\\|]|\\\\.)*\\|",onMatch:function(c,a,b){c=c.slice(1,-1).replace(/\\[,|\\]|,/g,function(c){return 2==c.length?c[1]:"\x00"}).split("\x00").map(function(c){return{value:c}});b[0].choices=c;return[c[0]]},next:"start"},c,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(c,a,b){return b.length&&b[0].expectElse?(b[0].expectElse=!1,b[0].ifEnd={elseEnd:b[0]},[b[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(c,a,b){a=c[1];"}"==a&&b.length?c=a:-1!="`$\\".indexOf(a)?c=a:"n"==a?c="\n":"t"==a?c="\t":-1!="ulULE".indexOf(a)&&(c={changeCase:a,local:"a"<a});return[c]}},{regex:"/\\w*}",onMatch:function(c,a,b){if(a=b.shift())a.flag=c.slice(1,-1);this.next=a&&a.tabstopId?"start":"";return[a||c]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(c,a,b){return[{text:c.slice(1)}]}},{regex:/\${\w+/,onMatch:function(c,a,b){c={text:c.slice(2)};b.unshift(c);return[c]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(c,a,b){this.next=(a=b.shift())&&a.tabstopId?"start":"";return[a||c]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(c,a,b){b[0].formatFunction=c.slice(2,-1);return[b.shift()]},next:"formatString"},c,{regex:/:[\?\-+]?/,onMatch:function(c,a,b){"+"==c[1]&&(b[0].ifEnd=b[0]);"?"==c[1]&&(b[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]});return d.$tokenizer};this.tokenizeTmSnippet=function(a,c){return this.getTokenizer().getLineTokens(a,c).tokens.map(function(c){return c.value||c})};this.getVariableValue=function(a,c,b){if(/^\d+$/.test(c))return(this.variables.__||{})[c]||"";if(/^[A-Z]\d+$/.test(c))return(this.variables[c[0]+"__"]||{})[c.substr(1)]||"";c=c.replace(/^TM_/,"");if(!this.variables.hasOwnProperty(c))return"";var m=this.variables[c];"function"==typeof m&&(m=this.variables[c](a,c,b));return null==m?"":m};this.variables=b;this.tmStrFormat=function(a,c,b){if(!c.fmt)return a;var m=c.guard,m=new RegExp(m,(c.flag||"").replace(/[^gim]/g,"")),h="string"==typeof c.fmt?this.tokenizeTmSnippet(c.fmt,"formatString"):c.fmt,d=this;return a.replace(m,function(){var c=d.variables.__;d.variables.__=[].slice.call(arguments);for(var a=d.resolveVariables(h,b),m="E",f=0;f<a.length;f++){var e=a[f];if("object"==typeof e)if(a[f]="",e.changeCase&&e.local){var D=a[f+1];D&&"string"==typeof D&&(a[f]="u"==e.changeCase?D[0].toUpperCase():D[0].toLowerCase(),a[f+1]=D.substr(1))}else e.changeCase&&(m=e.changeCase);else"U"==m?a[f]=e.toUpperCase():"L"==m&&(a[f]=e.toLowerCase())}d.variables.__=c;return a.join("")})};this.tmFormatFunction=function(a,c,b){return"upcase"==c.formatFunction?a.toUpperCase():"downcase"==c.formatFunction?a.toLowerCase():a};this.resolveVariables=function(a,c){function b(c){c=a.indexOf(c,d+1);-1!=c&&(d=c)}for(var f=[],h="",e=!0,d=0;d<a.length;d++){var k=a[d];if("string"==typeof k)f.push(k),"\n"==k?(e=!0,h=""):e&&(h=/^\t*/.exec(k)[0],e=/\S/.test(k));else if(k){e=!1;if(k.fmtString){var q=a.indexOf(k,d+1);-1==q&&(q=a.length);k.fmt=a.slice(d+1,q);d=q}k.text?(q=this.getVariableValue(c,k.text,h)+"",k.fmtString&&(q=this.tmStrFormat(q,k,c)),k.formatFunction&&(q=this.tmFormatFunction(q,k,c)),q&&!k.ifEnd?(f.push(q),b(k)):!q&&k.ifEnd&&b(k.ifEnd)):k.elseEnd?b(k.elseEnd):null!=k.tabstopId?f.push(k):null!=k.changeCase&&f.push(k)}}return f};this.insertSnippetForSelection=function(a,c){function b(c){for(var a=[],b=0;b<c.length;b++){var m=c[b];if("object"==typeof m){if(C[m.tabstopId])continue;var q=c.lastIndexOf(m,b-1),m=a[q]||{tabstopId:m.tabstopId}}a[b]=m}return a}var f=a.getCursorPosition(),h=a.session.getLine(f.row),d=a.session.getTabString(),z=h.match(/^\s*/)[0];f.column<z.length&&(z=z.slice(0,f.column));c=c.replace(/\r/g,"");var k=this.tokenizeTmSnippet(c),k=this.resolveVariables(k,a),k=k.map(function(c){return"\n"==c?c+z:"string"==typeof c?c.replace(/\t/g,d):c}),q=[];k.forEach(function(c,a){if("object"==typeof c){var b=c.tabstopId,m=q[b];m||(m=q[b]=[],m.index=b,m.value="",m.parents={});-1===m.indexOf(c)&&(c.choices&&!m.choices&&(m.choices=c.choices),m.push(c),b=k.indexOf(c,a+1),-1!==b&&(b=k.slice(a+1,b),b.some(function(c){return"object"===typeof c})&&!m.value?m.value=b:!b.length||m.value&&"string"===typeof m.value||(m.value=b.join(""))))}});q.forEach(function(c){c.length=0});for(var C={},f=0;f<k.length;f++)if(h=k[f],"object"==typeof h){var r=h.tabstopId,l=q[r],g=k.indexOf(h,f+1);C[r]?C[r]===h&&(delete C[r],Object.keys(C).forEach(function(c){l.parents[c]=!0})):(C[r]=h,r=l.value,"string"!==typeof r?r=b(r):h.fmt&&(r=this.tmStrFormat(r,h,a)),k.splice.apply(k,[f+1,Math.max(0,g-f)].concat(r,h)),-1===l.indexOf(h)&&l.push(h))}var v=0,p=0,t="";k.forEach(function(c){if("string"===typeof c){var a=c.split("\n");1<a.length?(p=a[a.length-1].length,v+=a.length-1):p+=c.length;t+=c}else c&&(c.start?c.end={row:v,column:p}:c.start={row:v,column:p})});f=a.getSelectionRange();h=a.session.replace(f,t);(new e(a)).addTabstops(q,f.start,h,a.inVirtualSelectionMode&&a.selection.index)};this.insertSnippet=function(a,c){var b=this;if(a.inVirtualSelectionMode)return b.insertSnippetForSelection(a,c);a.forEachSelection(function(){b.insertSnippetForSelection(a,c)},null,{keepOrder:!0});a.tabstopManager&&a.tabstopManager.tabNext()};this.$getScope=function(a){var c=a.session.$mode.$id||"",c=c.split("/").pop();if("html"===c||"php"===c){"php"!==c||a.session.$mode.inlinePhp||(c="html");var b=a.getCursorPosition();a=a.session.getState(b.row);"object"===typeof a&&(a=a[0]);a.substring&&("js-"==a.substring(0,3)?c="javascript":"css-"==a.substring(0,4)?c="css":"php-"==a.substring(0,4)&&(c="php"))}return c};this.getActiveScopes=function(a){a=this.$getScope(a);var c=[a],b=this.snippetMap;b[a]&&b[a].includeScopes&&c.push.apply(c,b[a].includeScopes);c.push("_");return c};this.expandWithTab=function(a,c){var b=this,f=a.forEachSelection(function(){return b.expandSnippetForSelection(a,c)},null,{keepOrder:!0});f&&a.tabstopManager&&a.tabstopManager.tabNext();return f};this.expandSnippetForSelection=function(a,c){var b=a.getCursorPosition(),f=a.session.getLine(b.row),h=f.substring(0,b.column),d=f.substr(b.column),e=this.snippetMap,k;this.getActiveScopes(a).some(function(c){(c=e[c])&&(k=this.findMatchingSnippet(c,h,d));return!!k},this);if(!k)return!1;if(c&&c.dryRun)return!0;a.session.doc.removeInLine(b.row,b.column-k.replaceBefore.length,b.column+k.replaceAfter.length);this.variables.M__=k.matchBefore;this.variables.T__=k.matchAfter;this.insertSnippetForSelection(a,k.content);this.variables.M__=this.variables.T__=null;return!0};this.findMatchingSnippet=function(a,c,b){for(var m=a.length;m--;){var h=a[m];if(!h.startRe||h.startRe.test(c))if(!h.endRe||h.endRe.test(b))if(h.startRe||h.endRe)return h.matchBefore=h.startRe?h.startRe.exec(c):[""],h.matchAfter=h.endRe?h.endRe.exec(b):[""],h.replaceBefore=h.triggerRe?h.triggerRe.exec(c)[0]:"",h.replaceAfter=h.endTriggerRe?h.endTriggerRe.exec(b)[0]:"",h}};this.snippetMap={};this.snippetNameMap={};this.register=function(a,c){function b(c){c&&!/^\^?\(.*\)\$?$|^\\b$/.test(c)&&(c="(?:"+c+")");return c||""}function f(c,a,m){c=b(c);a=b(a);m?(c=a+c)&&"$"!=c[c.length-1]&&(c+="$"):(c+=a)&&"^"!=c[0]&&(c="^"+c);return new RegExp(c)}function h(a){a.scope||(a.scope=c||"_");c=a.scope;d[c]||(d[c]=[],e[c]={});var b=e[c];if(a.name){var m=b[a.name];m&&k.unregister(m);b[a.name]=a}d[c].push(a);a.prefix&&(a.tabTrigger=a.prefix);!a.content&&a.body&&(a.content=Array.isArray(a.body)?a.body.join("\n"):a.body);a.tabTrigger&&!a.trigger&&(!a.guard&&/^\w/.test(a.tabTrigger)&&(a.guard="\\b"),a.trigger=u.escapeRegExp(a.tabTrigger));if(a.trigger||a.guard||a.endTrigger||a.endGuard)a.startRe=f(a.trigger,a.guard,!0),a.triggerRe=new RegExp(a.trigger),a.endRe=f(a.endTrigger,a.endGuard,!0),a.endTriggerRe=new RegExp(a.endTrigger)}var d=this.snippetMap,e=this.snippetNameMap,k=this;a||(a=[]);Array.isArray(a)?a.forEach(h):Object.keys(a).forEach(function(c){h(a[c])});this._signal("registerSnippets",{scope:c})};this.unregister=function(a,c){function b(a){var b=h[a.scope||c];b&&b[a.name]&&(delete b[a.name],a=(b=f[a.scope||c])&&b.indexOf(a),0<=a&&b.splice(a,1))}var f=this.snippetMap,h=this.snippetNameMap;a.content?b(a):Array.isArray(a)&&a.forEach(b)};this.parseSnippetFile=function(a){a=a.replace(/\r/g,"");for(var c=[],b={},f=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,h;h=f.exec(a);){if(h[1])try{b=JSON.parse(h[1]),c.push(b)}catch(z){}if(h[4])b.content=h[4].replace(/^\t/gm,""),c.push(b),b={};else{var d=h[2];h=h[3];"regex"==d?(d=/\/((?:[^\/\\]|\\.)*)|$/g,b.guard=d.exec(h)[1],b.trigger=d.exec(h)[1],b.endTrigger=d.exec(h)[1],b.endGuard=d.exec(h)[1]):"snippet"==d?(b.tabTrigger=h.match(/^\S*/)[0],b.name||(b.name=h)):d&&(b[d]=h)}}return c};this.getSnippetByName=function(a,c){var b=this.snippetNameMap,f;this.getActiveScopes(c).some(function(c){(c=b[c])&&(f=c[a]);return!!f},this);return f}}).call(d.prototype);var e=function(a){if(a.tabstopManager)return a.tabstopManager;a.tabstopManager=this;this.$onChange=this.onChange.bind(this);this.$onChangeSelection=u.delayedCall(this.onChangeSelection.bind(this)).schedule;this.$onChangeSession=this.onChangeSession.bind(this);this.$onAfterExec=this.onAfterExec.bind(this);this.attach(a)};(function(){this.attach=function(a){this.index=0;this.ranges=[];this.tabstops=[];this.selectedTabstop=this.$openTabstops=null;this.editor=a;this.editor.on("change",this.$onChange);this.editor.on("changeSelection",this.$onChangeSelection);this.editor.on("changeSession",this.$onChangeSession);this.editor.commands.on("afterExec",this.$onAfterExec);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)};this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this);this.selectedTabstop=this.tabstops=this.ranges=null;this.editor.removeListener("change",this.$onChange);this.editor.removeListener("changeSelection",this.$onChangeSelection);this.editor.removeListener("changeSession",this.$onChangeSession);this.editor.commands.removeListener("afterExec",this.$onAfterExec);this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);this.editor=this.editor.tabstopManager=null};this.onChange=function(a){for(var c="r"==a.action[0],b=this.selectedTabstop||{},f=b.parents||{},h=(this.tabstops||[]).slice(),d=0;d<h.length;d++){var e=h[d];e.rangeList.$bias=e==b||f[e.index]?0:1;if("remove"==a.action&&e!==b)for(var k=e.parents&&e.parents[b.index],q=e.rangeList.pointIndex(a.start,k),q=0>q?-q-1:q+1,k=e.rangeList.pointIndex(a.end,k),k=0>k?-k-1:k-1,q=e.rangeList.ranges.slice(q,k),k=0;k<q.length;k++)this.removeRange(q[k]);e.rangeList.$onChange(a)}a=this.editor.session;this.$inChange||!c||1!=a.getLength()||a.getValue()||this.detach()};this.updateLinkedFields=function(){var a=this.selectedTabstop;if(a&&a.hasLinkedRanges&&a.firstNonLinked){this.$inChange=!0;for(var c=this.editor.session,b=c.getTextRange(a.firstNonLinked),f=0;f<a.length;f++){var h=a[f];if(h.linked){var d=n.snippetManager.tmStrFormat(b,h.original,this.editor);c.replace(h,d)}}this.$inChange=!1}};this.onAfterExec=function(a){a.command&&!a.command.readOnly&&this.updateLinkedFields()};this.onChangeSelection=function(){if(this.editor){for(var a=this.editor.selection.lead,c=this.editor.selection.anchor,b=this.editor.selection.isEmpty(),f=0;f<this.ranges.length;f++)if(!this.ranges[f].linked){var h=this.ranges[f].contains(a.row,a.column),d=b||this.ranges[f].contains(c.row,c.column);if(h&&d)return}this.detach()}};this.onChangeSession=function(){this.detach()};this.tabNext=function(a){var c=this.tabstops.length;a=this.index+(a||1);a=Math.min(Math.max(a,1),c);a==c&&(a=0);this.selectTabstop(a);0===a&&this.detach()};this.selectTabstop=function(a){this.$openTabstops=null;var c=this.tabstops[this.index];c&&this.addTabstopMarkers(c);this.index=a;if((c=this.tabstops[this.index])&&c.length){this.selectedTabstop=c;var b=c.firstNonLinked||c;c.choices&&(b.cursor=b.start);if(this.editor.inVirtualSelectionMode)this.editor.selection.fromOrientedRange(b);else for(a=this.editor.multiSelect,a.toSingleRange(b),b=0;b<c.length;b++)c.hasLinkedRanges&&c[b].linked||a.addRange(c[b].clone(),!0);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);this.selectedTabstop&&this.selectedTabstop.choices&&this.editor.execCommand("startAutocomplete",{matches:this.selectedTabstop.choices})}};this.addTabstops=function(a,c,b){var m=this.useLink||!this.editor.getOption("enableMultiselect");this.$openTabstops||(this.$openTabstops=[]);a[0]||(b=x.fromPoints(b,b),r(b.start,c),r(b.end,c),a[0]=[b],a[0].index=0);var h=[this.index+1,0],d=this.ranges;a.forEach(function(a,b){for(var f=this.$openTabstops[b]||a,e=0;e<a.length;e++){var k=a[e],r=x.fromPoints(k.start,k.end||k.start),l=r.start,z=c;0==l.row&&(l.column+=z.column);l.row+=z.row;l=r.end;z=c;0==l.row&&(l.column+=z.column);l.row+=z.row;r.original=k;r.tabstop=f;d.push(r);f!=a?f.unshift(r):f[e]=r;k.fmtString||f.firstNonLinked&&m?(r.linked=!0,f.hasLinkedRanges=!0):f.firstNonLinked||(f.firstNonLinked=r)}f.firstNonLinked||(f.hasLinkedRanges=!1);f===a&&(h.push(f),this.$openTabstops[b]=f);this.addTabstopMarkers(f);f.rangeList=f.rangeList||new y;f.rangeList.$bias=0;f.rangeList.addList(f)},this);2<h.length&&(this.tabstops.length&&h.push(h.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,h))};this.addTabstopMarkers=function(a){var c=this.editor.session;a.forEach(function(a){a.markerId||(a.markerId=c.addMarker(a,"ace_snippet-marker","text"))})};this.removeTabstopMarkers=function(a){var c=this.editor.session;a.forEach(function(a){c.removeMarker(a.markerId);a.markerId=null})};this.removeRange=function(a){var c=a.tabstop.indexOf(a);-1!=c&&a.tabstop.splice(c,1);c=this.ranges.indexOf(a);-1!=c&&this.ranges.splice(c,1);c=a.tabstop.rangeList.ranges.indexOf(a);-1!=c&&a.tabstop.splice(c,1);this.editor.session.removeMarker(a.markerId);a.tabstop.length||(c=this.tabstops.indexOf(a.tabstop),-1!=c&&this.tabstops.splice(c,1),this.tabstops.length||this.detach())};this.keyboardHandler=new B;this.keyboardHandler.bindKeys({Tab:function(a){n.snippetManager&&n.snippetManager.expandWithTab(a)||(a.tabstopManager.tabNext(1),a.renderer.scrollCursorIntoView())},"Shift-Tab":function(a){a.tabstopManager.tabNext(-1);a.renderer.scrollCursorIntoView()},Esc:function(a){a.tabstopManager.detach()}})}).call(e.prototype);var r=function(a,c){a.row==c.row&&(a.column-=c.column);a.row-=c.row};A.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}","snippets.css",!1);n.snippetManager=new d;g=g("./editor").Editor;(function(){this.insertSnippet=function(a,c){return n.snippetManager.insertSnippet(this,a,c)};this.expandSnippet=function(a){return n.snippetManager.expandWithTab(this,a)}}).call(g.prototype)});define("ace/autocomplete/popup","require exports module ace/virtual_renderer ace/editor ace/range ace/lib/event ace/lib/lang ace/lib/dom".split(" "),function(g,n,A){var p=g("../virtual_renderer").VirtualRenderer,w=g("../editor").Editor,t=g("../range").Range,u=g("../lib/event"),x=g("../lib/lang"),y=g("../lib/dom"),B=function(l){l=new p(l);l.$maxLines=4;l=new w(l);l.setHighlightActiveLine(!1);l.setShowPrintMargin(!1);l.renderer.setShowGutter(!1);l.renderer.setHighlightGutterLine(!1);l.$mouseHandler.$focusTimeout=0;l.$highlightTagPending=!0;return l};y.importCssString("\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin: 0.9em;\n}\n.ace_completion-message {\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}","autocompletion.css",!1);n.AcePopup=function(l){var g=y.createElement("div"),b=new B(g);l&&l.appendChild(g);g.style.display="none";b.renderer.content.style.cursor="default";b.renderer.setStyle("ace_autocomplete");b.setOption("displayIndentGuides",!1);b.setOption("dragDelay",150);l=function(){};b.focus=l;b.$isFocused=!0;b.renderer.$cursorLayer.restartTimer=l;b.renderer.$cursorLayer.element.style.opacity=0;b.renderer.$maxLines=8;b.renderer.$keepTextAreaAtCursor=!1;b.setHighlightActiveLine(!1);b.session.highlight("");b.session.$searchHighlight.clazz="ace_highlight-marker";b.on("mousedown",function(c){var a=c.getDocumentPosition();b.selection.moveToPosition(a);r.start.row=r.end.row=a.row;c.stop()});var d,e=new t(-1,0,-1,Infinity),r=new t(-1,0,-1,Infinity);r.id=b.session.addMarker(r,"ace_active-line","fullLine");b.setSelectOnHover=function(c){c?e.id&&(b.session.removeMarker(e.id),e.id=null):e.id=b.session.addMarker(e,"ace_line-hover","fullLine")};b.setSelectOnHover(!1);b.on("mousemove",function(c){if(!d)d=c;else if(d.x!=c.x||d.y!=c.y)d=c,d.scrollTop=b.renderer.scrollTop,c=d.getDocumentPosition().row,e.start.row!=c&&(e.id||b.setRow(c),a(c))});b.renderer.on("beforeRender",function(){if(d&&-1!=e.start.row){d.$pos=null;var c=d.getDocumentPosition().row;e.id||b.setRow(c);a(c,!0)}});b.renderer.on("afterRender",function(){var c=b.getRow(),a=b.renderer.$textLayer,c=a.element.childNodes[c-a.config.firstRow];c!==a.selectedNode&&a.selectedNode&&y.removeCssClass(a.selectedNode,"ace_selected");(a.selectedNode=c)&&y.addCssClass(c,"ace_selected")});var g=function(){a(-1)},a=function(c,a){c!==e.start.row&&(e.start.row=e.end.row=c,a||b.session._emit("changeBackMarker"),b._emit("changeHoverMarker"))};b.getHoveredRow=function(){return e.start.row};u.addListener(b.container,"mouseout",g);b.on("hide",g);b.on("changeSelection",g);b.session.doc.getLength=function(){return b.data.length};b.session.doc.getLine=function(a){a=b.data[a];return"string"==typeof a?a:a&&a.value||""};g=b.session.bgTokenizer;g.$tokenizeRow=function(a){function c(a,c){a&&h.push({type:(f.className||"")+(c||""),value:a})}var f=b.data[a],h=[];if(!f)return h;"string"==typeof f&&(f={value:f});a=f.caption||f.value||f.name;for(var d=a.toLowerCase(),e=(b.filterText||"").toLowerCase(),k=0,r=0,l=0;l<=e.length;l++)if(l!=r&&(f.matchMask&1<<l||l==e.length)){var g=e.slice(r,l),r=l,p=d.indexOf(g,k);-1!=p&&(c(a.slice(k,p),""),k=p+g.length,c(a.slice(p,k),"completion-highlight"))}c(a.slice(k,a.length),"");f.meta&&h.push({type:"completion-meta",value:f.meta});f.message&&h.push({type:"completion-message",value:f.message});return h};g.$updateOnChange=l;g.start=l;b.session.$computeWidth=function(){return this.screenWidth=0};b.isOpen=!1;b.isTopdown=!1;b.autoSelect=!0;b.filterText="";b.data=[];b.setData=function(a,d){b.filterText=d||"";b.setValue(x.stringRepeat("\n",a.length),-1);b.data=a||[];b.setRow(0)};b.getData=function(a){return b.data[a]};b.getRow=function(){return r.start.row};b.setRow=function(a){a=Math.max(this.autoSelect?0:-1,Math.min(this.data.length,a));r.start.row!=a&&(b.selection.clearSelection(),r.start.row=r.end.row=a||0,b.session._emit("changeBackMarker"),b.moveCursorTo(a||0,0),b.isOpen&&b._signal("select"))};b.on("changeSelection",function(){b.isOpen&&b.setRow(b.selection.lead.row);b.renderer.scrollCursorIntoView()});b.hide=function(){this.container.style.display="none";this._signal("hide");b.isOpen=!1};b.show=function(a,e,f){var c=this.container,m=window.innerHeight,r=window.innerWidth,k=this.renderer,l=k.$maxLines*e*1.4,g=a.top+this.$borderSize;g>m/2&&!f&&g+e+l>m?(k.$maxPixelHeight=g-2*this.$borderSize,c.style.top="",c.style.bottom=m-g+"px",b.isTopdown=!1):(g+=e,k.$maxPixelHeight=m-g-.2*e,c.style.top=g+"px",c.style.bottom="",b.isTopdown=!0);c.style.display="";a=a.left;a+c.offsetWidth>r&&(a=r-c.offsetWidth);c.style.left=a+"px";this._signal("show");d=null;b.isOpen=!0};b.goTo=function(a){var c=this.getRow(),b=this.session.getLength()-1;switch(a){case "up":c=0>=c?b:c-1;break;case "down":c=c>=b?-1:c+1;break;case "start":c=0;break;case "end":c=b}this.setRow(c)};b.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize};b.$imageSize=0;b.$borderSize=1;return b};n.$singleLineEditor=B});define("ace/autocomplete/util",["require","exports","module"],function(g,n,A){n.parForEach=function(g,p,u){var t=0,n=g.length;0===n&&u();for(var w=0;w<n;w++)p(g[w],function(l,g){t++;t===n&&u(l,g)})};var p=/[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/;n.retrievePrecedingIdentifier=function(g,t,n){n=n||p;var u=[];for(--t;0<=t;t--)if(n.test(g[t]))u.push(g[t]);else break;return u.reverse().join("")};n.retrieveFollowingIdentifier=function(g,n,u){u=u||p;for(var t=[];n<g.length;n++)if(u.test(g[n]))t.push(g[n]);else break;return t};n.getCompletionPrefix=function(g){var p=g.getCursorPosition(),n=g.session.getLine(p.row),x;g.completers.forEach(function(g){g.identifierRegexps&&g.identifierRegexps.forEach(function(g){!x&&g&&(x=this.retrievePrecedingIdentifier(n,p.column,g))}.bind(this))}.bind(this));return x||this.retrievePrecedingIdentifier(n,p.column)}});define("ace/autocomplete","require exports module ace/keyboard/hash_handler ace/autocomplete/popup ace/autocomplete/util ace/lib/lang ace/lib/dom ace/snippets ace/config".split(" "),function(g,n,A){var p=g("./keyboard/hash_handler").HashHandler,w=g("./autocomplete/popup").AcePopup,t=g("./autocomplete/util"),u=g("./lib/lang"),x=g("./lib/dom"),y=g("./snippets").snippetManager,B=g("./config"),l=function(){this.autoInsert=!1;this.autoSelect=!0;this.exactMatch=!1;this.gatherCompletionsId=0;this.keyboardHandler=new p;this.keyboardHandler.bindKeys(this.commands);this.blurListener=this.blurListener.bind(this);this.changeListener=this.changeListener.bind(this);this.mousedownListener=this.mousedownListener.bind(this);this.mousewheelListener=this.mousewheelListener.bind(this);this.changeTimer=u.delayedCall(function(){this.updateCompletions(!0)}.bind(this));this.tooltipTimer=u.delayedCall(this.updateDocTooltip.bind(this),50)};(function(){this.$init=function(){this.popup=new w(document.body||document.documentElement);this.popup.on("click",function(b){this.insertMatch();b.stop()}.bind(this));this.popup.focus=this.editor.focus.bind(this.editor);this.popup.on("show",this.tooltipTimer.bind(null,null));this.popup.on("select",this.tooltipTimer.bind(null,null));this.popup.on("changeHoverMarker",this.tooltipTimer.bind(null,null));return this.popup};this.getPopup=function(){return this.popup||this.$init()};this.openPopup=function(b,d,e){this.popup||this.$init();this.popup.autoSelect=this.autoSelect;this.popup.setData(this.completions.filtered,this.completions.filterText);b.keyBinding.addKeyboardHandler(this.keyboardHandler);var g=b.renderer;this.popup.setRow(this.autoSelect?0:-1);if(e)e&&!d&&this.detach();else{this.popup.setTheme(b.getTheme());this.popup.setFontSize(b.getFontSize());d=g.layerConfig.lineHeight;e=g.$cursorLayer.getPixelPosition(this.base,!0);e.left-=this.popup.getTextLeftOffset();var a=b.container.getBoundingClientRect();e.top+=a.top-g.layerConfig.offset;e.left+=a.left-b.renderer.scrollLeft;e.left+=g.gutterWidth;this.popup.show(e,d)}this.changeTimer.cancel()};this.detach=function(){this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);this.editor.off("changeSelection",this.changeListener);this.editor.off("blur",this.blurListener);this.editor.off("mousedown",this.mousedownListener);this.editor.off("mousewheel",this.mousewheelListener);this.changeTimer.cancel();this.hideDocTooltip();this.gatherCompletionsId+=1;this.popup&&this.popup.isOpen&&this.popup.hide();this.base&&this.base.detach();this.activated=!1;this.completions=this.base=null};this.changeListener=function(b){b=this.editor.selection.lead;(b.row!=this.base.row||b.column<this.base.column)&&this.detach();this.activated?this.changeTimer.schedule():this.detach()};this.blurListener=function(b){var d=document.activeElement,e=this.editor.textInput.getElement(),g=b.relatedTarget&&this.tooltipNode&&this.tooltipNode.contains(b.relatedTarget),a=this.popup&&this.popup.container;d==e||d.parentNode==a||g||d==this.tooltipNode||b.relatedTarget==e||this.detach()};this.mousedownListener=function(b){this.detach()};this.mousewheelListener=function(b){this.detach()};this.goTo=function(b){this.popup.goTo(b)};this.insertMatch=function(b,d){b||(b=this.popup.getData(this.popup.getRow()));if(!b)return!1;var e=this.completions;this.editor.startOperation({command:{name:"insertMatch"}});if(b.completer&&b.completer.insertMatch)b.completer.insertMatch(this.editor,b);else{if(!e)return!1;if(e.filterText)for(var g=this.editor.selection.getAllRanges(),a=0,c;c=g[a];a++)c.start.column-=e.filterText.length,this.editor.session.remove(c);b.snippet?y.insertSnippet(this.editor,b.snippet):this.editor.execCommand("insertstring",b.value||b)}this.completions==e&&this.detach();this.editor.endOperation()};this.commands={Up:function(b){b.completer.goTo("up")},Down:function(b){b.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(b){b.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(b){b.completer.goTo("end")},Esc:function(b){b.completer.detach()},Return:function(b){return b.completer.insertMatch()},"Shift-Return":function(b){b.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(b){var d=b.completer.insertMatch();if(d||b.tabstopManager)return d;b.completer.goTo("down")},PageUp:function(b){b.completer.popup.gotoPageUp()},PageDown:function(b){b.completer.popup.gotoPageDown()}};this.gatherCompletions=function(b,d){var e=b.getSession(),g=b.getCursorPosition(),a=t.getCompletionPrefix(b);this.base=e.doc.createAnchor(g.row,g.column-a.length);this.base.$insertRight=!0;var c=[],m=b.completers.length;b.completers.forEach(function(f,h){f.getCompletions(b,e,g,a,function(a,f){!a&&f&&(c=c.concat(f));d(null,{prefix:t.getCompletionPrefix(b),matches:c,finished:0===--m})})});return!0};this.showPopup=function(b,d){this.editor&&this.detach();this.activated=!0;this.editor=b;b.completer!=this&&(b.completer&&b.completer.detach(),b.completer=this);b.on("changeSelection",this.changeListener);b.on("blur",this.blurListener);b.on("mousedown",this.mousedownListener);b.on("mousewheel",this.mousewheelListener);this.updateCompletions(!1,d)};this.updateCompletions=function(b,d){if(b&&this.base&&this.completions){var e=this.editor.getCursorPosition(),e=this.editor.session.getTextRange({start:this.base,end:e});if(e!=this.completions.filterText){this.completions.setFilter(e);if(!this.completions.filtered.length||1==this.completions.filtered.length&&this.completions.filtered[0].value==e&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,e,b)}}else{if(d&&d.matches)return e=this.editor.getSelectionRange().start,this.base=this.editor.session.doc.createAnchor(e.row,e.column),this.base.$insertRight=!0,this.completions=new v(d.matches),this.openPopup(this.editor,"",b);var g=this.gatherCompletionsId,a=function(a){if(a.finished)return this.detach()}.bind(this),c=function(c){var f=c.prefix;this.completions=new v(c.matches);this.exactMatch&&(this.completions.exactMatch=!0);this.completions.setFilter(f);var d=this.completions.filtered;if(!d.length||1==d.length&&d[0].value==f&&!d[0].snippet)return a(c);if(this.autoInsert&&1==d.length&&c.finished)return this.insertMatch(d[0]);this.openPopup(this.editor,f,b)}.bind(this),m=!0,f=null;this.gatherCompletions(this.editor,function(b,d){var e=d.prefix,h=d&&d.matches;if(!h||!h.length)return a(d);0===e.indexOf(d.prefix)&&g==this.gatherCompletionsId&&(m?f=d:c(d))}.bind(this));m=!1;f&&(e=f,f=null,c(e))}};this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()};this.updateDocTooltip=function(){var b=this.popup,d=b.data,e=d&&(d[b.getHoveredRow()]||d[b.getRow()]),g=null;if(!e||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(a){a.getDocTooltip&&(g=a.getDocTooltip(e));return g});g||"string"==typeof e||(g=e);"string"==typeof g&&(g={docText:g});if(!g||!g.docHTML&&!g.docText)return this.hideDocTooltip();this.showDocTooltip(g)};this.showDocTooltip=function(b){this.tooltipNode||(this.tooltipNode=x.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this),this.tooltipNode.onclick=this.onTooltipClick.bind(this));var d=this.tooltipNode;b.docHTML?d.innerHTML=b.docHTML:b.docText&&(d.textContent=b.docText);d.parentNode||document.body.appendChild(d);b=this.popup;var e=b.container.getBoundingClientRect();d.style.top=b.container.style.top;d.style.bottom=b.container.style.bottom;d.style.display="block";320>window.innerWidth-e.right?320>e.left?(d.style.top=b.isTopdown?e.bottom+"px":b.container.offsetTop-d.offsetHeight+"px",d.style.left=e.left+"px",d.style.right="",d.style.bottom=""):(d.style.right=window.innerWidth-e.left+"px",d.style.left=""):(d.style.left=e.right+1+"px",d.style.right="")};this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(this.tooltipNode){var b=this.tooltipNode;this.editor.isFocused()||document.activeElement!=b||this.editor.focus();this.tooltipNode=null;b.parentNode&&b.parentNode.removeChild(b)}};this.onTooltipClick=function(b){for(b=b.target;b&&b!=this.tooltipNode;){if("A"==b.nodeName&&b.href){b.rel="noreferrer";b.target="_blank";break}b=b.parentNode}};this.destroy=function(){this.detach();if(this.popup){this.popup.destroy();var b=this.popup.container;b&&b.parentNode&&b.parentNode.removeChild(b)}this.editor&&this.editor.completer==this&&null==this.editor.completer;this.popup=null}}).call(l.prototype);l["for"]=function(b){if(b.completer)return b.completer;B.get("sharedPopups")?(l.$shared||(l.$sharedInstance=new l),b.completer=l.$sharedInstance):(b.completer=new l,b.once("destroy",function(b,e){e.completer.destroy()}));return b.completer};l.startCommand={name:"startAutocomplete",exec:function(b,d){var e=l["for"](b);e.autoInsert=!1;e.autoSelect=!0;e.showPopup(b,d);e.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var v=function(b,d){this.filtered=this.all=b;this.filterText=d||"";this.exactMatch=!1};(function(){this.setFilter=function(b){var d=b.length>this.filterText&&0===b.lastIndexOf(this.filterText,0)?this.filtered:this.all;this.filterText=b;var d=this.filterCompletions(d,this.filterText),d=d.sort(function(b,a){return(b.pinyin?1:0)-(a.pinyin?1:0)||a.exactMatch-b.exactMatch||(b.caption||b.value).localeCompare(a.caption||a.value)||a.$score-b.$score}),e=null;this.filtered=d=d.filter(function(b){b=b.snippet||b.value||b.caption;if(b===e)return!1;e=b;return!0})};this.filterCompletions=function(b,d){var e=[],g=d.toUpperCase(),a=d.toLowerCase(),c=0,m;a:for(;m=b[c];c++){var f=m.caption||m.value||m.snippet;if(f){var h=-1,l=0,p=0,k,q;if(this.exactMatch){if(d!==f.substr(0,d.length))continue a}else{var n=f.toLowerCase().indexOf(a);if(-1<n)p=n;else for(n=0;n<d.length;n++){k=f.indexOf(a[n],h+1);q=f.indexOf(g[n],h+1);k=0<=k?0>q||k<q?k:q:q;if(0>k)continue a;q=k-h-1;0<q&&(-1===h&&(p+=10),p+=q,l|=1<<n);h=k}}m.matchMask=l;m.exactMatch=p?0:1;m.$score=(m.score||0)-p;e.push(m)}}c=0;a:for(;m=b[c];c++)if(f=m.meta){h=-1;p=l=0;if(this.exactMatch){if(d!==f.substr(0,d.length))continue a}else if(n=f.toLowerCase().indexOf(a),-1<n)p=n;else for(n=0;n<d.length;n++){k=f.indexOf(a[n],h+1);q=f.indexOf(g[n],h+1);k=0<=k?0>q||k<q?k:q:q;if(0>k)continue a;q=k-h-1;0<q&&(-1===h&&(p+=10),p+=q,l|=1<<n);h=k}m.matchMask=l;m.exactMatch=p?0:1;m.$score=(m.score||0)-p;e.push(m)}c=0;a:for(;m=b[c];c++)if(f=m.pinyin){h=-1;p=l=0;if(this.exactMatch){if(d!==f.substr(0,d.length))continue a}else if(n=f.toLowerCase().indexOf(a),-1<n)p=n;else for(n=0;n<d.length;n++){k=f.indexOf(a[n],h+1);q=f.indexOf(g[n],h+1);k=0<=k?0>q||k<q?k:q:q;if(0>k)continue a;q=k-h-1;0<q&&(-1===h&&(p+=10),p+=q,l|=1<<n);h=k}m.matchMask=l;m.exactMatch=p?0:1;m.$score=(m.score||0)-p;e.push(m)}return e}}).call(v.prototype);n.Autocomplete=l;n.FilteredList=v});define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(g,n,A){function p(g,n){var p=g.getTextRange(w.fromPoints({row:0,column:0},n)).split(t).length-1,u=g.getValue().split(t),l=Object.create(null),v=u[p];u.forEach(function(b,d){if(b&&b!==v){var e=u.length-Math.abs(p-d);l[b]=l[b]?Math.max(e,l[b]):e}});return l}var w=g("../range").Range,t=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;n.getCompletions=function(g,n,t,w,l){var u=p(n,t);g=Object.keys(u);l(null,g.map(function(b){return{caption:b,value:b,score:u[b],meta:"local"}}))}});define("ace/ext/language_tools","require exports module ace/snippets ace/autocomplete ace/config ace/lib/lang ace/autocomplete/util ace/autocomplete/text_completer ace/editor ace/config".split(" "),function(g,n,A){var p=g("../snippets").snippetManager,w=g("../autocomplete").Autocomplete,t=g("../config"),u=g("../lib/lang"),x=g("../autocomplete/util");A=g("../autocomplete/text_completer");var y={getCompletions:function(a,b,f,d,e){if(b.$mode.completer)return b.$mode.completer.getCompletions(a,b,f,d,e);a=a.session.getState(f.row);b=b.$mode.getCompletions(a,b,f,d);e(null,b)}},B=function(a){var b={};return a.replace(/\${(\d+)(:(.*?))?}/g,function(a,c,d,e){return b[c]=e||""}).replace(/\$(\d+?)/g,function(a,c){return b[c]})},l={getCompletions:function(a,b,d,e,g){e=[];(b=b.getTokenAt(d.row,d.column))&&b.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)?e.push("html-tag"):e=p.getActiveScopes(a);var c=p.snippetMap,f=[];e.forEach(function(a){a=c[a]||[];for(var b=a.length;b--;){var d=a[b],e=d.name||d.tabTrigger;e&&f.push({caption:e,snippet:d.content,meta:d.tabTrigger&&!d.name?d.tabTrigger+"\u21e5 ":"snippet",type:"snippet"})}},this);g(null,f)},getDocTooltip:function(a){"snippet"!=a.type||a.docHTML||(a.docHTML=["\x3cb\x3e",u.escapeHTML(a.caption),"\x3c/b\x3e\x3chr\x3e\x3c/hr\x3e",u.escapeHTML(B(a.snippet))].join(""))}},v=[l,A,y];n.setCompleters=function(a){v.length=0;a&&v.push.apply(v,a)};n.addCompleter=function(a){v.push(a)};n.textCompleter=A;n.keyWordCompleter=y;n.snippetCompleter=l;var b={name:"expandSnippet",exec:function(a){return p.expandWithTab(a)},bindKey:"Tab"},d=function(a,b){e(b.session.$mode)},e=function(a){"string"==typeof a&&(a=t.$modes[a]);a&&(p.files||(p.files={}),r(a.$id,a.snippetFileId),a.modes&&a.modes.forEach(e))},r=function(a,b){b&&a&&!p.files[a]&&(p.files[a]={},t.loadModule(b,function(b){b&&(p.files[a]=b,!b.snippets&&b.snippetText&&(b.snippets=p.parseSnippetFile(b.snippetText)),p.register(b.snippets||[],b.scope),b.includeScopes&&(p.snippetMap[b.scope].includeScopes=b.includeScopes,b.includeScopes.forEach(function(a){e("ace/mode/"+a)})))}))},a=function(a){var b=a.editor,c=b.completer&&b.completer.activated;"backspace"===a.command.name?c&&!x.getCompletionPrefix(b)&&b.completer.detach():"insertstring"===a.command.name&&x.getCompletionPrefix(b)&&!c&&(a=w["for"](b),a.autoInsert=!1,a.showPopup(b))};n=g("../editor").Editor;g("../config").defineOptions(n.prototype,"editor",{enableBasicAutocompletion:{set:function(a){a?(this.completers||(this.completers=Array.isArray(a)?a:v),this.commands.addCommand(w.startCommand)):this.commands.removeCommand(w.startCommand)},value:!1},enableLiveAutocompletion:{set:function(b){b?(this.completers||(this.completers=Array.isArray(b)?b:v),this.commands.on("afterExec",a)):this.commands.removeListener("afterExec",a)},value:!1},enableSnippets:{set:function(a){a?(this.commands.addCommand(b),this.on("changeMode",d),d(null,this)):(this.commands.removeCommand(b),this.off("changeMode",d))},value:!1}})});(function(){window.require(["ace/ext/language_tools"],function(g){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=g)})})();