module.exports.id = 'ace/mode/lua_worker';
module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.column<point2.column;return point1.row<point2.row||point1.row==point2.row&&bColIsAfter}function $getTransformedPoint(delta,point,moveIfEqual){var deltaIsInsert=\"insert\"==delta.action,deltaRowShift=(deltaIsInsert?1:-1)*(delta.end.row-delta.start.row),deltaColShift=(deltaIsInsert?1:-1)*(delta.end.column-delta.start.column),deltaStart=delta.start,deltaEnd=deltaIsInsert?deltaStart:delta.end;return $pointsInOrder(point,deltaStart,moveIfEqual)?{row:point.row,column:point.column}:$pointsInOrder(deltaEnd,point,!moveIfEqual)?{row:point.row+deltaRowShift,column:point.column+(point.row==deltaEnd.row?deltaColShift:0)}:{row:deltaStart.row,column:deltaStart.column}}oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(delta){if(!(delta.start.row==delta.end.row&&delta.start.row!=this.row||delta.start.row>this.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&#38;\").replace(/\"/g,\"&#34;\").replace(/'/g,\"&#39;\").replace(/</g,\"&#60;\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred.isPending=function(){return timer},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||defaultTimeout))};return _self.delay=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)},_self.schedule=_self,_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){\"use strict\";acequire(\"../range\").Range;var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/lua/luaparse\",[\"require\",\"exports\",\"module\"],function(acequire,exports){(function(root,name,factory){factory(exports)})(this,\"luaparse\",function(exports){\"use strict\";function finishNode(node){if(trackLocations){var location=locations.pop();location.complete(),options.locations&&(node.loc=location.loc),options.ranges&&(node.range=location.range)}return node}function indexOfObject(array,property,element){for(var i=0,length=array.length;length>i;i++)if(array[i][property]===element)return i;return-1}function sprintf(format){var args=slice.call(arguments,1);return format=format.replace(/%(\\d)/g,function(match,index){return\"\"+args[index-1]||\"\"})}function extend(){for(var src,prop,args=slice.call(arguments),dest={},i=0,length=args.length;length>i;i++){src=args[i];for(prop in src)src.hasOwnProperty(prop)&&(dest[prop]=src[prop])}return dest}function raise(token){var error,col,message=sprintf.apply(null,slice.call(arguments,1));throw token.line!==void 0?(col=token.range[0]-token.lineStart,error=new SyntaxError(sprintf(\"[%1:%2] %3\",token.line,col,message)),error.line=token.line,error.index=token.range[0],error.column=col):(col=index-lineStart+1,error=new SyntaxError(sprintf(\"[%1:%2] %3\",line,col,message)),error.index=index,error.line=line,error.column=col),error}function raiseUnexpectedToken(type,token){raise(token,errors.expectedToken,type,token.value)}function unexpected(found,near){if(near===void 0&&(near=lookahead.value),found.type!==void 0){var type;switch(found.type){case StringLiteral:type=\"string\";break;case Keyword:type=\"keyword\";break;case Identifier:type=\"identifier\";break;case NumericLiteral:type=\"number\";break;case Punctuator:type=\"symbol\";break;case BooleanLiteral:type=\"boolean\";break;case NilLiteral:return raise(found,errors.unexpected,\"symbol\",\"nil\",near)}return raise(found,errors.unexpected,type,found.value,near)}return raise(found,errors.unexpected,\"symbol\",found,near)}function lex(){for(skipWhiteSpace();45===input.charCodeAt(index)&&45===input.charCodeAt(index+1);)scanComment(),skipWhiteSpace();if(index>=length)return{type:EOF,value:\"<eof>\",line:line,lineStart:lineStart,range:[index,index]};var charCode=input.charCodeAt(index),next=input.charCodeAt(index+1);if(tokenStart=index,isIdentifierStart(charCode))return scanIdentifierOrKeyword();switch(charCode){case 39:case 34:return scanStringLiteral();case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return scanNumericLiteral();case 46:return isDecDigit(next)?scanNumericLiteral():46===next?46===input.charCodeAt(index+2)?scanVarargLiteral():scanPunctuator(\"..\"):scanPunctuator(\".\");case 61:return 61===next?scanPunctuator(\"==\"):scanPunctuator(\"=\");case 62:return 61===next?scanPunctuator(\">=\"):scanPunctuator(\">\");case 60:return 61===next?scanPunctuator(\"<=\"):scanPunctuator(\"<\");case 126:return 61===next?scanPunctuator(\"~=\"):raise({},errors.expected,\"=\",\"~\");case 58:return 58===next?scanPunctuator(\"::\"):scanPunctuator(\":\");case 91:return 91===next||61===next?scanLongStringLiteral():scanPunctuator(\"[\");case 42:case 47:case 94:case 37:case 44:case 123:case 125:case 93:case 40:case 41:case 59:case 35:case 45:case 43:return scanPunctuator(input.charAt(index))}return unexpected(input.charAt(index))}function skipWhiteSpace(){for(;length>index;){var charCode=input.charCodeAt(index);if(isWhiteSpace(charCode))index++;else{if(!isLineTerminator(charCode))break;line++,lineStart=++index}}}function scanIdentifierOrKeyword(){for(var value,type;isIdentifierPart(input.charCodeAt(++index)););return value=input.slice(tokenStart,index),isKeyword(value)?type=Keyword:\"true\"===value||\"false\"===value?(type=BooleanLiteral,value=\"true\"===value):\"nil\"===value?(type=NilLiteral,value=null):type=Identifier,{type:type,value:value,line:line,lineStart:lineStart,range:[tokenStart,index]}}function scanPunctuator(value){return index+=value.length,{type:Punctuator,value:value,line:line,lineStart:lineStart,range:[tokenStart,index]}}function scanVarargLiteral(){return index+=3,{type:VarargLiteral,value:\"...\",line:line,lineStart:lineStart,range:[tokenStart,index]}}function scanStringLiteral(){for(var charCode,delimiter=input.charCodeAt(index++),stringStart=index,string=\"\";length>index&&(charCode=input.charCodeAt(index++),delimiter!==charCode);)92===charCode?(string+=input.slice(stringStart,index-1)+readEscapeSequence(),stringStart=index):(index>=length||isLineTerminator(charCode))&&(string+=input.slice(stringStart,index-1),raise({},errors.unfinishedString,string+String.fromCharCode(charCode)));return string+=input.slice(stringStart,index-1),{type:StringLiteral,value:string,line:line,lineStart:lineStart,range:[tokenStart,index]}}function scanLongStringLiteral(){var string=readLongString();return!1===string&&raise(token,errors.expected,\"[\",token.value),{type:StringLiteral,value:string,line:line,lineStart:lineStart,range:[tokenStart,index]}\n}function scanNumericLiteral(){var character=input.charAt(index),next=input.charAt(index+1),value=\"0\"===character&&\"xX\".indexOf(next||null)>=0?readHexLiteral():readDecLiteral();return{type:NumericLiteral,value:value,line:line,lineStart:lineStart,range:[tokenStart,index]}}function readHexLiteral(){var digit,fractionStart,exponentStart,digitStart,fraction=0,binaryExponent=1,binarySign=1;for(digitStart=index+=2,isHexDigit(input.charCodeAt(index))||raise({},errors.malformedNumber,input.slice(tokenStart,index));isHexDigit(input.charCodeAt(index));)index++;if(digit=parseInt(input.slice(digitStart,index),16),\".\"===input.charAt(index)){for(fractionStart=++index;isHexDigit(input.charCodeAt(index));)index++;fraction=input.slice(fractionStart,index),fraction=fractionStart===index?0:parseInt(fraction,16)/Math.pow(16,index-fractionStart)}if(\"pP\".indexOf(input.charAt(index)||null)>=0){for(index++,\"+-\".indexOf(input.charAt(index)||null)>=0&&(binarySign=\"+\"===input.charAt(index++)?1:-1),exponentStart=index,isDecDigit(input.charCodeAt(index))||raise({},errors.malformedNumber,input.slice(tokenStart,index));isDecDigit(input.charCodeAt(index));)index++;binaryExponent=input.slice(exponentStart,index),binaryExponent=Math.pow(2,binaryExponent*binarySign)}return(digit+fraction)*binaryExponent}function readDecLiteral(){for(;isDecDigit(input.charCodeAt(index));)index++;if(\".\"===input.charAt(index))for(index++;isDecDigit(input.charCodeAt(index));)index++;if(\"eE\".indexOf(input.charAt(index)||null)>=0)for(index++,\"+-\".indexOf(input.charAt(index)||null)>=0&&index++,isDecDigit(input.charCodeAt(index))||raise({},errors.malformedNumber,input.slice(tokenStart,index));isDecDigit(input.charCodeAt(index));)index++;return parseFloat(input.slice(tokenStart,index))}function readEscapeSequence(){var sequenceStart=index;switch(input.charAt(index)){case\"n\":return index++,\"\\n\";case\"r\":return index++,\"\\r\";case\"t\":return index++,\"\t\";case\"v\":return index++,\"\u000b\";case\"b\":return index++,\"\\b\";case\"f\":return index++,\"\\f\";case\"z\":return index++,skipWhiteSpace(),\"\";case\"x\":return isHexDigit(input.charCodeAt(index+1))&&isHexDigit(input.charCodeAt(index+2))?(index+=3,\"\\\\\"+input.slice(sequenceStart,index)):\"\\\\\"+input.charAt(index++);default:if(isDecDigit(input.charCodeAt(index))){for(;isDecDigit(input.charCodeAt(++index)););return\"\\\\\"+input.slice(sequenceStart,index)}return input.charAt(index++)}}function scanComment(){tokenStart=index,index+=2;var character=input.charAt(index),content=\"\",isLong=!1,commentStart=index,lineStartComment=lineStart,lineComment=line;if(\"[\"===character&&(content=readLongString(),!1===content?content=character:isLong=!0),!isLong){for(;length>index&&!isLineTerminator(input.charCodeAt(index));)index++;options.comments&&(content=input.slice(commentStart,index))}if(options.comments){var node=ast.comment(content,input.slice(tokenStart,index));options.locations&&(node.loc={start:{line:lineComment,column:tokenStart-lineStartComment},end:{line:line,column:index-lineStart}}),options.ranges&&(node.range=[tokenStart,index]),comments.push(node)}}function readLongString(){var character,stringStart,level=0,content=\"\",terminator=!1;for(index++;\"=\"===input.charAt(index+level);)level++;if(\"[\"!==input.charAt(index+level))return!1;for(index+=level+1,isLineTerminator(input.charCodeAt(index))&&(line++,lineStart=index++),stringStart=index;length>index;){if(character=input.charAt(index++),isLineTerminator(character.charCodeAt(0))&&(line++,lineStart=index),\"]\"===character){terminator=!0;for(var i=0;level>i;i++)\"=\"!==input.charAt(index+i)&&(terminator=!1);\"]\"!==input.charAt(index+level)&&(terminator=!1)}if(terminator)break}return content+=input.slice(stringStart,index-1),index+=level+1,content}function next(){previousToken=token,token=lookahead,lookahead=lex()}function consume(value){return value===token.value?(next(),!0):!1}function expect(value){value===token.value?next():raise(token,errors.expected,value,token.value)}function isWhiteSpace(charCode){return 9===charCode||32===charCode||11===charCode||12===charCode}function isLineTerminator(charCode){return 10===charCode||13===charCode}function isDecDigit(charCode){return charCode>=48&&57>=charCode}function isHexDigit(charCode){return charCode>=48&&57>=charCode||charCode>=97&&102>=charCode||charCode>=65&&70>=charCode}function isIdentifierStart(charCode){return charCode>=65&&90>=charCode||charCode>=97&&122>=charCode||95===charCode}function isIdentifierPart(charCode){return charCode>=65&&90>=charCode||charCode>=97&&122>=charCode||95===charCode||charCode>=48&&57>=charCode}function isKeyword(id){switch(id.length){case 2:return\"do\"===id||\"if\"===id||\"in\"===id||\"or\"===id;case 3:return\"and\"===id||\"end\"===id||\"for\"===id||\"not\"===id;case 4:return\"else\"===id||\"goto\"===id||\"then\"===id;case 5:return\"break\"===id||\"local\"===id||\"until\"===id||\"while\"===id;case 6:return\"elseif\"===id||\"repeat\"===id||\"return\"===id;case 8:return\"function\"===id}return!1}function isUnary(token){return Punctuator===token.type?\"#-\".indexOf(token.value)>=0:Keyword===token.type?\"not\"===token.value:!1}function isCallExpression(expression){switch(expression.type){case\"CallExpression\":case\"TableCallExpression\":case\"StringCallExpression\":return!0}return!1}function isBlockFollow(token){if(EOF===token.type)return!0;if(Keyword!==token.type)return!1;switch(token.value){case\"else\":case\"elseif\":case\"end\":case\"until\":return!0;default:return!1}}function createScope(){scopes.push(Array.apply(null,scopes[scopeDepth++]))}function exitScope(){scopes.pop(),scopeDepth--}function scopeIdentifierName(name){-1===indexOf(scopes[scopeDepth],name)&&scopes[scopeDepth].push(name)}function scopeIdentifier(node){scopeIdentifierName(node.name),attachScope(node,!0)}function attachScope(node,isLocal){isLocal||-1!==indexOfObject(globals,\"name\",node.name)||globals.push(node),node.isLocal=isLocal}function scopeHasName(name){return-1!==indexOf(scopes[scopeDepth],name)}function createLocationMarker(){return new Marker(token)}function Marker(token){options.locations&&(this.loc={start:{line:token.line,column:token.range[0]-token.lineStart},end:{line:0,column:0}}),options.ranges&&(this.range=[token.range[0],0])}function markLocation(){trackLocations&&locations.push(createLocationMarker())}function pushLocation(marker){trackLocations&&locations.push(marker)}function parseChunk(){next(),markLocation();var body=parseBlock();return EOF!==token.type&&unexpected(token),trackLocations&&!body.length&&(previousToken=token),finishNode(ast.chunk(body))}function parseBlock(){var statement,block=[];for(options.scope&&createScope();!isBlockFollow(token);){if(\"return\"===token.value){block.push(parseStatement());break}statement=parseStatement(),statement&&block.push(statement)}return options.scope&&exitScope(),block}function parseStatement(){if(markLocation(),Keyword===token.type)switch(token.value){case\"local\":return next(),parseLocalStatement();case\"if\":return next(),parseIfStatement();case\"return\":return next(),parseReturnStatement();case\"function\":next();var name=parseFunctionName();return parseFunctionDeclaration(name);case\"while\":return next(),parseWhileStatement();case\"for\":return next(),parseForStatement();case\"repeat\":return next(),parseRepeatStatement();case\"break\":return next(),parseBreakStatement();case\"do\":return next(),parseDoStatement();case\"goto\":return next(),parseGotoStatement()}return Punctuator===token.type&&consume(\"::\")?parseLabelStatement():(trackLocations&&locations.pop(),consume(\";\")?void 0:parseAssignmentOrCallStatement())}function parseLabelStatement(){var name=token.value,label=parseIdentifier();return options.scope&&(scopeIdentifierName(\"::\"+name+\"::\"),attachScope(label,!0)),expect(\"::\"),finishNode(ast.labelStatement(label))}function parseBreakStatement(){return finishNode(ast.breakStatement())}function parseGotoStatement(){var name=token.value,label=parseIdentifier();return options.scope&&(label.isLabel=scopeHasName(\"::\"+name+\"::\")),finishNode(ast.gotoStatement(label))}function parseDoStatement(){var body=parseBlock();return expect(\"end\"),finishNode(ast.doStatement(body))}function parseWhileStatement(){var condition=parseExpectedExpression();expect(\"do\");var body=parseBlock();return expect(\"end\"),finishNode(ast.whileStatement(condition,body))}function parseRepeatStatement(){var body=parseBlock();expect(\"until\");var condition=parseExpectedExpression();return finishNode(ast.repeatStatement(condition,body))}function parseReturnStatement(){var expressions=[];if(\"end\"!==token.value){var expression=parseExpression();for(null!=expression&&expressions.push(expression);consume(\",\");)expression=parseExpectedExpression(),expressions.push(expression);consume(\";\")}return finishNode(ast.returnStatement(expressions))}function parseIfStatement(){var condition,body,marker,clauses=[];for(trackLocations&&(marker=locations[locations.length-1],locations.push(marker)),condition=parseExpectedExpression(),expect(\"then\"),body=parseBlock(),clauses.push(finishNode(ast.ifClause(condition,body))),trackLocations&&(marker=createLocationMarker());consume(\"elseif\");)pushLocation(marker),condition=parseExpectedExpression(),expect(\"then\"),body=parseBlock(),clauses.push(finishNode(ast.elseifClause(condition,body))),trackLocations&&(marker=createLocationMarker());return consume(\"else\")&&(trackLocations&&(marker=new Marker(previousToken),locations.push(marker)),body=parseBlock(),clauses.push(finishNode(ast.elseClause(body)))),expect(\"end\"),finishNode(ast.ifStatement(clauses))}function parseForStatement(){var body,variable=parseIdentifier();if(options.scope&&scopeIdentifier(variable),consume(\"=\")){var start=parseExpectedExpression();expect(\",\");var end=parseExpectedExpression(),step=consume(\",\")?parseExpectedExpression():null;return expect(\"do\"),body=parseBlock(),expect(\"end\"),finishNode(ast.forNumericStatement(variable,start,end,step,body))}for(var variables=[variable];consume(\",\");)variable=parseIdentifier(),options.scope&&scopeIdentifier(variable),variables.push(variable);expect(\"in\");var iterators=[];do{var expression=parseExpectedExpression();iterators.push(expression)}while(consume(\",\"));return expect(\"do\"),body=parseBlock(),expect(\"end\"),finishNode(ast.forGenericStatement(variables,iterators,body))}function parseLocalStatement(){var name;if(Identifier===token.type){var variables=[],init=[];do name=parseIdentifier(),variables.push(name);while(consume(\",\"));if(consume(\"=\"))do{var expression=parseExpectedExpression();init.push(expression)}while(consume(\",\"));if(options.scope)for(var i=0,l=variables.length;l>i;i++)scopeIdentifier(variables[i]);return finishNode(ast.localStatement(variables,init))}return consume(\"function\")?(name=parseIdentifier(),options.scope&&scopeIdentifier(name),parseFunctionDeclaration(name,!0)):(raiseUnexpectedToken(\"<name>\",token),void 0)}function parseAssignmentOrCallStatement(){var expression,marker,previous=token;if(trackLocations&&(marker=createLocationMarker()),expression=parsePrefixExpression(),null==expression)return unexpected(token);if(\",=\".indexOf(token.value)>=0){for(var exp,variables=[expression],init=[];consume(\",\");)exp=parsePrefixExpression(),null==exp&&raiseUnexpectedToken(\"<expression>\",token),variables.push(exp);expect(\"=\");do exp=parseExpectedExpression(),init.push(exp);while(consume(\",\"));return pushLocation(marker),finishNode(ast.assignmentStatement(variables,init))}return isCallExpression(expression)?(pushLocation(marker),finishNode(ast.callStatement(expression))):unexpected(previous)}function parseIdentifier(){markLocation();var identifier=token.value;return Identifier!==token.type&&raiseUnexpectedToken(\"<name>\",token),next(),finishNode(ast.identifier(identifier))}function parseFunctionDeclaration(name,isLocal){var parameters=[];if(expect(\"(\"),!consume(\")\"))for(;;)if(Identifier===token.type){var parameter=parseIdentifier();if(options.scope&&scopeIdentifier(parameter),parameters.push(parameter),consume(\",\"))continue;if(consume(\")\"))break}else{if(VarargLiteral===token.type){parameters.push(parsePrimaryExpression()),expect(\")\");break}raiseUnexpectedToken(\"<name> or '...'\",token)}var body=parseBlock();return expect(\"end\"),isLocal=isLocal||!1,finishNode(ast.functionStatement(name,parameters,isLocal,body))}function parseFunctionName(){var base,name,marker;for(trackLocations&&(marker=createLocationMarker()),base=parseIdentifier(),options.scope&&attachScope(base,!1);consume(\".\");)pushLocation(marker),name=parseIdentifier(),options.scope&&attachScope(name,!1),base=finishNode(ast.memberExpression(base,\".\",name));return consume(\":\")&&(pushLocation(marker),name=parseIdentifier(),options.scope&&attachScope(name,!1),base=finishNode(ast.memberExpression(base,\":\",name))),base}function parseTableConstructor(){for(var key,value,fields=[];;){if(markLocation(),Punctuator===token.type&&consume(\"[\"))key=parseExpectedExpression(),expect(\"]\"),expect(\"=\"),value=parseExpectedExpression(),fields.push(finishNode(ast.tableKey(key,value)));else if(Identifier===token.type)key=parseExpectedExpression(),consume(\"=\")?(value=parseExpectedExpression(),fields.push(finishNode(ast.tableKeyString(key,value)))):fields.push(finishNode(ast.tableValue(key)));else{if(null==(value=parseExpression())){locations.pop();break}fields.push(finishNode(ast.tableValue(value)))}if(\",;\".indexOf(token.value)>=0)next();else if(\"}\"===token.value)break}return expect(\"}\"),finishNode(ast.tableConstructorExpression(fields))}function parseExpression(){var expression=parseSubExpression(0);return expression}function parseExpectedExpression(){var expression=parseExpression();return null!=expression?expression:(raiseUnexpectedToken(\"<expression>\",token),void 0)}function binaryPrecedence(operator){var charCode=operator.charCodeAt(0),length=operator.length;if(1===length)switch(charCode){case 94:return 10;case 42:case 47:case 37:return 7;case 43:case 45:return 6;case 60:case 62:return 3}else if(2===length)switch(charCode){case 46:return 5;case 60:case 62:case 61:case 126:return 3;case 111:return 1}else if(97===charCode&&\"and\"===operator)return 2;return 0}function parseSubExpression(minPrecedence){var expression,marker,operator=token.value;if(trackLocations&&(marker=createLocationMarker()),isUnary(token)){markLocation(),next();var argument=parseSubExpression(8);null==argument&&raiseUnexpectedToken(\"<expression>\",token),expression=finishNode(ast.unaryExpression(operator,argument))}if(null==expression&&(expression=parsePrimaryExpression(),null==expression&&(expression=parsePrefixExpression())),null==expression)return null;for(var precedence;;){if(operator=token.value,precedence=Punctuator===token.type||Keyword===token.type?binaryPrecedence(operator):0,0===precedence||minPrecedence>=precedence)break;(\"^\"===operator||\"..\"===operator)&&precedence--,next();var right=parseSubExpression(precedence);null==right&&raiseUnexpectedToken(\"<expression>\",token),trackLocations&&locations.push(marker),expression=finishNode(ast.binaryExpression(operator,expression,right))}return expression}function parsePrefixExpression(){var base,name,marker,isLocal;if(trackLocations&&(marker=createLocationMarker()),Identifier===token.type)name=token.value,base=parseIdentifier(),options.scope&&attachScope(base,isLocal=scopeHasName(name));else{if(!consume(\"(\"))return null;base=parseExpectedExpression(),expect(\")\"),options.scope&&(isLocal=base.isLocal)}for(var expression,identifier;;)if(Punctuator===token.type)switch(token.value){case\"[\":pushLocation(marker),next(),expression=parseExpectedExpression(),base=finishNode(ast.indexExpression(base,expression)),expect(\"]\");break;case\".\":pushLocation(marker),next(),identifier=parseIdentifier(),options.scope&&attachScope(identifier,isLocal),base=finishNode(ast.memberExpression(base,\".\",identifier));break;case\":\":pushLocation(marker),next(),identifier=parseIdentifier(),options.scope&&attachScope(identifier,isLocal),base=finishNode(ast.memberExpression(base,\":\",identifier)),pushLocation(marker),base=parseCallExpression(base);break;case\"(\":case\"{\":pushLocation(marker),base=parseCallExpression(base);break;default:return base}else{if(StringLiteral!==token.type)break;pushLocation(marker),base=parseCallExpression(base)}return base}function parseCallExpression(base){if(Punctuator===token.type)switch(token.value){case\"(\":next();var expressions=[],expression=parseExpression();for(null!=expression&&expressions.push(expression);consume(\",\");)expression=parseExpectedExpression(),expressions.push(expression);return expect(\")\"),finishNode(ast.callExpression(base,expressions));case\"{\":markLocation(),next();var table=parseTableConstructor();return finishNode(ast.tableCallExpression(base,table))}else if(StringLiteral===token.type)return finishNode(ast.stringCallExpression(base,parsePrimaryExpression()));raiseUnexpectedToken(\"function arguments\",token)}function parsePrimaryExpression(){var marker,literals=StringLiteral|NumericLiteral|BooleanLiteral|NilLiteral|VarargLiteral,value=token.value,type=token.type;if(trackLocations&&(marker=createLocationMarker()),type&literals){pushLocation(marker);var raw=input.slice(token.range[0],token.range[1]);return next(),finishNode(ast.literal(type,value,raw))}return Keyword===type&&\"function\"===value?(pushLocation(marker),next(),parseFunctionDeclaration(null)):consume(\"{\")?(pushLocation(marker),parseTableConstructor()):void 0}function parse(_input,_options){return _options===void 0&&\"object\"==typeof _input&&(_options=_input,_input=void 0),_options||(_options={}),input=_input||\"\",options=extend(defaultOptions,_options),index=0,line=1,lineStart=0,length=input.length,scopes=[[]],scopeDepth=0,globals=[],locations=[],options.comments&&(comments=[]),options.wait?exports:end()}function write(_input){return input+=_input+\"\",length=input.length,exports}function end(_input){_input!==void 0&&write(_input),length=input.length,trackLocations=options.locations||options.ranges,lookahead=lex();var chunk=parseChunk();if(options.comments&&(chunk.comments=comments),options.scope&&(chunk.globals=globals),locations.length>0)throw Error(\"Location tracking failed. This is most likely a bug in luaparse\");return chunk}exports.version=\"0.1.4\";var input,options,length,defaultOptions=exports.defaultOptions={wait:!1,comments:!0,scope:!1,locations:!1,ranges:!1},EOF=1,StringLiteral=2,Keyword=4,Identifier=8,NumericLiteral=16,Punctuator=32,BooleanLiteral=64,NilLiteral=128,VarargLiteral=256;exports.tokenTypes={EOF:EOF,StringLiteral:StringLiteral,Keyword:Keyword,Identifier:Identifier,NumericLiteral:NumericLiteral,Punctuator:Punctuator,BooleanLiteral:BooleanLiteral,NilLiteral:NilLiteral,VarargLiteral:VarargLiteral};var index,token,previousToken,lookahead,comments,tokenStart,line,lineStart,errors=exports.errors={unexpected:\"Unexpected %1 '%2' near '%3'\",expected:\"'%1' expected near '%2'\",expectedToken:\"%1 expected near '%2'\",unfinishedString:\"unfinished string near '%1'\",malformedNumber:\"malformed number near '%1'\"},ast=exports.ast={labelStatement:function(label){return{type:\"LabelStatement\",label:label}},breakStatement:function(){return{type:\"BreakStatement\"}},gotoStatement:function(label){return{type:\"GotoStatement\",label:label}},returnStatement:function(args){return{type:\"ReturnStatement\",arguments:args}},ifStatement:function(clauses){return{type:\"IfStatement\",clauses:clauses}},ifClause:function(condition,body){return{type:\"IfClause\",condition:condition,body:body}},elseifClause:function(condition,body){return{type:\"ElseifClause\",condition:condition,body:body}},elseClause:function(body){return{type:\"ElseClause\",body:body}},whileStatement:function(condition,body){return{type:\"WhileStatement\",condition:condition,body:body}},doStatement:function(body){return{type:\"DoStatement\",body:body}},repeatStatement:function(condition,body){return{type:\"RepeatStatement\",condition:condition,body:body}},localStatement:function(variables,init){return{type:\"LocalStatement\",variables:variables,init:init}},assignmentStatement:function(variables,init){return{type:\"AssignmentStatement\",variables:variables,init:init}},callStatement:function(expression){return{type:\"CallStatement\",expression:expression}},functionStatement:function(identifier,parameters,isLocal,body){return{type:\"FunctionDeclaration\",identifier:identifier,isLocal:isLocal,parameters:parameters,body:body}},forNumericStatement:function(variable,start,end,step,body){return{type:\"ForNumericStatement\",variable:variable,start:start,end:end,step:step,body:body}},forGenericStatement:function(variables,iterators,body){return{type:\"ForGenericStatement\",variables:variables,iterators:iterators,body:body}},chunk:function(body){return{type:\"Chunk\",body:body}},identifier:function(name){return{type:\"Identifier\",name:name}},literal:function(type,value,raw){return type=type===StringLiteral?\"StringLiteral\":type===NumericLiteral?\"NumericLiteral\":type===BooleanLiteral?\"BooleanLiteral\":type===NilLiteral?\"NilLiteral\":\"VarargLiteral\",{type:type,value:value,raw:raw}},tableKey:function(key,value){return{type:\"TableKey\",key:key,value:value}},tableKeyString:function(key,value){return{type:\"TableKeyString\",key:key,value:value}},tableValue:function(value){return{type:\"TableValue\",value:value}},tableConstructorExpression:function(fields){return{type:\"TableConstructorExpression\",fields:fields}},binaryExpression:function(operator,left,right){var type=\"and\"===operator||\"or\"===operator?\"LogicalExpression\":\"BinaryExpression\";return{type:type,operator:operator,left:left,right:right}},unaryExpression:function(operator,argument){return{type:\"UnaryExpression\",operator:operator,argument:argument}},memberExpression:function(base,indexer,identifier){return{type:\"MemberExpression\",indexer:indexer,identifier:identifier,base:base}},indexExpression:function(base,index){return{type:\"IndexExpression\",base:base,index:index}},callExpression:function(base,args){return{type:\"CallExpression\",base:base,arguments:args}},tableCallExpression:function(base,args){return{type:\"TableCallExpression\",base:base,arguments:args}},stringCallExpression:function(base,argument){return{type:\"StringCallExpression\",base:base,argument:argument}},comment:function(value,raw){return{type:\"Comment\",value:value,raw:raw}}},slice=Array.prototype.slice,indexOf=(Object.prototype.toString,function indexOf(array,element){for(var i=0,length=array.length;length>i;i++)if(array[i]===element)return i;return-1});exports.lex=lex;var scopes,scopeDepth,globals,trackLocations,locations=[];Marker.prototype.complete=function(){options.locations&&(this.loc.end.line=previousToken.line,this.loc.end.column=previousToken.range[1]-previousToken.lineStart),options.ranges&&(this.range[1]=previousToken.range[1])},exports.parse=parse,exports.write=write,exports.end=end})}),ace.define(\"ace/mode/lua_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/lua/luaparse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,luaparse=acequire(\"../mode/lua/luaparse\"),Worker=exports.Worker=function(sender){Mirror.call(this,sender),this.setTimeout(500)};oop.inherits(Worker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{luaparse.parse(value)}catch(e){e instanceof SyntaxError&&errors.push({row:e.line-1,column:e.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(Worker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype\n}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎             　\\u2028\\u2029﻿\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});";