1 line
No EOL
116 KiB
JavaScript
1 line
No EOL
116 KiB
JavaScript
function initSender(){var a=require("pilot/event_emitter").EventEmitter,b=require("pilot/oop"),c=function(){};(function(){b.implement(this,a),this.callback=function(a,b){postMessage({type:"call",id:b,data:a})},this.emit=function(a,b){postMessage({type:"event",name:a,data:b})}}).call(c.prototype);return new c}function initBaseUrls(a){require.tlns=a}var console={log:function(a){postMessage({type:"log",data:a})}},window={console:console},require=function(a){var b=require.modules[a];if(b){b.initialized||(b.exports=b.factory().exports,b.initialized=!0);return b.exports}var c=a.split("/");c[0]=require.tlns[c[0]]||c[0],path=c.join("/")+".js",require.id=a,importScripts(path);return require(a)};require.modules={},require.tlns={};var define=function(a,b,c){arguments.length==2?c=b:arguments.length==1&&(c=a,a=require.id);a.indexOf("text/")!==0&&(require.modules[a]={factory:function(){var a={exports:{}},b=c(require,a.exports,a);b&&(a.exports=exports);return a}})},main,sender;onmessage=function(a){var b=a.data;if(b.command)main[b.command].apply(main,b.args);else if(b.init){initBaseUrls(b.tlns),require("pilot/fixoldbrowsers"),sender=initSender();var c=require(b.module)[b.classname];main=new c(sender)}else b.event&&sender._dispatchEvent(b.event,b.data)},define("pilot/fixoldbrowsers",["require","exports","module"],function(a,b,c){var d=Object.prototype.hasOwnProperty;Array.isArray||(Array.isArray=function(a){return Object.prototype.toString.call(a)=="[object Array]"}),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c=+this.length;for(var d=0;d<c;d++)d in this&&a.call(b,this[d],d,this)}),Array.prototype.map||(Array.prototype.map=function(a){var b=+this.length;if(typeof a!="function")throw new TypeError;var c=Array(b),d=arguments[1];for(var e=0;e<b;e++)e in this&&(c[e]=a.call(d,this[e],e,this));return c}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=[],c=arguments[1];for(var d=0;d<this.length;d++)a.call(c,this[d])&&b.push(this[d]);return b}),Array.prototype.every||(Array.prototype.every=function(a){var b=arguments[1];for(var c=0;c<this.length;c++)if(!a.call(b,this[c]))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(a){var b=arguments[1];for(var c=0;c<this.length;c++)if(a.call(b,this[c]))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(a){var b=+this.length;if(typeof a!="function")throw new TypeError;if(b==0&&arguments.length==1)throw new TypeError;var c=0;if(arguments.length<2){do{if(c in this){d=this[c++];break}if(++c>=b)throw new TypeError}while(!0)}else var d=arguments[1];for(;c<b;c++)c in this&&(d=a.call(null,d,this[c],c,this));return d}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(a){var b=+this.length;if(typeof a!="function")throw new TypeError;if(b==0&&arguments.length==1)throw new TypeError;var c=b-1;if(arguments.length<2){do{if(c in this){d=this[c--];break}if(--c<0)throw new TypeError}while(!0)}else var d=arguments[1];for(;c>=0;c--)c in this&&(d=a.call(null,d,this[c],c,this));return d}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length;if(!b)return-1;var c=arguments[1]||0;if(c>=b)return-1;c<0&&(c+=b);for(;c<b;c++){if(!d.call(this,c))continue;if(a===this[c])return c}return-1}),Array.prototype.lastIndexOf||(Array.prototype.lastIndexOf=function(a){var b=this.length;if(!b)return-1;var c=arguments[1]||b;c<0&&(c+=b),c=Math.min(c,b-1);for(;c>=0;c--){if(!d.call(this,c))continue;if(a===this[c])return c}return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(a){return a.__proto__||a.constructor.prototype}),Object.getOwnPropertyDescriptor||(Object.getOwnPropertyDescriptor=function(a,b){if(typeof a!=="object"&&typeof a!=="function"||a===null)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object");return d.call(a,b)?{value:a[b],enumerable:!0,configurable:!0,writeable:!0}:undefined}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(a){return Object.keys(a)}),Object.create||(Object.create=function(a,b){var c;if(a===null)c={"__proto__":null};else{if(typeof a!="object")throw new TypeError("typeof prototype["+typeof a+"] != 'object'");var d=function(){};d.prototype=a,c=new d}typeof b!=="undefined"&&Object.defineProperties(c,b);return c}),Object.defineProperty||(Object.defineProperty=function(a,b,c){if(typeof c=="object"&&a.__defineGetter__){if(d.call(c,"value")){!a.__lookupGetter__(b)&&!a.__lookupSetter__(b)&&(a[b]=c.value);if(d.call(c,"get")||d.call(c,"set"))throw new TypeError("Object doesn't support this action")}else typeof c.get=="function"&&a.__defineGetter__(b,c.get);typeof c.set=="function"&&a.__defineSetter__(b,c.set)}return a}),Object.defineProperties||(Object.defineProperties=function(a,b){for(var c in b)d.call(b,c)&&Object.defineProperty(a,c,b[c]);return a}),Object.seal||(Object.seal=function(a){return a}),Object.freeze||(Object.freeze=function(a){return a});try{Object.freeze(function(){})}catch(e){Object.freeze=function(a){return function(b){return typeof b=="function"?b:a(b)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(a){return a}),Object.isSealed||(Object.isSealed=function(a){return!1}),Object.isFrozen||(Object.isFrozen=function(a){return!1}),Object.isExtensible||(Object.isExtensible=function(a){return!0});if(!Object.keys){var f=!0,g=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=g.length;for(var i in {toString:null})f=!1;Object.keys=function(a){if(typeof a!=="object"&&typeof a!=="function"||a===null)throw new TypeError("Object.keys called on a non-object");var b=[];for(var c in a)d.call(a,c)&&b.push(c);if(f)for(var e=0,i=h;e<i;e++){var j=g[e];d.call(a,j)&&b.push(j)}return b}}Date.prototype.toISOString||(Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1)+"-"+this.getUTCDate()+"T"+this.getUTCHours()+":"+this.getUTCMinutes()+":"+this.getUTCSeconds()+"Z"}),Date.now||(Date.now=function(){return(new Date).getTime()}),Date.prototype.toJSON||(Date.prototype.toJSON=function(a){if(typeof this.toISOString!="function")throw new TypeError;return this.toISOString()}),isNaN(Date.parse("T00:00"))&&(Date=function(a){var b=function(c,d,e,f,g,h,i){var j=arguments.length;if(this instanceof a){var k=j===1&&String(c)===c?new a(b.parse(c)):j>=7?new a(c,d,e,f,g,h,i):j>=6?new a(c,d,e,f,g,h):j>=5?new a(c,d,e,f,g):j>=4?new a(c,d,e,f):j>=3?new a(c,d,e):j>=2?new a(c,d):j>=1?new a(c):new a;k.constructor=b;return k}return a.apply(this,arguments)},c=new RegExp("^(?:((?:[+-]\\d\\d)?\\d\\d\\d\\d)(?:-(\\d\\d)(?:-(\\d\\d))?)?)?(?:T(\\d\\d):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?)?(?:Z|([+-])(\\d\\d):(\\d\\d))?$");for(var d in a)b[d]=a[d];b.now=a.now,b.UTC=a.UTC,b.prototype=a.prototype,b.prototype.constructor=b,b.parse=function(b){var d=c.exec(b);if(d){d.shift();var e=d[0]===undefined;for(var f=0;f<10;f++){if(f===7)continue;d[f]=+(d[f]||(f<3?1:0)),f===1&&d[f]--}if(e)return((d[3]*60+d[4])*60+d[5])*1e3+d[6];var g=(d[8]*60+d[9])*60*1e3;d[6]==="-"&&(g=-g);return a.UTC.apply(this,d.slice(0,7))+g}return a.parse.apply(this,arguments)};return b}(Date));var j=Array.prototype.slice;Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if(typeof b.apply!="function"||typeof b.call!="function")return new TypeError;var c=j.call(arguments),d=function(){if(this instanceof d){var a=Object.create(b.prototype);b.apply(a,c.concat(j.call(arguments)));return a}return b.call.apply(b,c.concat(j.call(arguments)))};d.bound=b,d.boundTo=a,d.boundArgs=c,d.length=typeof b=="function"?Math.max(b.length-c.length,0):0;return d});if(!String.prototype.trim){var k=/^\s\s*/,l=/\s\s*$/;String.prototype.trim=function(){return String(this).replace(k,"").replace(l,"")}}b.globalsLoaded=!0}),define("pilot/event_emitter",["require","exports","module"],function(a,b,c){var d={};d._emit=d._dispatchEvent=function(a,b){this._eventRegistry=this._eventRegistry||{};var c=this._eventRegistry[a];if(c&&c.length){var b=b||{};b.type=a;for(var d=0;d<c.length;d++)c[d](b)}},d.on=d.addEventListener=function(a,b){this._eventRegistry=this._eventRegistry||{};var c=this._eventRegistry[a];if(!c)var c=this._eventRegistry[a]=[];c.indexOf(b)==-1&&c.push(b)},d.removeListener=d.removeEventListener=function(a,b){this._eventRegistry=this._eventRegistry||{};var c=this._eventRegistry[a];if(c){var d=c.indexOf(b);d!==-1&&c.splice(d,1)}},d.removeAllListeners=function(a){this._eventRegistry&&(this._eventRegistry[a]=[])},b.EventEmitter=d}),define("pilot/oop",["require","exports","module"],function(a,b,c){b.inherits=function(){var a=function(){};return function(b,c){a.prototype=c.prototype,b.super_=c.prototype,b.prototype=new a,b.prototype.constructor=b}}(),b.mixin=function(a,b){for(var c in b)a[c]=b[c]},b.implement=function(a,c){b.mixin(a,c)}}),define("ace/mode/javascript_worker",["require","exports","module","pilot/oop","ace/worker/mirror","ace/worker/jshint","ace/narcissus/jsparse"],function(a,b,c){var d=a("pilot/oop"),e=a("ace/worker/mirror").Mirror,f=a("ace/worker/jshint").JSHINT,g=b.JavaScriptWorker=function(a){e.call(this,a),this.setTimeout(500)};d.inherits(g,e),function(){this.onUpdate=function(){var b=this.doc.getValue();b=b.replace(/^#!.*\n/,"\n");var c=a("ace/narcissus/jsparse");try{c.parse(b)}catch(d){sender.emit("narcissus",{row:d.lineno-1,column:null,text:d.message,type:"error"});return}finally{}f(b,{undef:!1,onevar:!1,passfail:!1}),this.sender.emit("jslint",f.errors)}}.call(g.prototype)}),define("ace/worker/mirror",["require","exports","module","ace/document","pilot/lang"],function(a,b,c){var d=a("ace/document").Document,e=a("pilot/lang"),f=b.Mirror=function(a){this.sender=a;var b=this.doc=new d(""),c=this.deferredUpdate=e.deferredCall(this.onUpdate.bind(this)),f=this;a.on("change",function(a){b.applyDeltas([a.data]),c.schedule(f.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(a){this.$timeout=a},this.setValue=function(a){this.doc.setValue(a),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(a){this.sender.callback(this.doc.getValue(),a)},this.onUpdate=function(){}}).call(f.prototype)}),define("ace/document",["require","exports","module","pilot/oop","pilot/event_emitter","ace/range","ace/anchor"],function(a,b,c){var d=a("pilot/oop"),e=a("pilot/event_emitter").EventEmitter,f=a("ace/range").Range,g=a("ace/anchor").Anchor,h=function(a){this.$lines=[],Array.isArray(a)?this.insertLines(0,a):a.length==0?this.$lines=[""]:this.insert({row:0,column:0},a)};(function(){d.implement(this,e),this.setValue=function(a){var b=this.getLength();this.remove(new f(0,0,b,this.getLine(b-1).length)),this.insert({row:0,column:0},a)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(a,b){return new g(this,a,b)},"aaa".split(/a/).length==0?this.$split=function(a){return a.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(a){return a.split(/\r\n|\r|\n/)},this.$detectNewLine=function(a){var b=a.match(/^.*?(\r?\n)/m);b?this.$autoNewLine=b[1]:this.$autoNewLine="\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";case"auto":return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(a){this.$newLineMode!==a&&(this.$newLineMode=a)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(a){return a=="\r\n"||a=="\r"||a=="\n"},this.getLine=function(a){return this.getLines(a,a+1)[0]||""},this.getLines=function(a,b){return this.$lines.slice(a,b+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(a){if(a.start.row==a.end.row)return this.$lines[a.start.row].substring(a.start.column,a.end.column);var b=[];b.push(this.$lines[a.start.row].substring(a.start.column)),b.push.apply(b,this.getLines(a.start.row+1,a.end.row-1)),b.push(this.$lines[a.end.row].substring(0,a.end.column));return b.join(this.getNewLineCharacter())},this.$clipPosition=function(a){var b=this.getLength();a.row>=b&&(a.row=Math.max(0,b-1),a.column=this.getLine(b-1).length);return a},this.insert=function(a,b){if(b.length==0)return a;a=this.$clipPosition(a),this.getLength()<=1&&this.$detectNewLine(b);var c=this.$split(b),d=c.splice(0,1)[0],e=c.length==0?null:c.splice(c.length-1,1)[0];a=this.insertInLine(a,d),e!==null&&(a=this.insertNewLine(a),a=this.insertLines(a.row,c),a=this.insertInLine(a,e||""));return a},this.insertLines=function(a,b){if(b.length==0)return{row:a,column:0};var c=[a,0];c.push.apply(c,b),this.$lines.splice.apply(this.$lines,c);var d=new f(a,0,a+b.length,0),e={action:"insertLines",range:d,lines:b};this._dispatchEvent("change",{data:e});return d.end},this.insertNewLine=function(a){a=this.$clipPosition(a);var b=this.$lines[a.row]||"";this.$lines[a.row]=b.substring(0,a.column),this.$lines.splice(a.row+1,0,b.substring(a.column,b.length));var c={row:a.row+1,column:0},d={action:"insertText",range:f.fromPoints(a,c),text:this.getNewLineCharacter()};this._dispatchEvent("change",{data:d});return c},this.insertInLine=function(a,b){if(b.length==0)return a;var c=this.$lines[a.row]||"";this.$lines[a.row]=c.substring(0,a.column)+b+c.substring(a.column);var d={row:a.row,column:a.column+b.length},e={action:"insertText",range:f.fromPoints(a,d),text:b};this._dispatchEvent("change",{data:e});return d},this.remove=function(a){a.start=this.$clipPosition(a.start),a.end=this.$clipPosition(a.end);if(a.isEmpty())return a.start;var b=a.start.row,c=a.end.row;if(a.isMultiLine()){var d=a.start.column==0?b:b+1,e=c-1;a.end.column>0&&this.removeInLine(c,0,a.end.column),e>=d&&this.removeLines(d,e),d!=b&&(this.removeInLine(b,a.start.column,this.getLine(b).length),this.removeNewLine(a.start.row))}else this.removeInLine(b,a.start.column,a.end.column);return a.start},this.removeInLine=function(a,b,c){if(b!=c){var d=new f(a,b,a,c),e=this.getLine(a),g=e.substring(b,c),h=e.substring(0,b)+e.substring(c,e.length);this.$lines.splice(a,1,h);var i={action:"removeText",range:d,text:g};this._dispatchEvent("change",{data:i});return d.start}},this.removeLines=function(a,b){var c=new f(a,0,b+1,0),d=this.$lines.splice(a,b-a+1),e={action:"removeLines",range:c,nl:this.getNewLineCharacter(),lines:d};this._dispatchEvent("change",{data:e});return d},this.removeNewLine=function(a){var b=this.getLine(a),c=this.getLine(a+1),d=new f(a,b.length,a+1,0),e=b+c;this.$lines.splice(a,2,e);var g={action:"removeText",range:d,text:this.getNewLineCharacter()};this._dispatchEvent("change",{data:g})},this.replace=function(a,b){if(b.length==0&&a.isEmpty())return a.start;if(b==this.getTextRange(a))return a.end;this.remove(a);if(b)var c=this.insert(a.start,b);else c=a.start;return c},this.applyDeltas=function(a){for(var b=0;b<a.length;b++){var c=a[b],d=f.fromPoints(c.range.start,c.range.end);c.action=="insertLines"?this.insertLines(d.start.row,c.lines):c.action=="insertText"?this.insert(d.start,c.text):c.action=="removeLines"?this.removeLines(d.start.row,d.end.row-1):c.action=="removeText"&&this.remove(d)}},this.revertDeltas=function(a){for(var b=a.length-1;b>=0;b--){var c=a[b],d=f.fromPoints(c.range.start,c.range.end);c.action=="insertLines"?this.removeLines(d.start.row,d.end.row-1):c.action=="insertText"?this.remove(d):c.action=="removeLines"?this.insertLines(d.start.row,c.lines):c.action=="removeText"&&this.insert(d.start,c.text)}}}).call(h.prototype),b.Document=h}),define("ace/range",["require","exports","module"],function(a,b,c){var d=function(a,b,c,d){this.start={row:a,column:b},this.end={row:c,column:d}};(function(){this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(a,b){return this.compare(a,b)==0},this.compare=function(a,b){if(!this.isMultiLine())if(a===this.start.row)return b<this.start.column?-1:b>this.end.column?1:0;if(a<this.start.row)return-1;if(a>this.end.row)return 1;if(this.start.row===a)return b>=this.start.column?0:-1;if(this.end.row===a)return b<=this.end.column?0:1;return 0},this.clipRows=function(a,b){if(this.end.row>b)var c={row:b+1,column:0};if(this.start.row>b)var e={row:b+1,column:0};if(this.start.row<a)var e={row:a,column:0};if(this.end.row<a)var c={row:a,column:0};return d.fromPoints(e||this.start,c||this.end)},this.extend=function(a,b){var c=this.compare(a,b);if(c==0)return this;if(c==-1)var e={row:a,column:b};else var f={row:a,column:b};return d.fromPoints(e||this.start,f||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 d.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new d(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new d(this.start.row,0,this.end.row,0)},this.toScreenRange=function(a){var b=a.documentToScreenPosition(this.start),c=a.documentToScreenPosition(this.end);return new d(b.row,b.column,c.row,c.column)}}).call(d.prototype),d.fromPoints=function(a,b){return new d(a.row,a.column,b.row,b.column)},b.Range=d}),define("ace/anchor",["require","exports","module","pilot/oop","pilot/event_emitter"],function(a,b,c){var d=a("pilot/oop"),e=a("pilot/event_emitter").EventEmitter,f=b.Anchor=function(a,b,c){this.document=a,typeof c=="undefined"?this.setPosition(b.row,b.column):this.setPosition(b,c),this.$onChange=this.onChange.bind(this),a.on("change",this.$onChange)};(function(){d.implement(this,e),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(a){var b=a.data,c=b.range;if(c.start.row!=c.end.row||c.start.row==this.row){if(c.start.row>this.row)return;if(c.start.row==this.row&&c.start.column>this.column)return;var d=this.row,e=this.column;b.action==="insertText"?c.start.row!==d||c.start.column>e?c.start.row!==c.end.row&&c.start.row<d&&(d+=c.end.row-c.start.row):c.start.row===c.end.row?e+=c.end.column-c.start.column:(e-=c.start.column,d+=c.end.row-c.start.row):b.action==="insertLines"?c.start.row<=d&&(d+=c.end.row-c.start.row):b.action=="removeText"?c.start.row==d&&c.start.column<e?c.end.column<e?e=Math.max(0,e-(c.end.column-c.start.column)):e=c.start.column:c.start.row!==c.end.row&&c.start.row<d?(c.end.row==d&&(e=Math.max(0,e-c.end.column)+c.start.column),d-=c.end.row-c.start.row):c.end.row==d&&(d-=c.end.row-c.start.row,e=Math.max(0,e-c.end.column)+c.start.column):b.action=="removeLines"&&(c.start.row<=d&&(c.end.row>d?(d=c.start.row,e=0):d-=c.end.row-c.start.row)),this.setPosition(d,e,!0)}},this.setPosition=function(a,b,c){c?pos={row:a,column:b}:pos=this.$clipPositionToDocument(a,b);if(this.row!=pos.row||this.column!=pos.column){var d={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._dispatchEvent("change",{old:d,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.$clipPositionToDocument=function(a,b){var c={};a<this.document.getLength()?a<0?(c.row=0,c.column=0):(c.row=a,c.column=Math.min(this.document.getLine(c.row).length,Math.max(0,b))):(c.row=Math.max(0,this.document.getLength()-1),c.column=this.document.getLine(c.row).length),b<0&&(c.column=0);return c}}).call(f.prototype)}),define("pilot/lang",["require","exports","module"],function(a,b,c){b.stringReverse=function(a){return a.split("").reverse().join("")},b.stringRepeat=function(a,b){return Array(b+1).join(a)},b.copyObject=function(a){var b={};for(var c in a)b[c]=a[c];return b},b.arrayToMap=function(a){var b={};for(var c=0;c<a.length;c++)b[a[c]]=1;return b},b.arrayRemove=function(a,b){for(var c=0;c<=a.length;c++)b===a[c]&&a.splice(c,1)},b.escapeRegExp=function(a){return a.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},b.deferredCall=function(a){var b=null,c=function(){b=null,a()},d=function(a){b||(b=setTimeout(c,a||0));return d};d.schedule=d,d.call=function(){this.cancel(),a();return d},d.cancel=function(){clearTimeout(b),b=null;return d};return d}}),define("ace/worker/jshint",["require","exports","module"],function(a,b,c){var d=function(){function cT(){function b(){var a=K;bI("[");if(K.id!=="]")for(;;){if(K.id==="(end)")bC("Missing ']' to match '[' from line {a}.",K,a.line);else{if(K.id==="]"){bA("Unexpected comma.",$);break}K.id===","&&bC("Unexpected comma.",K)}cT();if(K.id!==",")break;bI(",")}bI("]")}function a(){var a={},b=K;bI("{");if(K.id!=="}")for(;;){if(K.id==="(end)")bC("Missing '}' to match '{' from line {a}.",K,b.line);else{if(K.id==="}"){bA("Unexpected comma.",$);break}K.id===","?bC("Unexpected comma.",K):K.id!=="(string)"&&bA("Expected a string and instead saw {a}.",K,K.value)}a[K.value]===!0?bA("Duplicate key '{a}'.",K,K.value):K.value==="__proto__"?bA("Stupid key '{a}'.",K,K.value):a[K.value]=!0,bI(),bI(":"),cT();if(K.id!==",")break;bI(",")}bI("}")}switch(K.id){case"{":a();break;case"[":b();break;case"true":case"false":case"null":case"(number)":case"(string)":bI();break;case"-":bI("-"),$.character!==K.from&&bA("Unexpected space after '-'.",$),bK($,K),bI("(number)");break;default:bC("Expected a JSON value.",K)}}function cR(a,b){var c,d=S;S=Object.create(d),v={"(name)":a||'"'+e+'"',"(line)":K.line,"(context)":v,"(breakage)":0,"(loopage)":0,"(scope)":S,"(statement)":b},c=v,$.funct=v,x.push(v),a&&bF(a,"function"),v["(params)"]=cQ(),cm(!1),S=d,v["(last)"]=$.line,v=v["(context)"];return c}function cQ(){var a,b=K,c=[];bI("("),bM();if(K.id===")")bI(")"),bM(Q,$);else for(;;){a=ch(!0),c.push(a),bF(a,"parameter");if(K.id===",")bR();else{bI(")",b),bM(Q,$);return c}}}function cP(){var a=cg(!0);a||(K.id==="(string)"?(a=K.value,N.adsafe&&(a.charAt(0)==="_"||a.charAt(a.length-1)==="_")&&bA("Unexpected {a} in '{b}'.",$,"dangling '_'",a),bI()):K.id==="(number)"&&(a=K.value.toString(),bI()));return a}function cO(){var a,b,c,d,e,f,g,h=N.white,i;bd="html",be="",U=null;for(;;){switch(K.value){case"<":bd="html",bI("<"),b={},f=K,f.identifier||bA("Bad identifier {a}.",f,f.value),d=f.value,N.cap&&(d=d.toLowerCase()),f.name=d,bI(),U||(U=[],cK(d)),g=z[d],typeof g!=="object"&&bC("Unrecognized tag '<{a}>'.",f,d),c=g.empty,f.type=d;for(;;){if(K.id==="/"){bI("/"),K.id!==">"&&bA("Expected '{a}' and instead saw '{b}'.",K,">",K.value);break}if(K.id&&K.id.substr(0,1)===">")break;K.identifier||((K.id==="(end)"||K.id==="(error)")&&bC("Missing '>'.",K),bA("Bad identifier.")),N.white=!0,bN($,K),a=K.value,N.white=h,bI(),!N.cap&&a!==a.toLowerCase()&&bA("Attribute '{a}' not all lower case.",K,a),a=a.toLowerCase(),be="",bw(b,a)&&bA("Attribute '{a}' repeated.",K,a),a.slice(0,2)==="on"?(N.on||bA("Avoid HTML event handlers."),bd="scriptstring",bI("="),e=K.id,e!=='"'&&e!=="'"&&bC("Missing quote."),be=e,i=N.white,N.white=!1,bI(e),ck(),cl("on"),N.white=i,K.id!==e&&bC("Missing close quote on script attribute."),bd="html",be="",bI(e),g=!1):a==="style"?(bd="scriptstring",bI("="),e=K.id,e!=='"'&&e!=="'"&&bC("Missing quote."),bd="styleproperty",be=e,bI(e),cF(),bd="html",be="",bI(e),g=!1):K.id==="="?(bI("="),g=K.value,!K.identifier&&K.id!=='"'&&K.id!=="'"&&K.type!=="(string)"&&K.type!=="(number)"&&K.type!=="(color)"&&bA("Expected an attribute value and instead saw '{a}'.",$,a),bI()):g=!0,b[a]=g,cL(d,a,g)}cM(d,b),c||U.push(f),bd="outer",bI(">");break;case"</":bd="html",bI("</"),K.identifier||bA("Bad identifier."),d=K.value,N.cap&&(d=d.toLowerCase()),bI(),U||bC("Unexpected '{a}'.",K,cN(d)),f=U.pop(),f||bC("Unexpected '{a}'.",K,cN(d)),f.name!==d&&bC("Expected '{a}' and instead saw '{b}'.",K,cN(f.name),cN(d)),K.id!==">"&&bC("Missing '{a}'.",K,">"),bd="outer",bI(">");break;case"<!":N.safe&&bA("ADsafe HTML violation."),bd="html";for(;;){bI();if(K.id===">"||K.id==="(end)")break;K.value.indexOf("--")>=0&&bC("Unexpected --."),K.value.indexOf("<")>=0&&bC("Unexpected <."),K.value.indexOf(">")>=0&&bC("Unexpected >.")}bd="outer",bI(">");break;case"(end)":return;default:K.id==="(end)"?bC("Missing '{a}'.",K,"</"+U[U.length-1].value+">"):bI()}if(U&&U.length===0&&(N.adsafe||!N.fragment||K.id==="(end)"))break}K.id!=="(end)"&&bC("Unexpected material after the end.")}function cN(a){return"</"+a+">"}function cM(d,e){var g,h=z[d],i;T=!1,h||bC("Unrecognized tag '<{a}>'.",K,d===d.toLowerCase()?d:d+" (capitalization error)");if(U.length>0){d==="html"&&bC("Too many <html> tags.",$),i=h.parent;if(i)i.indexOf(" "+U[U.length-1].name+" ")<0&&bC("A '<{a}>' must be within '<{b}>'.",$,d,i);else if(!N.adsafe&&!N.fragment){g=U.length;do g<=0&&bC("A '<{a}>' must be within '<{b}>'.",$,d,"body"),g-=1;while(U[g].name!=="body")}}switch(d){case"div":N.adsafe&&U.length===1&&!a&&bA("ADSAFE violation: missing ID_.");break;case"script":bd="script",bI(">"),D=K.from,e.lang&&bA("lang is deprecated.",$),N.adsafe&&U.length!==1&&bA("ADsafe script placement violation.",$),e.src?(N.adsafe&&(!b||!f[e.src])&&bA("ADsafe unapproved script source.",$),e.type&&bA("type is unnecessary.",$)):(c&&bC("ADsafe script violation.",$),ck(),cl("script")),bd="html",bI("</"),!K.identifier&&K.value!=="script"&&bA("Expected '{a}' and instead saw '{b}'.",K,"script",K.value),bI(),bd="outer";break;case"style":bd="style",bI(">"),cJ(),bd="html",bI("</"),!K.identifier&&K.value!=="style"&&bA("Expected '{a}' and instead saw '{b}'.",K,"style",K.value),bI(),bd="outer";break;case"input":switch(e.type){case"radio":case"checkbox":case"button":case"reset":case"submit":break;case"text":case"file":case"password":case"file":case"hidden":case"image":N.adsafe&&e.autocomplete!=="off"&&bA("ADsafe autocomplete violation.");break;default:bA("Bad input type.")}break;case"applet":case"body":case"embed":case"frame":case"frameset":case"head":case"iframe":case"noembed":case"noframes":case"object":case"param":N.adsafe&&bA("ADsafe violation: Disallowed tag: "+d)}}function cL(b,c,d){var e,f;c==="id"?(e=typeof d==="string"?d.toUpperCase():"",A[e]===!0&&bA("Duplicate id='{a}'.",K,d),/^[A-Za-z][A-Za-z0-9._:\-]*$/.test(d)?N.adsafe&&(a?d.slice(0,a.length)!==a?bA("ADsafe violation: An id must have a '{a}' prefix",K,a):/^[A-Z]+_[A-Z]+$/.test(d)||bA("ADSAFE violation: bad id."):(a=d,/^[A-Z]+_$/.test(d)||bA("ADSAFE violation: bad id."))):bA("Bad id: '{a}'.",K,d),f=d.search(bt),f>=0&&bA("Unexpected character '{a}' in {b}.",$,d.charAt(f),c),A[e]=!0):c==="class"||c==="type"||c==="name"?(f=d.search(bs),f>=0&&bA("Unexpected character '{a}' in {b}.",$,d.charAt(f),c),A[e]=!0):c!=="href"&&c!=="background"&&c!=="content"&&c!=="data"&&c.indexOf("src")<0&&c.indexOf("url")<0?c==="for"?N.adsafe&&(a?d.slice(0,a.length)!==a?bA("ADsafe violation: An id must have a '{a}' prefix",K,a):/^[A-Z]+_[A-Z]+$/.test(d)||bA("ADSAFE violation: bad id."):bA("ADSAFE violation: bad id.")):c==="name"&&(N.adsafe&&d.indexOf("_")>=0&&bA("ADsafe name violation.")):(N.safe&&bp.test(d)&&bC("ADsafe URL violation."),_.push(d))}function cK(a){a!=="html"&&!N.fragment&&(a==="div"&&N.adsafe?bC("ADSAFE: Use the fragment option."):bC("Expected '{a}' and instead saw '{b}'.",$,"html",a)),N.adsafe&&(a==="html"&&bC("Currently, ADsafe does not operate on whole HTML documents. It operates on <div> fragments and .js files.",$),N.fragment?a!=="div"&&bC("ADsafe violation: Wrap the widget in a div.",$):bC("Use the fragment option.",$)),N.browser=!0,by()}function cJ(){var a;while(K.id==="@"){a=bH(),bI("@");if(K.identifier)switch(K.value){case"import":bI(),cB()||(bA("Expected '{a}' and instead saw '{b}'.",K,"url",K.value),bI()),bI(";");break;case"media":bI();for(;;){(!K.identifier||r[K.value]===!0)&&bC("Expected a CSS media type, and instead saw '{a}'.",K,K.id),bI();if(K.id!==",")break;bI(",")}bI("{"),cI(),bI("}");break;default:bA("Expected an at-rule, and instead saw @{a}.",K,K.value)}else bA("Expected an at-rule, and instead saw '{a}'.",K,K.value)}cI()}function cI(){while(K.id!=="</"&&K.id!=="(end)")cH(),bd="styleproperty",K.id===";"?bI(";"):(bI("{"),cF(),bd="style",bI("}"))}function cH(){K.id==="{"&&bA("Expected a style pattern, and instead saw '{a}'.",K,K.id);for(;;){cG();if(K.id==="</"||K.id==="{"||K.id==="(end)")return"";K.id===","&&bR()}}function cG(){if(K.identifier)bw(z,N.cap?K.value.toLowerCase():K.value)||bA("Expected a tagName, and instead saw {a}.",K,K.value),bI();else switch(K.id){case">":case"+":bI(),cG();break;case":":bI(":");switch(K.value){case"active":case"after":case"before":case"checked":case"disabled":case"empty":case"enabled":case"first-child":case"first-letter":case"first-line":case"first-of-type":case"focus":case"hover":case"last-child":case"last-of-type":case"link":case"only-of-type":case"root":case"target":case"visited":bI();break;case"lang":bI(),bI("("),K.identifier||bA("Expected a lang code, and instead saw :{a}.",K,K.value),bI(")");break;case"nth-child":case"nth-last-child":case"nth-last-of-type":case"nth-of-type":bI(),bI("("),cE(),bI(")");break;case"not":bI(),bI("("),K.id===":"&&bH(0).value==="not"&&bA("Nested not."),cG(),bI(")");break;default:bA("Expected a pseudo, and instead saw :{a}.",K,K.value)}break;case"#":bI("#"),K.identifier||bA("Expected an id, and instead saw #{a}.",K,K.value),bI();break;case"*":bI("*");break;case".":bI("."),K.identifier||bA("Expected a class, and instead saw #.{a}.",K,K.value),bI();break;case"[":bI("["),K.identifier||bA("Expected an attribute, and instead saw [{a}].",K,K.value),bI();if(K.id==="="||K.value==="~="||K.value==="$="||K.value==="|="||K.id==="*="||K.id==="^=")bI(),K.type!=="(string)"&&bA("Expected a string, and instead saw {a}.",K,K.value),bI();bI("]");break;default:bC("Expected a CSS selector, and instead saw {a}.",K,K.value)}}function cF(){var a;for(;;){if(K.id==="}"||K.id==="(end)"||be&&K.id===be)return;while(K.id===";")bA("Misplaced ';'."),bI(";");a=cC(),bI(":"),K.identifier&&K.value==="inherit"?bI():cD(a)||(bA("Unexpected token '{a}'.",K,K.value),bI()),K.id==="!"&&(bI("!"),bK(),K.identifier&&K.value==="important"?bI():bA("Expected '{a}' and instead saw '{b}'.",K,"important",K.value)),K.id==="}"||K.id===be?bA("Missing '{a}'.",K,";"):bI(";")}}function cE(){if(K.id==="(number)")bI(),K.value==="n"&&K.identifier&&(bK(),bI(),K.id==="+"&&(bK(),bI("+"),bK(),bI("(number)")));else{switch(K.value){case"odd":case"even":if(K.identifier){bI();return}}bA("Unexpected token '{a}'.",K,K.value)}}function cD(a){var b=0,c,d,e,f,g=0,h;switch(typeof a){case"function":return a();case"string":if(K.identifier&&K.value===a){bI();return!0}return!1}for(;;){if(b>=a.length)return!1;h=a[b],b+=1;if(h===!0)break;typeof h==="number"?(c=h,h=a[b],b+=1):c=1,e=!1;while(c>0)if(cD(h))e=!0,c-=1;else break;if(e)return!0}g=b,d=[];for(;;){f=!1;for(b=g;b<a.length;b+=1)if(!d[b])if(cD(l[a[b]])){e=!0,f=!0,d[b]=!0;break}if(!f)return e}}function cC(){var a;while(K.id==="*"||K.id==="#"||K.value==="_")N.css||bA("Unexpected '{a}'.",K,K.value),bI();if(K.id==="-"){N.css||bA("Unexpected '{a}'.",K,K.value),bI("-"),K.identifier||bA("Expected a non-standard style attribute and instead saw '{a}'.",K,K.value),bI();return m}K.identifier?bw(l,K.value)?a=l[K.value]:(a=m,N.css||bA("Unrecognized style attribute '{a}'.",K,K.value)):bA("Excepted a style attribute, and instead saw '{a}'.",K,K.value),bI();return a}function cB(){var a,b;if(K.identifier&&K.value==="url"){K=bE.range("(",")"),b=K.value,a=b.charAt(0);if(a==='"'||a==="'")b.slice(-1)!==a?bA("Bad url string."):(b=b.slice(1,-1),b.indexOf(a)>=0&&bA("Bad url string."));b||bA("Missing url."),bI(),N.safe&&bp.test(b)&&bC("ADsafe URL violation."),_.push(b);return!0}return!1}function cA(){var a;if(K.identifier&&K.value==="rect"){bI(),bI("(");for(a=0;a<4;a+=1)if(!ct()){bA("Expected a number and instead saw '{a}'.",K,K.value);break}bI(")");return!0}return!1}function cz(){if(K.identifier&&K.value==="counter"){bI(),bI("("),bI(),K.id===","&&(bR(),K.type!=="(string)"&&bA("Expected a string and instead saw '{a}'.",K,K.value),bI()),bI(")");return!0}if(K.identifier&&K.value==="counters"){bI(),bI("("),K.identifier||bA("Expected a name and instead saw '{a}'.",K,K.value),bI(),K.id===","&&(bR(),K.type!=="(string)"&&bA("Expected a string and instead saw '{a}'.",K,K.value),bI()),K.id===","&&(bR(),K.type!=="(string)"&&bA("Expected a string and instead saw '{a}'.",K,K.value),bI()),bI(")");return!0}return!1}function cy(){while(K.id!==";"){!cp()&&!cr()&&bA("Expected a name and instead saw '{a}'.",K,K.value);if(K.id!==",")return!0;bR()}}function cx(){if(K.identifier&&K.value==="attr"){bI(),bI("("),K.identifier||bA("Expected a name and instead saw '{a}'.",K,K.value),bI(),bI(")");return!0}return!1}function cw(){if(!K.identifier)return ct();if(K.value==="auto"){bI();return!0}}function cv(){if(!K.identifier)return ct();switch(K.value){case"thin":case"medium":case"thick":bI();return!0}}function cu(){K.id==="-"&&(bI("-"),bK());if(K.type==="(number)"){bI(),K.type!=="(string)"&&q[K.value]===!0&&(bK(),bI());return!0}return!1}function ct(){K.id==="-"&&(bI("-"),bK(),bQ());if(K.type==="(number)"){bI(),K.type!=="(string)"&&q[K.value]===!0?(bK(),bI()):+$.value!==0&&bA("Expected a linear unit and instead saw '{a}'.",K,K.value);return!0}return!1}function cs(){var a,b,c;if(K.identifier){c=K.value;if(c==="rgb"||c==="rgba"){bI(),bI("(");for(a=0;a<3;a+=1)a&&bI(","),b=K.value,K.type!=="(number)"||b<0?(bA("Expected a positive number and instead saw '{a}'",K,b),bI()):(bI(),K.id==="%"?(bI("%"),b>100&&bA("Expected a percentage and instead saw '{a}'",$,b)):b>255&&bA("Expected a small number and instead saw '{a}'",$,b));c==="rgba"&&(bI(","),b=+K.value,(K.type!=="(number)"||b<0||b>1)&&bA("Expected a number between 0 and 1 and instead saw '{a}'",K,b),bI(),K.id==="%"&&(bA("Unexpected '%'."),bI("%"))),bI(")");return!0}if(n[K.value]===!0){bI();return!0}}else if(K.type==="(color)"){bI();return!0}return!1}function cr(){if(K.type==="(string)"){bI();return!0}}function cq(){K.id==="-"&&(bI("-"),bK(),bQ());if(K.type==="(number)"){bI("(number)");return!0}}function cp(){if(K.identifier){bI();return!0}}function co(a){var b=a.value,c=a.line,d=B[b];typeof d==="function"&&(d=!1),d?d[d.length-1]!==c&&d.push(c):(d=[c],B[b]=d)}function cn(a){J&&typeof J[a]!=="boolean"&&bA("Unexpected /*member '{a}'.",$,a),typeof I[a]==="number"?I[a]+=1:I[a]=1}function cm(a,b){var c,d=C,e=D,f=X,g=S,h;C=a,S=Object.create(S),bN($,K),h=K;if(K.id==="{"){bI("{");if(K.id!=="}"||$.line!==K.line){D+=N.indent;while(!a&&K.from>D)D+=N.indent;!a&&!ck()&&!f&&N.strict&&v["(context)"]["(global)"]&&bA('Missing "use strict" statement.'),c=cl(),X=f,D-=N.indent,bP()}bI("}",h),D=e}else a?((!b||N.curly)&&bA("Expected '{a}' and instead saw '{b}'.",K,"{",K.value),M=!0,c=[cj()],M=!1):bC("Expected '{a}' and instead saw '{b}'.",K,"{",K.value);v["(verb)"]=null,S=g,C=d,a&&N.noempty&&(!c||c.length===0)&&bA("Empty block.");return c}function cl(c){var d=[],e,f;if(N.adsafe)switch(c){case"script":b||(K.value!=="ADSAFE"||bH(0).id!=="."||bH(1).value!=="id"&&bH(1).value!=="go")&&bC("ADsafe violation: Missing ADSAFE.id or ADSAFE.go.",K),K.value==="ADSAFE"&&bH(0).id==="."&&bH(1).value==="id"&&(b&&bC("ADsafe violation.",K),bI("ADSAFE"),bI("."),bI("id"),bI("("),K.value!==a&&bC("ADsafe violation: id does not match.",K),bI("(string)"),bI(")"),bI(";"),b=!0);break;case"lib":if(K.value==="ADSAFE"){bI("ADSAFE"),bI("."),bI("lib"),bI("("),bI("(string)"),bR(),e=bJ(0),e.id!=="function"&&bC("The second argument to lib must be a function.",e),f=e.funct["(params)"],f=f&&f.join(", "),f&&f!=="lib"&&bC("Expected '{a}' and instead saw '{b}'.",e,"(lib)","("+f+")"),bI(")"),bI(";");return d}bC("ADsafe lib violation.")}while(!K.reach&&K.id!=="(end)")K.id===";"?(bA("Unnecessary semicolon."),bI(";")):d.push(cj());return d}function ck(){if(K.value==="use strict"){X&&bA('Unnecessary "use strict".'),bI(),bI(";"),X=!0,N.newcap=!0,N.undef=!0;return!0}return!1}function cj(a){var b=D,c,d=S,e=K;if(e.id===";")bA("Unnecessary semicolon.",e),bI(";");else{e.identifier&&!e.reserved&&bH().id===":"&&(bI(),bI(":"),S=Object.create(d),bF(e.value,"label"),K.labelled||bA("Label '{a}' on {b} statement.",K,e.value,K.value),bo.test(e.value+":")&&bA("Label '{a}' looks like a javascript url.",e,e.value),K.label=e.value,e=K),a||bP(),c=bJ(0,!0),e.block||(c&&c.exps?N.nonew&&c.id==="("&&c.left.id==="new"&&bA("Do not use 'new' for side effects."):bA("Expected an assignment or function call and instead saw an expression.",$),K.id!==";"?bB("Missing semicolon.",$.line,$.from+$.value.length):(bK($,K),bI(";"),bN($,K))),D=b,S=d;return c}}function ci(a){var b=0,c;if(K.id===";"&&!M)for(;;){c=bH(b);if(c.reach)return;if(c.id!=="(endline)"){if(c.id==="function"){bA("Inner functions should be listed at the top of the outer function.",c);break}bA("Unreachable '{a}' after '{b}'.",c,c.value,a);break}b+=1}}function ch(a){var b=cg(a);if(b)return b;$.id==="function"&&K.id==="("?bA("Missing name in function statement."):bC("Expected an identifier and instead saw '{a}'.",K,K.value)}function cg(a){if(K.identifier){bI(),N.safe&&h[$.value]?bA("ADsafe violation: '{a}'.",$,$.value):$.reserved&&!N.es5&&((!a||$.value!="undefined")&&bA("Expected an identifier and instead saw '{a}' (a reserved word).",$,$.id));return $.value}}function cf(a,b){var c=bS(a,150);c.led=function(a){N.plusplus?bA("Unexpected use of '{a}'.",this,this.id):(!a.identifier||a.reserved)&&a.id!=="."&&a.id!=="["&&bA("Bad operand.",this),this.left=a;return this};return c}function ce(a){bS(a,20).exps=!0;return b_(a,function(a,b){N.bitwise&&bA("Unexpected use of '{a}'.",b,b.id),bN(Q,$),bN($,K);if(a){if(a.id==="."||a.id==="["||a.identifier&&!a.reserved){bJ(19);return b}a===Y["function"]&&bA("Expected an identifier in an assignment, and instead saw a function invocation.",$);return b}bC("Bad assignment.",b)},20)}function cd(a,b,c){var d=bS(a,c);bW(d),d.led=typeof b==="function"?b:function(a){N.bitwise&&bA("Unexpected use of '{a}'.",this,this.id),this.left=a,this.right=bJ(c);return this};return d}function cc(a,b){bS(a,20).exps=!0;return b_(a,function(a,b){var c;b.left=a,O[a.value]===!1&&S[a.value]["(global)"]===!0?bA("Read only.",a):a["function"]&&bA("'{a}' is a function.",a,a.value);if(N.safe){c=a;do typeof O[c.value]==="boolean"&&bA("ADsafe violation.",c),c=c.left;while(c)}if(a){if(a.id==="."||a.id==="["){(!a.left||a.left.value==="arguments")&&bA("Bad assignment.",b),b.right=bJ(19);return b}if(a.identifier&&!a.reserved){v[a.value]==="exception"&&bA("Do not assign to the exception parameter.",a),b.right=bJ(19);return b}a===Y["function"]&&bA("Expected an identifier in an assignment and instead saw a function invocation.",$)}bC("Bad assignment.",b)},20)}function cb(a){return a&&(a.type==="(number)"&&+a.value===0||a.type==="(string)"&&a.value===""||a.type==="null"&&!N.boss||a.type==="true"||a.type==="false"||a.type==="undefined")}function ca(a,b){var c=bS(a,100);c.led=function(a){bO(Q,$),bN($,K);var c=bJ(100);a&&a.id==="NaN"||c&&c.id==="NaN"?bA("Use the isNaN function to compare with NaN.",this):b&&b.apply(this,[a,c]),a.id==="!"&&bA("Confusing use of '{a}'.",a,"!"),c.id==="!"&&bA("Confusing use of '{a}'.",a,"!"),this.left=a,this.right=c;return this};return c}function b_(a,b,c,d){var e=bS(a,c);bW(e),e.led=function(a){d||(bO(Q,$),bN($,K));if(typeof b==="function")return b(a,this);this.left=a,this.right=bJ(c);return this};return e}function b$(a,b){return bZ(a,function(){typeof b==="function"&&b(this);return this})}function bZ(a,b){var c=bY(a,b);c.identifier=c.reserved=!0;return c}function bY(a,b){var c=bT(a);c.type=a,c.nud=b;return c}function bX(a,b){var c=bS(a,150);bW(c),c.nud=typeof b==="function"?b:function(){this.right=bJ(150),this.arity="unary";if(this.id==="++"||this.id==="--")N.plusplus?bA("Unexpected use of '{a}'.",this,this.id):(!this.right.identifier||this.right.reserved)&&this.right.id!=="."&&this.right.id!=="["&&bA("Bad operand.",this);return this};return c}function bW(a){var b=a.id.charAt(0);if(b>="a"&&b<="z"||b>="A"&&b<="Z")a.identifier=a.reserved=!0;return a}function bV(a,b){var c=bU(a,b);c.block=!0;return c}function bU(a,b){var c=bT(a);c.identifier=c.reserved=!0,c.fud=b;return c}function bT(a){return bS(a,0)}function bS(a,b){var c=Y[a];if(!c||typeof c!=="object")Y[a]=c={id:a,lbp:b,value:a};return c}function bR(){$.line!==K.line?N.laxbreak||bA("Bad line breaking before '{a}'.",$,K.id):$.character!==K.from&&N.white&&bA("Unexpected space after '{a}'.",K,$.value),bI(","),bN($,K)}function bQ(a){a=a||$,a.line!==K.line&&bA("Line breaking error '{a}'.",a,a.value)}function bP(a){var b;N.white&&K.id!=="(end)"&&(b=D+(a||0),K.from!==b&&bA("Expected '{a}' to have an indentation at {b} instead at {c}.",K,K.value,b,K.from))}function bO(a,b){a=a||$,b=b||K,N.laxbreak||a.line===b.line?N.white&&(a=a||$,b=b||K,a.character===b.from&&bA("Missing space after '{a}'.",K,a.value)):bA("Bad line breaking before '{a}'.",b,b.id)}function bN(a,b){N.white&&(a=a||$,b=b||K,a.line===b.line&&a.character===b.from&&bA("Missing space after '{a}'.",K,a.value))}function bM(a,b){a=a||$,b=b||K,N.white&&!a.comment&&(a.line===b.line&&bK(a,b))}function bL(a,b){a=a||$,b=b||K,N.white&&(a.character!==b.from||a.line!==b.line)&&bA("Unexpected space before '{a}'.",b,b.value)}function bK(a,b){a=a||$,b=b||K;if(N.white||bd==="styleproperty"||bd==="style")a.character!==b.from&&a.line===b.line&&bA("Unexpected space after '{a}'.",b,a.value)}function bJ(a,b){var c;K.id==="(end)"&&bC("Unexpected early end of program.",$),bI(),N.safe&&typeof O[$.value]==="boolean"&&(K.id!=="("&&K.id!==".")&&bA("ADsafe violation.",$),b&&(e="anonymous",v["(verb)"]=$.value);if(b===!0&&$.fud)c=$.fud();else{if($.nud)c=$.nud();else{if(K.type==="(number)"&&$.id==="."){bA("A leading decimal point can be confused with a dot: '.{a}'.",$,K.value),bI();return $}bC("Expected an identifier and instead saw '{a}'.",$,$.id)}while(a<K.lbp)bI(),$.led?c=$.led(c):bC("Expected an operator and instead saw '{a}'.",$,$.id)}return c}function bI(a,b){switch($.id){case"(number)":K.id==="."&&bA("A dot following a number can be confused with a decimal point.",$);break;case"-":(K.id==="-"||K.id==="--")&&bA("Confusing minusses.");break;case"+":(K.id==="+"||K.id==="++")&&bA("Confusing plusses.")}if($.type==="(string)"||$.identifier)e=$.value;a&&K.id!==a&&(b?K.id==="(end)"?bA("Unmatched '{a}'.",b,b.id):bA("Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",K,a,b.id,b.line,K.value):(K.type!=="(identifier)"||K.value!==a)&&bA("Expected '{a}' and instead saw '{b}'.",K,a,K.value)),Q=$,$=K;for(;;){K=H.shift()||bE.token();if(K.id==="(end)"||K.id==="(error)")return;if(K.type==="special")bG();else if(K.id!=="(endline)")break}}function bH(a){var b=a||0,c=0,d;while(c<=b)d=H[c],d||(d=H[c]=bE.token()),c+=1;return d}function bG(){var a,b,c,d=K.value,e,f;switch(d){case"*/":bC("Unbegun comment.");break;case"/*members":case"/*member":d="/*members",J||(J={}),b=J;break;case"/*jshint":N.safe&&bA("ADsafe restriction."),b=N,c=i;break;case"/*global":N.safe&&bA("ADsafe restriction."),b=O;break;default:bC("What?")}e=bE.token();loop:for(;;){for(;;){if(e.type==="special"&&e.value==="*/")break loop;if(e.id!=="(endline)"&&e.id!==",")break;e=bE.token()}e.type!=="(string)"&&e.type!=="(identifier)"&&d!=="/*members"&&bC("Bad option.",e),f=bE.token(),f.id===":"?(f=bE.token(),b===J&&bC("Expected '{a}' and instead saw '{b}'.",e,"*/",":"),e.value==="indent"&&d==="/*jshint"?(a=+f.value,(typeof a!=="number"||!isFinite(a)||a<=0||Math.floor(a)!==a)&&bC("Expected a small integer and instead saw '{a}'.",f,f.value),b.white=!0,b.indent=a):e.value==="maxerr"&&d==="/*jshint"?(a=+f.value,(typeof a!=="number"||!isFinite(a)||a<=0||Math.floor(a)!==a)&&bC("Expected a small integer and instead saw '{a}'.",f,f.value),b.maxerr=a):e.value==="maxlen"&&d==="/*jshint"?(a=+f.value,(typeof a!=="number"||!isFinite(a)||a<=0||Math.floor(a)!==a)&&bC("Expected a small integer and instead saw '{a}'.",f,f.value),b.maxlen=a):f.value==="true"?b[e.value]=!0:f.value==="false"?b[e.value]=!1:bC("Bad option value.",f),e=bE.token()):(d==="/*jshint"&&bC("Missing option value.",e),b[e.value]=!1,e=f)}c&&by()}function bF(a,b){N.safe&&v["(global)"]&&typeof O[a]!=="boolean"?bA("ADsafe global: "+a+".",$):a==="hasOwnProperty"&&bA("'hasOwnProperty' is a really bad name."),bw(v,a)&&!v["(global)"]&&bA(v[a]===!0?"'{a}' was used before it was defined.":"'{a}' is already defined.",K,a),v[a]=b,v["(global)"]?(y[a]=v,bw(B,a)&&(bA("'{a}' was used before it was defined.",K,a),delete B[a])):S[a]=v}function bD(a,b,c,d,e,f,g){return bC(a,{line:b,from:c},d,e,f,g)}function bC(a,b,c,d,e,f){var g=bA(a,b,c,d,e,f);bz("Stopping, unable to continue.",g.line,g.character)}function bB(a,b,c,d,e,f,g){return bA(a,{line:b,from:c},d,e,f,g)}function bA(a,b,c,e,f,g){var h,i,j;b=b||K,b.id==="(end)"&&(b=$),i=b.line||0,h=b.from||0,j={id:"(error)",raw:a,evidence:G[i-1]||"",line:i,character:h,a:c,b:e,c:f,d:g},j.reason=a.supplant(j),d.errors.push(j),N.passfail&&bz("Stopping. ",i,h),ba+=1,ba>=N.maxerr&&bz("Too many errors.",i,h);return j}function bz(a,b,c){throw{name:"JSHintError",line:b,character:c,message:a+" ("+Math.floor(b/G.length*100)+"% scanned)."}}function by(){N.safe||(N.couch&&bx(O,k),N.rhino&&bx(O,R),N.node&&bx(O,L),N.devel&&bx(O,t),N.browser&&bx(O,j),N.jquery&&bx(O,F),N.windows&&bx(O,bc),N.widget&&bx(O,bb))}function bx(a,b){var c;for(c in b)bw(b,c)&&(a[c]=b[c])}function bw(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function bv(){}"use strict";var a,b,c,e,f,g={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},h={arguments:!0,callee:!0,caller:!0,constructor:!0,eval:!0,prototype:!0,stack:!0,unwatch:!0,valueOf:!0,watch:!0},i={adsafe:!0,bitwise:!0,boss:!0,browser:!0,cap:!0,couch:!0,css:!0,curly:!0,debug:!0,devel:!0,eqeqeq:!0,es5:!0,evil:!0,forin:!0,fragment:!0,immed:!0,jquery:!0,laxbreak:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nomen:!0,on:!0,onevar:!0,passfail:!0,plusplus:!0,regexp:!0,rhino:!0,undef:!0,safe:!0,windows:!0,strict:!0,sub:!0,white:!0,widget:!0},j={addEventListener:!1,applicationCache:!1,blur:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,defaultStatus:!1,document:!1,event:!1,FileReader:!1,focus:!1,frames:!1,getComputedStyle:!1,history:!1,Image:!1,length:!1,localStorage:!1,location:!1,moveBy:!1,moveTo:!1,name:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,setInterval:!1,setTimeout:!1,status:!1,top:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1},k={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1},l,m,n={aliceblue:!0,antiquewhite:!0,aqua:!0,aquamarine:!0,azure:!0,beige:!0,bisque:!0,black:!0,blanchedalmond:!0,blue:!0,blueviolet:!0,brown:!0,burlywood:!0,cadetblue:!0,chartreuse:!0,chocolate:!0,coral:!0,cornflowerblue:!0,cornsilk:!0,crimson:!0,cyan:!0,darkblue:!0,darkcyan:!0,darkgoldenrod:!0,darkgray:!0,darkgreen:!0,darkkhaki:!0,darkmagenta:!0,darkolivegreen:!0,darkorange:!0,darkorchid:!0,darkred:!0,darksalmon:!0,darkseagreen:!0,darkslateblue:!0,darkslategray:!0,darkturquoise:!0,darkviolet:!0,deeppink:!0,deepskyblue:!0,dimgray:!0,dodgerblue:!0,firebrick:!0,floralwhite:!0,forestgreen:!0,fuchsia:!0,gainsboro:!0,ghostwhite:!0,gold:!0,goldenrod:!0,gray:!0,green:!0,greenyellow:!0,honeydew:!0,hotpink:!0,indianred:!0,indigo:!0,ivory:!0,khaki:!0,lavender:!0,lavenderblush:!0,lawngreen:!0,lemonchiffon:!0,lightblue:!0,lightcoral:!0,lightcyan:!0,lightgoldenrodyellow:!0,lightgreen:!0,lightpink:!0,lightsalmon:!0,lightseagreen:!0,lightskyblue:!0,lightslategray:!0,lightsteelblue:!0,lightyellow:!0,lime:!0,limegreen:!0,linen:!0,magenta:!0,maroon:!0,mediumaquamarine:!0,mediumblue:!0,mediumorchid:!0,mediumpurple:!0,mediumseagreen:!0,mediumslateblue:!0,mediumspringgreen:!0,mediumturquoise:!0,mediumvioletred:!0,midnightblue:!0,mintcream:!0,mistyrose:!0,moccasin:!0,navajowhite:!0,navy:!0,oldlace:!0,olive:!0,olivedrab:!0,orange:!0,orangered:!0,orchid:!0,palegoldenrod:!0,palegreen:!0,paleturquoise:!0,palevioletred:!0,papayawhip:!0,peachpuff:!0,peru:!0,pink:!0,plum:!0,powderblue:!0,purple:!0,red:!0,rosybrown:!0,royalblue:!0,saddlebrown:!0,salmon:!0,sandybrown:!0,seagreen:!0,seashell:!0,sienna:!0,silver:!0,skyblue:!0,slateblue:!0,slategray:!0,snow:!0,springgreen:!0,steelblue:!0,tan:!0,teal:!0,thistle:!0,tomato:!0,turquoise:!0,violet:!0,wheat:!0,white:!0,whitesmoke:!0,yellow:!0,yellowgreen:!0,activeborder:!0,activecaption:!0,appworkspace:!0,background:!0,buttonface:!0,buttonhighlight:!0,buttonshadow:!0,buttontext:!0,captiontext:!0,graytext:!0,highlight:!0,highlighttext:!0,inactiveborder:!0,inactivecaption:!0,inactivecaptiontext:!0,infobackground:!0,infotext:!0,menu:!0,menutext:!0,scrollbar:!0,threeddarkshadow:!0,threedface:!0,threedhighlight:!0,threedlightshadow:!0,threedshadow:!0,window:!0,windowframe:!0,windowtext:!0},o,p,q={"%":!0,cm:!0,em:!0,ex:!0,"in":!0,mm:!0,pc:!0,pt:!0,px:!0},r,s,t={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},u={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"/":"\\/","\\":"\\\\"},v,w=["closure","exception","global","label","outer","unused","var"],x,y,z={a:{},abbr:{},acronym:{},address:{},applet:{},area:{empty:!0,parent:" map "},article:{},aside:{},audio:{},b:{},base:{empty:!0,parent:" head "},bdo:{},big:{},blockquote:{},body:{parent:" html noframes "},br:{empty:!0},button:{},canvas:{parent:" body p div th td "},caption:{parent:" table "},center:{},cite:{},code:{},col:{empty:!0,parent:" table colgroup "},colgroup:{parent:" table "},command:{parent:" menu "},datalist:{},dd:{parent:" dl "},del:{},details:{},dialog:{},dfn:{},dir:{},div:{},dl:{},dt:{parent:" dl "},em:{},embed:{},fieldset:{},figure:{},font:{},footer:{},form:{},frame:{empty:!0,parent:" frameset "},frameset:{parent:" html frameset "},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{parent:" html "},header:{},hgroup:{},hr:{empty:!0},"hta:application":{empty:!0,parent:" head "},html:{parent:"*"},i:{},iframe:{},img:{empty:!0},input:{empty:!0},ins:{},kbd:{},keygen:{},label:{},legend:{parent:" details fieldset figure "},li:{parent:" dir menu ol ul "},link:{empty:!0,parent:" head "},map:{},mark:{},menu:{},meta:{empty:!0,parent:" head noframes noscript "},meter:{},nav:{},noframes:{parent:" html body "},noscript:{parent:" body head noframes "},object:{},ol:{},optgroup:{parent:" select "},option:{parent:" optgroup select "},output:{},p:{},param:{empty:!0,parent:" applet object "},pre:{},progress:{},q:{},rp:{},rt:{},ruby:{},samp:{},script:{empty:!0,parent:" body div frame head iframe p pre span "},section:{},select:{},small:{},span:{},source:{},strong:{},style:{parent:" head ",empty:!0},sub:{},sup:{},table:{},tbody:{parent:" table "},td:{parent:" tr "},textarea:{},tfoot:{parent:" table "},th:{parent:" tr "},thead:{parent:" table "},time:{},title:{parent:" head "},tr:{parent:" table tbody thead tfoot "},tt:{},u:{},ul:{},"var":{},video:{}},A,B,C,D,E,F={$:!1,jQuery:!1},G,H,I,J,K,L={__filename:!1,__dirname:!1,Buffer:!1,GLOBAL:!1,global:!1,module:!1,process:!1,require:!1},M,N,O,P,Q,R={defineClass:!1,deserialize:!1,gc:!1,help:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},S,T,U,V={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},W={E:!0,LN2:!0,LN10:!0,LOG2E:!0,LOG10E:!0,MAX_VALUE:!0,MIN_VALUE:!0,NEGATIVE_INFINITY:!0,PI:!0,POSITIVE_INFINITY:!0,SQRT1_2:!0,SQRT2:!0},X,Y={},Z,$,_,ba,bb={alert:!0,animator:!0,appleScript:!0,beep:!0,bytesToUIString:!0,Canvas:!0,chooseColor:!0,chooseFile:!0,chooseFolder:!0,closeWidget:!0,COM:!0,convertPathToHFS:!0,convertPathToPlatform:!0,CustomAnimation:!0,escape:!0,FadeAnimation:!0,filesystem:!0,Flash:!0,focusWidget:!0,form:!0,FormField:!0,Frame:!0,HotKey:!0,Image:!0,include:!0,isApplicationRunning:!0,iTunes:!0,konfabulatorVersion:!0,log:!0,md5:!0,MenuItem:!0,MoveAnimation:!0,openURL:!0,play:!0,Point:!0,popupMenu:!0,preferenceGroups:!0,preferences:!0,print:!0,prompt:!0,random:!0,Rectangle:!0,reloadWidget:!0,ResizeAnimation:!0,resolvePath:!0,resumeUpdates:!0,RotateAnimation:!0,runCommand:!0,runCommandInBg:!0,saveAs:!0,savePreferences:!0,screen:!0,ScrollBar:!0,showWidgetPreferences:!0,sleep:!0,speak:!0,Style:!0,suppressUpdates:!0,system:!0,tellWidget:!0,Text:!0,TextArea:!0,Timer:!0,unescape:!0,updateNow:!0,URL:!0,Web:!0,widget:!0,Window:!0,XMLDOM:!0,XMLHttpRequest:!0,yahooCheckLogin:!0,yahooLogin:!0,yahooLogout:!0},bc={ActiveXObject:!1,CScript:!1,Debug:!1,Enumerator:!1,System:!1,VBArray:!1,WScript:!1},bd,be,bf=/@cc|<\/?|script|\]\s*\]|<\s*!|</i,bg=/[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,bh=/^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jshint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/,bi=/^\s*(['"=>\/&#]|<(?:\/|\!(?:--)?)?|[a-zA-Z][a-zA-Z0-9_\-:]*|[0-9]+|--)/,bj=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,bk=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,bl=/[>&]|<[\/!]?|--/,bm=/\*\/|\/\*/,bn=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,bo=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,bp=/&|\+|\u00AD|\.\.|\/\*|%[^;]|base64|url|expression|data|mailto/i,bq=/^\s*([{:#%.=,>+\[\]@()"';]|\*=?|\$=|\|=|\^=|~=|[a-zA-Z_][a-zA-Z0-9_\-]*|[0-9]+|<\/|\/\*)/,br=/^\s*([@#!"'};:\-%.=,+\[\]()*_]|[a-zA-Z][a-zA-Z0-9._\-]*|\/\*?|\d+(?:\.\d+)?|<\/)/,bs=/[^a-zA-Z0-9+\-_\/ ]/,bt=/[\[\]\/\\"'*<>.&:(){}+=#]/,bu={outer:bi,html:bi,style:bq,styleproperty:br};typeof Array.isArray!=="function"&&(Array.isArray=function(a){return Object.prototype.toString.apply(a)==="[object Array]"}),typeof Object.create!=="function"&&(Object.create=function(a){bv.prototype=a;return new bv}),typeof Object.keys!=="function"&&(Object.keys=function(a){var b=[],c;for(c in a)bw(a,c)&&b.push(c);return b}),typeof String.prototype.entityify!=="function"&&(String.prototype.entityify=function(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}),typeof String.prototype.isAlpha!=="function"&&(String.prototype.isAlpha=function(){return this>="a"&&this<="z"||this>="A"&&this<="Z"}),typeof String.prototype.isDigit!=="function"&&(String.prototype.isDigit=function(){return this>="0"&&this<="9"}),typeof String.prototype.supplant!=="function"&&(String.prototype.supplant=function(a){return this.replace(/\{([^{}]*)\}/g,function(b,c){var d=a[c];return typeof d==="string"||typeof d==="number"?d:b})}),typeof String.prototype.name!=="function"&&(String.prototype.name=function(){if(bn.test(this))return this;if(bj.test(this))return'"'+this.replace(bk,function(a){var b=u[a];if(b)return b;return"\\u"+("0000"+a.charCodeAt().toString(16)).slice(-4)})+'"';return'"'+this+'"'});var bE=function bE(){function f(d,e){var f,g;d==="(color)"||d==="(range)"?g={type:d}:d==="(punctuator)"||d==="(identifier)"&&bw(Y,e)?g=Y[e]||Y["(error)"]:g=Y[d],g=Object.create(g);if(d==="(string)"||d==="(range)")bo.test(e)&&bB("Script URL.",c,b);d==="(identifier)"&&(g.identifier=!0,e==="__iterator__"||e==="__proto__"?bD("Reserved name '{a}'.",c,b,e):N.nomen&&(e.charAt(0)==="_"||e.charAt(e.length-1)==="_")&&bB("Unexpected {a} in '{b}'.",c,b,"dangling '_'",e)),g.value=e,g.line=c,g.character=a,g.from=b,f=g.id,f!=="(endline)"&&(P=f&&("(,=:[!&|?{};".indexOf(f.charAt(f.length-1))>=0||f==="return"));return g}function e(){var b;if(c>=G.length)return!1;a=1,d=G[c],c+=1,b=d.search(/ \t/),b>=0&&bB("Mixed spaces and tabs.",c,b+1),d=d.replace(/\t/g,Z),b=d.search(bg),b>=0&&bB("Unsafe character.",c,b),N.maxlen&&N.maxlen<d.length&&bB("Line too long.",c,d.length);return!0}var a,b,c,d;return{init:function(a){typeof a==="string"?G=a.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n"):G=a,c=0,e(),b=1},range:function(e,g){var h,i="";b=a,d.charAt(0)!==e&&bD("Expected '{a}' and instead saw '{b}'.",c,a,e,d.charAt(0));for(;;){d=d.slice(1),a+=1,h=d.charAt(0);switch(h){case"":bD("Missing '{a}'.",c,a,h);break;case g:d=d.slice(1),a+=1;return f("(range)",i);case be:case"\\":bB("Unexpected '{a}'.",c,a,h)}i+=h}},token:function(){function s(g){function k(b){var e=parseInt(d.substr(i+1,b),16);i+=b,e>=32&&e<=126&&e!==34&&e!==92&&e!==39&&bB("Unnecessary escapement.",c,a),a+=b,h=String.fromCharCode(e)}var h,i,j="";E&&g!=='"'&&bB("Strings must use doublequote.",c,a);if(be===g||bd==="scriptstring"&&!be)return f("(punctuator)",g);i=0;for(;;){while(i>=d.length)i=0,(bd!=="html"||!e())&&bD("Unclosed string.",c,b);h=d.charAt(i);if(h===g){a+=1,d=d.substr(i+1);return f("(string)",j,g)}if(h<" "){if(h==="\n"||h==="\r")break;bB("Control character in string: {a}.",c,a+i,d.slice(0,i))}else if(h===be)bB("Bad HTML string",c,a+i);else if(h==="<")N.safe&&bd==="html"?bB("ADsafe string violation.",c,a+i):d.charAt(i+1)==="/"&&(bd||N.safe)?bB("Expected '<\\/' and instead saw '</'.",c,a):d.charAt(i+1)==="!"&&(bd||N.safe)&&bB("Unexpected '<!' in a string.",c,a);else if(h==="\\")if(bd==="html")N.safe&&bB("ADsafe string violation.",c,a+i);else if(bd==="styleproperty")i+=1,a+=1,h=d.charAt(i),h!==g&&bB("Escapement in style string.",c,a+i);else{i+=1,a+=1,h=d.charAt(i);switch(h){case be:bB("Bad HTML string",c,a+i);break;case"\\":case'"':case"/":break;case"'":E&&bB("Avoid \\'.",c,a);break;case"b":h="\b";break;case"f":h="\f";break;case"n":h="\n";break;case"r":h="\r";break;case"t":h="\t";break;case"u":k(4);break;case"v":E&&bB("Avoid \\v.",c,a),h="";break;case"x":E&&bB("Avoid \\x-.",c,a),k(2);break;default:bB("Bad escapement.",c,a)}}j+=h,a+=1,i+=1}}function r(c){var e=c.exec(d),f;if(e){n=e[0].length,f=e[1],h=f.charAt(0),d=d.substr(n),b=a+n-f.length,a+=n;return f}}var g,h,i,j,k,l,m,n,o,p,q;for(;;){if(!d)return f(e()?"(endline)":"(end)","");while(bd==="outer"){m=d.search(bl);if(m===0)break;if(m>0){a+=1,d=d.slice(m);break}if(!e())return f("(end)","")}q=r(bu[bd]||bh);if(q){if(h.isAlpha()||h==="_"||h==="$")return f("(identifier)",q);if(h.isDigit()){bd!=="style"&&!isFinite(Number(q))&&bB("Bad number '{a}'.",c,a,q),bd!=="style"&&bd!=="styleproperty"&&d.substr(0,1).isAlpha()&&bB("Missing space after '{a}'.",c,a,q),h==="0"&&(j=q.substr(1,1),j.isDigit()?$.id!=="."&&bd!=="styleproperty"&&bB("Don't use extra leading zeros '{a}'.",c,a,q):E&&(j==="x"||j==="X")&&bB("Avoid 0x-. '{a}'.",c,a,q)),q.substr(q.length-1)==="."&&bB("A trailing decimal point can be confused with a dot '{a}'.",c,a,q);return f("(number)",q)}switch(q){case'"':case"'":return s(q);case"//":T||bd&&bd!=="script"?bB("Unexpected comment.",c,a):bd==="script"&&/<\s*\//i.test(d)?bB("Unexpected </ in comment.",c,a):(N.safe||bd==="script")&&bf.test(d)&&bB("Dangerous comment.",c,a),d="",$.comment=!0;break;case"/*":(T||bd&&bd!=="script"&&bd!=="style"&&bd!=="styleproperty")&&bB("Unexpected comment.",c,a),N.safe&&bf.test(d)&&bB("ADsafe comment violation.",c,a);for(;;){m=d.search(bm);if(m>=0)break;e()?N.safe&&bf.test(d)&&bB("ADsafe comment violation.",c,a):bD("Unclosed comment.",c,a)}a+=m+2,d.substr(m,1)==="/"&&bD("Nested comment.",c,a),d=d.substr(m+2),$.comment=!0;break;case"/*members":case"/*member":case"/*jshint":case"/*global":case"*/":return{value:q,type:"special",line:c,character:a,from:b};case"":break;case"/":$.id==="/="&&bD("A regular expression literal can be confused with '/='.",c,b);if(P){k=0,i=0,n=0;for(;;){g=!0,h=d.charAt(n),n+=1;switch(h){case"":bD("Unclosed regular expression.",c,b);return;case"/":k>0&&bB("Unescaped '{a}'.",c,b+n,"/"),h=d.substr(0,n-1),p={g:!0,i:!0,m:!0};while(p[d.charAt(n)]===!0)p[d.charAt(n)]=!1,n+=1;a+=n,d=d.substr(n),p=d.charAt(0),(p==="/"||p==="*")&&bD("Confusing regular expression.",c,b);return f("(regexp)",h);case"\\":h=d.charAt(n),h<" "?bB("Unexpected control character in regular expression.",c,b+n):h==="<"&&bB("Unexpected escaped character '{a}' in regular expression.",c,b+n,h),n+=1;break;case"(":k+=1,g=!1;if(d.charAt(n)==="?"){n+=1;switch(d.charAt(n)){case":":case"=":case"!":n+=1;break;default:bB("Expected '{a}' and instead saw '{b}'.",c,b+n,":",d.charAt(n))}}else i+=1;break;case"|":g=!1;break;case")":k===0?bB("Unescaped '{a}'.",c,b+n,")"):k-=1;break;case" ":p=1;while(d.charAt(n)===" ")n+=1,p+=1;p>1&&bB("Spaces are hard to count. Use {{a}}.",c,b+n,p);break;case"[":h=d.charAt(n),h==="^"&&(n+=1,N.regexp?bB("Insecure '{a}'.",c,b+n,h):d.charAt(n)==="]"&&bD("Unescaped '{a}'.",c,b+n,"^")),p=!1,h==="]"&&(bB("Empty class.",c,b+n-1),p=!0);klass:do{h=d.charAt(n),n+=1;switch(h){case"[":case"^":bB("Unescaped '{a}'.",c,b+n,h),p=!0;break;case"-":p?p=!1:(bB("Unescaped '{a}'.",c,b+n,"-"),p=!0);break;case"]":p||bB("Unescaped '{a}'.",c,b+n-1,"-");break klass;case"\\":h=d.charAt(n),h<" "?bB("Unexpected control character in regular expression.",c,b+n):h==="<"&&bB("Unexpected escaped character '{a}' in regular expression.",c,b+n,h),n+=1,p=!0;break;case"/":bB("Unescaped '{a}'.",c,b+n-1,"/"),p=!0;break;case"<":bd==="script"&&(h=d.charAt(n),(h==="!"||h==="/")&&bB("HTML confusion in regular expression '<{a}'.",c,b+n,h)),p=!0;break;default:p=!0}}while(h);break;case".":N.regexp&&bB("Insecure '{a}'.",c,b+n,h);break;case"]":case"?":case"{":case"}":case"+":case"*":bB("Unescaped '{a}'.",c,b+n,h);break;case"<":bd==="script"&&(h=d.charAt(n),(h==="!"||h==="/")&&bB("HTML confusion in regular expression '<{a}'.",c,b+n,h))}if(g)switch(d.charAt(n)){case"?":case"+":case"*":n+=1,d.charAt(n)==="?"&&(n+=1);break;case"{":n+=1,h=d.charAt(n),(h<"0"||h>"9")&&bB("Expected a number and instead saw '{a}'.",c,b+n,h),n+=1,o=+h;for(;;){h=d.charAt(n);if(h<"0"||h>"9")break;n+=1,o=+h+o*10}l=o;if(h===","){n+=1,l=Infinity,h=d.charAt(n);if(h>="0"&&h<="9"){n+=1,l=+h;for(;;){h=d.charAt(n);if(h<"0"||h>"9")break;n+=1,l=+h+l*10}}}d.charAt(n)!=="}"?bB("Expected '{a}' and instead saw '{b}'.",c,b+n,"}",h):n+=1,d.charAt(n)==="?"&&(n+=1),o>l&&bB("'{a}' should not be greater than '{b}'.",c,b+n,o,l)}}h=d.substr(0,n-1),a+=n,d=d.substr(n);return f("(regexp)",h)}return f("(punctuator)",q);case"<!--":n=c,h=a;for(;;){m=d.indexOf("--");if(m>=0)break;m=d.indexOf("<!"),m>=0&&bD("Nested HTML comment.",c,a+m),e()||bD("Unclosed HTML comment.",n,h)}n=d.indexOf("<!"),n>=0&&n<m&&bD("Nested HTML comment.",c,a+n),a+=m,d.charAt(m+2)!==">"&&bD("Expected -->.",c,a),a+=3,d=d.slice(m+3);break;case"#":if(bd==="html"||bd==="styleproperty"){for(;;){h=d.charAt(0);if((h<"0"||h>"9")&&(h<"a"||h>"f")&&(h<"A"||h>"F"))break;a+=1,d=d.substr(1),q+=h}q.length!==4&&q.length!==7&&bB("Bad hex color '{a}'.",c,b+n,q);return f("(color)",q)}return f("(punctuator)",q);default:if(bd==="outer"&&h==="&"){a+=1,d=d.substr(1);for(;;){h=d.charAt(0),a+=1,d=d.substr(1);if(h===";")break;(h<"0"||h>"9")&&(h<"a"||h>"z")&&h!=="#"&&bD("Bad entity",c,b+n,a)}break}return f("(punctuator)",q)}}else{q="",h="";while(d&&d<"!")d=d.substr(1);if(d){if(bd==="html")return f("(error)",d.charAt(0));bD("Unexpected '{a}'.",c,a,d.substr(0,1))}}}}}}();m=[cB,function(){for(;;)if(K.identifier)switch(K.value.toLowerCase()){case"url":cB();break;case"expression":bA("Unexpected expression '{a}'.",K,K.value),bI();break;default:bI()}else{if(K.id===";"||K.id==="!"||K.id==="(end)"||K.id==="}")return!0;bI()}}],o=["none","dashed","dotted","double","groove","hidden","inset","outset","ridge","solid"],p=["auto","always","avoid","left","right"],r={all:!0,braille:!0,embossed:!0,handheld:!0,print:!0,projection:!0,screen:!0,speech:!0,tty:!0,tv:!0},s=["auto","hidden","scroll","visible"],l={background:[!0,"background-attachment","background-color","background-image","background-position","background-repeat"],"background-attachment":["scroll","fixed"],"background-color":["transparent",cs],"background-image":["none",cB],"background-position":[2,[ct,"top","bottom","left","right","center"]],"background-repeat":["repeat","repeat-x","repeat-y","no-repeat"],border:[!0,"border-color","border-style","border-width"],"border-bottom":[!0,"border-bottom-color","border-bottom-style","border-bottom-width"],"border-bottom-color":cs,"border-bottom-style":o,"border-bottom-width":cv,"border-collapse":["collapse","separate"],"border-color":["transparent",4,cs],"border-left":[!0,"border-left-color","border-left-style","border-left-width"],"border-left-color":cs,"border-left-style":o,"border-left-width":cv,"border-right":[!0,"border-right-color","border-right-style","border-right-width"],"border-right-color":cs,"border-right-style":o,"border-right-width":cv,"border-spacing":[2,ct],"border-style":[4,o],"border-top":[!0,"border-top-color","border-top-style","border-top-width"],"border-top-color":cs,"border-top-style":o,"border-top-width":cv,"border-width":[4,cv],bottom:[ct,"auto"],"caption-side":["bottom","left","right","top"],clear:["both","left","none","right"],clip:[cA,"auto"],color:cs,content:["open-quote","close-quote","no-open-quote","no-close-quote",cr,cB,cz,cx],"counter-increment":[cp,"none"],"counter-reset":[cp,"none"],cursor:[cB,"auto","crosshair","default","e-resize","help","move","n-resize","ne-resize","nw-resize","pointer","s-resize","se-resize","sw-resize","w-resize","text","wait"],direction:["ltr","rtl"],display:["block","compact","inline","inline-block","inline-table","list-item","marker","none","run-in","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group"],"empty-cells":["show","hide"],"float":["left","none","right"],font:["caption","icon","menu","message-box","small-caption","status-bar",!0,"font-size","font-style","font-weight","font-family"],"font-family":cy,"font-size":["xx-small","x-small","small","medium","large","x-large","xx-large","larger","smaller",ct],"font-size-adjust":["none",cq],"font-stretch":["normal","wider","narrower","ultra-condensed","extra-condensed","condensed","semi-condensed","semi-expanded","expanded","extra-expanded"],"font-style":["normal","italic","oblique"],"font-variant":["normal","small-caps"],"font-weight":["normal","bold","bolder","lighter",cq],height:[ct,"auto"],left:[ct,"auto"],"letter-spacing":["normal",ct],"line-height":["normal",cu],"list-style":[!0,"list-style-image","list-style-position","list-style-type"],"list-style-image":["none",cB],"list-style-position":["inside","outside"],"list-style-type":["circle","disc","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","katakana","hiragana-iroha","katakana-oroha","none"],margin:[4,cw],"margin-bottom":cw,"margin-left":cw,"margin-right":cw,"margin-top":cw,"marker-offset":[ct,"auto"],"max-height":[ct,"none"],"max-width":[ct,"none"],"min-height":ct,"min-width":ct,opacity:cq,outline:[!0,"outline-color","outline-style","outline-width"],"outline-color":["invert",cs],"outline-style":["dashed","dotted","double","groove","inset","none","outset","ridge","solid"],"outline-width":cv,overflow:s,"overflow-x":s,"overflow-y":s,padding:[4,ct],"padding-bottom":ct,"padding-left":ct,"padding-right":ct,"padding-top":ct,"page-break-after":p,"page-break-before":p,position:["absolute","fixed","relative","static"],quotes:[8,cr],right:[ct,"auto"],"table-layout":["auto","fixed"],"text-align":["center","justify","left","right"],"text-decoration":["none","underline","overline","line-through","blink"],"text-indent":ct,"text-shadow":["none",4,[cs,ct]],"text-transform":["capitalize","uppercase","lowercase","none"],top:[ct,"auto"],"unicode-bidi":["normal","embed","bidi-override"],"vertical-align":["baseline","bottom","sub","super","top","text-top","middle","text-bottom",ct],visibility:["visible","hidden","collapse"],"white-space":["normal","nowrap","pre","pre-line","pre-wrap","inherit"],width:[ct,"auto"],"word-spacing":["normal",ct],"word-wrap":["break-word","normal"],"z-index":["auto",cq]},bY("(number)",function(){return this}),bY("(string)",function(){return this}),Y["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var a=this.value,b=S[a],c;typeof b==="function"?b=undefined:typeof b==="boolean"&&(c=v,v=x[0],bF(a,"var"),b=v,v=c);if(v===b)switch(v[a]){case"unused":v[a]="var";break;case"unction":v[a]="function",this["function"]=!0;break;case"function":this["function"]=!0;break;case"label":bA("'{a}' is a statement label.",$,a)}else if(v["(global)"])e!="typeof"&&e!="delete"&&N.undef&&typeof O[a]!=="boolean"&&bA("'{a}' is not defined.",$,a),co($);else switch(v[a]){case"closure":case"function":case"var":case"unused":bA("'{a}' used out of scope.",$,a);break;case"label":bA("'{a}' is a statement label.",$,a);break;case"outer":case"global":break;default:if(b===!0)v[a]=!0;else if(b===null)bA("'{a}' is not allowed.",$,a),co($);else if(typeof b!=="object")e!="typeof"&&e!="delete"&&N.undef?bA("'{a}' is not defined.",$,a):v[a]=!0,co($);else switch(b[a]){case"function":case"unction":this["function"]=!0,b[a]="closure",v[a]=b["(global)"]?"global":"outer";break;case"var":case"unused":b[a]="closure",v[a]=b["(global)"]?"global":"outer";break;case"closure":case"parameter":v[a]=b["(global)"]?"global":"outer";break;case"label":bA("'{a}' is a statement label.",$,a)}}return this},led:function(){bC("Expected an operator and instead saw '{a}'.",K,K.value)}},bY("(regexp)",function(){return this}),bT("(endline)"),bT("(begin)"),bT("(end)").reach=!0,bT("</").reach=!0,bT("<!"),bT("<!--"),bT("-->"),bT("(error)").reach=!0,bT("}").reach=!0,bT(")"),bT("]"),bT('"').reach=!0,bT("'").reach=!0,bT(";"),bT(":").reach=!0,bT(","),bT("#"),bT("@"),bZ("else"),bZ("case").reach=!0,bZ("catch"),bZ("default").reach=!0,bZ("finally"),b$("arguments",function(a){X&&v["(global)"]?bA("Strict violation.",a):N.safe&&bA("ADsafe violation.",a)}),b$("eval",function(a){N.safe&&bA("ADsafe violation.",a)}),b$("false"),b$("Infinity"),b$("NaN"),b$("null"),b$("this",function(a){X&&(v["(statement)"]&&v["(name)"].charAt(0)>"Z"||v["(global)"])?bA("Strict violation.",a):N.safe&&bA("ADsafe violation.",a)}),b$("true"),b$("undefined"),cc("=","assign",20),cc("+=","assignadd",20),cc("-=","assignsub",20),cc("*=","assignmult",20),cc("/=","assigndiv",20).nud=function(){bC("A regular expression literal can be confused with '/='.")},cc("%=","assignmod",20),ce("&=","assignbitand",20),ce("|=","assignbitor",20),ce("^=","assignbitxor",20),ce("<<=","assignshiftleft",20),ce(">>=","assignshiftright",20),ce(">>>=","assignshiftrightunsigned",20),b_("?",function(a,b){b.left=a,b.right=bJ(10),bI(":"),b["else"]=bJ(10);return b},30),b_("||","or",40),b_("&&","and",50),cd("|","bitor",70),cd("^","bitxor",80),cd("&","bitand",90),ca("==",function(a,b){N.eqeqeq?bA("Expected '{a}' and instead saw '{b}'.",this,"===","=="):cb(a)?bA("Use '{a}' to compare with '{b}'.",this,"===",a.value):cb(b)&&bA("Use '{a}' to compare with '{b}'.",this,"===",b.value);return this}),ca("==="),ca("!=",function(a,b){N.eqeqeq?bA("Expected '{a}' and instead saw '{b}'.",this,"!==","!="):cb(a)?bA("Use '{a}' to compare with '{b}'.",this,"!==",a.value):cb(b)&&bA("Use '{a}' to compare with '{b}'.",this,"!==",b.value);return this}),ca("!=="),ca("<"),ca(">"),ca("<="),ca(">="),cd("<<","shiftleft",120),cd(">>","shiftright",120),cd(">>>","shiftrightunsigned",120),b_("in","in",120),b_("instanceof","instanceof",120),b_("+",function(a,b){var c=bJ(130);if(a&&c&&a.id==="(string)"&&c.id==="(string)"){a.value+=c.value,a.character=c.character,bo.test(a.value)&&bA("JavaScript URL.",a);return a}b.left=a,b.right=c;return b},130),bX("+","num"),bX("+++",function(){bA("Confusing pluses."),this.right=bJ(150),this.arity="unary";return this}),b_("+++",function(a){bA("Confusing pluses."),this.left=a,this.right=bJ(130);return this},130),b_("-","sub",130),bX("-","neg"),bX("---",function(){bA("Confusing minuses."),this.right=bJ(150),this.arity="unary";return this}),b_("---",function(a){bA("Confusing minuses."),this.left=a,this.right=bJ(130);return this},130),b_("*","mult",140),b_("/","div",140),b_("%","mod",140),cf("++","postinc"),bX("++","preinc"),Y["++"].exps=!0,cf("--","postdec"),bX("--","predec"),Y["--"].exps=!0,bX("delete",function(){var a=bJ(0);(!a||a.id!=="."&&a.id!=="[")&&bA("Variables should not be deleted."),this.first=a;return this}).exps=!0,bX("~",function(){N.bitwise&&bA("Unexpected '{a}'.",this,"~"),bJ(150);return this}),bX("!",function(){this.right=bJ(150),this.arity="unary",g[this.right.id]===!0&&bA("Confusing use of '{a}'.",this,"!");return this}),bX("typeof","typeof"),bX("new",function(){var a=bJ(155),b;if(a&&a.id!=="function")if(a.identifier){a["new"]=!0;switch(a.value){case"Object":bA("Use the object literal notation {}.",$);break;case"Array":K.id!=="("?bA("Use the array literal notation [].",$):(bI("("),K.id===")"&&bA("Use the array literal notation [].",$),bI(")")),this.first=a;return this;case"Number":case"String":case"Boolean":case"Math":case"JSON":bA("Do not use {a} as a constructor.",$,a.value);break;case"Function":N.evil||bA("The Function constructor is eval.");break;case"Date":case"RegExp":break;default:a.id!=="function"&&(b=a.value.substr(0,1),N.newcap&&(b<"A"||b>"Z")&&bA("A constructor name should start with an uppercase letter.",$))}}else a.id!=="."&&a.id!=="["&&a.id!=="("&&bA("Bad constructor.",$);else bA("Weird construction. Delete 'new'.",this);bK($,K),K.id!=="("&&bA("Missing '()' invoking a constructor."),this.first=a;return this}),Y["new"].exps=!0,b_(".",function(d,e){bK(Q,$),bL();var f=ch();typeof f==="string"&&cn(f),e.left=d,e.right=f,N.noarg&&d&&d.value==="arguments"&&(f==="callee"||f==="caller")?bA("Avoid arguments.{a}.",d,f):N.evil||!d||d.value!=="document"||f!=="write"&&f!=="writeln"?N.adsafe&&(d&&d.value==="ADSAFE"&&(f==="id"||f==="lib"?bA("ADsafe violation.",e):f==="go"&&(bd!=="script"?bA("ADsafe violation.",e):(c||K.id!=="("||bH(0).id!=="(string)"||bH(0).value!==a||bH(1).id!==",")&&bC("ADsafe violation: go.",e),c=!0,b=!1))):bA("document.write can be a form of eval.",d);if(N.evil||f!=="eval"&&f!=="execScript"){if(N.safe)for(;;){h[f]===!0&&bA("ADsafe restricted word '{a}'.",$,f);if(typeof O[d.value]!=="boolean"||K.id==="(")break;if(W[f]===!0){K.id==="."&&bA("ADsafe violation.",e);break}if(K.id!=="."){bA("ADsafe violation.",e);break}bI("."),$.left=e,$.right=f,e=$,f=ch(),typeof f==="string"&&cn(f)}}else bA("eval is evil.");return e},160,!0),b_("(",function(a,b){Q.id!=="}"&&Q.id!==")"&&bL(Q,$),bM(),N.immed&&!a.immed&&a.id==="function"&&bA("Wrap an immediate function invocation in parentheses to assist the reader in understanding that the expression is the result of a function, and not the function itself.");var c=0,d=[];a&&(a.type==="(identifier)"?a.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&(a.value!=="Number"&&a.value!=="String"&&a.value!=="Boolean"&&a.value!=="Date"&&(a.value==="Math"?bA("Math is not a function.",a):N.newcap&&bA("Missing 'new' prefix when invoking a constructor.",a))):a.id==="."&&(N.safe&&a.left.value==="Math"&&a.right==="random"&&bA("ADsafe violation.",a)));if(K.id!==")")for(;;){d[d.length]=bJ(10),c+=1;if(K.id!==",")break;bR()}bI(")"),bM(Q,$),typeof a==="object"&&(a.value==="parseInt"&&c===1&&bA("Missing radix parameter.",a),N.evil||(a.value==="eval"||a.value==="Function"||a.value==="execScript"?bA("eval is evil.",a):d[0]&&d[0].id==="(string)"&&(a.value==="setTimeout"||a.value==="setInterval")&&bA("Implied eval is evil. Pass a function instead of a string.",a)),!a.identifier&&a.id!=="."&&a.id!=="["&&a.id!=="("&&a.id!=="&&"&&a.id!=="||"&&a.id!=="?"&&bA("Bad invocation.",a)),b.left=a;return b},155,!0).exps=!0,bX("(",function(){bM(),K.id==="function"&&(K.immed=!0);var a=bJ(0);bI(")",this),bM(Q,$),N.immed&&a.id==="function"&&(K.id==="("?bA("Move the invocation into the parens that contain the function.",K):bA("Do not wrap function literals in parens unless they are to be immediately invoked.",this));return a}),b_("[",function(a,b){bL(Q,$),bM();var c=bJ(0),d;if(c&&c.type==="(string)")N.safe&&h[c.value]===!0?bA("ADsafe restricted word '{a}'.",b,c.value):N.evil||c.value!=="eval"&&c.value!=="execScript"?N.safe&&(c.value.charAt(0)==="_"||c.value.charAt(0)==="-")&&bA("ADsafe restricted subscript '{a}'.",b,c.value):bA("eval is evil.",b),cn(c.value),!N.sub&&bn.test(c.value)&&(d=Y[c.value],(!d||!d.reserved)&&bA("['{a}'] is better written in dot notation.",c,c.value));else if(!c||c.type!=="(number)"||c.value<0)N.safe&&bA("ADsafe subscripting.");bI("]",b),bM(Q,$),b.left=a,b.right=c;return b},160,!0),bX("[",function(){var a=$.line!==K.line;this.first=[],a&&(D+=N.indent,K.from===D+N.indent&&(D+=N.indent));while(K.id!=="(end)"){while(K.id===",")bA("Extra comma."),bI(",");if(K.id==="]")break;a&&$.line!==K.line&&bP(),this.first.push(bJ(10));if(K.id!==",")break;bR();if(K.id==="]"&&!N.es5){bA("Extra comma.",$);break}}a&&(D-=N.indent,bP()),bI("]",this);return this},160),function(a){a.nud=function(){var a,b,c,d,e,f={},g;a=$.line!==K.line,a&&(D+=N.indent,K.from===D+N.indent&&(D+=N.indent));for(;;){if(K.id==="}")break;a&&bP();if(K.value==="get"&&bH().id!==":")bI("get"),N.es5||bC("get/set are ES5 features."),c=cP(),c||bC("Missing property name."),g=K,bK($,K),b=cR(c),v["(loopage)"]&&bA("Don't make functions within a loop.",g),e=b["(params)"],e&&bA("Unexpected parameter '{a}' in get {b} function.",g,e[0],c),bK($,K),bI(","),bP(),bI("set"),d=cP(),c!==d&&bC("Expected {a} and instead saw {b}.",$,c,d),g=K,bK($,K),b=cR(c),e=b["(params)"],(!e||e.length!==1||e[0]!=="value")&&bA("Expected (value) in set {a} function.",g,c);else{c=cP();if(typeof c!=="string")break;bI(":"),bN($,K),bJ(10)}f[c]===!0&&bA("Duplicate member '{a}'.",K,c),f[c]=!0,cn(c);if(K.id===",")bR(),K.id===","?bA("Extra comma.",$):K.id==="}"&&!N.es5&&bA("Extra comma.",$);else break}a&&(D-=N.indent,bP()),bI("}",this);return this},a.fud=function(){bC("Expected to see a statement and instead saw a block.",$)}}(bT("{"));var cS=function cS(a){var b,c,d;v["(onevar)"]&&N.onevar?bA("Too many var statements."):v["(global)"]||(v["(onevar)"]=!0),this.first=[];for(;;){bN($,K),b=ch(),v["(global)"]&&O[b]===!1&&bA("Redefinition of '{a}'.",$,b),bF(b,"unused");if(a)break;c=$,this.first.push($),K.id==="="&&(bN($,K),bI("="),bN($,K),K.id==="undefined"&&bA("It is not necessary to initialize '{a}' to 'undefined'.",$,b),bH(0).id==="="&&K.identifier&&bC("Variable {a} was not declared correctly.",K,K.value),d=bJ(0),c.first=d);if(K.id!==",")break;bR()}return this};bU("var",cS).exps=!0,bV("function",function(){C&&bA("Function statements should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.",$);var a=ch();bK($,K),bF(a,"unction"),cR(a,!0),K.id==="("&&K.line===$.line&&bC("Function statements are not invocable. Wrap the whole function invocation in parens.");return this}),bX("function",function(){var a=cg();a?bK($,K):bN($,K),cR(a),v["(loopage)"]&&bA("Don't make functions within a loop.");return this}),bV("if",function(){var a=K;bI("("),bN(this,a),bM(),bJ(20),K.id==="="&&(N.boss||bA("Expected a conditional expression and instead saw an assignment."),bI("="),bJ(20)),bI(")",a),bM(Q,$),cm(!0,!0),K.id==="else"&&(bN($,K),bI("else"),K.id==="if"||K.id==="switch"?cj(!0):cm(!0,!0));return this}),bV("try",function(){var a,b,c;N.adsafe&&bA("ADsafe try violation.",this),cm(!1),K.id==="catch"&&(bI("catch"),bN($,K),bI("("),c=S,S=Object.create(c),b=K.value,K.type!=="(identifier)"?bA("Expected an identifier and instead saw '{a}'.",K,b):bF(b,"exception"),bI(),bI(")"),cm(!1),a=!0,S=c);if(K.id==="finally")bI("finally"),cm(!1);else{a||bC("Expected '{a}' and instead saw '{b}'.",K,"catch",K.value);return this}}),bV("while",function(){var a=K;v["(breakage)"]+=1,v["(loopage)"]+=1,bI("("),bN(this,a),bM(),bJ(20),K.id==="="&&(N.boss||bA("Expected a conditional expression and instead saw an assignment."),bI("="),bJ(20)),bI(")",a),bM(Q,$),cm(!0,!0),v["(breakage)"]-=1,v["(loopage)"]-=1;return this}).labelled=!0,bZ("with"),bV("switch",function(){var a=K,b=!1;v["(breakage)"]+=1,bI("("),bN(this,a),bM(),this.condition=bJ(20),bI(")",a),bM(Q,$),bN($,K),a=K,bI("{"),bN($,K),D+=N.indent,this.cases=[];for(;;)switch(K.id){case"case":switch(v["(verb)"]){case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:bA("Expected a 'break' statement before 'case'.",$)}bP(-N.indent),bI("case"),this.cases.push(bJ(20)),b=!0,bI(":"),v["(verb)"]="case";break;case"default":switch(v["(verb)"]){case"break":case"continue":case"return":case"throw":break;default:bA("Expected a 'break' statement before 'default'.",$)}bP(-N.indent),bI("default"),b=!0,bI(":");break;case"}":D-=N.indent,bP(),bI("}",a),(this.cases.length===1||this.condition.id==="true"||this.condition.id==="false")&&bA("This 'switch' should be an 'if'.",this),v["(breakage)"]-=1,v["(verb)"]=undefined;return;case"(end)":bC("Missing '{a}'.",K,"}");return;default:if(b)switch($.id){case",":bC("Each value should have its own case label.");return;case":":cl();break;default:bC("Missing ':' on a case clause.",$)}else bC("Expected '{a}' and instead saw '{b}'.",K,"case",K.value)}}).labelled=!0,bU("debugger",function(){N.debug||bA("All 'debugger' statements should be removed.");return this}).exps=!0,function(){var a=bU("do",function(){v["(breakage)"]+=1,v["(loopage)"]+=1,this.first=cm(!0),bI("while");var a=K;bN($,a),bI("("),bM(),bJ(20),K.id==="="&&(N.boss||bA("Expected a conditional expression and instead saw an assignment."),bI("="),bJ(20)),bI(")",a),bM(Q,$),v["(breakage)"]-=1,v["(loopage)"]-=1;return this});a.labelled=!0,a.exps=!0}(),bV("for",function(){var a=N.forin,b,c=K;v["(breakage)"]+=1,v["(loopage)"]+=1,bI("("),bN(this,c),bM();if(bH(K.id==="var"?1:0).id==="in"){if(K.id==="var")bI("var"),cS(!0);else{switch(v[K.value]){case"unused":v[K.value]="var";break;case"var":break;default:bA("Bad for in variable '{a}'.",K,K.value)}bI()}bI("in"),bJ(20),bI(")",c),b=cm(!0,!0),!a&&(b.length>1||typeof b[0]!=="object"||b[0].value!=="if")&&bA("The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.",this),v["(breakage)"]-=1,v["(loopage)"]-=1;return this}if(K.id!==";")if(K.id==="var")bI("var"),cS();else for(;;){bJ(0,"for");if(K.id!==",")break;bR()}bQ($),bI(";"),K.id!==";"&&(bJ(20),K.id==="="&&(N.boss||bA("Expected a conditional expression and instead saw an assignment."),bI("="),bJ(20))),bQ($),bI(";"),K.id===";"&&bC("Expected '{a}' and instead saw '{b}'.",K,")",";");if(K.id!==")")for(;;){bJ(0,"for");if(K.id!==",")break;bR()}bI(")",c),bM(Q,$),cm(!0,!0),v["(breakage)"]-=1,v["(loopage)"]-=1;return this}).labelled=!0,bU("break",function(){var a=K.value;v["(breakage)"]===0&&bA("Unexpected '{a}'.",K,this.value),bQ(this),K.id!==";"&&($.line===K.line&&(v[a]!=="label"?bA("'{a}' is not a statement label.",K,a):S[a]!==v&&bA("'{a}' is out of scope.",K,a),this.first=K,bI())),ci("break");return this}).exps=!0,bU("continue",function(){var a=K.value;v["(breakage)"]===0&&bA("Unexpected '{a}'.",K,this.value),bQ(this),K.id!==";"?$.line===K.line&&(v[a]!=="label"?bA("'{a}' is not a statement label.",K,a):S[a]!==v&&bA("'{a}' is out of scope.",K,a),this.first=K,bI()):v["(loopage)"]||bA("Unexpected '{a}'.",K,this.value),ci("continue");return this}).exps=!0,bU("return",function(){bQ(this),K.id==="(regexp)"&&bA("Wrap the /regexp/ literal in parens to disambiguate the slash operator."),K.id!==";"&&!K.reach&&(bN($,K),this.first=bJ(20)),ci("return");return this}).exps=!0,bU("throw",function(){bQ(this),bN($,K),this.first=bJ(20),ci("throw");return this}).exps=!0,bZ("void"),bZ("class"),bZ("const"),bZ("enum"),bZ("export"),bZ("extends"),bZ("import"),bZ("super"),bZ("let"),bZ("yield"),bZ("implements"),bZ("interface"),bZ("package"),bZ("private"),bZ("protected"),bZ("public"),bZ("static");var cU=function(e,g){var h,i,j;d.errors=[],O=Object.create(V);if(g){h=g.predef;if(h)if(Array.isArray(h))for(i=0;i<h.length;i+=1)O[h[i]]=!0;else if(typeof h==="object"){j=Object.keys(h);for(i=0;i<j.length;i+=1)O[j[i]]=!!h[j]}g.adsafe&&(g.safe=!0),g.safe&&(g.browser=g.css=g.debug=g.devel=g.evil=g.forin=g.on=g.rhino=g.windows=g.sub=g.widget=!1,g.eqeqeq=g.nomen=g.safe=g.undef=!0,O.Date=O.eval=O.Function=O.Object=null,O.ADSAFE=O.lib=!1),N=g}else N={};N.indent=N.indent||4,N.maxerr=N.maxerr||50,a="",b=!1,c=!1,f={};if(N.approved)for(i=0;i<N.approved.length;i+=1)f[N.approved[i]]=N.approved[i];else f.test="test";Z="";for(i=0;i<N.indent;i+=1)Z+=" ";D=1,y=Object.create(O),S=y,v={"(global)":!0,"(name)":"(global)","(scope)":S,"(breakage)":0,"(loopage)":0},x=[v],A={},_=[],T=!1,bd=!1,U=null,I={},J=null,B={},C=!1,H=[],E=!1,ba=0,bE.init(e),P=!0,X=!1,Q=$=K=Y["(begin)"],by();try{bI();if(K.value.charAt(0)==="<")cO(),N.adsafe&&!c&&bA("ADsafe violation: Missing ADSAFE.go.",this);else switch(K.id){case"{":case"[":N.laxbreak=!0,E=!0,cT();break;case"@":case"*":case"#":case".":case":":bd="style",bI(),($.id!=="@"||!K.identifier||K.value!=="charset"||$.line!==1||$.from!==1)&&bC("A css file should begin with @charset 'UTF-8';"),bI(),K.type!=="(string)"&&K.value!=="UTF-8"&&bC("A css file should begin with @charset 'UTF-8';"),bI(),bI(";"),cJ();break;default:N.adsafe&&N.fragment&&bC("Expected '{a}' and instead saw '{b}'.",K,"<div>",K.value),K.value==="use strict"&&(bA('Use the function form of "use strict".'),ck()),cl("lib")}bI("(end)")}catch(k){k&&d.errors.push({reason:k.message,line:k.line||K.line,character:k.character||K.from},null)}return d.errors.length===0};cU.data=function(){var a={functions:[]},b,c,d=[],e,f,g,h=[],i,j=[],k;cU.errors.length&&(a.errors=cU.errors),E&&(a.json=!0);for(i in B)bw(B,i)&&d.push({name:i,line:B[i]});d.length>0&&(a.implieds=d),_.length>0&&(a.urls=_),c=Object.keys(S),c.length>0&&(a.globals=c);for(f=1;f<x.length;f+=1){e=x[f],b={};for(g=0;g<w.length;g+=1)b[w[g]]=[];for(i in e)bw(e,i)&&i.charAt(0)!=="("&&(k=e[i],k==="unction"&&(k="unused"),Array.isArray(b[k])&&(b[k].push(i),k==="unused"&&j.push({name:i,line:e["(line)"],"function":e["(name)"]})));for(g=0;g<w.length;g+=1)b[w[g]].length===0&&delete b[w[g]];b.name=e["(name)"],b.param=e["(params)"],b.line=e["(line)"],b.last=e["(last)"],a.functions.push(b)}j.length>0&&(a.unused=j),h=[];for(i in I)if(typeof I[i]==="number"){a.member=I;break}return a},cU.report=function(a){function o(a,b){var c,d,e;if(b){m.push("<div><i>"+a+"</i> "),b=b.sort();for(d=0;d<b.length;d+=1)b[d]!==e&&(e=b[d],m.push((c?", ":"")+e),c=!0);m.push("</div>")}}var b=cU.data(),c=[],d,e,f,g,h,i,j,k="",l,m=[],n;if(b.errors||b.implieds||b.unused){f=!0,m.push("<div id=errors><i>Error:</i>");if(b.errors)for(h=0;h<b.errors.length;h+=1)d=b.errors[h],d&&(e=d.evidence||"",m.push("<p>Problem"+(isFinite(d.line)?" at line "+d.line+" character "+d.character:"")+": "+d.reason.entityify()+"</p><p class=evidence>"+(e&&(e.length>80?e.slice(0,77)+"...":e).entityify())+"</p>"));if(b.implieds){n=[];for(h=0;h<b.implieds.length;h+=1)n[h]="<code>"+b.implieds[h].name+"</code> <i>"+b.implieds[h].line+"</i>";m.push("<p><i>Implied global:</i> "+n.join(", ")+"</p>")}if(b.unused){n=[];for(h=0;h<b.unused.length;h+=1)n[h]="<code><u>"+b.unused[h].name+"</u></code> <i>"+b.unused[h].line+"</i> <code>"+b.unused[h]["function"]+"</code>";m.push("<p><i>Unused variable:</i> "+n.join(", ")+"</p>")}b.json&&m.push("<p>JSON: bad.</p>"),m.push("</div>")}if(!a){m.push("<br><div id=functions>"),b.urls&&o("URLs<br>",b.urls,"<br>"),bd==="style"?m.push("<p>CSS.</p>"):b.json&&!f?m.push("<p>JSON: good.</p>"):b.globals?m.push("<div><i>Global</i> "+b.globals.sort().join(", ")+"</div>"):m.push("<div><i>No new global variables introduced.</i></div>");for(h=0;h<b.functions.length;h+=1)g=b.functions[h],m.push("<br><div class=function><i>"+g.line+"-"+g.last+"</i> "+(g.name||"")+"("+(g.param?g.param.join(", "):"")+")</div>"),o("<big><b>Unused</b></big>",g.unused),o("Closure",g.closure),o("Variable",g["var"]),o("Exception",g.exception),o("Outer",g.outer),o("Global",g.global),o("Label",g.label);if(b.member){c=Object.keys(b.member);if(c.length){c=c.sort(),k="<br><pre id=members>/*members ",j=10;for(h=0;h<c.length;h+=1)i=c[h],l=i.name(),j+l.length>72&&(m.push(k+"<br>"),k=" ",j=1),j+=l.length+2,b.member[i]===1&&(l="<i>"+l+"</i>"),h<c.length-1&&(l+=", "),k+=l;m.push(k+"<br>*/</pre>")}m.push("</div>")}}return m.join("")},cU.jshint=cU,cU.edition="2011-02-19";return cU}();typeof b=="object"&&b&&(b.JSHINT=d)}),define("ace/narcissus/jsparse",["require","exports","module","ace/narcissus/jslex","ace/narcissus/jsdefs"],function(require,exports,module){function parseStdin(a,b){for(;;)try{var c=new lexer.Tokenizer(a,"stdin",b.value),d=Script(c,!1);b.value=c.lineno;return d}catch(e){if(!c.unexpectedEOF)throw e;var f=readline();if(!f)throw e;a+="\n"+f}}function parse(a,b,c){var d=new lexer.Tokenizer(a,b,c),e=Script(d,!1);if(!d.done)throw d.newSyntaxError("Syntax error");return e}function PrimaryExpression(a,b){var c,d,e=a.get(!0);switch(e){case FUNCTION:c=FunctionDefinition(a,b,!1,EXPRESSED_FORM);break;case LEFT_BRACKET:c=new Node(a,{type:ARRAY_INIT});while((e=a.peek(!0))!==RIGHT_BRACKET){if(e===COMMA){a.get(),c.push(null);continue}c.push(AssignExpression(a,b));if(e!==COMMA&&!a.match(COMMA))break}c.children.length===1&&a.match(FOR)&&(d=new Node(a,{type:ARRAY_COMP,expression:c.children[0],tail:ComprehensionTail(a,b)}),c=d),a.mustMatch(RIGHT_BRACKET);break;case LEFT_CURLY:var f,g;c=new Node(a,{type:OBJECT_INIT});object_init:if(!a.match(RIGHT_CURLY)){do{e=a.get();if(a.token.value!=="get"&&a.token.value!=="set"||a.peek()!==IDENTIFIER){switch(e){case IDENTIFIER:case NUMBER:case STRING:f=new Node(a,{type:IDENTIFIER});break;case RIGHT_CURLY:if(b.ecma3OnlyMode)throw a.newSyntaxError("Illegal trailing ,");break object_init;default:if(a.token.value in definitions.keywords){f=new Node(a,{type:IDENTIFIER});break}throw a.newSyntaxError("Invalid property name")}if(a.match(COLON))d=new Node(a,{type:PROPERTY_INIT}),d.push(f),d.push(AssignExpression(a,b)),c.push(d);else{if(a.peek()!==COMMA&&a.peek()!==RIGHT_CURLY)throw a.newSyntaxError("missing : after property");c.push(f)}}else{if(b.ecma3OnlyMode)throw a.newSyntaxError("Illegal property accessor");c.push(FunctionDefinition(a,b,!0,EXPRESSED_FORM))}}while(a.match(COMMA));a.mustMatch(RIGHT_CURLY)}break;case LEFT_PAREN:c=ParenExpression(a,b),a.mustMatch(RIGHT_PAREN),c.parenthesized=!0;break;case LET:c=LetBlock(a,b,!1);break;case NULL:case THIS:case TRUE:case FALSE:case IDENTIFIER:case NUMBER:case STRING:case REGEXP:c=new Node(a);break;default:throw a.newSyntaxError("missing operand")}return c}function ArgumentList(a,b){var c,d;c=new Node(a,{type:LIST});if(a.match(RIGHT_PAREN,!0))return c;do{d=AssignExpression(a,b);if(d.type===YIELD&&!d.parenthesized&&a.peek()===COMMA)throw a.newSyntaxError("Yield expression must be parenthesized");if(a.match(FOR)){d=GeneratorExpression(a,b,d);if(c.children.length>1||a.peek(!0)===COMMA)throw a.newSyntaxError("Generator expression must be parenthesized")}c.push(d)}while(a.match(COMMA));a.mustMatch(RIGHT_PAREN);return c}function MemberExpression(a,b,c){var d,e,f,g;a.match(NEW)?(d=new Node(a),d.push(MemberExpression(a,b,!1)),a.match(LEFT_PAREN)&&(d.type=NEW_WITH_ARGS,d.push(ArgumentList(a,b)))):d=PrimaryExpression(a,b);while((g=a.get())!==END){switch(g){case DOT:e=new Node(a),e.push(d),a.mustMatch(IDENTIFIER),e.push(new Node(a));break;case LEFT_BRACKET:e=new Node(a,{type:INDEX}),e.push(d),e.push(Expression(a,b)),a.mustMatch(RIGHT_BRACKET);break;case LEFT_PAREN:if(c){e=new Node(a,{type:CALL}),e.push(d),e.push(ArgumentList(a,b));break};default:a.unget();return d}d=e}return d}function UnaryExpression(a,b){var c,d,e;switch(e=a.get(!0)){case DELETE:case VOID:case TYPEOF:case NOT:case BITWISE_NOT:case PLUS:case MINUS:e===PLUS?c=new Node(a,{type:UNARY_PLUS}):e===MINUS?c=new Node(a,{type:UNARY_MINUS}):c=new Node(a),c.push(UnaryExpression(a,b));break;case INCREMENT:case DECREMENT:c=new Node(a),c.push(MemberExpression(a,b,!0));break;default:a.unget(),c=MemberExpression(a,b,!0);if(a.tokens[a.tokenIndex+a.lookahead-1&3].lineno===a.lineno)if(a.match(INCREMENT)||a.match(DECREMENT))d=new Node(a,{postfix:!0}),d.push(c),c=d}return c}function MultiplyExpression(a,b){var c,d;c=UnaryExpression(a,b);while(a.match(MUL)||a.match(DIV)||a.match(MOD))d=new Node(a),d.push(c),d.push(UnaryExpression(a,b)),c=d;return c}function AddExpression(a,b){var c,d;c=MultiplyExpression(a,b);while(a.match(PLUS)||a.match(MINUS))d=new Node(a),d.push(c),d.push(MultiplyExpression(a,b)),c=d;return c}function ShiftExpression(a,b){var c,d;c=AddExpression(a,b);while(a.match(LSH)||a.match(RSH)||a.match(URSH))d=new Node(a),d.push(c),d.push(AddExpression(a,b)),c=d;return c}function RelationalExpression(a,b){var c,d,e=b.update({inForLoopInit:!1});c=ShiftExpression(a,e);while(a.match(LT)||a.match(LE)||a.match(GE)||a.match(GT)||!b.inForLoopInit&&a.match(IN)||a.match(INSTANCEOF))d=new Node(a),d.push(c),d.push(ShiftExpression(a,e)),c=d;return c}function EqualityExpression(a,b){var c,d;c=RelationalExpression(a,b);while(a.match(EQ)||a.match(NE)||a.match(STRICT_EQ)||a.match(STRICT_NE))d=new Node(a),d.push(c),d.push(RelationalExpression(a,b)),c=d;return c}function BitwiseAndExpression(a,b){var c,d;c=EqualityExpression(a,b);while(a.match(BITWISE_AND))d=new Node(a),d.push(c),d.push(EqualityExpression(a,b)),c=d;return c}function BitwiseXorExpression(a,b){var c,d;c=BitwiseAndExpression(a,b);while(a.match(BITWISE_XOR))d=new Node(a),d.push(c),d.push(BitwiseAndExpression(a,b)),c=d;return c}function BitwiseOrExpression(a,b){var c,d;c=BitwiseXorExpression(a,b);while(a.match(BITWISE_OR))d=new Node(a),d.push(c),d.push(BitwiseXorExpression(a,b)),c=d;return c}function AndExpression(a,b){var c,d;c=BitwiseOrExpression(a,b);while(a.match(AND))d=new Node(a),d.push(c),d.push(BitwiseOrExpression(a,b)),c=d;return c}function OrExpression(a,b){var c,d;c=AndExpression(a,b);while(a.match(OR))d=new Node(a),d.push(c),d.push(AndExpression(a,b)),c=d;return c}function ConditionalExpression(a,b){var c,d;c=OrExpression(a,b);if(a.match(HOOK)){d=c,c=new Node(a,{type:HOOK}),c.push(d),c.push(AssignExpression(a,b.update({inForLoopInit:!1})));if(!a.match(COLON))throw a.newSyntaxError("missing : after ?");c.push(AssignExpression(a,b))}return c}function AssignExpression(a,b){var c,d;if(a.match(YIELD,!0))return ReturnOrYield(a,b);c=new Node(a,{type:ASSIGN}),d=ConditionalExpression(a,b);if(!a.match(ASSIGN))return d;switch(d.type){case OBJECT_INIT:case ARRAY_INIT:d.destructuredNames=checkDestructuring(a,b,d);case IDENTIFIER:case DOT:case INDEX:case CALL:break;default:throw a.newSyntaxError("Bad left-hand side of assignment")}c.assignOp=a.token.assignOp,c.push(d),c.push(AssignExpression(a,b));return c}function Expression(a,b){var c,d;c=AssignExpression(a,b);if(a.match(COMMA)){d=new Node(a,{type:COMMA}),d.push(c),c=d;do{d=c.children[c.children.length-1];if(d.type===YIELD&&!d.parenthesized)throw a.newSyntaxError("Yield expression must be parenthesized");c.push(AssignExpression(a,b))}while(a.match(COMMA))}return c}function ParenExpression(a,b){var c=Expression(a,b.update({inForLoopInit:b.inForLoopInit&&a.token.type===LEFT_PAREN}));if(a.match(FOR)){if(c.type===YIELD&&!c.parenthesized)throw a.newSyntaxError("Yield expression must be parenthesized");if(c.type===COMMA&&!c.parenthesized)throw a.newSyntaxError("Generator expression must be parenthesized");c=GeneratorExpression(a,b,c)}return c}function HeadExpression(a,b){var c=MaybeLeftParen(a,b),d=ParenExpression(a,b);MaybeRightParen(a,c);if(c===END&&!d.parenthesized){var e=a.peek();if(e!==LEFT_CURLY&&!definitions.isStatementStartCode[e])throw a.newSyntaxError("Unparenthesized head followed by unbraced body")}return d}function ComprehensionTail(a,b){var c,d,e,f,g;c=new Node(a,{type:COMP_TAIL});do{d=new Node(a,{type:FOR_IN,isLoop:!0}),a.match(IDENTIFIER)&&(a.token.value==="each"?d.isEach=!0:a.unget()),g=MaybeLeftParen(a,b);switch(a.get()){case LEFT_BRACKET:case LEFT_CURLY:a.unget(),d.iterator=DestructuringExpression(a,b);break;case IDENTIFIER:d.iterator=f=new Node(a,{type:IDENTIFIER}),f.name=f.value,d.varDecl=e=new Node(a,{type:VAR}),e.push(f),b.parentScript.varDecls.push(f);break;default:throw a.newSyntaxError("missing identifier")}a.mustMatch(IN),d.object=Expression(a,b),MaybeRightParen(a,g),c.push(d)}while(a.match(FOR));a.match(IF)&&(c.guard=HeadExpression(a,b));return c}function GeneratorExpression(a,b,c){return new Node(a,{type:GENERATOR,expression:c,tail:ComprehensionTail(a,b)})}function DestructuringExpression(a,b,c){var d=PrimaryExpression(a,b);d.destructuredNames=checkDestructuring(a,b,d,c);return d}function checkDestructuring(a,b,c,d){if(c.type===ARRAY_COMP)throw a.newSyntaxError("Invalid array comprehension left-hand side");if(c.type===ARRAY_INIT||c.type===OBJECT_INIT){var e={},f,g,h,i,j,k=c.children;for(var l=0,m=k.length;l<m;l++){if(!(f=k[l]))continue;f.type===PROPERTY_INIT?(j=f.children,i=j[1],h=j[0].value):c.type===OBJECT_INIT?(i=f,h=f.value):(i=f,h=l);if(i.type===ARRAY_INIT||i.type===OBJECT_INIT)e[h]=checkDestructuring(a,b,i,d);else{if(d&&i.type!==IDENTIFIER)throw a.newSyntaxError("missing name in pattern");e[h]=i}}return e}}function LetBlock(a,b,c){var d,e;d=new Node(a,{type:LET_BLOCK,varDecls:[]}),a.mustMatch(LEFT_PAREN),d.variables=Variables(a,b,d),a.mustMatch(RIGHT_PAREN),c&&a.peek()!==LEFT_CURLY&&(e=new Node(a,{type:SEMICOLON,expression:d}),c=!1),c?d.block=Block(a,b):d.expression=AssignExpression(a,b);return d}function Variables(a,b,c){var d,e,f,g,h,i;i=a.token.type;switch(i){case VAR:case CONST:h=b.parentScript;break;case LET:h=b.parentBlock;break;case LEFT_PAREN:i=LET,h=c}d=new Node(a,{type:i,destructurings:[]});do{i=a.get();if(i===LEFT_BRACKET||i===LEFT_CURLY){a.unget();var j=DestructuringExpression(a,b,!0);e=new Node(a,{type:IDENTIFIER,name:j,readOnly:d.type===CONST}),d.push(e),pushDestructuringVarDecls(e.name.destructuredNames,h),d.destructurings.push({exp:j,decl:e});if(b.inForLoopInit&&a.peek()===IN)continue;a.mustMatch(ASSIGN);if(a.token.assignOp)throw a.newSyntaxError("Invalid variable initialization");e.initializer=AssignExpression(a,b);continue}if(i!==IDENTIFIER)throw a.newSyntaxError("missing variable name");e=new Node(a,{type:IDENTIFIER,name:a.token.value,readOnly:d.type===CONST}),d.push(e),h.varDecls.push(e);if(a.match(ASSIGN)){if(a.token.assignOp)throw a.newSyntaxError("Invalid variable initialization");e.initializer=AssignExpression(a,b)}}while(a.match(COMMA));return d}function FunctionDefinition(a,b,c,d){var e,f=new Node(a,{params:[]});f.type!==FUNCTION&&(f.type=f.value==="get"?GETTER:SETTER);if(a.match(IDENTIFIER))f.name=a.token.value;else if(c)throw a.newSyntaxError("missing function identifier");var g=new StaticContext(null,null,!0,!1,NESTING_TOP);a.mustMatch(LEFT_PAREN);if(!a.match(RIGHT_PAREN)){do switch(a.get()){case LEFT_BRACKET:case LEFT_CURLY:a.unget(),f.params.push(DestructuringExpression(a,g));break;case IDENTIFIER:f.params.push(a.token.value);break;default:throw a.newSyntaxError("missing formal parameter")}while(a.match(COMMA));a.mustMatch(RIGHT_PAREN)}e=a.get(),e!==LEFT_CURLY&&a.unget();if(e!==LEFT_CURLY){f.body=AssignExpression(a,g);if(f.body.isGenerator)throw a.newSyntaxError("Generator returns a value")}else f.body=Script(a,!0);e===LEFT_CURLY&&a.mustMatch(RIGHT_CURLY),f.end=a.token.end,f.functionForm=d,d===DECLARED_FORM&&b.parentScript.funDecls.push(f);return f}function ReturnOrYield(a,b){var c,d,e=a.token.type,f,g=b.parentScript;if(e===RETURN){if(!b.inFunction)throw a.newSyntaxError("Return not in function")}else{if(!b.inFunction)throw a.newSyntaxError("Yield not in function");g.isGenerator=!0}c=new Node(a,{value:undefined}),f=a.peek(!0),f!==END&&f!==NEWLINE&&f!==SEMICOLON&&f!==RIGHT_CURLY&&(e!==YIELD||f!==e&&f!==RIGHT_BRACKET&&f!==RIGHT_PAREN&&f!==COLON&&f!==COMMA)?e===RETURN?(c.value=Expression(a,b),g.hasReturnWithValue=!0):c.value=AssignExpression(a,b):e===RETURN&&(g.hasEmptyReturn=!0);if(g.hasReturnWithValue&&g.isGenerator)throw a.newSyntaxError("Generator returns a value");return c}function MagicalSemicolon(a){var b;if(a.lineno===a.token.lineno){b=a.peekOnSameLine();if(b!==END&&b!==NEWLINE&&b!==SEMICOLON&&b!==RIGHT_CURLY)throw a.newSyntaxError("missing ; before statement")}a.match(SEMICOLON)}function Statement(a,b){var c,d,e,f,g,h,i,j=a.get(!0),k,l,m;switch(j){case FUNCTION:return FunctionDefinition(a,b,!0,b.nesting!==NESTING_TOP?STATEMENT_FORM:DECLARED_FORM);case LEFT_CURLY:e=new Node(a,blockInit()),Statements(a,b.update({parentBlock:e}).pushTarget(e).nest(NESTING_SHALLOW),e),a.mustMatch(RIGHT_CURLY);return e;case IF:e=new Node(a),e.condition=HeadExpression(a,b),l=b.pushTarget(e).nest(NESTING_DEEP),e.thenPart=Statement(a,l),e.elsePart=a.match(ELSE)?Statement(a,l):null;return e;case SWITCH:e=new Node(a,{cases:[],defaultIndex:-1}),e.discriminant=HeadExpression(a,b),l=b.pushTarget(e).nest(NESTING_DEEP),a.mustMatch(LEFT_CURLY);while((j=a.get())!==RIGHT_CURLY){switch(j){case DEFAULT:if(e.defaultIndex>=0)throw a.newSyntaxError("More than one switch default");case CASE:f=new Node(a),j===DEFAULT?e.defaultIndex=e.cases.length:f.caseLabel=Expression(a,l,COLON);break;default:throw a.newSyntaxError("Invalid switch case")}a.mustMatch(COLON),f.statements=new Node(a,blockInit());while((j=a.peek(!0))!==CASE&&j!==DEFAULT&&j!==RIGHT_CURLY)f.statements.push(Statement(a,l));e.cases.push(f)}return e;case FOR:e=new Node(a,LOOP_INIT),a.match(IDENTIFIER)&&(a.token.value==="each"?e.isEach=!0:a.unget()),b.parenFreeMode||a.mustMatch(LEFT_PAREN),l=b.pushTarget(e).nest(NESTING_DEEP),m=b.update({inForLoopInit:!0}),(j=a.peek())!==SEMICOLON&&(j===VAR||j===CONST?(a.get(),f=Variables(a,m)):j===LET?(a.get(),a.peek()===LEFT_PAREN?f=LetBlock(a,m,!1):(m.parentBlock=e,e.varDecls=[],f=Variables(a,m))):f=Expression(a,m));if(f&&a.match(IN)){e.type=FOR_IN,e.object=Expression(a,m);if(f.type===VAR||f.type===LET){h=f.children;if(h.length!==1&&f.destructurings.length!==1)throw new SyntaxError("Invalid for..in left-hand side",a.filename,f.lineno);f.destructurings.length>0?e.iterator=f.destructurings[0]:e.iterator=h[0],e.varDecl=f}else{if(f.type===ARRAY_INIT||f.type===OBJECT_INIT)f.destructuredNames=checkDestructuring(a,m,f);e.iterator=f}}else{e.setup=f,a.mustMatch(SEMICOLON);if(e.isEach)throw a.newSyntaxError("Invalid for each..in loop");e.condition=a.peek()===SEMICOLON?null:Expression(a,m),a.mustMatch(SEMICOLON),k=a.peek(),e.update=(b.parenFreeMode?k===LEFT_CURLY||definitions.isStatementStartCode[k]:k===RIGHT_PAREN)?null:Expression(a,m)}b.parenFreeMode||a.mustMatch(RIGHT_PAREN),e.body=Statement(a,l);return e;case WHILE:e=new Node(a,{isLoop:!0}),e.condition=HeadExpression(a,b),e.body=Statement(a,b.pushTarget(e).nest(NESTING_DEEP));return e;case DO:e=new Node(a,{isLoop:!0}),e.body=Statement(a,b.pushTarget(e).nest(NESTING_DEEP)),a.mustMatch(WHILE),e.condition=HeadExpression(a,b);if(!b.ecmaStrictMode){a.match(SEMICOLON);return e}break;case BREAK:case CONTINUE:e=new Node(a),l=b.pushTarget(e),a.peekOnSameLine()===IDENTIFIER&&(a.get(),e.label=a.token.value),e.target=e.label?l.labeledTargets.find(function(a){return a.labels.has(e.label)}):l.defaultTarget;if(!e.target)throw a.newSyntaxError("Invalid "+(j===BREAK?"break":"continue"));if(!e.target.isLoop&&j===CONTINUE)throw a.newSyntaxError("Invalid continue");break;case TRY:e=new Node(a,{catchClauses:[]}),e.tryBlock=Block(a,b);while(a.match(CATCH)){f=new Node(a),g=MaybeLeftParen(a,b);switch(a.get()){case LEFT_BRACKET:case LEFT_CURLY:a.unget(),f.varName=DestructuringExpression(a,b,!0);break;case IDENTIFIER:f.varName=a.token.value;break;default:throw a.newSyntaxError("missing identifier in catch")}if(a.match(IF)){if(b.ecma3OnlyMode)throw a.newSyntaxError("Illegal catch guard");if(e.catchClauses.length&&!e.catchClauses.top().guard)throw a.newSyntaxError("Guarded catch after unguarded");f.guard=Expression(a,b)}MaybeRightParen(a,g),f.block=Block(a,b),e.catchClauses.push(f)}a.match(FINALLY)&&(e.finallyBlock=Block(a,b));if(!e.catchClauses.length&&!e.finallyBlock)throw a.newSyntaxError("Invalid try statement");return e;case CATCH:case FINALLY:throw a.newSyntaxError(definitions.tokens[j]+" without preceding try");case THROW:e=new Node(a),e.exception=Expression(a,b);break;case RETURN:e=ReturnOrYield(a,b);break;case WITH:e=new Node(a),e.object=HeadExpression(a,b),e.body=Statement(a,b.pushTarget(e).nest(NESTING_DEEP));return e;case VAR:case CONST:e=Variables(a,b);break;case LET:a.peek()===LEFT_PAREN?e=LetBlock(a,b,!0):e=Variables(a,b);break;case DEBUGGER:e=new Node(a);break;case NEWLINE:case SEMICOLON:e=new Node(a,{type:SEMICOLON}),e.expression=null;return e;default:if(j===IDENTIFIER){j=a.peek();if(j===COLON){d=a.token.value;if(b.allLabels.has(d))throw a.newSyntaxError("Duplicate label");a.get(),e=new Node(a,{type:LABEL,label:d}),e.statement=Statement(a,b.pushLabel(d).nest(NESTING_SHALLOW)),e.target=e.statement.type===LABEL?e.statement.target:e.statement;return e}}e=new Node(a,{type:SEMICOLON}),a.unget(),e.expression=Expression(a,b),e.end=e.expression.end}MagicalSemicolon(a);return e}function Block(a,b){a.mustMatch(LEFT_CURLY);var c=new Node(a,blockInit());Statements(a,b.update({parentBlock:c}).pushTarget(c),c),a.mustMatch(RIGHT_CURLY);return c}function Statements(a,b,c){try{while(!a.done&&a.peek(!0)!==RIGHT_CURLY)c.push(Statement(a,b))}catch(d){a.done&&(a.unexpectedEOF=!0);throw d}}function MaybeRightParen(a,b){b===LEFT_PAREN&&a.mustMatch(RIGHT_PAREN)}function MaybeLeftParen(a,b){if(b.parenFreeMode)return a.match(LEFT_PAREN)?LEFT_PAREN:END;return a.mustMatch(LEFT_PAREN).type}function scriptInit(){return{type:SCRIPT,funDecls:[],varDecls:[],modDecls:[],impDecls:[],expDecls:[],loadDeps:[],hasEmptyReturn:!1,hasReturnWithValue:!1,isGenerator:!1}}function blockInit(){return{type:BLOCK,varDecls:[]}}function tokenString(a){var b=definitions.tokens[a];return/^\W/.test(b)?definitions.opTypeNames[b]:b.toUpperCase()}function Node(a,b){var c=a.token;c?(this.type=c.type,this.value=c.value,this.lineno=c.lineno,this.start=c.start,this.end=c.end):this.lineno=a.lineno,this.tokenizer=a,this.children=[];for(var d in b)this[d]=b[d]}function Script(a,b){var c=new Node(a,scriptInit()),d=new StaticContext(c,c,b,!1,NESTING_TOP);Statements(a,d,c);return c}function StaticContext(a,b,c,d,e){this.parentScript=a,this.parentBlock=b,this.inFunction=c,this.inForLoopInit=d,this.nesting=e,this.allLabels=new Stack,this.currentLabels=new Stack,this.labeledTargets=new Stack,this.defaultTarget=null,definitions.options.ecma3OnlyMode&&(this.ecma3OnlyMode=!0),definitions.options.parenFreeMode&&(this.parenFreeMode=!0)}function pushDestructuringVarDecls(a,b){for(var c in a){var d=a[c];d.type===IDENTIFIER?b.varDecls.push(d):pushDestructuringVarDecls(d,b)}}var lexer=require("ace/narcissus/jslex"),definitions=require("ace/narcissus/jsdefs");const StringMap=definitions.StringMap,Stack=definitions.Stack;eval(definitions.consts);const NESTING_TOP=0,NESTING_SHALLOW=1,NESTING_DEEP=2;StaticContext.prototype={ecma3OnlyMode:!1,parenFreeMode:!1,update:function(a){var b={};for(var c in a)b[c]={value:a[c],writable:!0,enumerable:!0,configurable:!0};return Object.create(this,b)},pushLabel:function(a){return this.update({currentLabels:this.currentLabels.push(a),allLabels:this.allLabels.push(a)})},pushTarget:function(a){var b=a.isLoop||a.type===SWITCH;if(this.currentLabels.isEmpty())return b?this.update({defaultTarget:a}):this;a.labels=new StringMap,this.currentLabels.forEach(function(b){a.labels.set(b,!0)});return this.update({currentLabels:new Stack,labeledTargets:this.labeledTargets.push(a),defaultTarget:b?a:this.defaultTarget})},nest:function(a){var b=Math.max(this.nesting,a);return b!==this.nesting?this.update({nesting:b}):this}},definitions.defineProperty(Array.prototype,"top",function(){return this.length&&this[this.length-1]},!1,!1,!0);var Np=Node.prototype={};Np.constructor=Node,Np.toSource=Object.prototype.toSource,Np.push=function(a){a!==null&&(a.start<this.start&&(this.start=a.start),this.end<a.end&&(this.end=a.end));return this.children.push(a)},Node.indentLevel=0,Np.toString=function(){var a=[];for(var b in this)this.hasOwnProperty(b)&&b!=="type"&&b!=="target"&&a.push({id:b,value:this[b]});a.sort(function(a,b){return a.id<b.id?-1:1});const c=" ";var d=++Node.indentLevel,e="{\n"+c.repeat(d)+"type: "+tokenString(this.type);for(b=0;b<a.length;b++)e+=",\n"+c.repeat(d)+a[b].id+": "+a[b].value;d=--Node.indentLevel,e+="\n"+c.repeat(d)+"}";return e},Np.getSource=function(){return this.tokenizer.source.slice(this.start,this.end)};const LOOP_INIT={isLoop:!0};definitions.defineGetter(Np,"filename",function(){return this.tokenizer.filename}),definitions.defineProperty(String.prototype,"repeat",function(a){var b="",c=this+b;while(--a>=0)b+=c;return b},!1,!1,!0);const DECLARED_FORM=0,EXPRESSED_FORM=1,STATEMENT_FORM=2;exports.parse=parse,exports.parseStdin=parseStdin,exports.Node=Node,exports.DECLARED_FORM=DECLARED_FORM,exports.EXPRESSED_FORM=EXPRESSED_FORM,exports.STATEMENT_FORM=STATEMENT_FORM,exports.Tokenizer=lexer.Tokenizer,exports.FunctionDefinition=FunctionDefinition}),define("ace/narcissus/jslex",["require","exports","module","ace/narcissus/jsdefs"],function(require,exports,module){function Tokenizer(a,b,c){this.cursor=0,this.source=String(a),this.tokens=[],this.tokenIndex=0,this.lookahead=0,this.scanNewlines=!1,this.unexpectedEOF=!1,this.filename=b||"",this.lineno=c||1}var definitions=require("ace/narcissus/jsdefs");eval(definitions.consts);var opTokens={};for(var op in definitions.opTypeNames){if(op==="\n"||op===".")continue;var node=opTokens;for(var i=0;i<op.length;i++){var ch=op[i];ch in node||(node[ch]={}),node=node[ch],node.op=op}}Tokenizer.prototype={get done(){return this.peek(!0)===END},get token(){return this.tokens[this.tokenIndex]},match:function(a,b){return this.get(b)===a||this.unget()},mustMatch:function(a){if(!this.match(a))throw this.newSyntaxError("Missing "+definitions.tokens[a].toLowerCase());return this.token},peek:function(a){var b,c;this.lookahead?(c=this.tokens[this.tokenIndex+this.lookahead&3],b=this.scanNewlines&&c.lineno!==this.lineno?NEWLINE:c.type):(b=this.get(a),this.unget());return b},peekOnSameLine:function(a){this.scanNewlines=!0;var b=this.peek(a);this.scanNewlines=!1;return b},skip:function(){var a=this.source;for(;;){var b=a[this.cursor++],c=a[this.cursor];if(b!=="\n"||this.scanNewlines){if(b==="/"&&c==="*"){this.cursor++;for(;;){b=a[this.cursor++];if(b===undefined)throw this.newSyntaxError("Unterminated comment");if(b==="*"){c=a[this.cursor];if(c==="/"){this.cursor++;break}}else b==="\n"&&this.lineno++}}else if(b==="/"&&c==="/"){this.cursor++;for(;;){b=a[this.cursor++];if(b===undefined)return;if(b==="\n"){this.lineno++;break}}}else if(b!==" "&&b!=="\t"){this.cursor--;return}}else this.lineno++}},lexExponent:function(){var a=this.source,b=a[this.cursor];if(b==="e"||b==="E"){this.cursor++,ch=a[this.cursor++];if(ch==="+"||ch==="-")ch=a[this.cursor++];if(ch<"0"||ch>"9")throw this.newSyntaxError("Missing exponent");do ch=a[this.cursor++];while(ch>="0"&&ch<="9");this.cursor--;return!0}return!1},lexZeroNumber:function(a){var b=this.token,c=this.source;b.type=NUMBER,a=c[this.cursor++];if(a==="."){do a=c[this.cursor++];while(a>="0"&&a<="9");this.cursor--,this.lexExponent(),b.value=parseFloat(b.start,this.cursor)}else if(a==="x"||a==="X"){do a=c[this.cursor++];while(a>="0"&&a<="9"||a>="a"&&a<="f"||a>="A"&&a<="F");this.cursor--,b.value=parseInt(c.substring(b.start,this.cursor))}else if(a<"0"||a>"7")this.cursor--,this.lexExponent(),b.value=0;else{do a=c[this.cursor++];while(a>="0"&&a<="7");this.cursor--,b.value=parseInt(c.substring(b.start,this.cursor))}},lexNumber:function(a){var b=this.token,c=this.source;b.type=NUMBER;var d=!1;do a=c[this.cursor++],a==="."&&!d&&(d=!0,a=c[this.cursor++]);while(a>="0"&&a<="9");this.cursor--;var e=this.lexExponent();d=d||e;var f=c.substring(b.start,this.cursor);b.value=d?parseFloat(f):parseInt(f)},lexDot:function(a){var b=this.token,c=this.source,d=c[this.cursor];if(d<"0"||d>"9")b.type=DOT,b.assignOp=null,b.value=".";else{do a=c[this.cursor++];while(a>="0"&&a<="9");this.cursor--,this.lexExponent(),b.type=NUMBER,b.value=parseFloat(b.start,this.cursor)}},lexString:function(ch){var token=this.token,input=this.source;token.type=STRING;var hasEscapes=!1,delim=ch;while((ch=input[this.cursor++])!==delim){if(this.cursor==input.length)throw this.newSyntaxError("Unterminated string literal");if(ch==="\\"){hasEscapes=!0;if(++this.cursor==input.length)throw this.newSyntaxError("Unterminated string literal")}}token.value=hasEscapes?eval(input.substring(token.start,this.cursor)):input.substring(token.start+1,this.cursor-1)},lexRegExp:function(ch){var token=this.token,input=this.source;token.type=REGEXP;do{ch=input[this.cursor++];if(ch==="\\")this.cursor++;else if(ch==="["){do{if(ch===undefined)throw this.newSyntaxError("Unterminated character class");ch==="\\"&&this.cursor++,ch=input[this.cursor++]}while(ch!=="]")}else if(ch===undefined)throw this.newSyntaxError("Unterminated regex")}while(ch!=="/");do ch=input[this.cursor++];while(ch>="a"&&ch<="z");this.cursor--,token.value=eval(input.substring(token.start,this.cursor))},lexOp:function(a){var b=this.token,c=this.source,d=opTokens[a],e=c[this.cursor];e in d&&(d=d[e],this.cursor++,e=c[this.cursor],e in d&&(d=d[e],this.cursor++,e=c[this.cursor]));var f=d.op;definitions.assignOps[f]&&c[this.cursor]==="="?(this.cursor++,b.type=ASSIGN,b.assignOp=definitions.tokenIds[definitions.opTypeNames[f]],f+="="):(b.type=definitions.tokenIds[definitions.opTypeNames[f]],b.assignOp=null),b.value=f},lexIdent:function(a){var b=this.token,c=this.source;do a=c[this.cursor++];while(a>="a"&&a<="z"||a>="A"&&a<="Z"||a>="0"&&a<="9"||a==="$"||a==="_");this.cursor--;var d=c.substring(b.start,this.cursor);b.type=definitions.keywords[d]||IDENTIFIER,b.value=d},get:function(a){var b;while(this.lookahead){--this.lookahead,this.tokenIndex=this.tokenIndex+1&3,b=this.tokens[this.tokenIndex];if(b.type!==NEWLINE||this.scanNewlines)return b.type}this.skip(),this.tokenIndex=this.tokenIndex+1&3,b=this.tokens[this.tokenIndex],b||(this.tokens[this.tokenIndex]=b={});var c=this.source;if(this.cursor===c.length)return b.type=END;b.start=this.cursor,b.lineno=this.lineno;var d=c[this.cursor++];if(d>="a"&&d<="z"||d>="A"&&d<="Z"||d==="$"||d==="_")this.lexIdent(d);else if(a&&d==="/")this.lexRegExp(d);else if(d in opTokens)this.lexOp(d);else if(d===".")this.lexDot(d);else if(d<"1"||d>"9")if(d==="0")this.lexZeroNumber(d);else if(d==='"'||d==="'")this.lexString(d);else if(this.scanNewlines&&d==="\n")b.type=NEWLINE,b.value="\n",this.lineno++;else throw this.newSyntaxError("Illegal token");else this.lexNumber(d);b.end=this.cursor;return b.type},unget:function(){if(++this.lookahead===4)throw"PANIC: too much lookahead!";this.tokenIndex=this.tokenIndex-1&3},newSyntaxError:function(a){var b=new SyntaxError(a,this.filename,this.lineno);b.source=this.source,b.lineno=this.lineno,b.cursor=this.lookahead?this.tokens[this.tokenIndex+this.lookahead&3].start:this.cursor;return b}},exports.Tokenizer=Tokenizer}),define("ace/narcissus/jsdefs",["require","exports","module"],function(a,b,c){function y(a){this.elts=a||null}function x(){this.table=Object.create(null,{}),this.size=0}function v(){return undefined}function u(a){return{getOwnPropertyDescriptor:function(b){var c=Object.getOwnPropertyDescriptor(a,b);c.configurable=!0;return c},getPropertyDescriptor:function(b){var c=s(a,b);c.configurable=!0;return c},getOwnPropertyNames:function(){return Object.getOwnPropertyNames(a)},defineProperty:function(b,c){Object.defineProperty(a,b,c)},"delete":function(b){return delete a[b]},fix:function(){if(Object.isFrozen(a))return t(a);return undefined},has:function(b){return b in a},hasOwn:function(b){return({}).hasOwnProperty.call(a,b)},get:function(b,c){return a[c]},set:function(b,c,d){a[c]=d;return!0},enumerate:function(){var b=[];for(m in a)b.push(m);return b},keys:function(){return Object.keys(a)}}}function t(a){var b={};for(var c in Object.getOwnPropertyNames(a))b[c]=Object.getOwnPropertyDescriptor(a,c);return b}function s(a,b){while(a){if(({}).hasOwnProperty.call(a,b))return Object.getOwnPropertyDescriptor(a,b);a=Object.getPrototypeOf(a)}}function r(a){return typeof a==="function"&&a.toString().match(/\[native code\]/)}function q(a,b,c,d,e,f){Object.defineProperty(a,b,{value:c,writable:!e,configurable:!d,enumerable:!f})}function p(a,b,c,d,e){Object.defineProperty(a,b,{get:c,configurable:!d,enumerable:!e})}b.options={version:185},function(){b.hostGlobal=this}();var d=["END","\n",";",",","=","?",":","CONDITIONAL","||","&&","|","^","&","==","!=","===","!==","<","<=",">=",">","<<",">>",">>>","+","-","*","/","%","!","~","UNARY_PLUS","UNARY_MINUS","++","--",".","[","]","{","}","(",")","SCRIPT","BLOCK","LABEL","FOR_IN","CALL","NEW_WITH_ARGS","INDEX","ARRAY_INIT","OBJECT_INIT","PROPERTY_INIT","GETTER","SETTER","GROUP","LIST","LET_BLOCK","ARRAY_COMP","GENERATOR","COMP_TAIL","IDENTIFIER","NUMBER","STRING","REGEXP","break","case","catch","const","continue","debugger","default","delete","do","else","false","finally","for","function","if","in","instanceof","let","new","null","return","switch","this","throw","true","try","typeof","var","void","yield","while","with"],e=["break","const","continue","debugger","do","for","if","return","switch","throw","try","var","yield","while","with"],f={"\n":"NEWLINE",";":"SEMICOLON",",":"COMMA","?":"HOOK",":":"COLON","||":"OR","&&":"AND","|":"BITWISE_OR","^":"BITWISE_XOR","&":"BITWISE_AND","===":"STRICT_EQ","==":"EQ","=":"ASSIGN","!==":"STRICT_NE","!=":"NE","<<":"LSH","<=":"LE","<":"LT",">>>":"URSH",">>":"RSH",">=":"GE",">":"GT","++":"INCREMENT","--":"DECREMENT","+":"PLUS","-":"MINUS","*":"MUL","/":"DIV","%":"MOD","!":"NOT","~":"BITWISE_NOT",".":"DOT","[":"LEFT_BRACKET","]":"RIGHT_BRACKET","{":"LEFT_CURLY","}":"RIGHT_CURLY","(":"LEFT_PAREN",")":"RIGHT_PAREN"},g={"__proto__":null},h={},i="const ";for(var j=0,k=d.length;j<k;j++){j>0&&(i+=", ");var l=d[j],m;/^[a-z]/.test(l)?(m=l.toUpperCase(),g[l]=j):m=/^\W/.test(l)?f[l]:l,i+=m+" = "+j,h[m]=j,d[l]=j}i+=";";var n={"__proto__":null};for(j=0,k=e.length;j<k;j++)n[g[e[j]]]=!0;var o=["|","^","&","<<",">>",">>>","+","-","*","/","%"];for(j=0,k=o.length;j<k;j++)l=o[j],o[l]=d[l];var w=({}).hasOwnProperty;x.prototype={has:function(a){return w.call(this.table,a)},set:function(a,b){w.call(this.table,a)||this.size++,this.table[a]=b},get:function(a){return this.table[a]},getDef:function(a,b){w.call(this.table,a)||(this.size++,this.table[a]=b());return this.table[a]},forEach:function(a){var b=this.table;for(var c in b)a.call(this,c,b[c])},toString:function(){return"[object StringMap]"}},y.prototype={push:function(a){return new y({top:a,rest:this.elts})},top:function(){if(!this.elts)throw new Error("empty stack");return this.elts.top},isEmpty:function(){return this.top===null},find:function(a){for(var b=this.elts;b;b=b.rest)if(a(b.top))return b.top;return null},has:function(a){return Boolean(this.find(function(b){return b===a}))},forEach:function(a){for(var b=this.elts;b;b=b.rest)a(b.top)}},b.tokens=d,b.opTypeNames=f,b.keywords=g,b.isStatementStartCode=n,b.tokenIds=h,b.consts=i,b.assignOps=o,b.defineGetter=p,b.defineProperty=q,b.isNativeCode=r,b.makePassthruHandler=u,b.noPropFound=v,b.StringMap=x,b.Stack=y}) |