You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
typesetting/pitfall/pdfkit/node_modules/brace/worker/lua.js

2 lines
65 KiB
JavaScript

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

module.exports.id = 'ace/mode/lua_worker';
module.exports.src = "\"no use strict\";(function(window){void 0!==window.window&&window.document||(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){console.error(\"Worker \"+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(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;var chunks=id.split(\"/\");if(!window.acequire.tlns)return console.log(\"unable to load \"+id);chunks[0]=window.acequire.tlns[chunks[0]]||chunks[0];var path=chunks.join(\"/\")+\".js\";return window.acequire.id=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),deps.length||(deps=[\"require\",\"exports\",\"module\"]),0!==id.indexOf(\"text!\")){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={},window.initBaseUrls=function initBaseUrls(topLevelNamespaces){acequire.tlns=topLevelNamespaces},window.initSender=function initSender(){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},window.main=null,window.sender=null,window.onmessage=function(e){var msg=e.data;if(msg.command){if(!main[msg.command])throw Error(\"Unknown command:\"+msg.command);main[msg.command].apply(main,msg.args)}else if(msg.init){initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=initSender();var clazz=acequire(msg.module)[msg.classname];main=new clazz(sender)}else msg.event&&sender&&sender._emit(msg.event,msg.data)})})(this),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}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)}}),ace.define(\"ace/mode/lua_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/lua/luaparse\"],function(acequire,exports){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();try{luaparse.parse(value)}catch(e){return e instanceof SyntaxError&&this.sender.emit(\"error\",{row:e.line-1,column:e.column,text:e.message,type:\"error\"}),void 0}this.sender.emit(\"ok\")}}.call(Worker.prototype)}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.inherits=function(){var createObject=Object.create||function(prototype,properties){var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype,properties!==void 0&&Object.defineProperties&&Object.defineProperties(object,properties)};return function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=createObject(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/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){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){return doc.applyDeltas(e.data),_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/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0==text.length?this.$lines=[\"\"]:Array.isArray(text)?this._insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).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.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode)},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){if(range.start.row==range.end.row)return this.getLine(range.start.row).substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row,range.end.row);lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;return range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},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):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this._insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){return row>=this.getLength()?this.insert({row:row,column:0},\"\\n\"+lines.join(\"\\n\")):this._insertLines(Math.max(row,0),lines)},this._insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};if(lines.length>65535){var end=this._insertLines(row,lines.slice(65535));lines=lines.slice(0,65535)}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._emit(\"change\",{data:delta}),end||range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._emit(\"change\",{data:delta}),end},this.remove=function(range){if(!range instanceof Range&&(range=Range.fromPoints(range.start,range.end)),range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this._removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._emit(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){return 0>firstRow||lastRow>=this.getLength()?this.remove(new Range(firstRow,0,lastRow+1,0)):this._removeLines(firstRow,lastRow)},this._removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._emit(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._emit(\"change\",{data:delta})},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;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this._removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this._removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this._insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},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/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){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/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){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)\n},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/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){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(){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(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.column===column&&this.$insertRight||(start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row)):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,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._emit(\"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/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){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(obj){if(\"object\"!=typeof obj||!obj)return obj;var cons=obj.constructor;if(cons===RegExp)return obj;var copy=cons();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?exports.deepCopy(obj[key]):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/mode/lua/luaparse\",[\"require\",\"exports\",\"module\"],function(acequire,exports){(function(root,name,factory){factory(exports)})(this,\"luaparse\",function(exports){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]}}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}\n},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})});";