ZeroTierOne/ui/JSXTransformer.min.js

1820 lines
272 KiB
JavaScript
Raw Normal View History

(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.JSXTransformer=f()}})(function(){var define,module,exports;return(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){'use strict';var ReactTools=_dereq_('../main');var inlineSourceMap=_dereq_('./inline-source-map');var headEl;var dummyAnchor;var inlineScriptCount=0;var supportsAccessors=Object.prototype.hasOwnProperty('__defineGetter__');function transformReact(source,options){options=options||{};if(options.sourceMap){options.sourceMap=supportsAccessors;}
return ReactTools.transformWithDetails(source,options);}
function exec(source,options){return eval(transformReact(source,options).code);}
function createSourceCodeErrorMessage(code,e){var sourceLines=code.split('\n');if(!e.lineNumber||e.lineNumber>sourceLines.length){return'';}
var erroneousLine=sourceLines[e.lineNumber-1];var indentation=0;erroneousLine=erroneousLine.replace(/^\s+/,function(leadingSpaces){indentation=leadingSpaces.length;return'';});var LIMIT=30;var errorColumn=e.column-indentation;if(errorColumn>LIMIT){erroneousLine='... '+erroneousLine.slice(errorColumn-LIMIT);errorColumn=4+LIMIT;}
if(erroneousLine.length-errorColumn>LIMIT){erroneousLine=erroneousLine.slice(0,errorColumn+LIMIT)+' ...';}
var message='\n\n'+erroneousLine+'\n';message+=new Array(errorColumn-1).join(' ')+'^';return message;}
function transformCode(code,url,options){try{var transformed=transformReact(code,options);}catch(e){e.message+='\n at ';if(url){if('fileName'in e){e.fileName=url;}
e.message+=url+':'+e.lineNumber+':'+e.columnNumber;}else{e.message+=location.href;}
e.message+=createSourceCodeErrorMessage(code,e);throw e;}
if(!transformed.sourceMap){return transformed.code;}
var source;if(url==null){source='Inline JSX script';inlineScriptCount++;if(inlineScriptCount>1){source+=' ('+inlineScriptCount+')';}}else if(dummyAnchor){dummyAnchor.href=url;source=dummyAnchor.pathname.substr(1);}
return(transformed.code+'\n'+
inlineSourceMap(transformed.sourceMap,code,source));}
function run(code,url,options){var scriptEl=document.createElement('script');scriptEl.text=transformCode(code,url,options);headEl.appendChild(scriptEl);}
function load(url,successCallback,errorCallback){var xhr;xhr=window.ActiveXObject?new window.ActiveXObject('Microsoft.XMLHTTP'):new XMLHttpRequest();xhr.open('GET',url,true);if('overrideMimeType'in xhr){xhr.overrideMimeType('text/plain');}
xhr.onreadystatechange=function(){if(xhr.readyState===4){if(xhr.status===0||xhr.status===200){successCallback(xhr.responseText);}else{errorCallback();throw new Error('Could not load '+url);}}};return xhr.send(null);}
function loadScripts(scripts){var result=[];var count=scripts.length;function check(){var script,i;for(i=0;i<count;i++){script=result[i];if(script.loaded&&!script.executed){script.executed=true;run(script.content,script.url,script.options);}else if(!script.loaded&&!script.error&&!script.async){break;}}}
scripts.forEach(function(script,i){var options={sourceMap:true};if(/;harmony=true(;|$)/.test(script.type)){options.harmony=true;}
if(/;stripTypes=true(;|$)/.test(script.type)){options.stripTypes=true;}
var async=script.hasAttribute('async');if(script.src){result[i]={async:async,error:false,executed:false,content:null,loaded:false,url:script.src,options:options};load(script.src,function(content){result[i].loaded=true;result[i].content=content;check();},function(){result[i].error=true;check();});}else{result[i]={async:async,error:false,executed:false,content:script.innerHTML,loaded:true,url:null,options:options};}});check();}
function runScripts(){var scripts=document.getElementsByTagName('script');var jsxScripts=[];for(var i=0;i<scripts.length;i++){if(/^text\/jsx(;|$)/.test(scripts.item(i).type)){jsxScripts.push(scripts.item(i));}}
if(jsxScripts.length<1){return;}
console.warn('You are using the in-browser JSX transformer. Be sure to precompile '+'your JSX for production - '+'http://facebook.github.io/react/docs/tooling-integration.html#jsx');loadScripts(jsxScripts);}
if(typeof window!=='undefined'&&window!==null){headEl=document.getElementsByTagName('head')[0];dummyAnchor=document.createElement('a');if(window.addEventListener){window.addEventListener('DOMContentLoaded',runScripts,false);}else{window.attachEvent('onload',runScripts);}}
module.exports={transform:transformReact,exec:exec};},{"../main":2,"./inline-source-map":41}],2:[function(_dereq_,module,exports){'use strict';var visitors=_dereq_('./vendor/fbtransform/visitors');var transform=_dereq_('jstransform').transform;var typesSyntax=_dereq_('jstransform/visitors/type-syntax');var inlineSourceMap=_dereq_('./vendor/inline-source-map');module.exports={transform:function(input,options){options=processOptions(options);var output=innerTransform(input,options);var result=output.code;if(options.sourceMap){var map=inlineSourceMap(output.sourceMap,input,options.filename);result+='\n'+map;}
return result;},transformWithDetails:function(input,options){options=processOptions(options);var output=innerTransform(input,options);var result={};result.code=output.code;if(options.sourceMap){result.sourceMap=output.sourceMap.toJSON();}
if(options.filename){result.sourceMap.sources=[options.filename];}
return result;}};function processOptions(opts){opts=opts||{};var options={};options.harmony=opts.harmony;options.stripTypes=opts.stripTypes;options.sourceMap=opts.sourceMap;options.filename=opts.sourceFilename;if(opts.es6module){options.sourceType='module';}
if(opts.nonStrictEs6module){options.sourceType='nonStrictModule';}
options.es3=opts.target==='es3';options.es5=!options.es3;return options;}
function innerTransform(input,options){var visitorSets=['react'];if(options.harmony){visitorSets.push('harmony');}
if(options.es3){visitorSets.push('es3');}
if(options.stripTypes){input=transform(typesSyntax.visitorList,input,options).code;}
var visitorList=visitors.getVisitorsBySet(visitorSets);return transform(visitorList,input,options);}},{"./vendor/fbtransform/visitors":40,"./vendor/inline-source-map":41,"jstransform":22,"jstransform/visitors/type-syntax":36}],3:[function(_dereq_,module,exports){var base64=_dereq_('base64-js')
var ieee754=_dereq_('ieee754')
var isArray=_dereq_('is-array')
exports.Buffer=Buffer
exports.SlowBuffer=SlowBuffer
exports.INSPECT_MAX_BYTES=50
Buffer.poolSize=8192
var kMaxLength=0x3fffffff
var rootParent={}
Buffer.TYPED_ARRAY_SUPPORT=(function(){try{var buf=new ArrayBuffer(0)
var arr=new Uint8Array(buf)
arr.foo=function(){return 42}
return arr.foo()===42&&typeof arr.subarray==='function'&&new Uint8Array(1).subarray(1,1).byteLength===0}catch(e){return false}})()
function Buffer(subject,encoding){var self=this
if(!(self instanceof Buffer))return new Buffer(subject,encoding)
var type=typeof subject
var length
if(type==='number'){length=+subject}else if(type==='string'){length=Buffer.byteLength(subject,encoding)}else if(type==='object'&&subject!==null){if(subject.type==='Buffer'&&isArray(subject.data))subject=subject.data
length=+subject.length}else{throw new TypeError('must start with number, buffer, array or string')}
if(length>kMaxLength){throw new RangeError('Attempt to allocate Buffer larger than maximum size: 0x'+
kMaxLength.toString(16)+' bytes')}
if(length<0)length=0
else length>>>=0
if(Buffer.TYPED_ARRAY_SUPPORT){self=Buffer._augment(new Uint8Array(length))}else{self.length=length
self._isBuffer=true}
var i
if(Buffer.TYPED_ARRAY_SUPPORT&&typeof subject.byteLength==='number'){self._set(subject)}else if(isArrayish(subject)){if(Buffer.isBuffer(subject)){for(i=0;i<length;i++){self[i]=subject.readUInt8(i)}}else{for(i=0;i<length;i++){self[i]=((subject[i]%256)+256)%256}}}else if(type==='string'){self.write(subject,0,encoding)}else if(type==='number'&&!Buffer.TYPED_ARRAY_SUPPORT){for(i=0;i<length;i++){self[i]=0}}
if(length>0&&length<=Buffer.poolSize)self.parent=rootParent
return self}
function SlowBuffer(subject,encoding){if(!(this instanceof SlowBuffer))return new SlowBuffer(subject,encoding)
var buf=new Buffer(subject,encoding)
delete buf.parent
return buf}
Buffer.isBuffer=function isBuffer(b){return!!(b!=null&&b._isBuffer)}
Buffer.compare=function compare(a,b){if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError('Arguments must be Buffers')}
if(a===b)return 0
var x=a.length
var y=b.length
for(var i=0,len=Math.min(x,y);i<len&&a[i]===b[i];i++){}
if(i!==len){x=a[i]
y=b[i]}
if(x<y)return-1
if(y<x)return 1
return 0}
Buffer.isEncoding=function isEncoding(encoding){switch(String(encoding).toLowerCase()){case'hex':case'utf8':case'utf-8':case'ascii':case'binary':case'base64':case'raw':case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return true
default:return false}}
Buffer.concat=function concat(list,totalLength){if(!isArray(list))throw new TypeError('list argument must be an Array of Buffers.')
if(list.length===0){return new Buffer(0)}else if(list.length===1){return list[0]}
var i
if(totalLength===undefined){totalLength=0
for(i=0;i<list.length;i++){totalLength+=list[i].length}}
var buf=new Buffer(totalLength)
var pos=0
for(i=0;i<list.length;i++){var item=list[i]
item.copy(buf,pos)
pos+=item.length}
return buf}
Buffer.byteLength=function byteLength(str,encoding){var ret
str=str+''
switch(encoding||'utf8'){case'ascii':case'binary':case'raw':ret=str.length
break
case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':ret=str.length*2
break
case'hex':ret=str.length>>>1
break
case'utf8':case'utf-8':ret=utf8ToBytes(str).length
break
case'base64':ret=base64ToBytes(str).length
break
default:ret=str.length}
return ret}
Buffer.prototype.length=undefined
Buffer.prototype.parent=undefined
Buffer.prototype.toString=function toString(encoding,start,end){var loweredCase=false
start=start>>>0
end=end===undefined||end===Infinity?this.length:end>>>0
if(!encoding)encoding='utf8'
if(start<0)start=0
if(end>this.length)end=this.length
if(end<=start)return''
while(true){switch(encoding){case'hex':return hexSlice(this,start,end)
case'utf8':case'utf-8':return utf8Slice(this,start,end)
case'ascii':return asciiSlice(this,start,end)
case'binary':return binarySlice(this,start,end)
case'base64':return base64Slice(this,start,end)
case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return utf16leSlice(this,start,end)
default:if(loweredCase)throw new TypeError('Unknown encoding: '+encoding)
encoding=(encoding+'').toLowerCase()
loweredCase=true}}}
Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError('Argument must be a Buffer')
if(this===b)return true
return Buffer.compare(this,b)===0}
Buffer.prototype.inspect=function inspect(){var str=''
var max=exports.INSPECT_MAX_BYTES
if(this.length>0){str=this.toString('hex',0,max).match(/.{2}/g).join(' ')
if(this.length>max)str+=' ... '}
return'<Buffer '+str+'>'}
Buffer.prototype.compare=function compare(b){if(!Buffer.isBuffer(b))throw new TypeError('Argument must be a Buffer')
if(this===b)return 0
return Buffer.compare(this,b)}
Buffer.prototype.indexOf=function indexOf(val,byteOffset){if(byteOffset>0x7fffffff)byteOffset=0x7fffffff
else if(byteOffset<-0x80000000)byteOffset=-0x80000000
byteOffset>>=0
if(this.length===0)return-1
if(byteOffset>=this.length)return-1
if(byteOffset<0)byteOffset=Math.max(this.length+byteOffset,0)
if(typeof val==='string'){if(val.length===0)return-1
return String.prototype.indexOf.call(this,val,byteOffset)}
if(Buffer.isBuffer(val)){return arrayIndexOf(this,val,byteOffset)}
if(typeof val==='number'){if(Buffer.TYPED_ARRAY_SUPPORT&&Uint8Array.prototype.indexOf==='function'){return Uint8Array.prototype.indexOf.call(this,val,byteOffset)}
return arrayIndexOf(this,[val],byteOffset)}
function arrayIndexOf(arr,val,byteOffset){var foundIndex=-1
for(var i=0;byteOffset+i<arr.length;i++){if(arr[byteOffset+i]===val[foundIndex===-1?0:i-foundIndex]){if(foundIndex===-1)foundIndex=i
if(i-foundIndex+1===val.length)return byteOffset+foundIndex}else{foundIndex=-1}}
return-1}
throw new TypeError('val must be string, number or Buffer')}
Buffer.prototype.get=function get(offset){console.log('.get() is deprecated. Access using array indexes instead.')
return this.readUInt8(offset)}
Buffer.prototype.set=function set(v,offset){console.log('.set() is deprecated. Access using array indexes instead.')
return this.writeUInt8(v,offset)}
function hexWrite(buf,string,offset,length){offset=Number(offset)||0
var remaining=buf.length-offset
if(!length){length=remaining}else{length=Number(length)
if(length>remaining){length=remaining}}
var strLen=string.length
if(strLen%2!==0)throw new Error('Invalid hex string')
if(length>strLen/2){length=strLen/2}
for(var i=0;i<length;i++){var parsed=parseInt(string.substr(i*2,2),16)
if(isNaN(parsed))throw new Error('Invalid hex string')
buf[offset+i]=parsed}
return i}
function utf8Write(buf,string,offset,length){var charsWritten=blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length)
return charsWritten}
function asciiWrite(buf,string,offset,length){var charsWritten=blitBuffer(asciiToBytes(string),buf,offset,length)
return charsWritten}
function binaryWrite(buf,string,offset,length){return asciiWrite(buf,string,offset,length)}
function base64Write(buf,string,offset,length){var charsWritten=blitBuffer(base64ToBytes(string),buf,offset,length)
return charsWritten}
function utf16leWrite(buf,string,offset,length){var charsWritten=blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length)
return charsWritten}
Buffer.prototype.write=function write(string,offset,length,encoding){if(isFinite(offset)){if(!isFinite(length)){encoding=length
length=undefined}}else{var swap=encoding
encoding=offset
offset=length
length=swap}
offset=Number(offset)||0
if(length<0||offset<0||offset>this.length){throw new RangeError('attempt to write outside buffer bounds')}
var remaining=this.length-offset
if(!length){length=remaining}else{length=Number(length)
if(length>remaining){length=remaining}}
encoding=String(encoding||'utf8').toLowerCase()
var ret
switch(encoding){case'hex':ret=hexWrite(this,string,offset,length)
break
case'utf8':case'utf-8':ret=utf8Write(this,string,offset,length)
break
case'ascii':ret=asciiWrite(this,string,offset,length)
break
case'binary':ret=binaryWrite(this,string,offset,length)
break
case'base64':ret=base64Write(this,string,offset,length)
break
case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':ret=utf16leWrite(this,string,offset,length)
break
default:throw new TypeError('Unknown encoding: '+encoding)}
return ret}
Buffer.prototype.toJSON=function toJSON(){return{type:'Buffer',data:Array.prototype.slice.call(this._arr||this,0)}}
function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}
function utf8Slice(buf,start,end){var res=''
var tmp=''
end=Math.min(buf.length,end)
for(var i=start;i<end;i++){if(buf[i]<=0x7F){res+=decodeUtf8Char(tmp)+String.fromCharCode(buf[i])
tmp=''}else{tmp+='%'+buf[i].toString(16)}}
return res+decodeUtf8Char(tmp)}
function asciiSlice(buf,start,end){var ret=''
end=Math.min(buf.length,end)
for(var i=start;i<end;i++){ret+=String.fromCharCode(buf[i]&0x7F)}
return ret}
function binarySlice(buf,start,end){var ret=''
end=Math.min(buf.length,end)
for(var i=start;i<end;i++){ret+=String.fromCharCode(buf[i])}
return ret}
function hexSlice(buf,start,end){var len=buf.length
if(!start||start<0)start=0
if(!end||end<0||end>len)end=len
var out=''
for(var i=start;i<end;i++){out+=toHex(buf[i])}
return out}
function utf16leSlice(buf,start,end){var bytes=buf.slice(start,end)
var res=''
for(var i=0;i<bytes.length;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256)}
return res}
Buffer.prototype.slice=function slice(start,end){var len=this.length
start=~~start
end=end===undefined?len:~~end
if(start<0){start+=len
if(start<0)start=0}else if(start>len){start=len}
if(end<0){end+=len
if(end<0)end=0}else if(end>len){end=len}
if(end<start)end=start
var newBuf
if(Buffer.TYPED_ARRAY_SUPPORT){newBuf=Buffer._augment(this.subarray(start,end))}else{var sliceLen=end-start
newBuf=new Buffer(sliceLen,undefined)
for(var i=0;i<sliceLen;i++){newBuf[i]=this[i+start]}}
if(newBuf.length)newBuf.parent=this.parent||this
return newBuf}
function checkOffset(offset,ext,length){if((offset%1)!==0||offset<0)throw new RangeError('offset is not uint')
if(offset+ext>length)throw new RangeError('Trying to access beyond buffer length')}
Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset>>>0
byteLength=byteLength>>>0
if(!noAssert)checkOffset(offset,byteLength,this.length)
var val=this[offset]
var mul=1
var i=0
while(++i<byteLength&&(mul*=0x100)){val+=this[offset+i]*mul}
return val}
Buffer.prototype.readUIntBE=function readUIntBE(offset,byteLength,noAssert){offset=offset>>>0
byteLength=byteLength>>>0
if(!noAssert){checkOffset(offset,byteLength,this.length)}
var val=this[offset+ --byteLength]
var mul=1
while(byteLength>0&&(mul*=0x100)){val+=this[offset+ --byteLength]*mul}
return val}
Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length)
return this[offset]}
Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length)
return this[offset]|(this[offset+1]<<8)}
Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length)
return(this[offset]<<8)|this[offset+1]}
Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length)
return((this[offset])|(this[offset+1]<<8)|(this[offset+2]<<16))+
(this[offset+3]*0x1000000)}
Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length)
return(this[offset]*0x1000000)+
((this[offset+1]<<16)|(this[offset+2]<<8)|this[offset+3])}
Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset>>>0
byteLength=byteLength>>>0
if(!noAssert)checkOffset(offset,byteLength,this.length)
var val=this[offset]
var mul=1
var i=0
while(++i<byteLength&&(mul*=0x100)){val+=this[offset+i]*mul}
mul*=0x80
if(val>=mul)val-=Math.pow(2,8*byteLength)
return val}
Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset>>>0
byteLength=byteLength>>>0
if(!noAssert)checkOffset(offset,byteLength,this.length)
var i=byteLength
var mul=1
var val=this[offset+ --i]
while(i>0&&(mul*=0x100)){val+=this[offset+ --i]*mul}
mul*=0x80
if(val>=mul)val-=Math.pow(2,8*byteLength)
return val}
Buffer.prototype.readInt8=function readInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length)
if(!(this[offset]&0x80))return(this[offset])
return((0xff-this[offset]+1)* -1)}
Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length)
var val=this[offset]|(this[offset+1]<<8)
return(val&0x8000)?val|0xFFFF0000:val}
Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length)
var val=this[offset+1]|(this[offset]<<8)
return(val&0x8000)?val|0xFFFF0000:val}
Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length)
return(this[offset])|(this[offset+1]<<8)|(this[offset+2]<<16)|(this[offset+3]<<24)}
Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length)
return(this[offset]<<24)|(this[offset+1]<<16)|(this[offset+2]<<8)|(this[offset+3])}
Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length)
return ieee754.read(this,offset,true,23,4)}
Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length)
return ieee754.read(this,offset,false,23,4)}
Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length)
return ieee754.read(this,offset,true,52,8)}
Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length)
return ieee754.read(this,offset,false,52,8)}
function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('buffer must be a Buffer instance')
if(value>max||value<min)throw new RangeError('value is out of bounds')
if(offset+ext>buf.length)throw new RangeError('index out of range')}
Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value
offset=offset>>>0
byteLength=byteLength>>>0
if(!noAssert)checkInt(this,value,offset,byteLength,Math.pow(2,8*byteLength),0)
var mul=1
var i=0
this[offset]=value&0xFF
while(++i<byteLength&&(mul*=0x100)){this[offset+i]=(value/mul)>>>0&0xFF}
return offset+byteLength}
Buffer.prototype.writeUIntBE=function writeUIntBE(value,offset,byteLength,noAssert){value=+value
offset=offset>>>0
byteLength=byteLength>>>0
if(!noAssert)checkInt(this,value,offset,byteLength,Math.pow(2,8*byteLength),0)
var i=byteLength-1
var mul=1
this[offset+i]=value&0xFF
while(--i>=0&&(mul*=0x100)){this[offset+i]=(value/mul)>>>0&0xFF}
return offset+byteLength}
Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,1,0xff,0)
if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value)
this[offset]=value
return offset+1}
function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)value=0xffff+value+1
for(var i=0,j=Math.min(buf.length-offset,2);i<j;i++){buf[offset+i]=(value&(0xff<<(8*(littleEndian?i:1-i))))>>>(littleEndian?i:1-i)*8}}
Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,2,0xffff,0)
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value
this[offset+1]=(value>>>8)}else{objectWriteUInt16(this,value,offset,true)}
return offset+2}
Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,2,0xffff,0)
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=(value>>>8)
this[offset+1]=value}else{objectWriteUInt16(this,value,offset,false)}
return offset+2}
function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)value=0xffffffff+value+1
for(var i=0,j=Math.min(buf.length-offset,4);i<j;i++){buf[offset+i]=(value>>>(littleEndian?i:3-i)*8)&0xff}}
Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0)
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset+3]=(value>>>24)
this[offset+2]=(value>>>16)
this[offset+1]=(value>>>8)
this[offset]=value}else{objectWriteUInt32(this,value,offset,true)}
return offset+4}
Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,4,0xffffffff,0)
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=(value>>>24)
this[offset+1]=(value>>>16)
this[offset+2]=(value>>>8)
this[offset+3]=value}else{objectWriteUInt32(this,value,offset,false)}
return offset+4}
Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value
offset=offset>>>0
if(!noAssert){checkInt(this,value,offset,byteLength,Math.pow(2,8*byteLength-1)-1,-Math.pow(2,8*byteLength-1))}
var i=0
var mul=1
var sub=value<0?1:0
this[offset]=value&0xFF
while(++i<byteLength&&(mul*=0x100)){this[offset+i]=((value/mul)>>0)-sub&0xFF}
return offset+byteLength}
Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value
offset=offset>>>0
if(!noAssert){checkInt(this,value,offset,byteLength,Math.pow(2,8*byteLength-1)-1,-Math.pow(2,8*byteLength-1))}
var i=byteLength-1
var mul=1
var sub=value<0?1:0
this[offset+i]=value&0xFF
while(--i>=0&&(mul*=0x100)){this[offset+i]=((value/mul)>>0)-sub&0xFF}
return offset+byteLength}
Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,1,0x7f,-0x80)
if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value)
if(value<0)value=0xff+value+1
this[offset]=value
return offset+1}
Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000)
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value
this[offset+1]=(value>>>8)}else{objectWriteUInt16(this,value,offset,true)}
return offset+2}
Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,2,0x7fff,-0x8000)
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=(value>>>8)
this[offset+1]=value}else{objectWriteUInt16(this,value,offset,false)}
return offset+2}
Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000)
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value
this[offset+1]=(value>>>8)
this[offset+2]=(value>>>16)
this[offset+3]=(value>>>24)}else{objectWriteUInt32(this,value,offset,true)}
return offset+4}
Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value
offset=offset>>>0
if(!noAssert)checkInt(this,value,offset,4,0x7fffffff,-0x80000000)
if(value<0)value=0xffffffff+value+1
if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=(value>>>24)
this[offset+1]=(value>>>16)
this[offset+2]=(value>>>8)
this[offset+3]=value}else{objectWriteUInt32(this,value,offset,false)}
return offset+4}
function checkIEEE754(buf,value,offset,ext,max,min){if(value>max||value<min)throw new RangeError('value is out of bounds')
if(offset+ext>buf.length)throw new RangeError('index out of range')
if(offset<0)throw new RangeError('index out of range')}
function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e+38,-3.4028234663852886e+38)}
ieee754.write(buf,value,offset,littleEndian,23,4)
return offset+4}
Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)}
Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)}
function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157E+308,-1.7976931348623157E+308)}
ieee754.write(buf,value,offset,littleEndian,52,8)
return offset+8}
Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)}
Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)}
Buffer.prototype.copy=function copy(target,target_start,start,end){if(!start)start=0
if(!end&&end!==0)end=this.length
if(target_start>=target.length)target_start=target.length
if(!target_start)target_start=0
if(end>0&&end<start)end=start
if(end===start)return 0
if(target.length===0||this.length===0)return 0
if(target_start<0){throw new RangeError('targetStart out of bounds')}
if(start<0||start>=this.length)throw new RangeError('sourceStart out of bounds')
if(end<0)throw new RangeError('sourceEnd out of bounds')
if(end>this.length)end=this.length
if(target.length-target_start<end-start){end=target.length-target_start+start}
var len=end-start
if(len<1000||!Buffer.TYPED_ARRAY_SUPPORT){for(var i=0;i<len;i++){target[i+target_start]=this[i+start]}}else{target._set(this.subarray(start,start+len),target_start)}
return len}
Buffer.prototype.fill=function fill(value,start,end){if(!value)value=0
if(!start)start=0
if(!end)end=this.length
if(end<start)throw new RangeError('end < start')
if(end===start)return
if(this.length===0)return
if(start<0||start>=this.length)throw new RangeError('start out of bounds')
if(end<0||end>this.length)throw new RangeError('end out of bounds')
var i
if(typeof value==='number'){for(i=start;i<end;i++){this[i]=value}}else{var bytes=utf8ToBytes(value.toString())
var len=bytes.length
for(i=start;i<end;i++){this[i]=bytes[i%len]}}
return this}
Buffer.prototype.toArrayBuffer=function toArrayBuffer(){if(typeof Uint8Array!=='undefined'){if(Buffer.TYPED_ARRAY_SUPPORT){return(new Buffer(this)).buffer}else{var buf=new Uint8Array(this.length)
for(var i=0,len=buf.length;i<len;i+=1){buf[i]=this[i]}
return buf.buffer}}else{throw new TypeError('Buffer.toArrayBuffer not supported in this browser')}}
var BP=Buffer.prototype
Buffer._augment=function _augment(arr){arr.constructor=Buffer
arr._isBuffer=true
arr._set=arr.set
arr.get=BP.get
arr.set=BP.set
arr.write=BP.write
arr.toString=BP.toString
arr.toLocaleString=BP.toString
arr.toJSON=BP.toJSON
arr.equals=BP.equals
arr.compare=BP.compare
arr.indexOf=BP.indexOf
arr.copy=BP.copy
arr.slice=BP.slice
arr.readUIntLE=BP.readUIntLE
arr.readUIntBE=BP.readUIntBE
arr.readUInt8=BP.readUInt8
arr.readUInt16LE=BP.readUInt16LE
arr.readUInt16BE=BP.readUInt16BE
arr.readUInt32LE=BP.readUInt32LE
arr.readUInt32BE=BP.readUInt32BE
arr.readIntLE=BP.readIntLE
arr.readIntBE=BP.readIntBE
arr.readInt8=BP.readInt8
arr.readInt16LE=BP.readInt16LE
arr.readInt16BE=BP.readInt16BE
arr.readInt32LE=BP.readInt32LE
arr.readInt32BE=BP.readInt32BE
arr.readFloatLE=BP.readFloatLE
arr.readFloatBE=BP.readFloatBE
arr.readDoubleLE=BP.readDoubleLE
arr.readDoubleBE=BP.readDoubleBE
arr.writeUInt8=BP.writeUInt8
arr.writeUIntLE=BP.writeUIntLE
arr.writeUIntBE=BP.writeUIntBE
arr.writeUInt16LE=BP.writeUInt16LE
arr.writeUInt16BE=BP.writeUInt16BE
arr.writeUInt32LE=BP.writeUInt32LE
arr.writeUInt32BE=BP.writeUInt32BE
arr.writeIntLE=BP.writeIntLE
arr.writeIntBE=BP.writeIntBE
arr.writeInt8=BP.writeInt8
arr.writeInt16LE=BP.writeInt16LE
arr.writeInt16BE=BP.writeInt16BE
arr.writeInt32LE=BP.writeInt32LE
arr.writeInt32BE=BP.writeInt32BE
arr.writeFloatLE=BP.writeFloatLE
arr.writeFloatBE=BP.writeFloatBE
arr.writeDoubleLE=BP.writeDoubleLE
arr.writeDoubleBE=BP.writeDoubleBE
arr.fill=BP.fill
arr.inspect=BP.inspect
arr.toArrayBuffer=BP.toArrayBuffer
return arr}
var INVALID_BASE64_RE=/[^+\/0-9A-z\-]/g
function base64clean(str){str=stringtrim(str).replace(INVALID_BASE64_RE,'')
if(str.length<2)return''
while(str.length%4!==0){str=str+'='}
return str}
function stringtrim(str){if(str.trim)return str.trim()
return str.replace(/^\s+|\s+$/g,'')}
function isArrayish(subject){return isArray(subject)||Buffer.isBuffer(subject)||subject&&typeof subject==='object'&&typeof subject.length==='number'}
function toHex(n){if(n<16)return'0'+n.toString(16)
return n.toString(16)}
function utf8ToBytes(string,units){units=units||Infinity
var codePoint
var length=string.length
var leadSurrogate=null
var bytes=[]
var i=0
for(;i<length;i++){codePoint=string.charCodeAt(i)
if(codePoint>0xD7FF&&codePoint<0xE000){if(leadSurrogate){if(codePoint<0xDC00){if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD)
leadSurrogate=codePoint
continue}else{codePoint=leadSurrogate-0xD800<<10|codePoint-0xDC00|0x10000
leadSurrogate=null}}else{if(codePoint>0xDBFF){if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD)
continue}else if(i+1===length){if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD)
continue}else{leadSurrogate=codePoint
continue}}}else if(leadSurrogate){if((units-=3)>-1)bytes.push(0xEF,0xBF,0xBD)
leadSurrogate=null}
if(codePoint<0x80){if((units-=1)<0)break
bytes.push(codePoint)}else if(codePoint<0x800){if((units-=2)<0)break
bytes.push(codePoint>>0x6|0xC0,codePoint&0x3F|0x80)}else if(codePoint<0x10000){if((units-=3)<0)break
bytes.push(codePoint>>0xC|0xE0,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80)}else if(codePoint<0x200000){if((units-=4)<0)break
bytes.push(codePoint>>0x12|0xF0,codePoint>>0xC&0x3F|0x80,codePoint>>0x6&0x3F|0x80,codePoint&0x3F|0x80)}else{throw new Error('Invalid code point')}}
return bytes}
function asciiToBytes(str){var byteArray=[]
for(var i=0;i<str.length;i++){byteArray.push(str.charCodeAt(i)&0xFF)}
return byteArray}
function utf16leToBytes(str,units){var c,hi,lo
var byteArray=[]
for(var i=0;i<str.length;i++){if((units-=2)<0)break
c=str.charCodeAt(i)
hi=c>>8
lo=c%256
byteArray.push(lo)
byteArray.push(hi)}
return byteArray}
function base64ToBytes(str){return base64.toByteArray(base64clean(str))}
function blitBuffer(src,dst,offset,length){for(var i=0;i<length;i++){if((i+offset>=dst.length)||(i>=src.length))break
dst[i+offset]=src[i]}
return i}
function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(0xFFFD)}}},{"base64-js":4,"ieee754":5,"is-array":6}],4:[function(_dereq_,module,exports){var lookup='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';;(function(exports){'use strict';var Arr=(typeof Uint8Array!=='undefined')?Uint8Array:Array
var PLUS='+'.charCodeAt(0)
var SLASH='/'.charCodeAt(0)
var NUMBER='0'.charCodeAt(0)
var LOWER='a'.charCodeAt(0)
var UPPER='A'.charCodeAt(0)
var PLUS_URL_SAFE='-'.charCodeAt(0)
var SLASH_URL_SAFE='_'.charCodeAt(0)
function decode(elt){var code=elt.charCodeAt(0)
if(code===PLUS||code===PLUS_URL_SAFE)
return 62
if(code===SLASH||code===SLASH_URL_SAFE)
return 63
if(code<NUMBER)
return-1
if(code<NUMBER+10)
return code-NUMBER+26+26
if(code<UPPER+26)
return code-UPPER
if(code<LOWER+26)
return code-LOWER+26}
function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr
if(b64.length%4>0){throw new Error('Invalid string. Length must be a multiple of 4')}
var len=b64.length
placeHolders='='===b64.charAt(len-2)?2:'='===b64.charAt(len-1)?1:0
arr=new Arr(b64.length*3/4-placeHolders)
l=placeHolders>0?b64.length-4:b64.length
var L=0
function push(v){arr[L++]=v}
for(i=0,j=0;i<l;i+=4,j+=3){tmp=(decode(b64.charAt(i))<<18)|(decode(b64.charAt(i+1))<<12)|(decode(b64.charAt(i+2))<<6)|decode(b64.charAt(i+3))
push((tmp&0xFF0000)>>16)
push((tmp&0xFF00)>>8)
push(tmp&0xFF)}
if(placeHolders===2){tmp=(decode(b64.charAt(i))<<2)|(decode(b64.charAt(i+1))>>4)
push(tmp&0xFF)}else if(placeHolders===1){tmp=(decode(b64.charAt(i))<<10)|(decode(b64.charAt(i+1))<<4)|(decode(b64.charAt(i+2))>>2)
push((tmp>>8)&0xFF)
push(tmp&0xFF)}
return arr}
function uint8ToBase64(uint8){var i,extraBytes=uint8.length%3,output="",temp,length
function encode(num){return lookup.charAt(num)}
function tripletToBase64(num){return encode(num>>18&0x3F)+encode(num>>12&0x3F)+encode(num>>6&0x3F)+encode(num&0x3F)}
for(i=0,length=uint8.length-extraBytes;i<length;i+=3){temp=(uint8[i]<<16)+(uint8[i+1]<<8)+(uint8[i+2])
output+=tripletToBase64(temp)}
switch(extraBytes){case 1:temp=uint8[uint8.length-1]
output+=encode(temp>>2)
output+=encode((temp<<4)&0x3F)
output+='=='
break
case 2:temp=(uint8[uint8.length-2]<<8)+(uint8[uint8.length-1])
output+=encode(temp>>10)
output+=encode((temp>>4)&0x3F)
output+=encode((temp<<2)&0x3F)
output+='='
break}
return output}
exports.toByteArray=b64ToByteArray
exports.fromByteArray=uint8ToBase64}(typeof exports==='undefined'?(this.base64js={}):exports))},{}],5:[function(_dereq_,module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m,eLen=nBytes*8-mLen-1,eMax=(1<<eLen)-1,eBias=eMax>>1,nBits=-7,i=isLE?(nBytes-1):0,d=isLE?-1:1,s=buffer[offset+i];i+=d;e=s&((1<<(-nBits))-1);s>>=(-nBits);nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8);m=e&((1<<(-nBits))-1);e>>=(-nBits);nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8);if(e===0){e=1-eBias;}else if(e===eMax){return m?NaN:((s?-1:1)*Infinity);}else{m=m+Math.pow(2,mLen);e=e-eBias;}
return(s?-1:1)*m*Math.pow(2,e-mLen);};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c,eLen=nBytes*8-mLen-1,eMax=(1<<eLen)-1,eBias=eMax>>1,rt=(mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0),i=isLE?0:(nBytes-1),d=isLE?1:-1,s=value<0||(value===0&&1/value<0)?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax;}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2;}
if(e+eBias>=1){value+=rt/c;}else{value+=rt*Math.pow(2,1-eBias);}
if(value*c>=2){e++;c/=2;}
if(e+eBias>=eMax){m=0;e=eMax;}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias;}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0;}}
for(;mLen>=8;buffer[offset+i]=m&0xff,i+=d,m/=256,mLen-=8);e=(e<<mLen)|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&0xff,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=s*128;};},{}],6:[function(_dereq_,module,exports){var isArray=Array.isArray;var str=Object.prototype.toString;module.exports=isArray||function(val){return!!val&&'[object Array]'==str.call(val);};},{}],7:[function(_dereq_,module,exports){(function(process){function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==='.'){parts.splice(i,1);}else if(last==='..'){parts.splice(i,1);up++;}else if(up){parts.splice(i,1);up--;}}
if(allowAboveRoot){for(;up--;up){parts.unshift('..');}}
return parts;}
var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1);};exports.resolve=function(){var resolvedPath='',resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=(i>=0)?arguments[i]:process.cwd();if(typeof path!=='string'){throw new TypeError('Arguments to path.resolve must be strings');}else if(!path){continue;}
resolvedPath=path+'/'+resolvedPath;resolvedAbsolute=path.charAt(0)==='/';}
resolvedPath=normalizeArray(filter(resolvedPath.split('/'),function(p){return!!p;}),!resolvedAbsolute).join('/');return((resolvedAbsolute?'/':'')+resolvedPath)||'.';};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==='/';path=normalizeArray(filter(path.split('/'),function(p){return!!p;}),!isAbsolute).join('/');if(!path&&!isAbsolute){path='.';}
if(path&&trailingSlash){path+='/';}
return(isAbsolute?'/':'')+path;};exports.isAbsolute=function(path){return path.charAt(0)==='/';};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=='string'){throw new TypeError('Arguments to path.join must be strings');}
return p;}).join('/'));};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=='')break;}
var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=='')break;}
if(start>end)return[];return arr.slice(start,end-start+1);}
var fromParts=trim(from.split('/'));var toParts=trim(to.split('/'));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break;}}
var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push('..');}
outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join('/');};exports.sep='/';exports.delimiter=':';exports.dirname=function(path){var result=splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return'.';}
if(dir){dir=dir.substr(0,dir.length-1);}
return root+dir;};exports.basename=function(path,ext){var f=splitPath(path)[2];if(ext&&f.substr(-1*ext.length)===ext){f=f.substr(0,f.length-ext.length);}
return f;};exports.extname=function(path){return splitPath(path)[3];};function filter(xs,f){if(xs.filter)return xs.filter(f);var res=[];for(var i=0;i<xs.length;i++){if(f(xs[i],i,xs))res.push(xs[i]);}
return res;}
var substr='ab'.substr(-1)==='b'?function(str,start,len){return str.substr(start,len)}:function(str,start,len){if(start<0)start=str.length+start;return str.substr(start,len);};}).call(this,_dereq_('_process'))},{"_process":8}],8:[function(_dereq_,module,exports){var process=module.exports={};var queue=[];var draining=false;function drainQueue(){if(draining){return;}
draining=true;var currentQueue;var len=queue.length;while(len){currentQueue=queue;queue=[];var i=-1;while(++i<len){currentQueue[i]();}
len=queue.length;}
draining=false;}
process.nextTick=function(fun){queue.push(fun);if(!draining){setTimeout(drainQueue,0);}};process.title='browser';process.browser=true;process.env={};process.argv=[];process.version='';process.versions={};function noop(){}
process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error('process.binding is not supported');};process.cwd=function(){return'/'};process.chdir=function(dir){throw new Error('process.chdir is not supported');};process.umask=function(){return 0;};},{}],9:[function(_dereq_,module,exports){(function(root,factory){'use strict';if(typeof define==='function'&&define.amd){define(['exports'],factory);}else if(typeof exports!=='undefined'){factory(exports);}else{factory((root.esprima={}));}}(this,function(exports){'use strict';var Token,TokenName,FnExprTokens,Syntax,PropertyKind,Messages,Regex,SyntaxTreeDelegate,XHTMLEntities,ClassPropertyType,source,strict,index,lineNumber,lineStart,length,delegate,lookahead,state,extra;Token={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9,Template:10,JSXIdentifier:11,JSXText:12};TokenName={};TokenName[Token.BooleanLiteral]='Boolean';TokenName[Token.EOF]='<end>';TokenName[Token.Identifier]='Identifier';TokenName[Token.Keyword]='Keyword';TokenName[Token.NullLiteral]='Null';TokenName[Token.NumericLiteral]='Numeric';TokenName[Token.Punctuator]='Punctuator';TokenName[Token.StringLiteral]='String';TokenName[Token.JSXIdentifier]='JSXIdentifier';TokenName[Token.JSXText]='JSXText';TokenName[Token.RegularExpression]='RegularExpression';FnExprTokens=['(','{','[','in','typeof','instanceof','new','return','case','delete','throw','void','=','+=','-=','*=','/=','%=','<<=','>>=','>>>=','&=','|=','^=',',','+','-','*','/','%','++','--','<<','>>','>>>','&','|','^','!','~','&&','||','?',':','===','==','>=','<=','<','>','!=','!=='];Syntax={AnyTypeAnnotation:'AnyTypeAnnotation',ArrayExpression:'ArrayExpression',ArrayPattern:'ArrayPattern',ArrayTypeAnnotation:'ArrayTypeAnnotation',ArrowFunctionExpression:'ArrowFunctionExpression',AssignmentExpression:'AssignmentExpression',BinaryExpression:'BinaryExpression',BlockStatement:'BlockStatement',BooleanTypeAnnotation:'BooleanTypeAnnotation',BreakStatement:'BreakStatement',CallExpression:'CallExpression',CatchClause:'CatchClause',ClassBody:'ClassBody',ClassDeclaration:'ClassDeclaration',ClassExpression:'ClassExpression',ClassImplements:'ClassImplements',ClassProperty:'ClassProperty',ComprehensionBlock:'ComprehensionBlock',ComprehensionExpression:'ComprehensionExpression',ConditionalExpression:'ConditionalExpression',ContinueStatement:'ContinueStatement',DebuggerStatement:'DebuggerStatement',DeclareClass:'DeclareClass',DeclareFunction:'DeclareFunction',DeclareModule:'DeclareModule',DeclareVariable:'DeclareVariable',DoWhileStatement:'DoWhileStatement',EmptyStatement:'EmptyStatement',ExportDeclaration:'ExportDeclaration',ExportBatchSpecifier:'ExportBatchSpecifier',ExportSpecifier:'ExportSpecifier',ExpressionStatement:'ExpressionStatement',ForInStatement:'ForInStatement',ForOfStatement:'ForOfStatement',ForStatement:'ForStatement',FunctionDeclaration:'FunctionDeclaration',FunctionExpression:'FunctionExpression',FunctionTypeAnnotation:'FunctionTypeAnnotation',FunctionTypeParam:'FunctionTypeParam',GenericTypeAnnotation:'GenericTypeAnnotation',Identifier:'Identifier',IfStatement:'IfStatement',ImportDeclaration:'ImportDeclaration',ImportDefaultSpecifier:'ImportDefaultSpecifier',ImportNamespaceSpecifier:'ImportNamespaceSpecifier',ImportSpecifier:'ImportSpecifier',InterfaceDeclaration:'InterfaceDeclaration',InterfaceExtends:'InterfaceExtends',IntersectionTypeAnnotation:'IntersectionTypeAnnotation',LabeledStatement:'LabeledStatement',Literal:'Literal',LogicalExpression:'LogicalExpression',MemberExpression:'MemberExpression',MethodDefinition:'MethodDefinition',ModuleSpecifier:'ModuleSpecifier',NewExpression:'NewExpression',NullableTypeAnnotation:'NullableTypeAnnotation',NumberTypeAnnotation:'NumberTypeAnnotation',ObjectExpression:'ObjectExpression',ObjectPattern:'ObjectPattern',ObjectTypeAnnotation:'ObjectTypeAnnotation',ObjectTypeCallProperty:'ObjectTypeCallProperty'
function StringMap(){this.$data={};}
StringMap.prototype.get=function(key){key='$'+key;return this.$data[key];};StringMap.prototype.set=function(key,value){key='$'+key;this.$data[key]=value;return this;};StringMap.prototype.has=function(key){key='$'+key;return Object.prototype.hasOwnProperty.call(this.$data,key);};StringMap.prototype["delete"]=function(key){key='$'+key;return delete this.$data[key];};function isDecimalDigit(ch){return(ch>=48&&ch<=57);}
function isHexDigit(ch){return'0123456789abcdefABCDEF'.indexOf(ch)>=0;}
function isOctalDigit(ch){return'01234567'.indexOf(ch)>=0;}
function isWhiteSpace(ch){return(ch===32)||(ch===9)||(ch===0xB)||(ch===0xC)||(ch===0xA0)||(ch>=0x1680&&'\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(String.fromCharCode(ch))>0);}
function isLineTerminator(ch){return(ch===10)||(ch===13)||(ch===0x2028)||(ch===0x2029);}
function isIdentifierStart(ch){return(ch===36)||(ch===95)||(ch>=65&&ch<=90)||(ch>=97&&ch<=122)||(ch===92)||((ch>=0x80)&&Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch)));}
function isIdentifierPart(ch){return(ch===36)||(ch===95)||(ch>=65&&ch<=90)||(ch>=97&&ch<=122)||(ch>=48&&ch<=57)||(ch===92)||((ch>=0x80)&&Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch)));}
function isFutureReservedWord(id){switch(id){case'class':case'enum':case'export':case'extends':case'import':case'super':return true;default:return false;}}
function isStrictModeReservedWord(id){switch(id){case'implements':case'interface':case'package':case'private':case'protected':case'public':case'static':case'yield':case'let':return true;default:return false;}}
function isRestrictedWord(id){return id==='eval'||id==='arguments';}
function isKeyword(id){if(strict&&isStrictModeReservedWord(id)){return true;}
switch(id.length){case 2:return(id==='if')||(id==='in')||(id==='do');case 3:return(id==='var')||(id==='for')||(id==='new')||(id==='try')||(id==='let');case 4:return(id==='this')||(id==='else')||(id==='case')||(id==='void')||(id==='with')||(id==='enum');case 5:return(id==='while')||(id==='break')||(id==='catch')||(id==='throw')||(id==='const')||(id==='class')||(id==='super');case 6:return(id==='return')||(id==='typeof')||(id==='delete')||(id==='switch')||(id==='export')||(id==='import');case 7:return(id==='default')||(id==='finally')||(id==='extends');case 8:return(id==='function')||(id==='continue')||(id==='debugger');case 10:return(id==='instanceof');default:return false;}}
function addComment(type,value,start,end,loc){var comment;assert(typeof start==='number','Comment must have valid position');if(state.lastCommentStart>=start){return;}
state.lastCommentStart=start;comment={type:type,value:value};if(extra.range){comment.range=[start,end];}
if(extra.loc){comment.loc=loc;}
extra.comments.push(comment);if(extra.attachComment){extra.leadingComments.push(comment);extra.trailingComments.push(comment);}}
function skipSingleLineComment(){var start,loc,ch,comment;start=index-2;loc={start:{line:lineNumber,column:index-lineStart-2}};while(index<length){ch=source.charCodeAt(index);++index;if(isLineTerminator(ch)){if(extra.comments){comment=source.slice(start+2,index-1);loc.end={line:lineNumber,column:index-lineStart-1};addComment('Line',comment,start,index-1,loc);}
if(ch===13&&source.charCodeAt(index)===10){++index;}
++lineNumber;lineStart=index;return;}}
if(extra.comments){comment=source.slice(start+2,index);loc.end={line:lineNumber,column:index-lineStart};addComment('Line',comment,start,index,loc);}}
function skipMultiLineComment(){var start,loc,ch,comment;if(extra.comments){start=index-2;loc={start:{line:lineNumber,column:index-lineStart-2}};}
while(index<length){ch=source.charCodeAt(index);if(isLineTerminator(ch)){if(ch===13&&source.charCodeAt(index+1)===10){++index;}
++lineNumber;++index;lineStart=index;if(index>=length){throwError({},Messages.UnexpectedToken,'ILLEGAL');}}else if(ch===42){if(source.charCodeAt(index+1)===47){++index;++index;if(extra.comments){comment=source.slice(start+2,index-2);loc.end={line:lineNumber,column:index-lineStart};addComment('Block',comment,start,index,loc);}
return;}
++index;}else{++index;}}
throwError({},Messages.UnexpectedToken,'ILLEGAL');}
function skipComment(){var ch;while(index<length){ch=source.charCodeAt(index);if(isWhiteSpace(ch)){++index;}else if(isLineTerminator(ch)){++index;if(ch===13&&source.charCodeAt(index)===10){++index;}
++lineNumber;lineStart=index;}else if(ch===47){ch=source.charCodeAt(index+1);if(ch===47){++index;++index;skipSingleLineComment();}else if(ch===42){++index;++index;skipMultiLineComment();}else{break;}}else{break;}}}
function scanHexEscape(prefix){var i,len,ch,code=0;len=(prefix==='u')?4:2;for(i=0;i<len;++i){if(index<length&&isHexDigit(source[index])){ch=source[index++];code=code*16+'0123456789abcdef'.indexOf(ch.toLowerCase());}else{return'';}}
return String.fromCharCode(code);}
function scanUnicodeCodePointEscape(){var ch,code,cu1,cu2;ch=source[index];code=0;if(ch==='}'){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
while(index<length){ch=source[index++];if(!isHexDigit(ch)){break;}
code=code*16+'0123456789abcdef'.indexOf(ch.toLowerCase());}
if(code>0x10FFFF||ch!=='}'){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
if(code<=0xFFFF){return String.fromCharCode(code);}
cu1=((code-0x10000)>>10)+0xD800;cu2=((code-0x10000)&1023)+0xDC00;return String.fromCharCode(cu1,cu2);}
function getEscapedIdentifier(){var ch,id;ch=source.charCodeAt(index++);id=String.fromCharCode(ch);if(ch===92){if(source.charCodeAt(index)!==117){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
++index;ch=scanHexEscape('u');if(!ch||ch==='\\'||!isIdentifierStart(ch.charCodeAt(0))){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
id=ch;}
while(index<length){ch=source.charCodeAt(index);if(!isIdentifierPart(ch)){break;}
++index;id+=String.fromCharCode(ch);if(ch===92){id=id.substr(0,id.length-1);if(source.charCodeAt(index)!==117){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
++index;ch=scanHexEscape('u');if(!ch||ch==='\\'||!isIdentifierPart(ch.charCodeAt(0))){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
id+=ch;}}
return id;}
function getIdentifier(){var start,ch;start=index++;while(index<length){ch=source.charCodeAt(index);if(ch===92){index=start;return getEscapedIdentifier();}
if(isIdentifierPart(ch)){++index;}else{break;}}
return source.slice(start,index);}
function scanIdentifier(){var start,id,type;start=index;id=(source.charCodeAt(index)===92)?getEscapedIdentifier():getIdentifier();if(id.length===1){type=Token.Identifier;}else if(isKeyword(id)){type=Token.Keyword;}else if(id==='null'){type=Token.NullLiteral;}else if(id==='true'||id==='false'){type=Token.BooleanLiteral;}else{type=Token.Identifier;}
return{type:type,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanPunctuator(){var start=index,code=source.charCodeAt(index),code2,ch1=source[index],ch2,ch3,ch4;if(state.inJSXTag||state.inJSXChild){switch(code){case 60:case 62:++index;return{type:Token.Punctuator,value:String.fromCharCode(code),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}}
switch(code){case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:++index;if(extra.tokenize){if(code===40){extra.openParenToken=extra.tokens.length;}else if(code===123){extra.openCurlyToken=extra.tokens.length;}}
return{type:Token.Punctuator,value:String.fromCharCode(code),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};default:code2=source.charCodeAt(index+1);if(code2===61){switch(code){case 37:case 38:case 42:case 43:case 45:case 47:case 60:case 62:case 94:case 124:index+=2;return{type:Token.Punctuator,value:String.fromCharCode(code)+String.fromCharCode(code2),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};case 33:case 61:index+=2;if(source.charCodeAt(index)===61){++index;}
return{type:Token.Punctuator,value:source.slice(start,index),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};default:break;}}
break;}
ch2=source[index+1];ch3=source[index+2];ch4=source[index+3];if(ch1==='>'&&ch2==='>'&&ch3==='>'){if(ch4==='='){index+=4;return{type:Token.Punctuator,value:'>>>=',lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}}
if(ch1==='>'&&ch2==='>'&&ch3==='>'&&!state.inType){index+=3;return{type:Token.Punctuator,value:'>>>',lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
if(ch1==='<'&&ch2==='<'&&ch3==='='){index+=3;return{type:Token.Punctuator,value:'<<=',lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
if(ch1==='>'&&ch2==='>'&&ch3==='='){index+=3;return{type:Token.Punctuator,value:'>>=',lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
if(ch1==='.'&&ch2==='.'&&ch3==='.'){index+=3;return{type:Token.Punctuator,value:'...',lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
if(ch1===ch2&&('+-<>&|'.indexOf(ch1)>=0)&&!state.inType){index+=2;return{type:Token.Punctuator,value:ch1+ch2,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
if(ch1==='='&&ch2==='>'){index+=2;return{type:Token.Punctuator,value:'=>',lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
if('<>=!+-*%&|^/'.indexOf(ch1)>=0){++index;return{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
if(ch1==='.'){++index;return{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
throwError({},Messages.UnexpectedToken,'ILLEGAL');}
function scanHexLiteral(start){var number='';while(index<length){if(!isHexDigit(source[index])){break;}
number+=source[index++];}
if(number.length===0){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
if(isIdentifierStart(source.charCodeAt(index))){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
return{type:Token.NumericLiteral,value:parseInt('0x'+number,16),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanBinaryLiteral(start){var ch,number;number='';while(index<length){ch=source[index];if(ch!=='0'&&ch!=='1'){break;}
number+=source[index++];}
if(number.length===0){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
if(index<length){ch=source.charCodeAt(index);if(isIdentifierStart(ch)||isDecimalDigit(ch)){throwError({},Messages.UnexpectedToken,'ILLEGAL');}}
return{type:Token.NumericLiteral,value:parseInt(number,2),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanOctalLiteral(prefix,start){var number,octal;if(isOctalDigit(prefix)){octal=true;number='0'+source[index++];}else{octal=false;++index;number='';}
while(index<length){if(!isOctalDigit(source[index])){break;}
number+=source[index++];}
if(!octal&&number.length===0){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
if(isIdentifierStart(source.charCodeAt(index))||isDecimalDigit(source.charCodeAt(index))){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
return{type:Token.NumericLiteral,value:parseInt(number,8),octal:octal,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanNumericLiteral(){var number,start,ch;ch=source[index];assert(isDecimalDigit(ch.charCodeAt(0))||(ch==='.'),'Numeric literal must start with a decimal digit or a decimal point');start=index;number='';if(ch!=='.'){number=source[index++];ch=source[index];if(number==='0'){if(ch==='x'||ch==='X'){++index;return scanHexLiteral(start);}
if(ch==='b'||ch==='B'){++index;return scanBinaryLiteral(start);}
if(ch==='o'||ch==='O'||isOctalDigit(ch)){return scanOctalLiteral(ch,start);}
if(ch&&isDecimalDigit(ch.charCodeAt(0))){throwError({},Messages.UnexpectedToken,'ILLEGAL');}}
while(isDecimalDigit(source.charCodeAt(index))){number+=source[index++];}
ch=source[index];}
if(ch==='.'){number+=source[index++];while(isDecimalDigit(source.charCodeAt(index))){number+=source[index++];}
ch=source[index];}
if(ch==='e'||ch==='E'){number+=source[index++];ch=source[index];if(ch==='+'||ch==='-'){number+=source[index++];}
if(isDecimalDigit(source.charCodeAt(index))){while(isDecimalDigit(source.charCodeAt(index))){number+=source[index++];}}else{throwError({},Messages.UnexpectedToken,'ILLEGAL');}}
if(isIdentifierStart(source.charCodeAt(index))){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
return{type:Token.NumericLiteral,value:parseFloat(number),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanStringLiteral(){var str='',quote,start,ch,code,unescaped,restore,octal=false;quote=source[index];assert((quote==='\''||quote==='"'),'String literal must starts with a quote');start=index;++index;while(index<length){ch=source[index++];if(ch===quote){quote='';break;}else if(ch==='\\'){ch=source[index++];if(!ch||!isLineTerminator(ch.charCodeAt(0))){switch(ch){case'n':str+='\n';break;case'r':str+='\r';break;case't':str+='\t';break;case'u':case'x':if(source[index]==='{'){++index;str+=scanUnicodeCodePointEscape();}else{restore=index;unescaped=scanHexEscape(ch);if(unescaped){str+=unescaped;}else{index=restore;str+=ch;}}
break;case'b':str+='\b';break;case'f':str+='\f';break;case'v':str+='\x0B';break;default:if(isOctalDigit(ch)){code='01234567'.indexOf(ch);if(code!==0){octal=true;}
if(index<length&&isOctalDigit(source[index])){octal=true;code=code*8+'01234567'.indexOf(source[index++]);if('0123'.indexOf(ch)>=0&&index<length&&isOctalDigit(source[index])){code=code*8+'01234567'.indexOf(source[index++]);}}
str+=String.fromCharCode(code);}else{str+=ch;}
break;}}else{++lineNumber;if(ch==='\r'&&source[index]==='\n'){++index;}
lineStart=index;}}else if(isLineTerminator(ch.charCodeAt(0))){break;}else{str+=ch;}}
if(quote!==''){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
return{type:Token.StringLiteral,value:str,octal:octal,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanTemplate(){var cooked='',ch,start,terminated,tail,restore,unescaped,code,octal;terminated=false;tail=false;start=index;++index;while(index<length){ch=source[index++];if(ch==='`'){tail=true;terminated=true;break;}else if(ch==='$'){if(source[index]==='{'){++index;terminated=true;break;}
cooked+=ch;}else if(ch==='\\'){ch=source[index++];if(!isLineTerminator(ch.charCodeAt(0))){switch(ch){case'n':cooked+='\n';break;case'r':cooked+='\r';break;case't':cooked+='\t';break;case'u':case'x':if(source[index]==='{'){++index;cooked+=scanUnicodeCodePointEscape();}else{restore=index;unescaped=scanHexEscape(ch);if(unescaped){cooked+=unescaped;}else{index=restore;cooked+=ch;}}
break;case'b':cooked+='\b';break;case'f':cooked+='\f';break;case'v':cooked+='\v';break;default:if(isOctalDigit(ch)){code='01234567'.indexOf(ch);if(code!==0){octal=true;}
if(index<length&&isOctalDigit(source[index])){octal=true;code=code*8+'01234567'.indexOf(source[index++]);if('0123'.indexOf(ch)>=0&&index<length&&isOctalDigit(source[index])){code=code*8+'01234567'.indexOf(source[index++]);}}
cooked+=String.fromCharCode(code);}else{cooked+=ch;}
break;}}else{++lineNumber;if(ch==='\r'&&source[index]==='\n'){++index;}
lineStart=index;}}else if(isLineTerminator(ch.charCodeAt(0))){++lineNumber;if(ch==='\r'&&source[index]==='\n'){++index;}
lineStart=index;cooked+='\n';}else{cooked+=ch;}}
if(!terminated){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
return{type:Token.Template,value:{cooked:cooked,raw:source.slice(start+1,index-((tail)?1:2))},tail:tail,octal:octal,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanTemplateElement(option){var startsWith,template;lookahead=null;skipComment();startsWith=(option.head)?'`':'}';if(source[index]!==startsWith){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
template=scanTemplate();peek();return template;}
function testRegExp(pattern,flags){var tmp=pattern,value;if(flags.indexOf('u')>=0){tmp=tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g,function($0,$1){if(parseInt($1,16)<=0x10FFFF){return'x';}
throwError({},Messages.InvalidRegExp);}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,'x');}
try{value=new RegExp(tmp);}catch(e){throwError({},Messages.InvalidRegExp);}
try{return new RegExp(pattern,flags);}catch(exception){return null;}}
function scanRegExpBody(){var ch,str,classMarker,terminated,body;ch=source[index];assert(ch==='/','Regular expression literal must start with a slash');str=source[index++];classMarker=false;terminated=false;while(index<length){ch=source[index++];str+=ch;if(ch==='\\'){ch=source[index++];if(isLineTerminator(ch.charCodeAt(0))){throwError({},Messages.UnterminatedRegExp);}
str+=ch;}else if(isLineTerminator(ch.charCodeAt(0))){throwError({},Messages.UnterminatedRegExp);}else if(classMarker){if(ch===']'){classMarker=false;}}else{if(ch==='/'){terminated=true;break;}else if(ch==='['){classMarker=true;}}}
if(!terminated){throwError({},Messages.UnterminatedRegExp);}
body=str.substr(1,str.length-2);return{value:body,literal:str};}
function scanRegExpFlags(){var ch,str,flags,restore;str='';flags='';while(index<length){ch=source[index];if(!isIdentifierPart(ch.charCodeAt(0))){break;}
++index;if(ch==='\\'&&index<length){ch=source[index];if(ch==='u'){++index;restore=index;ch=scanHexEscape('u');if(ch){flags+=ch;for(str+='\\u';restore<index;++restore){str+=source[restore];}}else{index=restore;flags+='u';str+='\\u';}
throwErrorTolerant({},Messages.UnexpectedToken,'ILLEGAL');}else{str+='\\';throwErrorTolerant({},Messages.UnexpectedToken,'ILLEGAL');}}else{flags+=ch;str+=ch;}}
return{value:flags,literal:str};}
function scanRegExp(){var start,body,flags,value;lookahead=null;skipComment();start=index;body=scanRegExpBody();flags=scanRegExpFlags();value=testRegExp(body.value,flags.value);if(extra.tokenize){return{type:Token.RegularExpression,value:value,regex:{pattern:body.value,flags:flags.value},lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
return{literal:body.literal+flags.literal,value:value,regex:{pattern:body.value,flags:flags.value},range:[start,index]};}
function isIdentifierName(token){return token.type===Token.Identifier||token.type===Token.Keyword||token.type===Token.BooleanLiteral||token.type===Token.NullLiteral;}
function advanceSlash(){var prevToken,checkToken;prevToken=extra.tokens[extra.tokens.length-1];if(!prevToken){return scanRegExp();}
if(prevToken.type==='Punctuator'){if(prevToken.value===')'){checkToken=extra.tokens[extra.openParenToken-1];if(checkToken&&checkToken.type==='Keyword'&&(checkToken.value==='if'||checkToken.value==='while'||checkToken.value==='for'||checkToken.value==='with')){return scanRegExp();}
return scanPunctuator();}
if(prevToken.value==='}'){if(extra.tokens[extra.openCurlyToken-3]&&extra.tokens[extra.openCurlyToken-3].type==='Keyword'){checkToken=extra.tokens[extra.openCurlyToken-4];if(!checkToken){return scanPunctuator();}}else if(extra.tokens[extra.openCurlyToken-4]&&extra.tokens[extra.openCurlyToken-4].type==='Keyword'){checkToken=extra.tokens[extra.openCurlyToken-5];if(!checkToken){return scanRegExp();}}else{return scanPunctuator();}
if(FnExprTokens.indexOf(checkToken.value)>=0){return scanPunctuator();}
return scanRegExp();}
return scanRegExp();}
if(prevToken.type==='Keyword'&&prevToken.value!=='this'){return scanRegExp();}
return scanPunctuator();}
function advance(){var ch;if(!state.inJSXChild){skipComment();}
if(index>=length){return{type:Token.EOF,lineNumber:lineNumber,lineStart:lineStart,range:[index,index]};}
if(state.inJSXChild){return advanceJSXChild();}
ch=source.charCodeAt(index);if(ch===40||ch===41||ch===58){return scanPunctuator();}
if(ch===39||ch===34){if(state.inJSXTag){return scanJSXStringLiteral();}
return scanStringLiteral();}
if(state.inJSXTag&&isJSXIdentifierStart(ch)){return scanJSXIdentifier();}
if(ch===96){return scanTemplate();}
if(isIdentifierStart(ch)){return scanIdentifier();}
if(ch===46){if(isDecimalDigit(source.charCodeAt(index+1))){return scanNumericLiteral();}
return scanPunctuator();}
if(isDecimalDigit(ch)){return scanNumericLiteral();}
if(extra.tokenize&&ch===47){return advanceSlash();}
return scanPunctuator();}
function lex(){var token;token=lookahead;index=token.range[1];lineNumber=token.lineNumber;lineStart=token.lineStart;lookahead=advance();index=token.range[1];lineNumber=token.lineNumber;lineStart=token.lineStart;return token;}
function peek(){var pos,line,start;pos=index;line=lineNumber;start=lineStart;lookahead=advance();index=pos;lineNumber=line;lineStart=start;}
function lookahead2(){var adv,pos,line,start,result;adv=(typeof extra.advance==='function')?extra.advance:advance;pos=index;line=lineNumber;start=lineStart;if(lookahead===null){lookahead=adv();}
index=lookahead.range[1];lineNumber=lookahead.lineNumber;lineStart=lookahead.lineStart;result=adv();index=pos;lineNumber=line;lineStart=start;return result;}
function rewind(token){index=token.range[0];lineNumber=token.lineNumber;lineStart=token.lineStart;lookahead=token;}
function markerCreate(){if(!extra.loc&&!extra.range){return undefined;}
skipComment();return{offset:index,line:lineNumber,col:index-lineStart};}
function markerCreatePreserveWhitespace(){if(!extra.loc&&!extra.range){return undefined;}
return{offset:index,line:lineNumber,col:index-lineStart};}
function processComment(node){var lastChild,trailingComments,bottomRight=extra.bottomRightStack,last=bottomRight[bottomRight.length-1];if(node.type===Syntax.Program){if(node.body.length>0){return;}}
if(extra.trailingComments.length>0){if(extra.trailingComments[0].range[0]>=node.range[1]){trailingComments=extra.trailingComments;extra.trailingComments=[];}else{extra.trailingComments.length=0;}}else{if(last&&last.trailingComments&&last.trailingComments[0].range[0]>=node.range[1]){trailingComments=last.trailingComments;delete last.trailingComments;}}
if(last){while(last&&last.range[0]>=node.range[0]){lastChild=last;last=bottomRight.pop();}}
if(lastChild){if(lastChild.leadingComments&&lastChild.leadingComments[lastChild.leadingComments.length-1].range[1]<=node.range[0]){node.leadingComments=lastChild.leadingComments;delete lastChild.leadingComments;}}else if(extra.leadingComments.length>0&&extra.leadingComments[extra.leadingComments.length-1].range[1]<=node.range[0]){node.leadingComments=extra.leadingComments;extra.leadingComments=[];}
if(trailingComments){node.trailingComments=trailingComments;}
bottomRight.push(node);}
function markerApply(marker,node){if(extra.range){node.range=[marker.offset,index];}
if(extra.loc){node.loc={start:{line:marker.line,column:marker.col},end:{line:lineNumber,column:index-lineStart}};node=delegate.postProcess(node);}
if(extra.attachComment){processComment(node);}
return node;}
SyntaxTreeDelegate={name:'SyntaxTree',postProcess:function(node){return node;},createArrayExpression:function(elements){return{type:Syntax.ArrayExpression,elements:elements};},createAssignmentExpression:function(operator,left,right){return{type:Syntax.AssignmentExpression,operator:operator,left:left,right:right};},createBinaryExpression:function(operator,left,right){var type=(operator==='||'||operator==='&&')?Syntax.LogicalExpression:Syntax.BinaryExpression;return{type:type,operator:operator,left:left,right:right};},createBlockStatement:function(body){return{type:Syntax.BlockStatement,body:body};},createBreakStatement:function(label){return{type:Syntax.BreakStatement,label:label};},createCallExpression:function(callee,args){return{type:Syntax.CallExpression,callee:callee,'arguments':args};},createCatchClause:function(param,body){return{type:Syntax.CatchClause,param:param,body:body};},createConditionalExpression:function(test,consequent,alternate){return{type:Syntax.ConditionalExpression,test:test,consequent:consequent,alternate:alternate};},createContinueStatement:function(label){return{type:Syntax.ContinueStatement,label:label};},createDebuggerStatement:function(){return{type:Syntax.DebuggerStatement};},createDoWhileStatement:function(body,test){return{type:Syntax.DoWhileStatement,body:body,test:test};},createEmptyStatement:function(){return{type:Syntax.EmptyStatement};},createExpressionStatement:function(expression){return{type:Syntax.ExpressionStatement,expression:expression};},createForStatement:function(init,test,update,body){return{type:Syntax.ForStatement,init:init,test:test,update:update,body:body};},createForInStatement:function(left,right,body){return{type:Syntax.ForInStatement,left:left,right:right,body:body,each:false};},createForOfStatement:function(left,right,body){return{type:Syntax.ForOfStatement,left:left,right:right,body:body};},createFunctionDeclaration:function(id,params,defaults,body,rest,generator,expression,isAsync,returnType,typeParameters){var funDecl={type:Syntax.FunctionDeclaration,id:id,params:params,defaults:defaults,body:body,rest:rest,generator:generator,expression:expression,returnType:returnType,typeParameters:typeParameters};if(isAsync){funDecl.async=true;}
return funDecl;},createFunctionExpression:function(id,params,defaults,body,rest,generator,expression,isAsync,returnType,typeParameters){var funExpr={type:Syntax.FunctionExpression,id:id,params:params,defaults:defaults,body:body,rest:rest,generator:generator,expression:expression,returnType:returnType,typeParameters:typeParameters};if(isAsync){funExpr.async=true;}
return funExpr;},createIdentifier:function(name){return{type:Syntax.Identifier,name:name,typeAnnotation:undefined,optional:undefined};},createTypeAnnotation:function(typeAnnotation){return{type:Syntax.TypeAnnotation,typeAnnotation:typeAnnotation};},createTypeCast:function(expression,typeAnnotation){return{type:Syntax.TypeCastExpression,expression:expression,typeAnnotation:typeAnnotation};},createFunctionTypeAnnotation:function(params,returnType,rest,typeParameters){return{type:Syntax.FunctionTypeAnnotation,params:params,returnType:returnType,rest:rest,typeParameters:typeParameters};},createFunctionTypeParam:function(name,typeAnnotation,optional){return{type:Syntax.FunctionTypeParam,name:name,typeAnnotation:typeAnnotation,optional:optional};},createNullableTypeAnnotation:function(typeAnnotation){return{type:Syntax.NullableTypeAnnotation,typeAnnotation:typeAnnotation};},createArrayTypeAnnotation:function(elementType){return{type:Syntax.ArrayTypeAnnotation,elementType:elementType};},createGenericTypeAnnotation:function(id,typeParameters){return{type:Syntax.GenericTypeAnnotation,id:id,typeParameters:typeParameters};},createQualifiedTypeIdentifier:function(qualification,id){return{type:Syntax.QualifiedTypeIdentifier,qualification:qualification,id:id};},createTypeParameterDeclaration:function(params){return{type:Syntax.TypeParameterDeclaration,params:params};},createTypeParameterInstantiation:function(params){return{type:Syntax.TypeParameterInstantiation,params:params};},createAnyTypeAnnotation:function(){return{type:Syntax.AnyTypeAnnotation};},createBooleanTypeAnnotation:function(){return{type:Syntax.BooleanTypeAnnotation};},createNumberTypeAnnotation:function(){return{type:Syntax.NumberTypeAnnotation};},createStringTypeAnnotation:function(){return{type:Syntax.StringTypeAnnotation};},createStringLiteralTypeAnnotation:function(token){return{type:Syntax.StringLiteralTypeAnnotation,value:token.value,raw:source.slice(token.range[0],token.range[1])};},createVoidTypeAnnotation:function(){return{type:Syntax.VoidTypeAnnotation};},createTypeofTypeAnnotation:function(argument){return{type:Syntax.TypeofTypeAnnotation,argument:argument};},createTupleTypeAnnotation:function(types){return{type:Syntax.TupleTypeAnnotation,types:types};},createObjectTypeAnnotation:function(properties,indexers,callProperties){return{type:Syntax.ObjectTypeAnnotation,properties:properties,indexers:indexers,callProperties:callProperties};},createObjectTypeIndexer:function(id,key,value,isStatic){return{type:Syntax.ObjectTypeIndexer,id:id,key:key,value:value,"static":isStatic};},createObjectTypeCallProperty:function(value,isStatic){return{type:Syntax.ObjectTypeCallProperty,value:value,"static":isStatic};},createObjectTypeProperty:function(key,value,optional,isStatic){return{type:Syntax.ObjectTypeProperty,key:key,value:value,optional:optional,"static":isStatic};},createUnionTypeAnnotation:function(types){return{type:Syntax.UnionTypeAnnotation,types:types};},createIntersectionTypeAnnotation:function(types){return{type:Syntax.IntersectionTypeAnnotation,types:types};},createTypeAlias:function(id,typeParameters,right){return{type:Syntax.TypeAlias,id:id,typeParameters:typeParameters,right:right};},createInterface:function(id,typeParameters,body,extended){return{type:Syntax.InterfaceDeclaration,id:id,typeParameters:typeParameters,body:body,"extends":extended};},createInterfaceExtends:function(id,typeParameters){return{type:Syntax.InterfaceExtends,id:id,typeParameters:typeParameters};},createDeclareFunction:function(id){return{type:Syntax.DeclareFunction,id:id};},createDeclareVariable:function(id){return{type:Syntax.DeclareVariable,id:id};},createDeclareModule:function(id,body){return{type:Syntax.DeclareModule,id:id,body:body};},createJSXAttribute:function(name,value){return{type:Syntax.JSXAttribute,name:name,value:value||null};},createJSXSpreadAttribute:function(argument){return{type:Syntax.JSXSpreadAttribute,argument:argument};},createJSXIdentifier:function(name){return{type:Syntax.JSXIdentifier,name:name};},createJSXNamespacedName:function(namespace,name){return{type:S
return object;},createMemberExpression:function(accessor,object,property){return{type:Syntax.MemberExpression,computed:accessor==='[',object:object,property:property};},createNewExpression:function(callee,args){return{type:Syntax.NewExpression,callee:callee,'arguments':args};},createObjectExpression:function(properties){return{type:Syntax.ObjectExpression,properties:properties};},createPostfixExpression:function(operator,argument){return{type:Syntax.UpdateExpression,operator:operator,argument:argument,prefix:false};},createProgram:function(body){return{type:Syntax.Program,body:body};},createProperty:function(kind,key,value,method,shorthand,computed){return{type:Syntax.Property,key:key,value:value,kind:kind,method:method,shorthand:shorthand,computed:computed};},createReturnStatement:function(argument){return{type:Syntax.ReturnStatement,argument:argument};},createSequenceExpression:function(expressions){return{type:Syntax.SequenceExpression,expressions:expressions};},createSwitchCase:function(test,consequent){return{type:Syntax.SwitchCase,test:test,consequent:consequent};},createSwitchStatement:function(discriminant,cases){return{type:Syntax.SwitchStatement,discriminant:discriminant,cases:cases};},createThisExpression:function(){return{type:Syntax.ThisExpression};},createThrowStatement:function(argument){return{type:Syntax.ThrowStatement,argument:argument};},createTryStatement:function(block,guardedHandlers,handlers,finalizer){return{type:Syntax.TryStatement,block:block,guardedHandlers:guardedHandlers,handlers:handlers,finalizer:finalizer};},createUnaryExpression:function(operator,argument){if(operator==='++'||operator==='--'){return{type:Syntax.UpdateExpression,operator:operator,argument:argument,prefix:true};}
return{type:Syntax.UnaryExpression,operator:operator,argument:argument,prefix:true};},createVariableDeclaration:function(declarations,kind){return{type:Syntax.VariableDeclaration,declarations:declarations,kind:kind};},createVariableDeclarator:function(id,init){return{type:Syntax.VariableDeclarator,id:id,init:init};},createWhileStatement:function(test,body){return{type:Syntax.WhileStatement,test:test,body:body};},createWithStatement:function(object,body){return{type:Syntax.WithStatement,object:object,body:body};},createTemplateElement:function(value,tail){return{type:Syntax.TemplateElement,value:value,tail:tail};},createTemplateLiteral:function(quasis,expressions){return{type:Syntax.TemplateLiteral,quasis:quasis,expressions:expressions};},createSpreadElement:function(argument){return{type:Syntax.SpreadElement,argument:argument};},createSpreadProperty:function(argument){return{type:Syntax.SpreadProperty,argument:argument};},createTaggedTemplateExpression:function(tag,quasi){return{type:Syntax.TaggedTemplateExpression,tag:tag,quasi:quasi};},createArrowFunctionExpression:function(params,defaults,body,rest,expression,isAsync){var arrowExpr={type:Syntax.ArrowFunctionExpression,id:null,params:params,defaults:defaults,body:body,rest:rest,generator:false,expression:expression};if(isAsync){arrowExpr.async=true;}
return arrowExpr;},createMethodDefinition:function(propertyType,kind,key,value,computed){return{type:Syntax.MethodDefinition,key:key,value:value,kind:kind,'static':propertyType===ClassPropertyType["static"],computed:computed};},createClassProperty:function(key,typeAnnotation,computed,isStatic){return{type:Syntax.ClassProperty,key:key,typeAnnotation:typeAnnotation,computed:computed,"static":isStatic};},createClassBody:function(body){return{type:Syntax.ClassBody,body:body};},createClassImplements:function(id,typeParameters){return{type:Syntax.ClassImplements,id:id,typeParameters:typeParameters};},createClassExpression:function(id,superClass,body,typeParameters,superTypeParameters,implemented){return{type:Syntax.ClassExpression,id:id,superClass:superClass,body:body,typeParameters:typeParameters,superTypeParameters:superTypeParameters,"implements":implemented};},createClassDeclaration:function(id,superClass,body,typeParameters,superTypeParameters,implemented){return{type:Syntax.ClassDeclaration,id:id,superClass:superClass,body:body,typeParameters:typeParameters,superTypeParameters:superTypeParameters,"implements":implemented};},createModuleSpecifier:function(token){return{type:Syntax.ModuleSpecifier,value:token.value,raw:source.slice(token.range[0],token.range[1])};},createExportSpecifier:function(id,name){return{type:Syntax.ExportSpecifier,id:id,name:name};},createExportBatchSpecifier:function(){return{type:Syntax.ExportBatchSpecifier};},createImportDefaultSpecifier:function(id){return{type:Syntax.ImportDefaultSpecifier,id:id};},createImportNamespaceSpecifier:function(id){return{type:Syntax.ImportNamespaceSpecifier,id:id};},createExportDeclaration:function(isDefault,declaration,specifiers,src){return{type:Syntax.ExportDeclaration,'default':!!isDefault,declaration:declaration,specifiers:specifiers,source:src};},createImportSpecifier:function(id,name){return{type:Syntax.ImportSpecifier,id:id,name:name};},createImportDeclaration:function(specifiers,src,isType){return{type:Syntax.ImportDeclaration,specifiers:specifiers,source:src,isType:isType};},createYieldExpression:function(argument,dlg){return{type:Syntax.YieldExpression,argument:argument,delegate:dlg};},createAwaitExpression:function(argument){return{type:Syntax.AwaitExpression,argument:argument};},createComprehensionExpression:function(filter,blocks,body){return{type:Syntax.ComprehensionExpression,filter:filter,blocks:blocks,body:body};}};function peekLineTerminator(){var pos,line,start,found;pos=index;line=lineNumber;start=lineStart;skipComment();found=lineNumber!==line;index=pos;lineNumber=line;lineStart=start;return found;}
function throwError(token,messageFormat){var error,args=Array.prototype.slice.call(arguments,2),msg=messageFormat.replace(/%(\d)/g,function(whole,idx){assert(idx<args.length,'Message reference must be in range');return args[idx];});if(typeof token.lineNumber==='number'){error=new Error('Line '+token.lineNumber+': '+msg);error.index=token.range[0];error.lineNumber=token.lineNumber;error.column=token.range[0]-lineStart+1;}else{error=new Error('Line '+lineNumber+': '+msg);error.index=index;error.lineNumber=lineNumber;error.column=index-lineStart+1;}
error.description=msg;throw error;}
function throwErrorTolerant(){try{throwError.apply(null,arguments);}catch(e){if(extra.errors){extra.errors.push(e);}else{throw e;}}}
function throwUnexpected(token){if(token.type===Token.EOF){throwError(token,Messages.UnexpectedEOS);}
if(token.type===Token.NumericLiteral){throwError(token,Messages.UnexpectedNumber);}
if(token.type===Token.StringLiteral||token.type===Token.JSXText){throwError(token,Messages.UnexpectedString);}
if(token.type===Token.Identifier){throwError(token,Messages.UnexpectedIdentifier);}
if(token.type===Token.Keyword){if(isFutureReservedWord(token.value)){throwError(token,Messages.UnexpectedReserved);}else if(strict&&isStrictModeReservedWord(token.value)){throwErrorTolerant(token,Messages.StrictReservedWord);return;}
throwError(token,Messages.UnexpectedToken,token.value);}
if(token.type===Token.Template){throwError(token,Messages.UnexpectedTemplate,token.value.raw);}
throwError(token,Messages.UnexpectedToken,token.value);}
function expect(value){var token=lex();if(token.type!==Token.Punctuator||token.value!==value){throwUnexpected(token);}}
function expectKeyword(keyword,contextual){var token=lex();if(token.type!==(contextual?Token.Identifier:Token.Keyword)||token.value!==keyword){throwUnexpected(token);}}
function expectContextualKeyword(keyword){return expectKeyword(keyword,true);}
function match(value){return lookahead.type===Token.Punctuator&&lookahead.value===value;}
function matchKeyword(keyword,contextual){var expectedType=contextual?Token.Identifier:Token.Keyword;return lookahead.type===expectedType&&lookahead.value===keyword;}
function matchContextualKeyword(keyword){return matchKeyword(keyword,true);}
function matchAssign(){var op;if(lookahead.type!==Token.Punctuator){return false;}
op=lookahead.value;return op==='='||op==='*='||op==='/='||op==='%='||op==='+='||op==='-='||op==='<<='||op==='>>='||op==='>>>='||op==='&='||op==='^='||op==='|=';}
function matchYield(){return state.yieldAllowed&&matchKeyword('yield',!strict);}
function matchAsync(){var backtrackToken=lookahead,matches=false;if(matchContextualKeyword('async')){lex();matches=!peekLineTerminator();rewind(backtrackToken);}
return matches;}
function matchAwait(){return state.awaitAllowed&&matchContextualKeyword('await');}
function consumeSemicolon(){var line,oldIndex=index,oldLineNumber=lineNumber,oldLineStart=lineStart,oldLookahead=lookahead;if(source.charCodeAt(index)===59){lex();return;}
line=lineNumber;skipComment();if(lineNumber!==line){index=oldIndex;lineNumber=oldLineNumber;lineStart=oldLineStart;lookahead=oldLookahead;return;}
if(match(';')){lex();return;}
if(lookahead.type!==Token.EOF&&!match('}')){throwUnexpected(lookahead);}}
function isLeftHandSide(expr){return expr.type===Syntax.Identifier||expr.type===Syntax.MemberExpression;}
function isAssignableLeftHandSide(expr){return isLeftHandSide(expr)||expr.type===Syntax.ObjectPattern||expr.type===Syntax.ArrayPattern;}
function parseArrayInitialiser(){var elements=[],blocks=[],filter=null,tmp,possiblecomprehension=true,marker=markerCreate();expect('[');while(!match(']')){if(lookahead.value==='for'&&lookahead.type===Token.Keyword){if(!possiblecomprehension){throwError({},Messages.ComprehensionError);}
matchKeyword('for');tmp=parseForStatement({ignoreBody:true});tmp.of=tmp.type===Syntax.ForOfStatement;tmp.type=Syntax.ComprehensionBlock;if(tmp.left.kind){throwError({},Messages.ComprehensionError);}
blocks.push(tmp);}else if(lookahead.value==='if'&&lookahead.type===Token.Keyword){if(!possiblecomprehension){throwError({},Messages.ComprehensionError);}
expectKeyword('if');expect('(');filter=parseExpression();expect(')');}else if(lookahead.value===','&&lookahead.type===Token.Punctuator){possiblecomprehension=false;lex();elements.push(null);}else{tmp=parseSpreadOrAssignmentExpression();elements.push(tmp);if(tmp&&tmp.type===Syntax.SpreadElement){if(!match(']')){throwError({},Messages.ElementAfterSpreadElement);}}else if(!(match(']')||matchKeyword('for')||matchKeyword('if'))){expect(',');possiblecomprehension=false;}}}
expect(']');if(filter&&!blocks.length){throwError({},Messages.ComprehensionRequiresBlock);}
if(blocks.length){if(elements.length!==1){throwError({},Messages.ComprehensionError);}
return markerApply(marker,delegate.createComprehensionExpression(filter,blocks,elements[0]));}
return markerApply(marker,delegate.createArrayExpression(elements));}
function parsePropertyFunction(options){var previousStrict,previousYieldAllowed,previousAwaitAllowed,params,defaults,body,marker=markerCreate();previousStrict=strict;previousYieldAllowed=state.yieldAllowed;state.yieldAllowed=options.generator;previousAwaitAllowed=state.awaitAllowed;state.awaitAllowed=options.async;params=options.params||[];defaults=options.defaults||[];body=parseConciseBody();if(options.name&&strict&&isRestrictedWord(params[0].name)){throwErrorTolerant(options.name,Messages.StrictParamName);}
strict=previousStrict;state.yieldAllowed=previousYieldAllowed;state.awaitAllowed=previousAwaitAllowed;return markerApply(marker,delegate.createFunctionExpression(null,params,defaults,body,options.rest||null,options.generator,body.type!==Syntax.BlockStatement,options.async,options.returnType,options.typeParameters));}
function parsePropertyMethodFunction(options){var previousStrict,tmp,method;previousStrict=strict;strict=true;tmp=parseParams();if(tmp.stricted){throwErrorTolerant(tmp.stricted,tmp.message);}
method=parsePropertyFunction({params:tmp.params,defaults:tmp.defaults,rest:tmp.rest,generator:options.generator,async:options.async,returnType:tmp.returnType,typeParameters:options.typeParameters});strict=previousStrict;return method;}
function parseObjectPropertyKey(){var marker=markerCreate(),token=lex(),propertyKey,result;if(token.type===Token.StringLiteral||token.type===Token.NumericLiteral){if(strict&&token.octal){throwErrorTolerant(token,Messages.StrictOctalLiteral);}
return markerApply(marker,delegate.createLiteral(token));}
if(token.type===Token.Punctuator&&token.value==='['){marker=markerCreate();propertyKey=parseAssignmentExpression();result=markerApply(marker,propertyKey);expect(']');return result;}
return markerApply(marker,delegate.createIdentifier(token.value));}
function parseObjectProperty(){var token,key,id,param,computed,marker=markerCreate(),returnType,typeParameters;token=lookahead;computed=(token.value==='['&&token.type===Token.Punctuator);if(token.type===Token.Identifier||computed||matchAsync()){id=parseObjectPropertyKey();if(match(':')){lex();return markerApply(marker,delegate.createProperty('init',id,parseAssignmentExpression(),false,false,computed));}
if(match('(')||match('<')){if(match('<')){typeParameters=parseTypeParameterDeclaration();}
return markerApply(marker,delegate.createProperty('init',id,parsePropertyMethodFunction({generator:false,async:false,typeParameters:typeParameters}),true,false,computed));}
if(token.value==='get'){computed=(lookahead.value==='[');key=parseObjectPropertyKey();expect('(');expect(')');if(match(':')){returnType=parseTypeAnnotation();}
return markerApply(marker,delegate.createProperty('get',key,parsePropertyFunction({generator:false,async:false,returnType:returnType}),false,false,computed));}
if(token.value==='set'){computed=(lookahead.value==='[');key=parseObjectPropertyKey();expect('(');token=lookahead;param=[parseTypeAnnotatableIdentifier()];expect(')');if(match(':')){returnType=parseTypeAnnotation();}
return markerApply(marker,delegate.createProperty('set',key,parsePropertyFunction({params:param,generator:false,async:false,name:token,returnType:returnType}),false,false,computed));}
if(token.value==='async'){computed=(lookahead.value==='[');key=parseObjectPropertyKey();if(match('<')){typeParameters=parseTypeParameterDeclaration();}
return markerApply(marker,delegate.createProperty('init',key,parsePropertyMethodFunction({generator:false,async:true,typeParameters:typeParameters}),true,false,computed));}
if(computed){throwUnexpected(lookahead);}
return markerApply(marker,delegate.createProperty('init',id,id,false,true,false));}
if(token.type===Token.EOF||token.type===Token.Punctuator){if(!match('*')){throwUnexpected(token);}
lex();computed=(lookahead.type===Token.Punctuator&&lookahead.value==='[');id=parseObjectPropertyKey();if(match('<')){typeParameters=parseTypeParameterDeclaration();}
if(!match('(')){throwUnexpected(lex());}
return markerApply(marker,delegate.createProperty('init',id,parsePropertyMethodFunction({generator:true,typeParameters:typeParameters}),true,false,computed));}
key=parseObjectPropertyKey();if(match(':')){lex();return markerApply(marker,delegate.createProperty('init',key,parseAssignmentExpression(),false,false,false));}
if(match('(')||match('<')){if(match('<')){typeParameters=parseTypeParameterDeclaration();}
return markerApply(marker,delegate.createProperty('init',key,parsePropertyMethodFunction({generator:false,typeParameters:typeParameters}),true,false,false));}
throwUnexpected(lex());}
function parseObjectSpreadProperty(){var marker=markerCreate();expect('...');return markerApply(marker,delegate.createSpreadProperty(parseAssignmentExpression()));}
function getFieldName(key){var toString=String;if(key.type===Syntax.Identifier){return key.name;}
return toString(key.value);}
function parseObjectInitialiser(){var properties=[],property,name,kind,storedKind,map=new StringMap(),marker=markerCreate(),toString=String;expect('{');while(!match('}')){if(match('...')){property=parseObjectSpreadProperty();}else{property=parseObjectProperty();if(property.key.type===Syntax.Identifier){name=property.key.name;}else{name=toString(property.key.value);}
kind=(property.kind==='init')?PropertyKind.Data:(property.kind==='get')?PropertyKind.Get:PropertyKind.Set;if(map.has(name)){storedKind=map.get(name);if(storedKind===PropertyKind.Data){if(strict&&kind===PropertyKind.Data){throwErrorTolerant({},Messages.StrictDuplicateProperty);}else if(kind!==PropertyKind.Data){throwErrorTolerant({},Messages.AccessorDataProperty);}}else{if(kind===PropertyKind.Data){throwErrorTolerant({},Messages.AccessorDataProperty);}else if(storedKind&kind){throwErrorTolerant({},Messages.AccessorGetSet);}}
map.set(name,storedKind|kind);}else{map.set(name,kind);}}
properties.push(property);if(!match('}')){expect(',');}}
expect('}');return markerApply(marker,delegate.createObjectExpression(properties));}
function parseTemplateElement(option){var marker=markerCreate(),token=scanTemplateElement(option);if(strict&&token.octal){throwError(token,Messages.StrictOctalLiteral);}
return markerApply(marker,delegate.createTemplateElement({raw:token.value.raw,cooked:token.value.cooked},token.tail));}
function parseTemplateLiteral(){var quasi,quasis,expressions,marker=markerCreate();quasi=parseTemplateElement({head:true});quasis=[quasi];expressions=[];while(!quasi.tail){expressions.push(parseExpression());quasi=parseTemplateElement({head:false});quasis.push(quasi);}
return markerApply(marker,delegate.createTemplateLiteral(quasis,expressions));}
function parseGroupExpression(){var expr,marker,typeAnnotation;expect('(');++state.parenthesizedCount;marker=markerCreate();expr=parseExpression();if(match(':')){typeAnnotation=parseTypeAnnotation();expr=markerApply(marker,delegate.createTypeCast(expr,typeAnnotation));}
expect(')');return expr;}
function matchAsyncFuncExprOrDecl(){var token;if(matchAsync()){token=lookahead2();if(token.type===Token.Keyword&&token.value==='function'){return true;}}
return false;}
function parsePrimaryExpression(){var marker,type,token,expr;type=lookahead.type;if(type===Token.Identifier){marker=markerCreate();return markerApply(marker,delegate.createIdentifier(lex().value));}
if(type===Token.StringLiteral||type===Token.NumericLiteral){if(strict&&lookahead.octal){throwErrorTolerant(lookahead,Messages.StrictOctalLiteral);}
marker=markerCreate();return markerApply(marker,delegate.createLiteral(lex()));}
if(type===Token.Keyword){if(matchKeyword('this')){marker=markerCreate();lex();return markerApply(marker,delegate.createThisExpression());}
if(matchKeyword('function')){return parseFunctionExpression();}
if(matchKeyword('class')){return parseClassExpression();}
if(matchKeyword('super')){marker=markerCreate();lex();return markerApply(marker,delegate.createIdentifier('super'));}}
if(type===Token.BooleanLiteral){marker=markerCreate();token=lex();token.value=(token.value==='true');return markerApply(marker,delegate.createLiteral(token));}
if(type===Token.NullLiteral){marker=markerCreate();token=lex();token.value=null;return markerApply(marker,delegate.createLiteral(token));}
if(match('[')){return parseArrayInitialiser();}
if(match('{')){return parseObjectInitialiser();}
if(match('(')){return parseGroupExpression();}
if(match('/')||match('/=')){marker=markerCreate();expr=delegate.createLiteral(scanRegExp());peek();return markerApply(marker,expr);}
if(type===Token.Template){return parseTemplateLiteral();}
if(match('<')){return parseJSXElement();}
throwUnexpected(lex());}
function parseArguments(){var args=[],arg;expect('(');if(!match(')')){while(index<length){arg=parseSpreadOrAssignmentExpression();args.push(arg);if(match(')')){break;}else if(arg.type===Syntax.SpreadElement){throwError({},Messages.ElementAfterSpreadElement);}
expect(',');}}
expect(')');return args;}
function parseSpreadOrAssignmentExpression(){if(match('...')){var marker=markerCreate();lex();return markerApply(marker,delegate.createSpreadElement(parseAssignmentExpression()));}
return parseAssignmentExpression();}
function parseNonComputedProperty(){var marker=markerCreate(),token=lex();if(!isIdentifierName(token)){throwUnexpected(token);}
return markerApply(marker,delegate.createIdentifier(token.value));}
function parseNonComputedMember(){expect('.');return parseNonComputedProperty();}
function parseComputedMember(){var expr;expect('[');expr=parseExpression();expect(']');return expr;}
function parseNewExpression(){var callee,args,marker=markerCreate();expectKeyword('new');callee=parseLeftHandSideExpression();args=match('(')?parseArguments():[];return markerApply(marker,delegate.createNewExpression(callee,args));}
function parseLeftHandSideExpressionAllowCall(){var expr,args,marker=markerCreate();expr=matchKeyword('new')?parseNewExpression():parsePrimaryExpression();while(match('.')||match('[')||match('(')||lookahead.type===Token.Template){if(match('(')){args=parseArguments();expr=markerApply(marker,delegate.createCallExpression(expr,args));}else if(match('[')){expr=markerApply(marker,delegate.createMemberExpression('[',expr,parseComputedMember()));}else if(match('.')){expr=markerApply(marker,delegate.createMemberExpression('.',expr,parseNonComputedMember()));}else{expr=markerApply(marker,delegate.createTaggedTemplateExpression(expr,parseTemplateLiteral()));}}
return expr;}
function parseLeftHandSideExpression(){var expr,marker=markerCreate();expr=matchKeyword('new')?parseNewExpression():parsePrimaryExpression();while(match('.')||match('[')||lookahead.type===Token.Template){if(match('[')){expr=markerApply(marker,delegate.createMemberExpression('[',expr,parseComputedMember()));}else if(match('.')){expr=markerApply(marker,delegate.createMemberExpression('.',expr,parseNonComputedMember()));}else{expr=markerApply(marker,delegate.createTaggedTemplateExpression(expr,parseTemplateLiteral()));}}
return expr;}
function parsePostfixExpression(){var marker=markerCreate(),expr=parseLeftHandSideExpressionAllowCall(),token;if(lookahead.type!==Token.Punctuator){return expr;}
if((match('++')||match('--'))&&!peekLineTerminator()){if(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)){throwErrorTolerant({},Messages.StrictLHSPostfix);}
if(!isLeftHandSide(expr)){throwError({},Messages.InvalidLHSInAssignment);}
token=lex();expr=markerApply(marker,delegate.createPostfixExpression(token.value,expr));}
return expr;}
function parseUnaryExpression(){var marker,token,expr;if(lookahead.type!==Token.Punctuator&&lookahead.type!==Token.Keyword){return parsePostfixExpression();}
if(match('++')||match('--')){marker=markerCreate();token=lex();expr=parseUnaryExpression();if(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)){throwErrorTolerant({},Messages.StrictLHSPrefix);}
if(!isLeftHandSide(expr)){throwError({},Messages.InvalidLHSInAssignment);}
return markerApply(marker,delegate.createUnaryExpression(token.value,expr));}
if(match('+')||match('-')||match('~')||match('!')){marker=markerCreate();token=lex();expr=parseUnaryExpression();return markerApply(marker,delegate.createUnaryExpression(token.value,expr));}
if(matchKeyword('delete')||matchKeyword('void')||matchKeyword('typeof')){marker=markerCreate();token=lex();expr=parseUnaryExpression();expr=markerApply(marker,delegate.createUnaryExpression(token.value,expr));if(strict&&expr.operator==='delete'&&expr.argument.type===Syntax.Identifier){throwErrorTolerant({},Messages.StrictDelete);}
return expr;}
return parsePostfixExpression();}
function binaryPrecedence(token,allowIn){var prec=0;if(token.type!==Token.Punctuator&&token.type!==Token.Keyword){return 0;}
switch(token.value){case'||':prec=1;break;case'&&':prec=2;break;case'|':prec=3;break;case'^':prec=4;break;case'&':prec=5;break;case'==':case'!=':case'===':case'!==':prec=6;break;case'<':case'>':case'<=':case'>=':case'instanceof':prec=7;break;case'in':prec=allowIn?7:0;break;case'<<':case'>>':case'>>>':prec=8;break;case'+':case'-':prec=9;break;case'*':case'/':case'%':prec=11;break;default:break;}
return prec;}
function parseBinaryExpression(){var expr,token,prec,previousAllowIn,stack,right,operator,left,i,marker,markers;previousAllowIn=state.allowIn;state.allowIn=true;marker=markerCreate();left=parseUnaryExpression();token=lookahead;prec=binaryPrecedence(token,previousAllowIn);if(prec===0){return left;}
token.prec=prec;lex();markers=[marker,markerCreate()];right=parseUnaryExpression();stack=[left,token,right];while((prec=binaryPrecedence(lookahead,previousAllowIn))>0){while((stack.length>2)&&(prec<=stack[stack.length-2].prec)){right=stack.pop();operator=stack.pop().value;left=stack.pop();expr=delegate.createBinaryExpression(operator,left,right);markers.pop();marker=markers.pop();markerApply(marker,expr);stack.push(expr);markers.push(marker);}
token=lex();token.prec=prec;stack.push(token);markers.push(markerCreate());expr=parseUnaryExpression();stack.push(expr);}
state.allowIn=previousAllowIn;i=stack.length-1;expr=stack[i];markers.pop();while(i>1){expr=delegate.createBinaryExpression(stack[i-1].value,stack[i-2],expr);i-=2;marker=markers.pop();markerApply(marker,expr);}
return expr;}
function parseConditionalExpression(){var expr,previousAllowIn,consequent,alternate,marker=markerCreate();expr=parseBinaryExpression();if(match('?')){lex();previousAllowIn=state.allowIn;state.allowIn=true;consequent=parseAssignmentExpression();state.allowIn=previousAllowIn;expect(':');alternate=parseAssignmentExpression();expr=markerApply(marker,delegate.createConditionalExpression(expr,consequent,alternate));}
return expr;}
function reinterpretAsAssignmentBindingPattern(expr){var i,len,property,element;if(expr.type===Syntax.ObjectExpression){expr.type=Syntax.ObjectPattern;for(i=0,len=expr.properties.length;i<len;i+=1){property=expr.properties[i];if(property.type===Syntax.SpreadProperty){if(i<len-1){throwError({},Messages.PropertyAfterSpreadProperty);}
reinterpretAsAssignmentBindingPattern(property.argument);}else{if(property.kind!=='init'){throwError({},Messages.InvalidLHSInAssignment);}
reinterpretAsAssignmentBindingPattern(property.value);}}}else if(expr.type===Syntax.ArrayExpression){expr.type=Syntax.ArrayPattern;for(i=0,len=expr.elements.length;i<len;i+=1){element=expr.elements[i];if(element){reinterpretAsAssignmentBindingPattern(element);}}}else if(expr.type===Syntax.Identifier){if(isRestrictedWord(expr.name)){throwError({},Messages.InvalidLHSInAssignment);}}else if(expr.type===Syntax.SpreadElement){reinterpretAsAssignmentBindingPattern(expr.argument);if(expr.argument.type===Syntax.ObjectPattern){throwError({},Messages.ObjectPatternAsSpread);}}else{if(expr.type!==Syntax.MemberExpression&&expr.type!==Syntax.CallExpression&&expr.type!==Syntax.NewExpression){throwError({},Messages.InvalidLHSInAssignment);}}}
function reinterpretAsDestructuredParameter(options,expr){var i,len,property,element;if(expr.type===Syntax.ObjectExpression){expr.type=Syntax.ObjectPattern;for(i=0,len=expr.properties.length;i<len;i+=1){property=expr.properties[i];if(property.type===Syntax.SpreadProperty){if(i<len-1){throwError({},Messages.PropertyAfterSpreadProperty);}
reinterpretAsDestructuredParameter(options,property.argument);}else{if(property.kind!=='init'){throwError({},Messages.InvalidLHSInFormalsList);}
reinterpretAsDestructuredParameter(options,property.value);}}}else if(expr.type===Syntax.ArrayExpression){expr.type=Syntax.ArrayPattern;for(i=0,len=expr.elements.length;i<len;i+=1){element=expr.elements[i];if(element){reinterpretAsDestructuredParameter(options,element);}}}else if(expr.type===Syntax.Identifier){validateParam(options,expr,expr.name);}else if(expr.type===Syntax.SpreadElement){if(expr.argument.type!==Syntax.Identifier){throwError({},Messages.InvalidLHSInFormalsList);}
validateParam(options,expr.argument,expr.argument.name);}else{throwError({},Messages.InvalidLHSInFormalsList);}}
function reinterpretAsCoverFormalsList(expressions){var i,len,param,params,defaults,defaultCount,options,rest;params=[];defaults=[];defaultCount=0;rest=null;options={paramSet:new StringMap()};for(i=0,len=expressions.length;i<len;i+=1){param=expressions[i];if(param.type===Syntax.Identifier){params.push(param);defaults.push(null);validateParam(options,param,param.name);}else if(param.type===Syntax.ObjectExpression||param.type===Syntax.ArrayExpression){reinterpretAsDestructuredParameter(options,param);params.push(param);defaults.push(null);}else if(param.type===Syntax.SpreadElement){assert(i===len-1,'It is guaranteed that SpreadElement is last element by parseExpression');if(param.argument.type!==Syntax.Identifier){throwError({},Messages.InvalidLHSInFormalsList);}
reinterpretAsDestructuredParameter(options,param.argument);rest=param.argument;}else if(param.type===Syntax.AssignmentExpression){params.push(param.left);defaults.push(param.right);++defaultCount;validateParam(options,param.left,param.left.name);}else{return null;}}
if(options.message===Messages.StrictParamDupe){throwError(strict?options.stricted:options.firstRestricted,options.message);}
if(defaultCount===0){defaults=[];}
return{params:params,defaults:defaults,rest:rest,stricted:options.stricted,firstRestricted:options.firstRestricted,message:options.message};}
function parseArrowFunctionExpression(options,marker){var previousStrict,previousYieldAllowed,previousAwaitAllowed,body;expect('=>');previousStrict=strict;previousYieldAllowed=state.yieldAllowed;state.yieldAllowed=false;previousAwaitAllowed=state.awaitAllowed;state.awaitAllowed=!!options.async;body=parseConciseBody();if(strict&&options.firstRestricted){throwError(options.firstRestricted,options.message);}
if(strict&&options.stricted){throwErrorTolerant(options.stricted,options.message);}
strict=previousStrict;state.yieldAllowed=previousYieldAllowed;state.awaitAllowed=previousAwaitAllowed;return markerApply(marker,delegate.createArrowFunctionExpression(options.params,options.defaults,body,options.rest,body.type!==Syntax.BlockStatement,!!options.async));}
function parseAssignmentExpression(){var marker,expr,token,params,oldParenthesizedCount,startsWithParen=false,backtrackToken=lookahead,possiblyAsync=false;if(matchYield()){return parseYieldExpression();}
if(matchAwait()){return parseAwaitExpression();}
oldParenthesizedCount=state.parenthesizedCount;marker=markerCreate();if(matchAsyncFuncExprOrDecl()){return parseFunctionExpression();}
if(matchAsync()){possiblyAsync=true;lex();}
if(match('(')){token=lookahead2();if((token.type===Token.Punctuator&&token.value===')')||token.value==='...'){params=parseParams();if(!match('=>')){throwUnexpected(lex());}
params.async=possiblyAsync;return parseArrowFunctionExpression(params,marker);}
startsWithParen=true;}
token=lookahead;if(possiblyAsync&&!match('(')&&token.type!==Token.Identifier){possiblyAsync=false;rewind(backtrackToken);}
expr=parseConditionalExpression();if(match('=>')&&(state.parenthesizedCount===oldParenthesizedCount||state.parenthesizedCount===(oldParenthesizedCount+1))){if(expr.type===Syntax.Identifier){params=reinterpretAsCoverFormalsList([expr]);}else if(expr.type===Syntax.AssignmentExpression||expr.type===Syntax.ArrayExpression||expr.type===Syntax.ObjectExpression){if(!startsWithParen){throwUnexpected(lex());}
params=reinterpretAsCoverFormalsList([expr]);}else if(expr.type===Syntax.SequenceExpression){params=reinterpretAsCoverFormalsList(expr.expressions);}
if(params){params.async=possiblyAsync;return parseArrowFunctionExpression(params,marker);}}
if(possiblyAsync){possiblyAsync=false;rewind(backtrackToken);expr=parseConditionalExpression();}
if(matchAssign()){if(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)){throwErrorTolerant(token,Messages.StrictLHSAssignment);}
if(match('=')&&(expr.type===Syntax.ObjectExpression||expr.type===Syntax.ArrayExpression)){reinterpretAsAssignmentBindingPattern(expr);}else if(!isLeftHandSide(expr)){throwError({},Messages.InvalidLHSInAssignment);}
expr=markerApply(marker,delegate.createAssignmentExpression(lex().value,expr,parseAssignmentExpression()));}
return expr;}
function parseExpression(){var marker,expr,expressions,sequence,spreadFound;marker=markerCreate();expr=parseAssignmentExpression();expressions=[expr];if(match(',')){while(index<length){if(!match(',')){break;}
lex();expr=parseSpreadOrAssignmentExpression();expressions.push(expr);if(expr.type===Syntax.SpreadElement){spreadFound=true;if(!match(')')){throwError({},Messages.ElementAfterSpreadElement);}
break;}}
sequence=markerApply(marker,delegate.createSequenceExpression(expressions));}
if(spreadFound&&lookahead2().value!=='=>'){throwError({},Messages.IllegalSpread);}
return sequence||expr;}
function parseStatementList(){var list=[],statement;while(index<length){if(match('}')){break;}
statement=parseSourceElement();if(typeof statement==='undefined'){break;}
list.push(statement);}
return list;}
function parseBlock(){var block,marker=markerCreate();expect('{');block=parseStatementList();expect('}');return markerApply(marker,delegate.createBlockStatement(block));}
function parseTypeParameterDeclaration(){var marker=markerCreate(),paramTypes=[];expect('<');while(!match('>')){paramTypes.push(parseTypeAnnotatableIdentifier());if(!match('>')){expect(',');}}
expect('>');return markerApply(marker,delegate.createTypeParameterDeclaration(paramTypes));}
function parseTypeParameterInstantiation(){var marker=markerCreate(),oldInType=state.inType,paramTypes=[];state.inType=true;expect('<');while(!match('>')){paramTypes.push(parseType());if(!match('>')){expect(',');}}
expect('>');state.inType=oldInType;return markerApply(marker,delegate.createTypeParameterInstantiation(paramTypes));}
function parseObjectTypeIndexer(marker,isStatic){var id,key,value;expect('[');id=parseObjectPropertyKey();expect(':');key=parseType();expect(']');expect(':');value=parseType();return markerApply(marker,delegate.createObjectTypeIndexer(id,key,value,isStatic));}
function parseObjectTypeMethodish(marker){var params=[],rest=null,returnType,typeParameters=null;if(match('<')){typeParameters=parseTypeParameterDeclaration();}
expect('(');while(lookahead.type===Token.Identifier){params.push(parseFunctionTypeParam());if(!match(')')){expect(',');}}
if(match('...')){lex();rest=parseFunctionTypeParam();}
expect(')');expect(':');returnType=parseType();return markerApply(marker,delegate.createFunctionTypeAnnotation(params,returnType,rest,typeParameters));}
function parseObjectTypeMethod(marker,isStatic,key){var optional=false,value;value=parseObjectTypeMethodish(marker);return markerApply(marker,delegate.createObjectTypeProperty(key,value,optional,isStatic));}
function parseObjectTypeCallProperty(marker,isStatic){var valueMarker=markerCreate();return markerApply(marker,delegate.createObjectTypeCallProperty(parseObjectTypeMethodish(valueMarker),isStatic));}
function parseObjectType(allowStatic){var callProperties=[],indexers=[],marker,optional=false,properties=[],propertyKey,propertyTypeAnnotation,token,isStatic,matchStatic;expect('{');while(!match('}')){marker=markerCreate();matchStatic=strict?matchKeyword('static'):matchContextualKeyword('static');if(allowStatic&&matchStatic){token=lex();isStatic=true;}
if(match('[')){indexers.push(parseObjectTypeIndexer(marker,isStatic));}else if(match('(')||match('<')){callProperties.push(parseObjectTypeCallProperty(marker,allowStatic));}else{if(isStatic&&match(':')){propertyKey=markerApply(marker,delegate.createIdentifier(token));throwErrorTolerant(token,Messages.StrictReservedWord);}else{propertyKey=parseObjectPropertyKey();}
if(match('<')||match('(')){properties.push(parseObjectTypeMethod(marker,isStatic,propertyKey));}else{if(match('?')){lex();optional=true;}
expect(':');propertyTypeAnnotation=parseType();properties.push(markerApply(marker,delegate.createObjectTypeProperty(propertyKey,propertyTypeAnnotation,optional,isStatic)));}}
if(match(';')){lex();}else if(!match('}')){throwUnexpected(lookahead);}}
expect('}');return delegate.createObjectTypeAnnotation(properties,indexers,callProperties);}
function parseGenericType(){var marker=markerCreate(),typeParameters=null,typeIdentifier;typeIdentifier=parseVariableIdentifier();while(match('.')){expect('.');typeIdentifier=markerApply(marker,delegate.createQualifiedTypeIdentifier(typeIdentifier,parseVariableIdentifier()));}
if(match('<')){typeParameters=parseTypeParameterInstantiation();}
return markerApply(marker,delegate.createGenericTypeAnnotation(typeIdentifier,typeParameters));}
function parseVoidType(){var marker=markerCreate();expectKeyword('void');return markerApply(marker,delegate.createVoidTypeAnnotation());}
function parseTypeofType(){var argument,marker=markerCreate();expectKeyword('typeof');argument=parsePrimaryType();return markerApply(marker,delegate.createTypeofTypeAnnotation(argument));}
function parseTupleType(){var marker=markerCreate(),types=[];expect('[');while(index<length&&!match(']')){types.push(parseType());if(match(']')){break;}
expect(',');}
expect(']');return markerApply(marker,delegate.createTupleTypeAnnotation(types));}
function parseFunctionTypeParam(){var marker=markerCreate(),name,optional=false,typeAnnotation;name=parseVariableIdentifier();if(match('?')){lex();optional=true;}
expect(':');typeAnnotation=parseType();return markerApply(marker,delegate.createFunctionTypeParam(name,typeAnnotation,optional));}
function parseFunctionTypeParams(){var ret={params:[],rest:null};while(lookahead.type===Token.Identifier){ret.params.push(parseFunctionTypeParam());if(!match(')')){expect(',');}}
if(match('...')){lex();ret.rest=parseFunctionTypeParam();}
return ret;}
function parsePrimaryType(){var params=null,returnType=null,marker=markerCreate(),rest=null,tmp,typeParameters,token,type,isGroupedType=false;switch(lookahead.type){case Token.Identifier:switch(lookahead.value){case'any':lex();return markerApply(marker,delegate.createAnyTypeAnnotation());case'bool':case'boolean':lex();return markerApply(marker,delegate.createBooleanTypeAnnotation());case'number':lex();return markerApply(marker,delegate.createNumberTypeAnnotation());case'string':lex();return markerApply(marker,delegate.createStringTypeAnnotation());}
return markerApply(marker,parseGenericType());case Token.Punctuator:switch(lookahead.value){case'{':return markerApply(marker,parseObjectType());case'[':return parseTupleType();case'<':typeParameters=parseTypeParameterDeclaration();expect('(');tmp=parseFunctionTypeParams();params=tmp.params;rest=tmp.rest;expect(')');expect('=>');returnType=parseType();return markerApply(marker,delegate.createFunctionTypeAnnotation(params,returnType,rest,typeParameters));case'(':lex();if(!match(')')&&!match('...')){if(lookahead.type===Token.Identifier){token=lookahead2();isGroupedType=token.value!=='?'&&token.value!==':';}else{isGroupedType=true;}}
if(isGroupedType){type=parseType();expect(')');if(match('=>')){throwError({},Messages.ConfusedAboutFunctionType);}
return type;}
tmp=parseFunctionTypeParams();params=tmp.params;rest=tmp.rest;expect(')');expect('=>');returnType=parseType();return markerApply(marker,delegate.createFunctionTypeAnnotation(params,returnType,rest,null));}
break;case Token.Keyword:switch(lookahead.value){case'void':return markerApply(marker,parseVoidType());case'typeof':return markerApply(marker,parseTypeofType());}
break;case Token.StringLiteral:token=lex();if(token.octal){throwError(token,Messages.StrictOctalLiteral);}
return markerApply(marker,delegate.createStringLiteralTypeAnnotation(token));}
throwUnexpected(lookahead);}
function parsePostfixType(){var marker=markerCreate(),t=parsePrimaryType();if(match('[')){expect('[');expect(']');return markerApply(marker,delegate.createArrayTypeAnnotation(t));}
return t;}
function parsePrefixType(){var marker=markerCreate();if(match('?')){lex();return markerApply(marker,delegate.createNullableTypeAnnotation(parsePrefixType()));}
return parsePostfixType();}
function parseIntersectionType(){var marker=markerCreate(),type,types;type=parsePrefixType();types=[type];while(match('&')){lex();types.push(parsePrefixType());}
return types.length===1?type:markerApply(marker,delegate.createIntersectionTypeAnnotation(types));}
function parseUnionType(){var marker=markerCreate(),type,types;type=parseIntersectionType();types=[type];while(match('|')){lex();types.push(parseIntersectionType());}
return types.length===1?type:markerApply(marker,delegate.createUnionTypeAnnotation(types));}
function parseType(){var oldInType=state.inType,type;state.inType=true;type=parseUnionType();state.inType=oldInType;return type;}
function parseTypeAnnotation(){var marker=markerCreate(),type;expect(':');type=parseType();return markerApply(marker,delegate.createTypeAnnotation(type));}
function parseVariableIdentifier(){var marker=markerCreate(),token=lex();if(token.type!==Token.Identifier){throwUnexpected(token);}
return markerApply(marker,delegate.createIdentifier(token.value));}
function parseTypeAnnotatableIdentifier(requireTypeAnnotation,canBeOptionalParam){var marker=markerCreate(),ident=parseVariableIdentifier(),isOptionalParam=false;if(canBeOptionalParam&&match('?')){expect('?');isOptionalParam=true;}
if(requireTypeAnnotation||match(':')){ident.typeAnnotation=parseTypeAnnotation();ident=markerApply(marker,ident);}
if(isOptionalParam){ident.optional=true;ident=markerApply(marker,ident);}
return ident;}
function parseVariableDeclaration(kind){var id,marker=markerCreate(),init=null,typeAnnotationMarker=markerCreate();if(match('{')){id=parseObjectInitialiser();reinterpretAsAssignmentBindingPattern(id);if(match(':')){id.typeAnnotation=parseTypeAnnotation();markerApply(typeAnnotationMarker,id);}}else if(match('[')){id=parseArrayInitialiser();reinterpretAsAssignmentBindingPattern(id);if(match(':')){id.typeAnnotation=parseTypeAnnotation();markerApply(typeAnnotationMarker,id);}}else{id=state.allowKeyword?parseNonComputedProperty():parseTypeAnnotatableIdentifier();if(strict&&isRestrictedWord(id.name)){throwErrorTolerant({},Messages.StrictVarName);}}
if(kind==='const'){if(!match('=')){throwError({},Messages.NoUninitializedConst);}
expect('=');init=parseAssignmentExpression();}else if(match('=')){lex();init=parseAssignmentExpression();}
return markerApply(marker,delegate.createVariableDeclarator(id,init));}
function parseVariableDeclarationList(kind){var list=[];do{list.push(parseVariableDeclaration(kind));if(!match(',')){break;}
lex();}while(index<length);return list;}
function parseVariableStatement(){var declarations,marker=markerCreate();expectKeyword('var');declarations=parseVariableDeclarationList();consumeSemicolon();return markerApply(marker,delegate.createVariableDeclaration(declarations,'var'));}
function parseConstLetDeclaration(kind){var declarations,marker=markerCreate();expectKeyword(kind);declarations=parseVariableDeclarationList(kind);consumeSemicolon();return markerApply(marker,delegate.createVariableDeclaration(declarations,kind));}
function parseModuleSpecifier(){var marker=markerCreate(),specifier;if(lookahead.type!==Token.StringLiteral){throwError({},Messages.InvalidModuleSpecifier);}
specifier=delegate.createModuleSpecifier(lookahead);lex();return markerApply(marker,specifier);}
function parseExportBatchSpecifier(){var marker=markerCreate();expect('*');return markerApply(marker,delegate.createExportBatchSpecifier());}
function parseExportSpecifier(){var id,name=null,marker=markerCreate(),from;if(matchKeyword('default')){lex();id=markerApply(marker,delegate.createIdentifier('default'));}else{id=parseVariableIdentifier();}
if(matchContextualKeyword('as')){lex();name=parseNonComputedProperty();}
return markerApply(marker,delegate.createExportSpecifier(id,name));}
function parseExportDeclaration(){var declaration=null,possibleIdentifierToken,sourceElement,isExportFromIdentifier,src=null,specifiers=[],marker=markerCreate();expectKeyword('export');if(matchKeyword('default')){lex();if(matchKeyword('function')||matchKeyword('class')){possibleIdentifierToken=lookahead2();if(isIdentifierName(possibleIdentifierToken)){sourceElement=parseSourceElement();return markerApply(marker,delegate.createExportDeclaration(true,sourceElement,[sourceElement.id],null));}
switch(lookahead.value){case'class':return markerApply(marker,delegate.createExportDeclaration(true,parseClassExpression(),[],null));case'function':return markerApply(marker,delegate.createExportDeclaration(true,parseFunctionExpression(),[],null));}}
if(matchContextualKeyword('from')){throwError({},Messages.UnexpectedToken,lookahead.value);}
if(match('{')){declaration=parseObjectInitialiser();}else if(match('[')){declaration=parseArrayInitialiser();}else{declaration=parseAssignmentExpression();}
consumeSemicolon();return markerApply(marker,delegate.createExportDeclaration(true,declaration,[],null));}
if(lookahead.type===Token.Keyword||matchContextualKeyword('type')){switch(lookahead.value){case'type':case'let':case'const':case'var':case'class':case'function':return markerApply(marker,delegate.createExportDeclaration(false,parseSourceElement(),specifiers,null));}}
if(match('*')){specifiers.push(parseExportBatchSpecifier());if(!matchContextualKeyword('from')){throwError({},lookahead.value?Messages.UnexpectedToken:Messages.MissingFromClause,lookahead.value);}
lex();src=parseModuleSpecifier();consumeSemicolon();return markerApply(marker,delegate.createExportDeclaration(false,null,specifiers,src));}
expect('{');if(!match('}')){do{isExportFromIdentifier=isExportFromIdentifier||matchKeyword('default');specifiers.push(parseExportSpecifier());}while(match(',')&&lex());}
expect('}');if(matchContextualKeyword('from')){lex();src=parseModuleSpecifier();consumeSemicolon();}else if(isExportFromIdentifier){throwError({},lookahead.value?Messages.UnexpectedToken:Messages.MissingFromClause,lookahead.value);}else{consumeSemicolon();}
return markerApply(marker,delegate.createExportDeclaration(false,declaration,specifiers,src));}
function parseImportSpecifier(){var id,name=null,marker=markerCreate();id=parseNonComputedProperty();if(matchContextualKeyword('as')){lex();name=parseVariableIdentifier();}
return markerApply(marker,delegate.createImportSpecifier(id,name));}
function parseNamedImports(){var specifiers=[];expect('{');if(!match('}')){do{specifiers.push(parseImportSpecifier());}while(match(',')&&lex());}
expect('}');return specifiers;}
function parseImportDefaultSpecifier(){var id,marker=markerCreate();id=parseNonComputedProperty();return markerApply(marker,delegate.createImportDefaultSpecifier(id));}
function parseImportNamespaceSpecifier(){var id,marker=markerCreate();expect('*');if(!matchContextualKeyword('as')){throwError({},Messages.NoAsAfterImportNamespace);}
lex();id=parseNonComputedProperty();return markerApply(marker,delegate.createImportNamespaceSpecifier(id));}
function parseImportDeclaration(){var specifiers,src,marker=markerCreate(),isType=false,token2;expectKeyword('import');if(matchContextualKeyword('type')){token2=lookahead2();if((token2.type===Token.Identifier&&token2.value!=='from')||(token2.type===Token.Punctuator&&(token2.value==='{'||token2.value==='*'))){isType=true;lex();}}
specifiers=[];if(lookahead.type===Token.StringLiteral){src=parseModuleSpecifier();consumeSemicolon();return markerApply(marker,delegate.createImportDeclaration(specifiers,src,isType));}
if(!matchKeyword('default')&&isIdentifierName(lookahead)){specifiers.push(parseImportDefaultSpecifier());if(match(',')){lex();}}
if(match('*')){specifiers.push(parseImportNamespaceSpecifier());}else if(match('{')){specifiers=specifiers.concat(parseNamedImports());}
if(!matchContextualKeyword('from')){throwError({},lookahead.value?Messages.UnexpectedToken:Messages.MissingFromClause,lookahead.value);}
lex();src=parseModuleSpecifier();consumeSemicolon();return markerApply(marker,delegate.createImportDeclaration(specifiers,src,isType));}
function parseEmptyStatement(){var marker=markerCreate();expect(';');return markerApply(marker,delegate.createEmptyStatement());}
function parseExpressionStatement(){var marker=markerCreate(),expr=parseExpression();consumeSemicolon();return markerApply(marker,delegate.createExpressionStatement(expr));}
function parseIfStatement(){var test,consequent,alternate,marker=markerCreate();expectKeyword('if');expect('(');test=parseExpression();expect(')');consequent=parseStatement();if(matchKeyword('else')){lex();alternate=parseStatement();}else{alternate=null;}
return markerApply(marker,delegate.createIfStatement(test,consequent,alternate));}
function parseDoWhileStatement(){var body,test,oldInIteration,marker=markerCreate();expectKeyword('do');oldInIteration=state.inIteration;state.inIteration=true;body=parseStatement();state.inIteration=oldInIteration;expectKeyword('while');expect('(');test=parseExpression();expect(')');if(match(';')){lex();}
return markerApply(marker,delegate.createDoWhileStatement(body,test));}
function parseWhileStatement(){var test,body,oldInIteration,marker=markerCreate();expectKeyword('while');expect('(');test=parseExpression();expect(')');oldInIteration=state.inIteration;state.inIteration=true;body=parseStatement();state.inIteration=oldInIteration;return markerApply(marker,delegate.createWhileStatement(test,body));}
function parseForVariableDeclaration(){var marker=markerCreate(),token=lex(),declarations=parseVariableDeclarationList();return markerApply(marker,delegate.createVariableDeclaration(declarations,token.value));}
function parseForStatement(opts){var init,test,update,left,right,body,operator,oldInIteration,marker=markerCreate();init=test=update=null;expectKeyword('for');if(matchContextualKeyword('each')){throwError({},Messages.EachNotAllowed);}
expect('(');if(match(';')){lex();}else{if(matchKeyword('var')||matchKeyword('let')||matchKeyword('const')){state.allowIn=false;init=parseForVariableDeclaration();state.allowIn=true;if(init.declarations.length===1){if(matchKeyword('in')||matchContextualKeyword('of')){operator=lookahead;if(!((operator.value==='in'||init.kind!=='var')&&init.declarations[0].init)){lex();left=init;right=parseExpression();init=null;}}}}else{state.allowIn=false;init=parseExpression();state.allowIn=true;if(matchContextualKeyword('of')){operator=lex();left=init;right=parseExpression();init=null;}else if(matchKeyword('in')){if(!isAssignableLeftHandSide(init)){throwError({},Messages.InvalidLHSInForIn);}
operator=lex();left=init;right=parseExpression();init=null;}}
if(typeof left==='undefined'){expect(';');}}
if(typeof left==='undefined'){if(!match(';')){test=parseExpression();}
expect(';');if(!match(')')){update=parseExpression();}}
expect(')');oldInIteration=state.inIteration;state.inIteration=true;if(!(opts!==undefined&&opts.ignoreBody)){body=parseStatement();}
state.inIteration=oldInIteration;if(typeof left==='undefined'){return markerApply(marker,delegate.createForStatement(init,test,update,body));}
if(operator.value==='in'){return markerApply(marker,delegate.createForInStatement(left,right,body));}
return markerApply(marker,delegate.createForOfStatement(left,right,body));}
function parseContinueStatement(){var label=null,marker=markerCreate();expectKeyword('continue');if(source.charCodeAt(index)===59){lex();if(!state.inIteration){throwError({},Messages.IllegalContinue);}
return markerApply(marker,delegate.createContinueStatement(null));}
if(peekLineTerminator()){if(!state.inIteration){throwError({},Messages.IllegalContinue);}
return markerApply(marker,delegate.createContinueStatement(null));}
if(lookahead.type===Token.Identifier){label=parseVariableIdentifier();if(!state.labelSet.has(label.name)){throwError({},Messages.UnknownLabel,label.name);}}
consumeSemicolon();if(label===null&&!state.inIteration){throwError({},Messages.IllegalContinue);}
return markerApply(marker,delegate.createContinueStatement(label));}
function parseBreakStatement(){var label=null,marker=markerCreate();expectKeyword('break');if(source.charCodeAt(index)===59){lex();if(!(state.inIteration||state.inSwitch)){throwError({},Messages.IllegalBreak);}
return markerApply(marker,delegate.createBreakStatement(null));}
if(peekLineTerminator()){if(!(state.inIteration||state.inSwitch)){throwError({},Messages.IllegalBreak);}
return markerApply(marker,delegate.createBreakStatement(null));}
if(lookahead.type===Token.Identifier){label=parseVariableIdentifier();if(!state.labelSet.has(label.name)){throwError({},Messages.UnknownLabel,label.name);}}
consumeSemicolon();if(label===null&&!(state.inIteration||state.inSwitch)){throwError({},Messages.IllegalBreak);}
return markerApply(marker,delegate.createBreakStatement(label));}
function parseReturnStatement(){var argument=null,marker=markerCreate();expectKeyword('return');if(!state.inFunctionBody){throwErrorTolerant({},Messages.IllegalReturn);}
if(source.charCodeAt(index)===32){if(isIdentifierStart(source.charCodeAt(index+1))){argument=parseExpression();consumeSemicolon();return markerApply(marker,delegate.createReturnStatement(argument));}}
if(peekLineTerminator()){return markerApply(marker,delegate.createReturnStatement(null));}
if(!match(';')){if(!match('}')&&lookahead.type!==Token.EOF){argument=parseExpression();}}
consumeSemicolon();return markerApply(marker,delegate.createReturnStatement(argument));}
function parseWithStatement(){var object,body,marker=markerCreate();if(strict){throwErrorTolerant({},Messages.StrictModeWith);}
expectKeyword('with');expect('(');object=parseExpression();expect(')');body=parseStatement();return markerApply(marker,delegate.createWithStatement(object,body));}
function parseSwitchCase(){var test,consequent=[],sourceElement,marker=markerCreate();if(matchKeyword('default')){lex();test=null;}else{expectKeyword('case');test=parseExpression();}
expect(':');while(index<length){if(match('}')||matchKeyword('default')||matchKeyword('case')){break;}
sourceElement=parseSourceElement();if(typeof sourceElement==='undefined'){break;}
consequent.push(sourceElement);}
return markerApply(marker,delegate.createSwitchCase(test,consequent));}
function parseSwitchStatement(){var discriminant,cases,clause,oldInSwitch,defaultFound,marker=markerCreate();expectKeyword('switch');expect('(');discriminant=parseExpression();expect(')');expect('{');cases=[];if(match('}')){lex();return markerApply(marker,delegate.createSwitchStatement(discriminant,cases));}
oldInSwitch=state.inSwitch;state.inSwitch=true;defaultFound=false;while(index<length){if(match('}')){break;}
clause=parseSwitchCase();if(clause.test===null){if(defaultFound){throwError({},Messages.MultipleDefaultsInSwitch);}
defaultFound=true;}
cases.push(clause);}
state.inSwitch=oldInSwitch;expect('}');return markerApply(marker,delegate.createSwitchStatement(discriminant,cases));}
function parseThrowStatement(){var argument,marker=markerCreate();expectKeyword('throw');if(peekLineTerminator()){throwError({},Messages.NewlineAfterThrow);}
argument=parseExpression();consumeSemicolon();return markerApply(marker,delegate.createThrowStatement(argument));}
function parseCatchClause(){var param,body,marker=markerCreate();expectKeyword('catch');expect('(');if(match(')')){throwUnexpected(lookahead);}
param=parseExpression();if(strict&&param.type===Syntax.Identifier&&isRestrictedWord(param.name)){throwErrorTolerant({},Messages.StrictCatchVariable);}
expect(')');body=parseBlock();return markerApply(marker,delegate.createCatchClause(param,body));}
function parseTryStatement(){var block,handlers=[],finalizer=null,marker=markerCreate();expectKeyword('try');block=parseBlock();if(matchKeyword('catch')){handlers.push(parseCatchClause());}
if(matchKeyword('finally')){lex();finalizer=parseBlock();}
if(handlers.length===0&&!finalizer){throwError({},Messages.NoCatchOrFinally);}
return markerApply(marker,delegate.createTryStatement(block,[],handlers,finalizer));}
function parseDebuggerStatement(){var marker=markerCreate();expectKeyword('debugger');consumeSemicolon();return markerApply(marker,delegate.createDebuggerStatement());}
function parseStatement(){var type=lookahead.type,marker,expr,labeledBody;if(type===Token.EOF){throwUnexpected(lookahead);}
if(type===Token.Punctuator){switch(lookahead.value){case';':return parseEmptyStatement();case'{':return parseBlock();case'(':return parseExpressionStatement();default:break;}}
if(type===Token.Keyword){switch(lookahead.value){case'break':return parseBreakStatement();case'continue':return parseContinueStatement();case'debugger':return parseDebuggerStatement();case'do':return parseDoWhileStatement();case'for':return parseForStatement();case'function':return parseFunctionDeclaration();case'class':return parseClassDeclaration();case'if':return parseIfStatement();case'return':return parseReturnStatement();case'switch':return parseSwitchStatement();case'throw':return parseThrowStatement();case'try':return parseTryStatement();case'var':return parseVariableStatement();case'while':return parseWhileStatement();case'with':return parseWithStatement();default:break;}}
if(matchAsyncFuncExprOrDecl()){return parseFunctionDeclaration();}
marker=markerCreate();expr=parseExpression();if((expr.type===Syntax.Identifier)&&match(':')){lex();if(state.labelSet.has(expr.name)){throwError({},Messages.Redeclaration,'Label',expr.name);}
state.labelSet.set(expr.name,true);labeledBody=parseStatement();state.labelSet["delete"](expr.name);return markerApply(marker,delegate.createLabeledStatement(expr,labeledBody));}
consumeSemicolon();return markerApply(marker,delegate.createExpressionStatement(expr));}
function parseConciseBody(){if(match('{')){return parseFunctionSourceElements();}
return parseAssignmentExpression();}
function parseFunctionSourceElements(){var sourceElement,sourceElements=[],token,directive,firstRestricted,oldLabelSet,oldInIteration,oldInSwitch,oldInFunctionBody,oldParenthesizedCount,marker=markerCreate();expect('{');while(index<length){if(lookahead.type!==Token.StringLiteral){break;}
token=lookahead;sourceElement=parseSourceElement();sourceElements.push(sourceElement);if(sourceElement.expression.type!==Syntax.Literal){break;}
directive=source.slice(token.range[0]+1,token.range[1]-1);if(directive==='use strict'){strict=true;if(firstRestricted){throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral);}}else{if(!firstRestricted&&token.octal){firstRestricted=token;}}}
oldLabelSet=state.labelSet;oldInIteration=state.inIteration;oldInSwitch=state.inSwitch;oldInFunctionBody=state.inFunctionBody;oldParenthesizedCount=state.parenthesizedCount;state.labelSet=new StringMap();state.inIteration=false;state.inSwitch=false;state.inFunctionBody=true;state.parenthesizedCount=0;while(index<length){if(match('}')){break;}
sourceElement=parseSourceElement();if(typeof sourceElement==='undefined'){break;}
sourceElements.push(sourceElement);}
expect('}');state.labelSet=oldLabelSet;state.inIteration=oldInIteration;state.inSwitch=oldInSwitch;state.inFunctionBody=oldInFunctionBody;state.parenthesizedCount=oldParenthesizedCount;return markerApply(marker,delegate.createBlockStatement(sourceElements));}
function validateParam(options,param,name){if(strict){if(isRestrictedWord(name)){options.stricted=param;options.message=Messages.StrictParamName;}
if(options.paramSet.has(name)){options.stricted=param;options.message=Messages.StrictParamDupe;}}else if(!options.firstRestricted){if(isRestrictedWord(name)){options.firstRestricted=param;options.message=Messages.StrictParamName;}else if(isStrictModeReservedWord(name)){options.firstRestricted=param;options.message=Messages.StrictReservedWord;}else if(options.paramSet.has(name)){options.firstRestricted=param;options.message=Messages.StrictParamDupe;}}
options.paramSet.set(name,true);}
function parseParam(options){var marker,token,rest,param,def;token=lookahead;if(token.value==='...'){token=lex();rest=true;}
if(match('[')){marker=markerCreate();param=parseArrayInitialiser();reinterpretAsDestructuredParameter(options,param);if(match(':')){param.typeAnnotation=parseTypeAnnotation();markerApply(marker,param);}}else if(match('{')){marker=markerCreate();if(rest){throwError({},Messages.ObjectPatternAsRestParameter);}
param=parseObjectInitialiser();reinterpretAsDestructuredParameter(options,param);if(match(':')){param.typeAnnotation=parseTypeAnnotation();markerApply(marker,param);}}else{param=rest?parseTypeAnnotatableIdentifier(false,false):parseTypeAnnotatableIdentifier(false,true);validateParam(options,token,token.value);}
if(match('=')){if(rest){throwErrorTolerant(lookahead,Messages.DefaultRestParameter);}
lex();def=parseAssignmentExpression();++options.defaultCount;}
if(rest){if(!match(')')){throwError({},Messages.ParameterAfterRestParameter);}
options.rest=param;return false;}
options.params.push(param);options.defaults.push(def);return!match(')');}
function parseParams(firstRestricted){var options,marker=markerCreate();options={params:[],defaultCount:0,defaults:[],rest:null,firstRestricted:firstRestricted};expect('(');if(!match(')')){options.paramSet=new StringMap();while(index<length){if(!parseParam(options)){break;}
expect(',');}}
expect(')');if(options.defaultCount===0){options.defaults=[];}
if(match(':')){options.returnType=parseTypeAnnotation();}
return markerApply(marker,options);}
function parseFunctionDeclaration(){var id,body,token,tmp,firstRestricted,message,generator,isAsync,previousStrict,previousYieldAllowed,previousAwaitAllowed,marker=markerCreate(),typeParameters;isAsync=false;if(matchAsync()){lex();isAsync=true;}
expectKeyword('function');generator=false;if(match('*')){lex();generator=true;}
token=lookahead;id=parseVariableIdentifier();if(match('<')){typeParameters=parseTypeParameterDeclaration();}
if(strict){if(isRestrictedWord(token.value)){throwErrorTolerant(token,Messages.StrictFunctionName);}}else{if(isRestrictedWord(token.value)){firstRestricted=token;message=Messages.StrictFunctionName;}else if(isStrictModeReservedWord(token.value)){firstRestricted=token;message=Messages.StrictReservedWord;}}
tmp=parseParams(firstRestricted);firstRestricted=tmp.firstRestricted;if(tmp.message){message=tmp.message;}
previousStrict=strict;previousYieldAllowed=state.yieldAllowed;state.yieldAllowed=generator;previousAwaitAllowed=state.awaitAllowed;state.awaitAllowed=isAsync;body=parseFunctionSourceElements();if(strict&&firstRestricted){throwError(firstRestricted,message);}
if(strict&&tmp.stricted){throwErrorTolerant(tmp.stricted,message);}
strict=previousStrict;state.yieldAllowed=previousYieldAllowed;state.awaitAllowed=previousAwaitAllowed;return markerApply(marker,delegate.createFunctionDeclaration(id,tmp.params,tmp.defaults,body,tmp.rest,generator,false,isAsync,tmp.returnType,typeParameters));}
function parseFunctionExpression(){var token,id=null,firstRestricted,message,tmp,body,generator,isAsync,previousStrict,previousYieldAllowed,previousAwaitAllowed,marker=markerCreate(),typeParameters;isAsync=false;if(matchAsync()){lex();isAsync=true;}
expectKeyword('function');generator=false;if(match('*')){lex();generator=true;}
if(!match('(')){if(!match('<')){token=lookahead;id=parseVariableIdentifier();if(strict){if(isRestrictedWord(token.value)){throwErrorTolerant(token,Messages.StrictFunctionName);}}else{if(isRestrictedWord(token.value)){firstRestricted=token;message=Messages.StrictFunctionName;}else if(isStrictModeReservedWord(token.value)){firstRestricted=token;message=Messages.StrictReservedWord;}}}
if(match('<')){typeParameters=parseTypeParameterDeclaration();}}
tmp=parseParams(firstRestricted);firstRestricted=tmp.firstRestricted;if(tmp.message){message=tmp.message;}
previousStrict=strict;previousYieldAllowed=state.yieldAllowed;state.yieldAllowed=generator;previousAwaitAllowed=state.awaitAllowed;state.awaitAllowed=isAsync;body=parseFunctionSourceElements();if(strict&&firstRestricted){throwError(firstRestricted,message);}
if(strict&&tmp.stricted){throwErrorTolerant(tmp.stricted,message);}
strict=previousStrict;state.yieldAllowed=previousYieldAllowed;state.awaitAllowed=previousAwaitAllowed;return markerApply(marker,delegate.createFunctionExpression(id,tmp.params,tmp.defaults,body,tmp.rest,generator,false,isAsync,tmp.returnType,typeParameters));}
function parseYieldExpression(){var delegateFlag,expr,marker=markerCreate();expectKeyword('yield',!strict);delegateFlag=false;if(match('*')){lex();delegateFlag=true;}
expr=parseAssignmentExpression();return markerApply(marker,delegate.createYieldExpression(expr,delegateFlag));}
function parseAwaitExpression(){var expr,marker=markerCreate();expectContextualKeyword('await');expr=parseAssignmentExpression();return markerApply(marker,delegate.createAwaitExpression(expr));}
function specialMethod(methodDefinition){return methodDefinition.kind==='get'||methodDefinition.kind==='set'||methodDefinition.value.generator;}
function parseMethodDefinition(key,isStatic,generator,computed){var token,param,propType,isAsync,typeParameters,tokenValue,returnType;propType=isStatic?ClassPropertyType["static"]:ClassPropertyType.prototype;if(generator){return delegate.createMethodDefinition(propType,'',key,parsePropertyMethodFunction({generator:true}),computed);}
tokenValue=key.type==='Identifier'&&key.name;if(tokenValue==='get'&&!match('(')){key=parseObjectPropertyKey();expect('(');expect(')');if(match(':')){returnType=parseTypeAnnotation();}
return delegate.createMethodDefinition(propType,'get',key,parsePropertyFunction({generator:false,returnType:returnType}),computed);}
if(tokenValue==='set'&&!match('(')){key=parseObjectPropertyKey();expect('(');token=lookahead;param=[parseTypeAnnotatableIdentifier()];expect(')');if(match(':')){returnType=parseTypeAnnotation();}
return delegate.createMethodDefinition(propType,'set',key,parsePropertyFunction({params:param,generator:false,name:token,returnType:returnType}),computed);}
if(match('<')){typeParameters=parseTypeParameterDeclaration();}
isAsync=tokenValue==='async'&&!match('(');if(isAsync){key=parseObjectPropertyKey();}
return delegate.createMethodDefinition(propType,'',key,parsePropertyMethodFunction({generator:false,async:isAsync,typeParameters:typeParameters}),computed);}
function parseClassProperty(key,computed,isStatic){var typeAnnotation;typeAnnotation=parseTypeAnnotation();expect(';');return delegate.createClassProperty(key,typeAnnotation,computed,isStatic);}
function parseClassElement(){var computed=false,generator=false,key,marker=markerCreate(),isStatic=false,possiblyOpenBracketToken;if(match(';')){lex();return undefined;}
if(lookahead.value==='static'){lex();isStatic=true;}
if(match('*')){lex();generator=true;}
possiblyOpenBracketToken=lookahead;if(matchContextualKeyword('get')||matchContextualKeyword('set')){possiblyOpenBracketToken=lookahead2();}
if(possiblyOpenBracketToken.type===Token.Punctuator&&possiblyOpenBracketToken.value==='['){computed=true;}
key=parseObjectPropertyKey();if(!generator&&lookahead.value===':'){return markerApply(marker,parseClassProperty(key,computed,isStatic));}
return markerApply(marker,parseMethodDefinition(key,isStatic,generator,computed));}
function parseClassBody(){var classElement,classElements=[],existingProps={},marker=markerCreate(),propName,propType;existingProps[ClassPropertyType["static"]]=new StringMap();existingProps[ClassPropertyType.prototype]=new StringMap();expect('{');while(index<length){if(match('}')){break;}
classElement=parseClassElement(existingProps);if(typeof classElement!=='undefined'){classElements.push(classElement);propName=!classElement.computed&&getFieldName(classElement.key);if(propName!==false){propType=classElement["static"]?ClassPropertyType["static"]:ClassPropertyType.prototype;if(classElement.type===Syntax.MethodDefinition){if(propName==='constructor'&&!classElement["static"]){if(specialMethod(classElement)){throwError(classElement,Messages.IllegalClassConstructorProperty);}
if(existingProps[ClassPropertyType.prototype].has('constructor')){throwError(classElement.key,Messages.IllegalDuplicateClassProperty);}}
existingProps[propType].set(propName,true);}}}}
expect('}');return markerApply(marker,delegate.createClassBody(classElements));}
function parseClassImplements(){var id,implemented=[],marker,typeParameters;if(strict){expectKeyword('implements');}else{expectContextualKeyword('implements');}
while(index<length){marker=markerCreate();id=parseVariableIdentifier();if(match('<')){typeParameters=parseTypeParameterInstantiation();}else{typeParameters=null;}
implemented.push(markerApply(marker,delegate.createClassImplements(id,typeParameters)));if(!match(',')){break;}
expect(',');}
return implemented;}
function parseClassExpression(){var id,implemented,previousYieldAllowed,superClass=null,superTypeParameters,marker=markerCreate(),typeParameters,matchImplements;expectKeyword('class');matchImplements=strict?matchKeyword('implements'):matchContextualKeyword('implements');if(!matchKeyword('extends')&&!matchImplements&&!match('{')){id=parseVariableIdentifier();}
if(match('<')){typeParameters=parseTypeParameterDeclaration();}
if(matchKeyword('extends')){expectKeyword('extends');previousYieldAllowed=state.yieldAllowed;state.yieldAllowed=false;superClass=parseLeftHandSideExpressionAllowCall();if(match('<')){superTypeParameters=parseTypeParameterInstantiation();}
state.yieldAllowed=previousYieldAllowed;}
if(strict?matchKeyword('implements'):matchContextualKeyword('implements')){implemented=parseClassImplements();}
return markerApply(marker,delegate.createClassExpression(id,superClass,parseClassBody(),typeParameters,superTypeParameters,implemented));}
function parseClassDeclaration(){var id,implemented,previousYieldAllowed,superClass=null,superTypeParameters,marker=markerCreate(),typeParameters;expectKeyword('class');id=parseVariableIdentifier();if(match('<')){typeParameters=parseTypeParameterDeclaration();}
if(matchKeyword('extends')){expectKeyword('extends');previousYieldAllowed=state.yieldAllowed;state.yieldAllowed=false;superClass=parseLeftHandSideExpressionAllowCall();if(match('<')){superTypeParameters=parseTypeParameterInstantiation();}
state.yieldAllowed=previousYieldAllowed;}
if(strict?matchKeyword('implements'):matchContextualKeyword('implements')){implemented=parseClassImplements();}
return markerApply(marker,delegate.createClassDeclaration(id,superClass,parseClassBody(),typeParameters,superTypeParameters,implemented));}
function parseSourceElement(){var token;if(lookahead.type===Token.Keyword){switch(lookahead.value){case'const':case'let':return parseConstLetDeclaration(lookahead.value);case'function':return parseFunctionDeclaration();case'export':throwErrorTolerant({},Messages.IllegalExportDeclaration);return parseExportDeclaration();case'import':throwErrorTolerant({},Messages.IllegalImportDeclaration);return parseImportDeclaration();case'interface':if(lookahead2().type===Token.Identifier){return parseInterface();}
return parseStatement();default:return parseStatement();}}
if(matchContextualKeyword('type')&&lookahead2().type===Token.Identifier){return parseTypeAlias();}
if(matchContextualKeyword('interface')&&lookahead2().type===Token.Identifier){return parseInterface();}
if(matchContextualKeyword('declare')){token=lookahead2();if(token.type===Token.Keyword){switch(token.value){case'class':return parseDeclareClass();case'function':return parseDeclareFunction();case'var':return parseDeclareVariable();}}else if(token.type===Token.Identifier&&token.value==='module'){return parseDeclareModule();}}
if(lookahead.type!==Token.EOF){return parseStatement();}}
function parseProgramElement(){var isModule=extra.sourceType==='module'||extra.sourceType==='nonStrictModule';if(isModule&&lookahead.type===Token.Keyword){switch(lookahead.value){case'export':return parseExportDeclaration();case'import':return parseImportDeclaration();}}
return parseSourceElement();}
function parseProgramElements(){var sourceElement,sourceElements=[],token,directive,firstRestricted;while(index<length){token=lookahead;if(token.type!==Token.StringLiteral){break;}
sourceElement=parseProgramElement();sourceElements.push(sourceElement);if(sourceElement.expression.type!==Syntax.Literal){break;}
directive=source.slice(token.range[0]+1,token.range[1]-1);if(directive==='use strict'){strict=true;if(firstRestricted){throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral);}}else{if(!firstRestricted&&token.octal){firstRestricted=token;}}}
while(index<length){sourceElement=parseProgramElement();if(typeof sourceElement==='undefined'){break;}
sourceElements.push(sourceElement);}
return sourceElements;}
function parseProgram(){var body,marker=markerCreate();strict=extra.sourceType==='module';peek();body=parseProgramElements();return markerApply(marker,delegate.createProgram(body));}
XHTMLEntities={quot:'\u0022',amp:'&',apos:'\u0027',lt:'<',gt:'>',nbsp:'\u00A0',iexcl:'\u00A1',cent:'\u00A2',pound:'\u00A3',curren:'\u00A4',yen:'\u00A5',brvbar:'\u00A6',sect:'\u00A7',uml:'\u00A8',copy:'\u00A9',ordf:'\u00AA',laquo:'\u00AB',not:'\u00AC',shy:'\u00AD',reg:'\u00AE',macr:'\u00AF',deg:'\u00B0',plusmn:'\u00B1',sup2:'\u00B2',sup3:'\u00B3',acute:'\u00B4',micro:'\u00B5',para:'\u00B6',middot:'\u00B7',cedil:'\u00B8',sup1:'\u00B9',ordm:'\u00BA',raquo:'\u00BB',frac14:'\u00BC',frac12:'\u00BD',frac34:'\u00BE',iquest:'\u00BF',Agrave:'\u00C0',Aacute:'\u00C1',Acirc:'\u00C2',Atilde:'\u00C3',Auml:'\u00C4',Aring:'\u00C5',AElig:'\u00C6',Ccedil:'\u00C7',Egrave:'\u00C8',Eacute:'\u00C9',Ecirc:'\u00CA',Euml:'\u00CB',Igrave:'\u00CC',Iacute:'\u00CD',Icirc:'\u00CE',Iuml:'\u00CF',ETH:'\u00D0',Ntilde:'\u00D1',Ograve:'\u00D2',Oacute:'\u00D3',Ocirc:'\u00D4',Otilde:'\u00D5',Ouml:'\u00D6',times:'\u00D7',Oslash:'\u00D8',Ugrave:'\u00D9',Uacute:'\u00DA',Ucirc:'\u00DB',Uuml:'\u00DC',Yacute:'\u00DD',THORN:'\u00DE',szlig:'\u00DF',agrave:'\u00E0',aacute:'\u00E1',acirc:'\u00E2',atilde:'\u00E3',auml:'\u00E4',aring:'\u00E5',aelig:'\u00E6',ccedil:'\u00E7',egrave:'\u00E8',eacute:'\u00E9',ecirc:'\u00EA',euml:'\u00EB',igrave:'\u00EC',iacute:'\u00ED',icirc:'\u00EE',iuml:'\u00EF',eth:'\u00F0',ntilde:'\u00F1',ograve:'\u00F2',oacute:'\u00F3',ocirc:'\u00F4',otilde:'\u00F5',ouml:'\u00F6',divide:'\u00F7',oslash:'\u00F8',ugrave:'\u00F9',uacute:'\u00FA',ucirc:'\u00FB',uuml:'\u00FC',yacute:'\u00FD',thorn:'\u00FE',yuml:'\u00FF',OElig:'\u0152',oelig:'\u0153',Scaron:'\u0160',scaron:'\u0161',Yuml:'\u0178',fnof:'\u0192',circ:'\u02C6',tilde:'\u02DC',Alpha:'\u0391',Beta:'\u0392',Gamma:'\u0393',Delta:'\u0394',Epsilon:'\u0395',Zeta:'\u0396',Eta:'\u0397',Theta:'\u0398',Iota:'\u0399',Kappa:'\u039A',Lambda:'\u039B',Mu:'\u039C',Nu:'\u039D',Xi:'\u039E',Omicron:'\u039F',Pi:'\u03A0',Rho:'\u03A1',Sigma:'\u03A3',Tau:'\u03A4',Upsilon:'\u03A5',Phi:'\u03A6',Chi:'\u03A7',Psi:'\u03A8',Omega:'\u03A9',alpha:'\u03B1',beta:'\u03B2',gamma:'\u03B3',delta:'\u03B4',epsilon:'\u03B5',zeta:'\u03B6',eta:'\u03B7',theta:'\u03B8',iota:'\u03B9',kappa:'\u03BA',lambda:'\u03BB',mu:'\u03BC',nu:'\u03BD',xi:'\u03BE',omicron:'\u03BF',pi:'\u03C0',rho:'\u03C1',sigmaf:'\u03C2',sigma:'\u03C3',tau:'\u03C4',upsilon:'\u03C5',phi:'\u03C6',chi:'\u03C7',psi:'\u03C8',omega:'\u03C9',thetasym:'\u03D1',upsih:'\u03D2',piv:'\u03D6',ensp:'\u2002',emsp:'\u2003',thinsp:'\u2009',zwnj:'\u200C',zwj:'\u200D',lrm:'\u200E',rlm:'\u200F',ndash:'\u2013',mdash:'\u2014',lsquo:'\u2018',rsquo:'\u2019',sbquo:'\u201A',ldquo:'\u201C',rdquo:'\u201D',bdquo:'\u201E',dagger:'\u2020',Dagger:'\u2021',bull:'\u2022',hellip:'\u2026',permil:'\u2030',prime:'\u2032',Prime:'\u2033',lsaquo:'\u2039',rsaquo:'\u203A',oline:'\u203E',frasl:'\u2044',euro:'\u20AC',image:'\u2111',weierp:'\u2118',real:'\u211C',trade:'\u2122',alefsym:'\u2135',larr:'\u2190',uarr:'\u2191',rarr:'\u2192',darr:'\u2193',harr:'\u2194',crarr:'\u21B5',lArr:'\u21D0',uArr:'\u21D1',rArr:'\u21D2',dArr:'\u21D3',hArr:'\u21D4',forall:'\u2200',part:'\u2202',exist:'\u2203',empty:'\u2205',nabla:'\u2207',isin:'\u2208',notin:'\u2209',ni:'\u220B',prod:'\u220F',sum:'\u2211',minus:'\u2212',lowast:'\u2217',radic:'\u221A',prop:'\u221D',infin:'\u221E',ang:'\u2220',and:'\u2227',or:'\u2228',cap:'\u2229',cup:'\u222A','int':'\u222B',there4:'\u2234',sim:'\u223C',cong:'\u2245',asymp:'\u2248',ne:'\u2260',equiv:'\u2261',le:'\u2264',ge:'\u2265',sub:'\u2282',sup:'\u2283',nsub:'\u2284',sube:'\u2286',supe:'\u2287',oplus:'\u2295',otimes:'\u2297',perp:'\u22A5',sdot:'\u22C5',lceil:'\u2308',rceil:'\u2309',lfloor:'\u230A',rfloor:'\u230B',lang:'\u2329',rang:'\u232A',loz:'\u25CA',spades:'\u2660',clubs:'\u2663',hearts:'\u2665',diams:'\u2666'};function getQualifiedJSXName(object){if(object.type===Syntax.JSXIdentifier){return object.name;}
if(object.type===Syntax.JSXNamespacedName){return object.namespace.name+':'+object.name.name;}
if(object.type===Syntax.JSXMemberExpression){return(getQualifiedJSXName(object.object)+'.'+
getQualifiedJSXName(object.property));}
throwUnexpected(object);}
function isJSXIdentifierStart(ch){return(ch!==92)&&isIdentifierStart(ch);}
function isJSXIdentifierPart(ch){return(ch!==92)&&(ch===45||isIdentifierPart(ch));}
function scanJSXIdentifier(){var ch,start,value='';start=index;while(index<length){ch=source.charCodeAt(index);if(!isJSXIdentifierPart(ch)){break;}
value+=source[index++];}
return{type:Token.JSXIdentifier,value:value,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanJSXEntity(){var ch,str='',start=index,count=0,code;ch=source[index];assert(ch==='&','Entity must start with an ampersand');index++;while(index<length&&count++<10){ch=source[index++];if(ch===';'){break;}
str+=ch;}
if(ch===';'){if(str[0]==='#'){if(str[1]==='x'){code=+('0'+str.substr(1));}else{code=+str.substr(1).replace(Regex.LeadingZeros,'');}
if(!isNaN(code)){return String.fromCharCode(code);}}else if(XHTMLEntities[str]){return XHTMLEntities[str];}}
index=start+1;return'&';}
function scanJSXText(stopChars){var ch,str='',start;start=index;while(index<length){ch=source[index];if(stopChars.indexOf(ch)!==-1){break;}
if(ch==='&'){str+=scanJSXEntity();}else{index++;if(ch==='\r'&&source[index]==='\n'){str+=ch;ch=source[index];index++;}
if(isLineTerminator(ch.charCodeAt(0))){++lineNumber;lineStart=index;}
str+=ch;}}
return{type:Token.JSXText,value:str,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]};}
function scanJSXStringLiteral(){var innerToken,quote,start;quote=source[index];assert((quote==='\''||quote==='"'),'String literal must starts with a quote');start=index;++index;innerToken=scanJSXText([quote]);if(quote!==source[index]){throwError({},Messages.UnexpectedToken,'ILLEGAL');}
++index;innerToken.range=[start,index];return innerToken;}
function advanceJSXChild(){var ch=source.charCodeAt(index);if(ch!==60&&ch!==62&&ch!==123&&ch!==125){return scanJSXText(['<','>','{','}']);}
return scanPunctuator();}
function parseJSXIdentifier(){var token,marker=markerCreate();if(lookahead.type!==Token.JSXIdentifier){throwUnexpected(lookahead);}
token=lex();return markerApply(marker,delegate.createJSXIdentifier(token.value));}
function parseJSXNamespacedName(){var namespace,name,marker=markerCreate();namespace=parseJSXIdentifier();expect(':');name=parseJSXIdentifier();return markerApply(marker,delegate.createJSXNamespacedName(namespace,name));}
function parseJSXMemberExpression(){var marker=markerCreate(),expr=parseJSXIdentifier();while(match('.')){lex();expr=markerApply(marker,delegate.createJSXMemberExpression(expr,parseJSXIdentifier()));}
return expr;}
function parseJSXElementName(){if(lookahead2().value===':'){return parseJSXNamespacedName();}
if(lookahead2().value==='.'){return parseJSXMemberExpression();}
return parseJSXIdentifier();}
function parseJSXAttributeName(){if(lookahead2().value===':'){return parseJSXNamespacedName();}
return parseJSXIdentifier();}
function parseJSXAttributeValue(){var value,marker;if(match('{')){value=parseJSXExpressionContainer();if(value.expression.type===Syntax.JSXEmptyExpression){throwError(value,'JSX attributes must only be assigned a non-empty '+'expression');}}else if(match('<')){value=parseJSXElement();}else if(lookahead.type===Token.JSXText){marker=markerCreate();value=markerApply(marker,delegate.createLiteral(lex()));}else{throwError({},Messages.InvalidJSXAttributeValue);}
return value;}
function parseJSXEmptyExpression(){var marker=markerCreatePreserveWhitespace();while(source.charAt(index)!=='}'){index++;}
return markerApply(marker,delegate.createJSXEmptyExpression());}
function parseJSXExpressionContainer(){var expression,origInJSXChild,origInJSXTag,marker=markerCreate();origInJSXChild=state.inJSXChild;origInJSXTag=state.inJSXTag;state.inJSXChild=false;state.inJSXTag=false;expect('{');if(match('}')){expression=parseJSXEmptyExpression();}else{expression=parseExpression();}
state.inJSXChild=origInJSXChild;state.inJSXTag=origInJSXTag;expect('}');return markerApply(marker,delegate.createJSXExpressionContainer(expression));}
function parseJSXSpreadAttribute(){var expression,origInJSXChild,origInJSXTag,marker=markerCreate();origInJSXChild=state.inJSXChild;origInJSXTag=state.inJSXTag;state.inJSXChild=false;state.inJSXTag=false;expect('{');expect('...');expression=parseAssignmentExpression();state.inJSXChild=origInJSXChild;state.inJSXTag=origInJSXTag;expect('}');return markerApply(marker,delegate.createJSXSpreadAttribute(expression));}
function parseJSXAttribute(){var name,marker;if(match('{')){return parseJSXSpreadAttribute();}
marker=markerCreate();name=parseJSXAttributeName();if(match('=')){lex();return markerApply(marker,delegate.createJSXAttribute(name,parseJSXAttributeValue()));}
return markerApply(marker,delegate.createJSXAttribute(name));}
function parseJSXChild(){var token,marker;if(match('{')){token=parseJSXExpressionContainer();}else if(lookahead.type===Token.JSXText){marker=markerCreatePreserveWhitespace();token=markerApply(marker,delegate.createLiteral(lex()));}else if(match('<')){token=parseJSXElement();}else{throwUnexpected(lookahead);}
return token;}
function parseJSXClosingElement(){var name,origInJSXChild,origInJSXTag,marker=markerCreate();origInJSXChild=state.inJSXChild;origInJSXTag=state.inJSXTag;state.inJSXChild=false;state.inJSXTag=true;expect('<');expect('/');name=parseJSXElementName();state.inJSXChild=origInJSXChild;state.inJSXTag=origInJSXTag;expect('>');return markerApply(marker,delegate.createJSXClosingElement(name));}
function parseJSXOpeningElement(){var name,attributes=[],selfClosing=false,origInJSXChild,origInJSXTag,marker=markerCreate();origInJSXChild=state.inJSXChild;origInJSXTag=state.inJSXTag;state.inJSXChild=false;state.inJSXTag=true;expect('<');name=parseJSXElementName();while(index<length&&lookahead.value!=='/'&&lookahead.value!=='>'){attributes.push(parseJSXAttribute());}
state.inJSXTag=origInJSXTag;if(lookahead.value==='/'){expect('/');state.inJSXChild=origInJSXChild;expect('>');selfClosing=true;}else{state.inJSXChild=true;expect('>');}
return markerApply(marker,delegate.createJSXOpeningElement(name,attributes,selfClosing));}
function parseJSXElement(){var openingElement,closingElement=null,children=[],origInJSXChild,origInJSXTag,marker=markerCreate();origInJSXChild=state.inJSXChild;origInJSXTag=state.inJSXTag;openingElement=parseJSXOpeningElement();if(!openingElement.selfClosing){while(index<length){state.inJSXChild=false;if(lookahead.value==='<'&&lookahead2().value==='/'){break;}
state.inJSXChild=true;children.push(parseJSXChild());}
state.inJSXChild=origInJSXChild;state.inJSXTag=origInJSXTag;closingElement=parseJSXClosingElement();if(getQualifiedJSXName(closingElement.name)!==getQualifiedJSXName(openingElement.name)){throwError({},Messages.ExpectedJSXClosingTag,getQualifiedJSXName(openingElement.name));}}
if(!origInJSXChild&&match('<')){throwError(lookahead,Messages.AdjacentJSXElements);}
return markerApply(marker,delegate.createJSXElement(openingElement,closingElement,children));}
function parseTypeAlias(){var id,marker=markerCreate(),typeParameters=null,right;expectContextualKeyword('type');id=parseVariableIdentifier();if(match('<')){typeParameters=parseTypeParameterDeclaration();}
expect('=');right=parseType();consumeSemicolon();return markerApply(marker,delegate.createTypeAlias(id,typeParameters,right));}
function parseInterfaceExtends(){var marker=markerCreate(),id,typeParameters=null;id=parseVariableIdentifier();if(match('<')){typeParameters=parseTypeParameterInstantiation();}
return markerApply(marker,delegate.createInterfaceExtends(id,typeParameters));}
function parseInterfaceish(marker,allowStatic){var body,bodyMarker,extended=[],id,typeParameters=null;id=parseVariableIdentifier();if(match('<')){typeParameters=parseTypeParameterDeclaration();}
if(matchKeyword('extends')){expectKeyword('extends');while(index<length){extended.push(parseInterfaceExtends());if(!match(',')){break;}
expect(',');}}
bodyMarker=markerCreate();body=markerApply(bodyMarker,parseObjectType(allowStatic));return markerApply(marker,delegate.createInterface(id,typeParameters,body,extended));}
function parseInterface(){var marker=markerCreate();if(strict){expectKeyword('interface');}else{expectContextualKeyword('interface');}
return parseInterfaceish(marker,false);}
function parseDeclareClass(){var marker=markerCreate(),ret;expectContextualKeyword('declare');expectKeyword('class');ret=parseInterfaceish(marker,true);ret.type=Syntax.DeclareClass;return ret;}
function parseDeclareFunction(){var id,idMarker,marker=markerCreate(),params,returnType,rest,tmp,typeParameters=null,value,valueMarker;expectContextualKeyword('declare');expectKeyword('function');idMarker=markerCreate();id=parseVariableIdentifier();valueMarker=markerCreate();if(match('<')){typeParameters=parseTypeParameterDeclaration();}
expect('(');tmp=parseFunctionTypeParams();params=tmp.params;rest=tmp.rest;expect(')');expect(':');returnType=parseType();value=markerApply(valueMarker,delegate.createFunctionTypeAnnotation(params,returnType,rest,typeParameters));id.typeAnnotation=markerApply(valueMarker,delegate.createTypeAnnotation(value));markerApply(idMarker,id);consumeSemicolon();return markerApply(marker,delegate.createDeclareFunction(id));}
function parseDeclareVariable(){var id,marker=markerCreate();expectContextualKeyword('declare');expectKeyword('var');id=parseTypeAnnotatableIdentifier();consumeSemicolon();return markerApply(marker,delegate.createDeclareVariable(id));}
function parseDeclareModule(){var body=[],bodyMarker,id,idMarker,marker=markerCreate(),token;expectContextualKeyword('declare');expectContextualKeyword('module');if(lookahead.type===Token.StringLiteral){if(strict&&lookahead.octal){throwErrorTolerant(lookahead,Messages.StrictOctalLiteral);}
idMarker=markerCreate();id=markerApply(idMarker,delegate.createLiteral(lex()));}else{id=parseVariableIdentifier();}
bodyMarker=markerCreate();expect('{');while(index<length&&!match('}')){token=lookahead2();switch(token.value){case'class':body.push(parseDeclareClass());break;case'function':body.push(parseDeclareFunction());break;case'var':body.push(parseDeclareVariable());break;default:throwUnexpected(lookahead);}}
expect('}');return markerApply(marker,delegate.createDeclareModule(id,markerApply(bodyMarker,delegate.createBlockStatement(body))));}
function collectToken(){var loc,token,range,value,entry;if(!state.inJSXChild){skipComment();}
loc={start:{line:lineNumber,column:index-lineStart}};token=extra.advance();loc.end={line:lineNumber,column:index-lineStart};if(token.type!==Token.EOF){range=[token.range[0],token.range[1]];value=source.slice(token.range[0],token.range[1]);entry={type:TokenName[token.type],value:value,range:range,loc:loc};if(token.regex){entry.regex={pattern:token.regex.pattern,flags:token.regex.flags};}
extra.tokens.push(entry);}
return token;}
function collectRegex(){var pos,loc,regex,token;skipComment();pos=index;loc={start:{line:lineNumber,column:index-lineStart}};regex=extra.scanRegExp();loc.end={line:lineNumber,column:index-lineStart};if(!extra.tokenize){if(extra.tokens.length>0){token=extra.tokens[extra.tokens.length-1];if(token.range[0]===pos&&token.type==='Punctuator'){if(token.value==='/'||token.value==='/='){extra.tokens.pop();}}}
extra.tokens.push({type:'RegularExpression',value:regex.literal,regex:regex.regex,range:[pos,index],loc:loc});}
return regex;}
function filterTokenLocation(){var i,entry,token,tokens=[];for(i=0;i<extra.tokens.length;++i){entry=extra.tokens[i];token={type:entry.type,value:entry.value};if(entry.regex){token.regex={pattern:entry.regex.pattern,flags:entry.regex.flags};}
if(extra.range){token.range=entry.range;}
if(extra.loc){token.loc=entry.loc;}
tokens.push(token);}
extra.tokens=tokens;}
function patch(){if(typeof extra.tokens!=='undefined'){extra.advance=advance;extra.scanRegExp=scanRegExp;advance=collectToken;scanRegExp=collectRegex;}}
function unpatch(){if(typeof extra.scanRegExp==='function'){advance=extra.advance;scanRegExp=extra.scanRegExp;}}
function extend(object,properties){var entry,result={};for(entry in object){if(object.hasOwnProperty(entry)){result[entry]=object[entry];}}
for(entry in properties){if(properties.hasOwnProperty(entry)){result[entry]=properties[entry];}}
return result;}
function tokenize(code,options){var toString,token,tokens;toString=String;if(typeof code!=='string'&&!(code instanceof String)){code=toString(code);}
delegate=SyntaxTreeDelegate;source=code;index=0;lineNumber=(source.length>0)?1:0;lineStart=0;length=source.length;lookahead=null;state={allowKeyword:true,allowIn:true,labelSet:new StringMap(),inFunctionBody:false,inIteration:false,inSwitch:false,lastCommentStart:-1};extra={};options=options||{};options.tokens=true;extra.tokens=[];extra.tokenize=true;extra.openParenToken=-1;extra.openCurlyToken=-1;extra.range=(typeof options.range==='boolean')&&options.range;extra.loc=(typeof options.loc==='boolean')&&options.loc;if(typeof options.comment==='boolean'&&options.comment){extra.comments=[];}
if(typeof options.tolerant==='boolean'&&options.tolerant){extra.errors=[];}
patch();try{peek();if(lookahead.type===Token.EOF){return extra.tokens;}
token=lex();while(lookahead.type!==Token.EOF){try{token=lex();}catch(lexError){token=lookahead;if(extra.errors){extra.errors.push(lexError);break;}else{throw lexError;}}}
filterTokenLocation();tokens=extra.tokens;if(typeof extra.comments!=='undefined'){tokens.comments=extra.comments;}
if(typeof extra.errors!=='undefined'){tokens.errors=extra.errors;}}catch(e){throw e;}finally{unpatch();extra={};}
return tokens;}
function parse(code,options){var program,toString;toString=String;if(typeof code!=='string'&&!(code instanceof String)){code=toString(code);}
delegate=SyntaxTreeDelegate;source=code;index=0;lineNumber=(source.length>0)?1:0;lineStart=0;length=source.length;lookahead=null;state={allowKeyword:false,allowIn:true,labelSet:new StringMap(),parenthesizedCount:0,inFunctionBody:false,inIteration:false,inSwitch:false,inJSXChild:false,inJSXTag:false,inType:false,lastCommentStart:-1,yieldAllowed:false,awaitAllowed:false};extra={};if(typeof options!=='undefined'){extra.range=(typeof options.range==='boolean')&&options.range;extra.loc=(typeof options.loc==='boolean')&&options.loc;extra.attachComment=(typeof options.attachComment==='boolean')&&options.attachComment;if(extra.loc&&options.source!==null&&options.source!==undefined){delegate=extend(delegate,{'postProcess':function(node){node.loc.source=toString(options.source);return node;}});}
extra.sourceType=options.sourceType;if(typeof options.tokens==='boolean'&&options.tokens){extra.tokens=[];}
if(typeof options.comment==='boolean'&&options.comment){extra.comments=[];}
if(typeof options.tolerant==='boolean'&&options.tolerant){extra.errors=[];}
if(extra.attachComment){extra.range=true;extra.comments=[];extra.bottomRightStack=[];extra.trailingComments=[];extra.leadingComments=[];}}
patch();try{program=parseProgram();if(typeof extra.comments!=='undefined'){program.comments=extra.comments;}
if(typeof extra.tokens!=='undefined'){filterTokenLocation();program.tokens=extra.tokens;}
if(typeof extra.errors!=='undefined'){program.errors=extra.errors;}}catch(e){throw e;}finally{unpatch();extra={};}
return program;}
exports.version='13001.1001.0-dev-harmony-fb';exports.tokenize=tokenize;exports.parse=parse;exports.Syntax=(function(){var name,types={};if(typeof Object.create==='function'){types=Object.create(null);}
for(name in Syntax){if(Syntax.hasOwnProperty(name)){types[name]=Syntax[name];}}
if(typeof Object.freeze==='function'){Object.freeze(types);}
return types;}());}));},{}],10:[function(_dereq_,module,exports){var Base62=(function(my){my.chars=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
my.encode=function(i){if(i===0){return'0'}
var s=''
while(i>0){s=this.chars[i%62]+s
i=Math.floor(i/62)}
return s};my.decode=function(a,b,c,d){for(b=c=(a===(/\W|_|^$/.test(a+="")||a))-1;d=a.charCodeAt(c++);)
b=b*62+d-[,48,29,87][d>>5];return b};return my;}({}));module.exports=Base62},{}],11:[function(_dereq_,module,exports){exports.SourceMapGenerator=_dereq_('./source-map/source-map-generator').SourceMapGenerator;exports.SourceMapConsumer=_dereq_('./source-map/source-map-consumer').SourceMapConsumer;exports.SourceNode=_dereq_('./source-map/source-node').SourceNode;},{"./source-map/source-map-consumer":16,"./source-map/source-map-generator":17,"./source-map/source-node":18}],12:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){var util=_dereq_('./util');function ArraySet(){this._array=[];this._set={};}
ArraySet.fromArray=function ArraySet_fromArray(aArray,aAllowDuplicates){var set=new ArraySet();for(var i=0,len=aArray.length;i<len;i++){set.add(aArray[i],aAllowDuplicates);}
return set;};ArraySet.prototype.add=function ArraySet_add(aStr,aAllowDuplicates){var isDuplicate=this.has(aStr);var idx=this._array.length;if(!isDuplicate||aAllowDuplicates){this._array.push(aStr);}
if(!isDuplicate){this._set[util.toSetString(aStr)]=idx;}};ArraySet.prototype.has=function ArraySet_has(aStr){return Object.prototype.hasOwnProperty.call(this._set,util.toSetString(aStr));};ArraySet.prototype.indexOf=function ArraySet_indexOf(aStr){if(this.has(aStr)){return this._set[util.toSetString(aStr)];}
throw new Error('"'+aStr+'" is not in the set.');};ArraySet.prototype.at=function ArraySet_at(aIdx){if(aIdx>=0&&aIdx<this._array.length){return this._array[aIdx];}
throw new Error('No element indexed by '+aIdx);};ArraySet.prototype.toArray=function ArraySet_toArray(){return this._array.slice();};exports.ArraySet=ArraySet;});},{"./util":19,"amdefine":20}],13:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){var base64=_dereq_('./base64');var VLQ_BASE_SHIFT=5;var VLQ_BASE=1<<VLQ_BASE_SHIFT;var VLQ_BASE_MASK=VLQ_BASE-1;var VLQ_CONTINUATION_BIT=VLQ_BASE;function toVLQSigned(aValue){return aValue<0?((-aValue)<<1)+1:(aValue<<1)+0;}
function fromVLQSigned(aValue){var isNegative=(aValue&1)===1;var shifted=aValue>>1;return isNegative?-shifted:shifted;}
exports.encode=function base64VLQ_encode(aValue){var encoded="";var digit;var vlq=toVLQSigned(aValue);do{digit=vlq&VLQ_BASE_MASK;vlq>>>=VLQ_BASE_SHIFT;if(vlq>0){digit|=VLQ_CONTINUATION_BIT;}
encoded+=base64.encode(digit);}while(vlq>0);return encoded;};exports.decode=function base64VLQ_decode(aStr){var i=0;var strLen=aStr.length;var result=0;var shift=0;var continuation,digit;do{if(i>=strLen){throw new Error("Expected more digits in base 64 VLQ value.");}
digit=base64.decode(aStr.charAt(i++));continuation=!!(digit&VLQ_CONTINUATION_BIT);digit&=VLQ_BASE_MASK;result=result+(digit<<shift);shift+=VLQ_BASE_SHIFT;}while(continuation);return{value:fromVLQSigned(result),rest:aStr.slice(i)};};});},{"./base64":14,"amdefine":20}],14:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){var charToIntMap={};var intToCharMap={};'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('').forEach(function(ch,index){charToIntMap[ch]=index;intToCharMap[index]=ch;});exports.encode=function base64_encode(aNumber){if(aNumber in intToCharMap){return intToCharMap[aNumber];}
throw new TypeError("Must be between 0 and 63: "+aNumber);};exports.decode=function base64_decode(aChar){if(aChar in charToIntMap){return charToIntMap[aChar];}
throw new TypeError("Not a valid base 64 digit: "+aChar);};});},{"amdefine":20}],15:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){function recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare){var mid=Math.floor((aHigh-aLow)/2)+aLow;var cmp=aCompare(aNeedle,aHaystack[mid],true);if(cmp===0){return aHaystack[mid];}
else if(cmp>0){if(aHigh-mid>1){return recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare);}
return aHaystack[mid];}
else{if(mid-aLow>1){return recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare);}
return aLow<0?null:aHaystack[aLow];}}
exports.search=function search(aNeedle,aHaystack,aCompare){return aHaystack.length>0?recursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare):null;};});},{"amdefine":20}],16:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){var util=_dereq_('./util');var binarySearch=_dereq_('./binary-search');var ArraySet=_dereq_('./array-set').ArraySet;var base64VLQ=_dereq_('./base64-vlq');function SourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;if(typeof aSourceMap==='string'){sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,''));}
var version=util.getArg(sourceMap,'version');var sources=util.getArg(sourceMap,'sources');var names=util.getArg(sourceMap,'names',[]);var sourceRoot=util.getArg(sourceMap,'sourceRoot',null);var sourcesContent=util.getArg(sourceMap,'sourcesContent',null);var mappings=util.getArg(sourceMap,'mappings');var file=util.getArg(sourceMap,'file',null);if(version!=this._version){throw new Error('Unsupported version: '+version);}
this._names=ArraySet.fromArray(names,true);this._sources=ArraySet.fromArray(sources,true);this.sourceRoot=sourceRoot;this.sourcesContent=sourcesContent;this._mappings=mappings;this.file=file;}
SourceMapConsumer.fromSourceMap=function SourceMapConsumer_fromSourceMap(aSourceMap){var smc=Object.create(SourceMapConsumer.prototype);smc._names=ArraySet.fromArray(aSourceMap._names.toArray(),true);smc._sources=ArraySet.fromArray(aSourceMap._sources.toArray(),true);smc.sourceRoot=aSourceMap._sourceRoot;smc.sourcesContent=aSourceMap._generateSourcesContent(smc._sources.toArray(),smc.sourceRoot);smc.file=aSourceMap._file;smc.__generatedMappings=aSourceMap._mappings.slice().sort(util.compareByGeneratedPositions);smc.__originalMappings=aSourceMap._mappings.slice().sort(util.compareByOriginalPositions);return smc;};SourceMapConsumer.prototype._version=3;Object.defineProperty(SourceMapConsumer.prototype,'sources',{get:function(){return this._sources.toArray().map(function(s){return this.sourceRoot?util.join(this.sourceRoot,s):s;},this);}});SourceMapConsumer.prototype.__generatedMappings=null;Object.defineProperty(SourceMapConsumer.prototype,'_generatedMappings',{get:function(){if(!this.__generatedMappings){this.__generatedMappings=[];this.__originalMappings=[];this._parseMappings(this._mappings,this.sourceRoot);}
return this.__generatedMappings;}});SourceMapConsumer.prototype.__originalMappings=null;Object.defineProperty(SourceMapConsumer.prototype,'_originalMappings',{get:function(){if(!this.__originalMappings){this.__generatedMappings=[];this.__originalMappings=[];this._parseMappings(this._mappings,this.sourceRoot);}
return this.__originalMappings;}});SourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(aStr,aSourceRoot){var generatedLine=1;var previousGeneratedColumn=0;var previousOriginalLine=0;var previousOriginalColumn=0;var previousSource=0;var previousName=0;var mappingSeparator=/^[,;]/;var str=aStr;var mapping;var temp;while(str.length>0){if(str.charAt(0)===';'){generatedLine++;str=str.slice(1);previousGeneratedColumn=0;}
else if(str.charAt(0)===','){str=str.slice(1);}
else{mapping={};mapping.generatedLine=generatedLine;temp=base64VLQ.decode(str);mapping.generatedColumn=previousGeneratedColumn+temp.value;previousGeneratedColumn=mapping.generatedColumn;str=temp.rest;if(str.length>0&&!mappingSeparator.test(str.charAt(0))){temp=base64VLQ.decode(str);mapping.source=this._sources.at(previousSource+temp.value);previousSource+=temp.value;str=temp.rest;if(str.length===0||mappingSeparator.test(str.charAt(0))){throw new Error('Found a source, but no line and column');}
temp=base64VLQ.decode(str);mapping.originalLine=previousOriginalLine+temp.value;previousOriginalLine=mapping.originalLine;mapping.originalLine+=1;str=temp.rest;if(str.length===0||mappingSeparator.test(str.charAt(0))){throw new Error('Found a source and line, but no column');}
temp=base64VLQ.decode(str);mapping.originalColumn=previousOriginalColumn+temp.value;previousOriginalColumn=mapping.originalColumn;str=temp.rest;if(str.length>0&&!mappingSeparator.test(str.charAt(0))){temp=base64VLQ.decode(str);mapping.name=this._names.at(previousName+temp.value);previousName+=temp.value;str=temp.rest;}}
this.__generatedMappings.push(mapping);if(typeof mapping.originalLine==='number'){this.__originalMappings.push(mapping);}}}
this.__originalMappings.sort(util.compareByOriginalPositions);};SourceMapConsumer.prototype._findMapping=function SourceMapConsumer_findMapping(aNeedle,aMappings,aLineName,aColumnName,aComparator){if(aNeedle[aLineName]<=0){throw new TypeError('Line must be greater than or equal to 1, got '
+aNeedle[aLineName]);}
if(aNeedle[aColumnName]<0){throw new TypeError('Column must be greater than or equal to 0, got '
+aNeedle[aColumnName]);}
return binarySearch.search(aNeedle,aMappings,aComparator);};SourceMapConsumer.prototype.originalPositionFor=function SourceMapConsumer_originalPositionFor(aArgs){var needle={generatedLine:util.getArg(aArgs,'line'),generatedColumn:util.getArg(aArgs,'column')};var mapping=this._findMapping(needle,this._generatedMappings,"generatedLine","generatedColumn",util.compareByGeneratedPositions);if(mapping){var source=util.getArg(mapping,'source',null);if(source&&this.sourceRoot){source=util.join(this.sourceRoot,source);}
return{source:source,line:util.getArg(mapping,'originalLine',null),column:util.getArg(mapping,'originalColumn',null),name:util.getArg(mapping,'name',null)};}
return{source:null,line:null,column:null,name:null};};SourceMapConsumer.prototype.sourceContentFor=function SourceMapConsumer_sourceContentFor(aSource){if(!this.sourcesContent){return null;}
if(this.sourceRoot){aSource=util.relative(this.sourceRoot,aSource);}
if(this._sources.has(aSource)){return this.sourcesContent[this._sources.indexOf(aSource)];}
var url;if(this.sourceRoot&&(url=util.urlParse(this.sourceRoot))){var fileUriAbsPath=aSource.replace(/^file:\/\//,"");if(url.scheme=="file"&&this._sources.has(fileUriAbsPath)){return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]}
if((!url.path||url.path=="/")&&this._sources.has("/"+aSource)){return this.sourcesContent[this._sources.indexOf("/"+aSource)];}}
throw new Error('"'+aSource+'" is not in the SourceMap.');};SourceMapConsumer.prototype.generatedPositionFor=function SourceMapConsumer_generatedPositionFor(aArgs){var needle={source:util.getArg(aArgs,'source'),originalLine:util.getArg(aArgs,'line'),originalColumn:util.getArg(aArgs,'column')};if(this.sourceRoot){needle.source=util.relative(this.sourceRoot,needle.source);}
var mapping=this._findMapping(needle,this._originalMappings,"originalLine","originalColumn",util.compareByOriginalPositions);if(mapping){return{line:util.getArg(mapping,'generatedLine',null),column:util.getArg(mapping,'generatedColumn',null)};}
return{line:null,column:null};};SourceMapConsumer.GENERATED_ORDER=1;SourceMapConsumer.ORIGINAL_ORDER=2;SourceMapConsumer.prototype.eachMapping=function SourceMapConsumer_eachMapping(aCallback,aContext,aOrder){var context=aContext||null;var order=aOrder||SourceMapConsumer.GENERATED_ORDER;var mappings;switch(order){case SourceMapConsumer.GENERATED_ORDER:mappings=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:mappings=this._originalMappings;break;default:throw new Error("Unknown order of iteration.");}
var sourceRoot=this.sourceRoot;mappings.map(function(mapping){var source=mapping.source;if(source&&sourceRoot){source=util.join(sourceRoot,source);}
return{source:source,generatedLine:mapping.generatedLine,generatedColumn:mapping.generatedColumn,originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:mapping.name};}).forEach(aCallback,context);};exports.SourceMapConsumer=SourceMapConsumer;});},{"./array-set":12,"./base64-vlq":13,"./binary-search":15,"./util":19,"amdefine":20}],17:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){var base64VLQ=_dereq_('./base64-vlq');var util=_dereq_('./util');var ArraySet=_dereq_('./array-set').ArraySet;function SourceMapGenerator(aArgs){this._file=util.getArg(aArgs,'file');this._sourceRoot=util.getArg(aArgs,'sourceRoot',null);this._sources=new ArraySet();this._names=new ArraySet();this._mappings=[];this._sourcesContents=null;}
SourceMapGenerator.prototype._version=3;SourceMapGenerator.fromSourceMap=function SourceMapGenerator_fromSourceMap(aSourceMapConsumer){var sourceRoot=aSourceMapConsumer.sourceRoot;var generator=new SourceMapGenerator({file:aSourceMapConsumer.file,sourceRoot:sourceRoot});aSourceMapConsumer.eachMapping(function(mapping){var newMapping={generated:{line:mapping.generatedLine,column:mapping.generatedColumn}};if(mapping.source){newMapping.source=mapping.source;if(sourceRoot){newMapping.source=util.relative(sourceRoot,newMapping.source);}
newMapping.original={line:mapping.originalLine,column:mapping.originalColumn};if(mapping.name){newMapping.name=mapping.name;}}
generator.addMapping(newMapping);});aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content){generator.setSourceContent(sourceFile,content);}});return generator;};SourceMapGenerator.prototype.addMapping=function SourceMapGenerator_addMapping(aArgs){var generated=util.getArg(aArgs,'generated');var original=util.getArg(aArgs,'original',null);var source=util.getArg(aArgs,'source',null);var name=util.getArg(aArgs,'name',null);this._validateMapping(generated,original,source,name);if(source&&!this._sources.has(source)){this._sources.add(source);}
if(name&&!this._names.has(name)){this._names.add(name);}
this._mappings.push({generatedLine:generated.line,generatedColumn:generated.column,originalLine:original!=null&&original.line,originalColumn:original!=null&&original.column,source:source,name:name});};SourceMapGenerator.prototype.setSourceContent=function SourceMapGenerator_setSourceContent(aSourceFile,aSourceContent){var source=aSourceFile;if(this._sourceRoot){source=util.relative(this._sourceRoot,source);}
if(aSourceContent!==null){if(!this._sourcesContents){this._sourcesContents={};}
this._sourcesContents[util.toSetString(source)]=aSourceContent;}else{delete this._sourcesContents[util.toSetString(source)];if(Object.keys(this._sourcesContents).length===0){this._sourcesContents=null;}}};SourceMapGenerator.prototype.applySourceMap=function SourceMapGenerator_applySourceMap(aSourceMapConsumer,aSourceFile){if(!aSourceFile){aSourceFile=aSourceMapConsumer.file;}
var sourceRoot=this._sourceRoot;if(sourceRoot){aSourceFile=util.relative(sourceRoot,aSourceFile);}
var newSources=new ArraySet();var newNames=new ArraySet();this._mappings.forEach(function(mapping){if(mapping.source===aSourceFile&&mapping.originalLine){var original=aSourceMapConsumer.originalPositionFor({line:mapping.originalLine,column:mapping.originalColumn});if(original.source!==null){if(sourceRoot){mapping.source=util.relative(sourceRoot,original.source);}else{mapping.source=original.source;}
mapping.originalLine=original.line;mapping.originalColumn=original.column;if(original.name!==null&&mapping.name!==null){mapping.name=original.name;}}}
var source=mapping.source;if(source&&!newSources.has(source)){newSources.add(source);}
var name=mapping.name;if(name&&!newNames.has(name)){newNames.add(name);}},this);this._sources=newSources;this._names=newNames;aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content){if(sourceRoot){sourceFile=util.relative(sourceRoot,sourceFile);}
this.setSourceContent(sourceFile,content);}},this);};SourceMapGenerator.prototype._validateMapping=function SourceMapGenerator_validateMapping(aGenerated,aOriginal,aSource,aName){if(aGenerated&&'line'in aGenerated&&'column'in aGenerated&&aGenerated.line>0&&aGenerated.column>=0&&!aOriginal&&!aSource&&!aName){return;}
else if(aGenerated&&'line'in aGenerated&&'column'in aGenerated&&aOriginal&&'line'in aOriginal&&'column'in aOriginal&&aGenerated.line>0&&aGenerated.column>=0&&aOriginal.line>0&&aOriginal.column>=0&&aSource){return;}
else{throw new Error('Invalid mapping: '+JSON.stringify({generated:aGenerated,source:aSource,orginal:aOriginal,name:aName}));}};SourceMapGenerator.prototype._serializeMappings=function SourceMapGenerator_serializeMappings(){var previousGeneratedColumn=0;var previousGeneratedLine=1;var previousOriginalColumn=0;var previousOriginalLine=0;var previousName=0;var previousSource=0;var result='';var mapping;this._mappings.sort(util.compareByGeneratedPositions);for(var i=0,len=this._mappings.length;i<len;i++){mapping=this._mappings[i];if(mapping.generatedLine!==previousGeneratedLine){previousGeneratedColumn=0;while(mapping.generatedLine!==previousGeneratedLine){result+=';';previousGeneratedLine++;}}
else{if(i>0){if(!util.compareByGeneratedPositions(mapping,this._mappings[i-1])){continue;}
result+=',';}}
result+=base64VLQ.encode(mapping.generatedColumn
-previousGeneratedColumn);previousGeneratedColumn=mapping.generatedColumn;if(mapping.source){result+=base64VLQ.encode(this._sources.indexOf(mapping.source)
-previousSource);previousSource=this._sources.indexOf(mapping.source);result+=base64VLQ.encode(mapping.originalLine-1
-previousOriginalLine);previousOriginalLine=mapping.originalLine-1;result+=base64VLQ.encode(mapping.originalColumn
-previousOriginalColumn);previousOriginalColumn=mapping.originalColumn;if(mapping.name){result+=base64VLQ.encode(this._names.indexOf(mapping.name)
-previousName);previousName=this._names.indexOf(mapping.name);}}}
return result;};SourceMapGenerator.prototype._generateSourcesContent=function SourceMapGenerator_generateSourcesContent(aSources,aSourceRoot){return aSources.map(function(source){if(!this._sourcesContents){return null;}
if(aSourceRoot){source=util.relative(aSourceRoot,source);}
var key=util.toSetString(source);return Object.prototype.hasOwnProperty.call(this._sourcesContents,key)?this._sourcesContents[key]:null;},this);};SourceMapGenerator.prototype.toJSON=function SourceMapGenerator_toJSON(){var map={version:this._version,file:this._file,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._sourceRoot){map.sourceRoot=this._sourceRoot;}
if(this._sourcesContents){map.sourcesContent=this._generateSourcesContent(map.sources,map.sourceRoot);}
return map;};SourceMapGenerator.prototype.toString=function SourceMapGenerator_toString(){return JSON.stringify(this);};exports.SourceMapGenerator=SourceMapGenerator;});},{"./array-set":12,"./base64-vlq":13,"./util":19,"amdefine":20}],18:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){var SourceMapGenerator=_dereq_('./source-map-generator').SourceMapGenerator;var util=_dereq_('./util');function SourceNode(aLine,aColumn,aSource,aChunks,aName){this.children=[];this.sourceContents={};this.line=aLine===undefined?null:aLine;this.column=aColumn===undefined?null:aColumn;this.source=aSource===undefined?null:aSource;this.name=aName===undefined?null:aName;if(aChunks!=null)this.add(aChunks);}
SourceNode.fromStringWithSourceMap=function SourceNode_fromStringWithSourceMap(aGeneratedCode,aSourceMapConsumer){var node=new SourceNode();var remainingLines=aGeneratedCode.split('\n');var lastGeneratedLine=1,lastGeneratedColumn=0;var lastMapping=null;aSourceMapConsumer.eachMapping(function(mapping){if(lastMapping===null){while(lastGeneratedLine<mapping.generatedLine){node.add(remainingLines.shift()+"\n");lastGeneratedLine++;}
if(lastGeneratedColumn<mapping.generatedColumn){var nextLine=remainingLines[0];node.add(nextLine.substr(0,mapping.generatedColumn));remainingLines[0]=nextLine.substr(mapping.generatedColumn);lastGeneratedColumn=mapping.generatedColumn;}}else{if(lastGeneratedLine<mapping.generatedLine){var code="";do{code+=remainingLines.shift()+"\n";lastGeneratedLine++;lastGeneratedColumn=0;}while(lastGeneratedLine<mapping.generatedLine);if(lastGeneratedColumn<mapping.generatedColumn){var nextLine=remainingLines[0];code+=nextLine.substr(0,mapping.generatedColumn);remainingLines[0]=nextLine.substr(mapping.generatedColumn);lastGeneratedColumn=mapping.generatedColumn;}
addMappingWithCode(lastMapping,code);}else{var nextLine=remainingLines[0];var code=nextLine.substr(0,mapping.generatedColumn-
lastGeneratedColumn);remainingLines[0]=nextLine.substr(mapping.generatedColumn-
lastGeneratedColumn);lastGeneratedColumn=mapping.generatedColumn;addMappingWithCode(lastMapping,code);}}
lastMapping=mapping;},this);addMappingWithCode(lastMapping,remainingLines.join("\n"));aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content){node.setSourceContent(sourceFile,content);}});return node;function addMappingWithCode(mapping,code){if(mapping===null||mapping.source===undefined){node.add(code);}else{node.add(new SourceNode(mapping.originalLine,mapping.originalColumn,mapping.source,code,mapping.name));}}};SourceNode.prototype.add=function SourceNode_add(aChunk){if(Array.isArray(aChunk)){aChunk.forEach(function(chunk){this.add(chunk);},this);}
else if(aChunk instanceof SourceNode||typeof aChunk==="string"){if(aChunk){this.children.push(aChunk);}}
else{throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk);}
return this;};SourceNode.prototype.prepend=function SourceNode_prepend(aChunk){if(Array.isArray(aChunk)){for(var i=aChunk.length-1;i>=0;i--){this.prepend(aChunk[i]);}}
else if(aChunk instanceof SourceNode||typeof aChunk==="string"){this.children.unshift(aChunk);}
else{throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk);}
return this;};SourceNode.prototype.walk=function SourceNode_walk(aFn){var chunk;for(var i=0,len=this.children.length;i<len;i++){chunk=this.children[i];if(chunk instanceof SourceNode){chunk.walk(aFn);}
else{if(chunk!==''){aFn(chunk,{source:this.source,line:this.line,column:this.column,name:this.name});}}}};SourceNode.prototype.join=function SourceNode_join(aSep){var newChildren;var i;var len=this.children.length;if(len>0){newChildren=[];for(i=0;i<len-1;i++){newChildren.push(this.children[i]);newChildren.push(aSep);}
newChildren.push(this.children[i]);this.children=newChildren;}
return this;};SourceNode.prototype.replaceRight=function SourceNode_replaceRight(aPattern,aReplacement){var lastChild=this.children[this.children.length-1];if(lastChild instanceof SourceNode){lastChild.replaceRight(aPattern,aReplacement);}
else if(typeof lastChild==='string'){this.children[this.children.length-1]=lastChild.replace(aPattern,aReplacement);}
else{this.children.push(''.replace(aPattern,aReplacement));}
return this;};SourceNode.prototype.setSourceContent=function SourceNode_setSourceContent(aSourceFile,aSourceContent){this.sourceContents[util.toSetString(aSourceFile)]=aSourceContent;};SourceNode.prototype.walkSourceContents=function SourceNode_walkSourceContents(aFn){for(var i=0,len=this.children.length;i<len;i++){if(this.children[i]instanceof SourceNode){this.children[i].walkSourceContents(aFn);}}
var sources=Object.keys(this.sourceContents);for(var i=0,len=sources.length;i<len;i++){aFn(util.fromSetString(sources[i]),this.sourceContents[sources[i]]);}};SourceNode.prototype.toString=function SourceNode_toString(){var str="";this.walk(function(chunk){str+=chunk;});return str;};SourceNode.prototype.toStringWithSourceMap=function SourceNode_toStringWithSourceMap(aArgs){var generated={code:"",line:1,column:0};var map=new SourceMapGenerator(aArgs);var sourceMappingActive=false;var lastOriginalSource=null;var lastOriginalLine=null;var lastOriginalColumn=null;var lastOriginalName=null;this.walk(function(chunk,original){generated.code+=chunk;if(original.source!==null&&original.line!==null&&original.column!==null){if(lastOriginalSource!==original.source||lastOriginalLine!==original.line||lastOriginalColumn!==original.column||lastOriginalName!==original.name){map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name});}
lastOriginalSource=original.source;lastOriginalLine=original.line;lastOriginalColumn=original.column;lastOriginalName=original.name;sourceMappingActive=true;}else if(sourceMappingActive){map.addMapping({generated:{line:generated.line,column:generated.column}});lastOriginalSource=null;sourceMappingActive=false;}
chunk.split('').forEach(function(ch){if(ch==='\n'){generated.line++;generated.column=0;}else{generated.column++;}});});this.walkSourceContents(function(sourceFile,sourceContent){map.setSourceContent(sourceFile,sourceContent);});return{code:generated.code,map:map};};exports.SourceNode=SourceNode;});},{"./source-map-generator":17,"./util":19,"amdefine":20}],19:[function(_dereq_,module,exports){if(typeof define!=='function'){var define=_dereq_('amdefine')(module,_dereq_);}
define(function(_dereq_,exports,module){function getArg(aArgs,aName,aDefaultValue){if(aName in aArgs){return aArgs[aName];}else if(arguments.length===3){return aDefaultValue;}else{throw new Error('"'+aName+'" is a required argument.');}}
exports.getArg=getArg;var urlRegexp=/([\w+\-.]+):\/\/((\w+:\w+)@)?([\w.]+)?(:(\d+))?(\S+)?/;var dataUrlRegexp=/^data:.+\,.+/;function urlParse(aUrl){var match=aUrl.match(urlRegexp);if(!match){return null;}
return{scheme:match[1],auth:match[3],host:match[4],port:match[6],path:match[7]};}
exports.urlParse=urlParse;function urlGenerate(aParsedUrl){var url=aParsedUrl.scheme+"://";if(aParsedUrl.auth){url+=aParsedUrl.auth+"@"}
if(aParsedUrl.host){url+=aParsedUrl.host;}
if(aParsedUrl.port){url+=":"+aParsedUrl.port}
if(aParsedUrl.path){url+=aParsedUrl.path;}
return url;}
exports.urlGenerate=urlGenerate;function join(aRoot,aPath){var url;if(aPath.match(urlRegexp)||aPath.match(dataUrlRegexp)){return aPath;}
if(aPath.charAt(0)==='/'&&(url=urlParse(aRoot))){url.path=aPath;return urlGenerate(url);}
return aRoot.replace(/\/$/,'')+'/'+aPath;}
exports.join=join;function toSetString(aStr){return'$'+aStr;}
exports.toSetString=toSetString;function fromSetString(aStr){return aStr.substr(1);}
exports.fromSetString=fromSetString;function relative(aRoot,aPath){aRoot=aRoot.replace(/\/$/,'');var url=urlParse(aRoot);if(aPath.charAt(0)=="/"&&url&&url.path=="/"){return aPath.slice(1);}
return aPath.indexOf(aRoot+'/')===0?aPath.substr(aRoot.length+1):aPath;}
exports.relative=relative;function strcmp(aStr1,aStr2){var s1=aStr1||"";var s2=aStr2||"";return(s1>s2)-(s1<s2);}
function compareByOriginalPositions(mappingA,mappingB,onlyCompareOriginal){var cmp;cmp=strcmp(mappingA.source,mappingB.source);if(cmp){return cmp;}
cmp=mappingA.originalLine-mappingB.originalLine;if(cmp){return cmp;}
cmp=mappingA.originalColumn-mappingB.originalColumn;if(cmp||onlyCompareOriginal){return cmp;}
cmp=strcmp(mappingA.name,mappingB.name);if(cmp){return cmp;}
cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp){return cmp;}
return mappingA.generatedColumn-mappingB.generatedColumn;};exports.compareByOriginalPositions=compareByOriginalPositions;function compareByGeneratedPositions(mappingA,mappingB,onlyCompareGenerated){var cmp;cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp){return cmp;}
cmp=mappingA.generatedColumn-mappingB.generatedColumn;if(cmp||onlyCompareGenerated){return cmp;}
cmp=strcmp(mappingA.source,mappingB.source);if(cmp){return cmp;}
cmp=mappingA.originalLine-mappingB.originalLine;if(cmp){return cmp;}
cmp=mappingA.originalColumn-mappingB.originalColumn;if(cmp){return cmp;}
return strcmp(mappingA.name,mappingB.name);};exports.compareByGeneratedPositions=compareByGeneratedPositions;});},{"amdefine":20}],20:[function(_dereq_,module,exports){(function(process,__filename){'use strict';function amdefine(module,requireFn){'use strict';var defineCache={},loaderCache={},alreadyCalled=false,path=_dereq_('path'),makeRequire,stringRequire;function trimDots(ary){var i,part;for(i=0;ary[i];i+=1){part=ary[i];if(part==='.'){ary.splice(i,1);i-=1;}else if(part==='..'){if(i===1&&(ary[2]==='..'||ary[0]==='..')){break;}else if(i>0){ary.splice(i-1,2);i-=2;}}}}
function normalize(name,baseName){var baseParts;if(name&&name.charAt(0)==='.'){if(baseName){baseParts=baseName.split('/');baseParts=baseParts.slice(0,baseParts.length-1);baseParts=baseParts.concat(name.split('/'));trimDots(baseParts);name=baseParts.join('/');}}
return name;}
function makeNormalize(relName){return function(name){return normalize(name,relName);};}
function makeLoad(id){function load(value){loaderCache[id]=value;}
load.fromText=function(id,text){throw new Error('amdefine does not implement load.fromText');};return load;}
makeRequire=function(systemRequire,exports,module,relId){function amdRequire(deps,callback){if(typeof deps==='string'){return stringRequire(systemRequire,exports,module,deps,relId);}else{deps=deps.map(function(depName){return stringRequire(systemRequire,exports,module,depName,relId);});process.nextTick(function(){callback.apply(null,deps);});}}
amdRequire.toUrl=function(filePath){if(filePath.indexOf('.')===0){return normalize(filePath,path.dirname(module.filename));}else{return filePath;}};return amdRequire;};requireFn=requireFn||function req(){return module.require.apply(module,arguments);};function runFactory(id,deps,factory){var r,e,m,result;if(id){e=loaderCache[id]={};m={id:id,uri:__filename,exports:e};r=makeRequire(requireFn,e,m,id);}else{if(alreadyCalled){throw new Error('amdefine with no module ID cannot be called more than once per file.');}
alreadyCalled=true;e=module.exports;m=module;r=makeRequire(requireFn,e,m,module.id);}
if(deps){deps=deps.map(function(depName){return r(depName);});}
if(typeof factory==='function'){result=factory.apply(m.exports,deps);}else{result=factory;}
if(result!==undefined){m.exports=result;if(id){loaderCache[id]=m.exports;}}}
stringRequire=function(systemRequire,exports,module,id,relId){var index=id.indexOf('!'),originalId=id,prefix,plugin;if(index===-1){id=normalize(id,relId);if(id==='require'){return makeRequire(systemRequire,exports,module,relId);}else if(id==='exports'){return exports;}else if(id==='module'){return module;}else if(loaderCache.hasOwnProperty(id)){return loaderCache[id];}else if(defineCache[id]){runFactory.apply(null,defineCache[id]);return loaderCache[id];}else{if(systemRequire){return systemRequire(originalId);}else{throw new Error('No module with ID: '+id);}}}else{prefix=id.substring(0,index);id=id.substring(index+1,id.length);plugin=stringRequire(systemRequire,exports,module,prefix,relId);if(plugin.normalize){id=plugin.normalize(id,makeNormalize(relId));}else{id=normalize(id,relId);}
if(loaderCache[id]){return loaderCache[id];}else{plugin.load(id,makeRequire(systemRequire,exports,module,relId),makeLoad(id),{});return loaderCache[id];}}};function define(id,deps,factory){if(Array.isArray(id)){factory=deps;deps=id;id=undefined;}else if(typeof id!=='string'){factory=id;id=deps=undefined;}
if(deps&&!Array.isArray(deps)){factory=deps;deps=undefined;}
if(!deps){deps=['require','exports','module'];}
if(id){defineCache[id]=[id,deps,factory];}else{runFactory(id,deps,factory);}}
define.require=function(id){if(loaderCache[id]){return loaderCache[id];}
if(defineCache[id]){runFactory.apply(null,defineCache[id]);return loaderCache[id];}};define.amd={};return define;}
module.exports=amdefine;}).call(this,_dereq_('_process'),"/node_modules/jstransform/node_modules/source-map/node_modules/amdefine/amdefine.js")},{"_process":8,"path":7}],21:[function(_dereq_,module,exports){var docblockRe=/^\s*(\/\*\*(.|\r?\n)*?\*\/)/;var ltrimRe=/^\s*/;function extract(contents){var match=contents.match(docblockRe);if(match){return match[0].replace(ltrimRe,'')||'';}
return'';}
var commentStartRe=/^\/\*\*?/;var commentEndRe=/\*+\/$/;var wsRe=/[\t ]+/g;var stringStartRe=/(\r?\n|^) *\*/g;var multilineRe=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *([^@\r\n\s][^@\r\n]+?) *\r?\n/g;var propertyRe=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g;function parse(docblock){docblock=docblock.replace(commentStartRe,'').replace(commentEndRe,'').replace(wsRe,' ').replace(stringStartRe,'$1');var prev='';while(prev!=docblock){prev=docblock;docblock=docblock.replace(multilineRe,"\n$1 $2\n");}
docblock=docblock.trim();var result=[];var match;while(match=propertyRe.exec(docblock)){result.push([match[1],match[2]]);}
return result;}
function parseAsObject(docblock){var pairs=parse(docblock);var result={};for(var i=0;i<pairs.length;i++){result[pairs[i][0]]=pairs[i][1];}
return result;}
exports.extract=extract;exports.parse=parse;exports.parseAsObject=parseAsObject;},{}],22:[function(_dereq_,module,exports){"use strict";var esprima=_dereq_('esprima-fb');var utils=_dereq_('./utils');var getBoundaryNode=utils.getBoundaryNode;var declareIdentInScope=utils.declareIdentInLocalScope;var initScopeMetadata=utils.initScopeMetadata;var Syntax=esprima.Syntax;function _nodeIsClosureScopeBoundary(node,parentNode){if(node.type===Syntax.Program){return true;}
var parentIsFunction=parentNode.type===Syntax.FunctionDeclaration||parentNode.type===Syntax.FunctionExpression||parentNode.type===Syntax.ArrowFunctionExpression;var parentIsCurlylessArrowFunc=parentNode.type===Syntax.ArrowFunctionExpression&&node===parentNode.body;return parentIsFunction&&(node.type===Syntax.BlockStatement||parentIsCurlylessArrowFunc);}
function _nodeIsBlockScopeBoundary(node,parentNode){if(node.type===Syntax.Program){return false;}
return node.type===Syntax.BlockStatement&&parentNode.type===Syntax.CatchClause;}
function traverse(node,path,state){var startIndex=null;var parentNode=path[0];if(!Array.isArray(node)&&state.localScope.parentNode!==parentNode){if(_nodeIsClosureScopeBoundary(node,parentNode)){var scopeIsStrict=state.scopeIsStrict;if(!scopeIsStrict&&(node.type===Syntax.BlockStatement||node.type===Syntax.Program)){scopeIsStrict=node.body.length>0&&node.body[0].type===Syntax.ExpressionStatement&&node.body[0].expression.type===Syntax.Literal&&node.body[0].expression.value==='use strict';}
if(node.type===Syntax.Program){startIndex=state.g.buffer.length;state=utils.updateState(state,{scopeIsStrict:scopeIsStrict});}else{startIndex=state.g.buffer.length+1;state=utils.updateState(state,{localScope:{parentNode:parentNode,parentScope:state.localScope,identifiers:{},tempVarIndex:0,tempVars:[]},scopeIsStrict:scopeIsStrict});declareIdentInScope('arguments',initScopeMetadata(node),state);if(parentNode.params.length>0){var param;var metadata=initScopeMetadata(parentNode,path.slice(1),path[0]);for(var i=0;i<parentNode.params.length;i++){param=parentNode.params[i];if(param.type===Syntax.Identifier){declareIdentInScope(param.name,metadata,state);}}}
if(parentNode.rest){var metadata=initScopeMetadata(parentNode,path.slice(1),path[0]);declareIdentInScope(parentNode.rest.name,metadata,state);}
if(parentNode.type===Syntax.FunctionExpression&&parentNode.id){var metaData=initScopeMetadata(parentNode,path.parentNodeslice,parentNode);declareIdentInScope(parentNode.id.name,metaData,state);}}
collectClosureIdentsAndTraverse(node,path,state);}
if(_nodeIsBlockScopeBoundary(node,parentNode)){startIndex=state.g.buffer.length;state=utils.updateState(state,{localScope:{parentNode:parentNode,parentScope:state.localScope,identifiers:{},tempVarIndex:0,tempVars:[]}});if(parentNode.type===Syntax.CatchClause){var metadata=initScopeMetadata(parentNode,path.slice(1),parentNode);declareIdentInScope(parentNode.param.name,metadata,state);}
collectBlockIdentsAndTraverse(node,path,state);}}
function traverser(node,path,state){node.range&&utils.catchup(node.range[0],state);traverse(node,path,state);node.range&&utils.catchup(node.range[1],state);}
utils.analyzeAndTraverse(walker,traverser,node,path,state);if(startIndex!==null){utils.injectTempVarDeclarations(state,startIndex);}}
function collectClosureIdentsAndTraverse(node,path,state){utils.analyzeAndTraverse(visitLocalClosureIdentifiers,collectClosureIdentsAndTraverse,node,path,state);}
function collectBlockIdentsAndTraverse(node,path,state){utils.analyzeAndTraverse(visitLocalBlockIdentifiers,collectBlockIdentsAndTraverse,node,path,state);}
function visitLocalClosureIdentifiers(node,path,state){var metaData;switch(node.type){case Syntax.ArrowFunctionExpression:case Syntax.FunctionExpression:return false;case Syntax.ClassDeclaration:case Syntax.ClassExpression:case Syntax.FunctionDeclaration:if(node.id){metaData=initScopeMetadata(getBoundaryNode(path),path.slice(),node);declareIdentInScope(node.id.name,metaData,state);}
return false;case Syntax.VariableDeclarator:if(path[0].kind==='var'){metaData=initScopeMetadata(getBoundaryNode(path),path.slice(),node);declareIdentInScope(node.id.name,metaData,state);}
break;}}
function visitLocalBlockIdentifiers(node,path,state){if(node.type===Syntax.CatchClause){return false;}}
function walker(node,path,state){var visitors=state.g.visitors;for(var i=0;i<visitors.length;i++){if(visitors[i].test(node,path,state)){return visitors[i](traverse,node,path,state);}}}
var _astCache={};function getAstForSource(source,options){if(_astCache[source]&&!options.disableAstCache){return _astCache[source];}
var ast=esprima.parse(source,{comment:true,loc:true,range:true,sourceType:options.sourceType});if(!options.disableAstCache){_astCache[source]=ast;}
return ast;}
function transform(visitors,source,options){options=options||{};var ast;try{ast=getAstForSource(source,options);}catch(e){e.message='Parse Error: '+e.message;throw e;}
var state=utils.createState(source,ast,options);state.g.visitors=visitors;if(options.sourceMap){var SourceMapGenerator=_dereq_('source-map').SourceMapGenerator;state.g.sourceMap=new SourceMapGenerator({file:options.filename||'transformed.js'});}
traverse(ast,[],state);utils.catchup(source.length,state);var ret={code:state.g.buffer,extra:state.g.extra};if(options.sourceMap){ret.sourceMap=state.g.sourceMap;ret.sourceMapFilename=options.filename||'source.js';}
return ret;}
exports.transform=transform;exports.Syntax=Syntax;},{"./utils":23,"esprima-fb":9,"source-map":11}],23:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var leadingIndentRegexp=/(^|\n)( {2}|\t)/g;var nonWhiteRegexp=/(\S)/g;function createState(source,rootNode,transformOptions){return{localScope:{parentNode:rootNode,parentScope:null,identifiers:{},tempVarIndex:0,tempVars:[]},superClass:null,mungeNamespace:'',methodNode:null,methodFuncNode:null,className:null,scopeIsStrict:null,indentBy:0,g:{opts:transformOptions,position:0,extra:{},buffer:'',source:source,docblock:null,tagNamespaceUsed:false,isBolt:undefined,sourceMap:null,sourceMapFilename:'source.js',sourceLine:1,bufferLine:1,originalProgramAST:null,sourceColumn:0,bufferColumn:0}};}
function updateState(state,update){var ret=Object.create(state);Object.keys(update).forEach(function(updatedKey){ret[updatedKey]=update[updatedKey];});return ret;}
function catchup(end,state,contentTransformer){if(end<state.g.position){return;}
var source=state.g.source.substring(state.g.position,end);var transformed=updateIndent(source,state);if(state.g.sourceMap&&transformed){state.g.sourceMap.addMapping({generated:{line:state.g.bufferLine,column:state.g.bufferColumn},original:{line:state.g.sourceLine,column:state.g.sourceColumn},source:state.g.sourceMapFilename});var sourceLines=source.split('\n');var transformedLines=transformed.split('\n');for(var i=1;i<sourceLines.length-1;i++){state.g.sourceMap.addMapping({generated:{line:state.g.bufferLine,column:0},original:{line:state.g.sourceLine,column:0},source:state.g.sourceMapFilename});state.g.sourceLine++;state.g.bufferLine++;}
if(sourceLines.length>1){state.g.sourceLine++;state.g.bufferLine++;state.g.sourceColumn=0;state.g.bufferColumn=0;}
state.g.sourceColumn+=sourceLines[sourceLines.length-1].length;state.g.bufferColumn+=transformedLines[transformedLines.length-1].length;}
state.g.buffer+=contentTransformer?contentTransformer(transformed):transformed;state.g.position=end;}
function getNodeSourceText(node,state){return state.g.source.substring(node.range[0],node.range[1]);}
function _replaceNonWhite(value){return value.replace(nonWhiteRegexp,' ');}
function _stripNonWhite(value){return value.replace(nonWhiteRegexp,'');}
function getNextSyntacticCharOffset(char,state){var pendingSource=state.g.source.substring(state.g.position);var pendingSourceLines=pendingSource.split('\n');var charOffset=0;var line;var withinBlockComment=false;var withinString=false;lineLoop:while((line=pendingSourceLines.shift())!==undefined){var lineEndPos=charOffset+line.length;charLoop:for(;charOffset<lineEndPos;charOffset++){var currChar=pendingSource[charOffset];if(currChar==='"'||currChar==='\''){withinString=!withinString;continue charLoop;}else if(withinString){continue charLoop;}else if(charOffset+1<lineEndPos){var nextTwoChars=currChar+line[charOffset+1];if(nextTwoChars==='//'){charOffset=lineEndPos+1;continue lineLoop;}else if(nextTwoChars==='/*'){withinBlockComment=true;charOffset+=1;continue charLoop;}else if(nextTwoChars==='*/'){withinBlockComment=false;charOffset+=1;continue charLoop;}}
if(!withinBlockComment&&currChar===char){return charOffset+state.g.position;}}
charOffset++;withinString=false;}
throw new Error('`'+char+'` not found!');}
function catchupWhiteOut(end,state){catchup(end,state,_replaceNonWhite);}
function catchupWhiteSpace(end,state){catchup(end,state,_stripNonWhite);}
var reNonNewline=/[^\n]/g;function stripNonNewline(value){return value.replace(reNonNewline,function(){return'';});}
function catchupNewlines(end,state){catchup(end,state,stripNonNewline);}
function move(end,state){if(state.g.sourceMap){if(end<state.g.position){state.g.position=0;state.g.sourceLine=1;state.g.sourceColumn=0;}
var source=state.g.source.substring(state.g.position,end);var sourceLines=source.split('\n');if(sourceLines.length>1){state.g.sourceLine+=sourceLines.length-1;state.g.sourceColumn=0;}
state.g.sourceColumn+=sourceLines[sourceLines.length-1].length;}
state.g.position=end;}
function append(str,state){if(state.g.sourceMap&&str){state.g.sourceMap.addMapping({generated:{line:state.g.bufferLine,column:state.g.bufferColumn},original:{line:state.g.sourceLine,column:state.g.sourceColumn},source:state.g.sourceMapFilename});var transformedLines=str.split('\n');if(transformedLines.length>1){state.g.bufferLine+=transformedLines.length-1;state.g.bufferColumn=0;}
state.g.bufferColumn+=transformedLines[transformedLines.length-1].length;}
state.g.buffer+=str;}
function updateIndent(str,state){var indentBy=state.indentBy;if(indentBy<0){for(var i=0;i<-indentBy;i++){str=str.replace(leadingIndentRegexp,'$1');}}else{for(var i=0;i<indentBy;i++){str=str.replace(leadingIndentRegexp,'$1$2$2');}}
return str;}
function indentBefore(start,state){var end=start;start=start-1;while(start>0&&state.g.source[start]!='\n'){if(!state.g.source[start].match(/[ \t]/)){end=start;}
start--;}
return state.g.source.substring(start+1,end);}
function getDocblock(state){if(!state.g.docblock){var docblock=_dereq_('./docblock');state.g.docblock=docblock.parseAsObject(docblock.extract(state.g.source));}
return state.g.docblock;}
function identWithinLexicalScope(identName,state,stopBeforeNode){var currScope=state.localScope;while(currScope){if(currScope.identifiers[identName]!==undefined){return true;}
if(stopBeforeNode&&currScope.parentNode===stopBeforeNode){break;}
currScope=currScope.parentScope;}
return false;}
function identInLocalScope(identName,state){return state.localScope.identifiers[identName]!==undefined;}
function initScopeMetadata(boundaryNode,path,node){return{boundaryNode:boundaryNode,bindingPath:path,bindingNode:node};}
function declareIdentInLocalScope(identName,metaData,state){state.localScope.identifiers[identName]={boundaryNode:metaData.boundaryNode,path:metaData.bindingPath,node:metaData.bindingNode,state:Object.create(state)};}
function getLexicalBindingMetadata(identName,state){var currScope=state.localScope;while(currScope){if(currScope.identifiers[identName]!==undefined){return currScope.identifiers[identName];}
currScope=currScope.parentScope;}}
function getLocalBindingMetadata(identName,state){return state.localScope.identifiers[identName];}
function analyzeAndTraverse(analyzer,traverser,node,path,state){if(node.type){if(analyzer(node,path,state)===false){return;}
path.unshift(node);}
getOrderedChildren(node).forEach(function(child){traverser(child,path,state);});node.type&&path.shift();}
function getOrderedChildren(node){var queue=[];for(var key in node){if(node.hasOwnProperty(key)){enqueueNodeWithStartIndex(queue,node[key]);}}
queue.sort(function(a,b){return a[1]-b[1];});return queue.map(function(pair){return pair[0];});}
function enqueueNodeWithStartIndex(queue,node){if(typeof node!=='object'||node===null){return;}
if(node.range){queue.push([node,node.range[0]]);}else if(Array.isArray(node)){for(var ii=0;ii<node.length;ii++){enqueueNodeWithStartIndex(queue,node[ii]);}}}
function containsChildOfType(node,type){return containsChildMatching(node,function(node){return node.type===type;});}
function containsChildMatching(node,matcher){var foundMatchingChild=false;function nodeTypeAnalyzer(node){if(matcher(node)===true){foundMatchingChild=true;return false;}}
function nodeTypeTraverser(child,path,state){if(!foundMatchingChild){foundMatchingChild=containsChildMatching(child,matcher);}}
analyzeAndTraverse(nodeTypeAnalyzer,nodeTypeTraverser,node,[]);return foundMatchingChild;}
var scopeTypes={};scopeTypes[Syntax.ArrowFunctionExpression]=true;scopeTypes[Syntax.FunctionExpression]=true;scopeTypes[Syntax.FunctionDeclaration]=true;scopeTypes[Syntax.Program]=true;function getBoundaryNode(path){for(var ii=0;ii<path.length;++ii){if(scopeTypes[path[ii].type]){return path[ii];}}
throw new Error('Expected to find a node with one of the following types in path:\n'+
JSON.stringify(Object.keys(scopeTypes)));}
function getTempVar(tempVarIndex){return'$__'+tempVarIndex;}
function injectTempVar(state){var tempVar='$__'+(state.localScope.tempVarIndex++);state.localScope.tempVars.push(tempVar);return tempVar;}
function injectTempVarDeclarations(state,index){if(state.localScope.tempVars.length){state.g.buffer=state.g.buffer.slice(0,index)+'var '+state.localScope.tempVars.join(', ')+';'+
state.g.buffer.slice(index);state.localScope.tempVars=[];}}
exports.analyzeAndTraverse=analyzeAndTraverse;exports.append=append;exports.catchup=catchup;exports.catchupNewlines=catchupNewlines;exports.catchupWhiteOut=catchupWhiteOut;exports.catchupWhiteSpace=catchupWhiteSpace;exports.containsChildMatching=containsChildMatching;exports.containsChildOfType=containsChildOfType;exports.createState=createState;exports.declareIdentInLocalScope=declareIdentInLocalScope;exports.getBoundaryNode=getBoundaryNode;exports.getDocblock=getDocblock;exports.getLexicalBindingMetadata=getLexicalBindingMetadata;exports.getLocalBindingMetadata=getLocalBindingMetadata;exports.getNextSyntacticCharOffset=getNextSyntacticCharOffset;exports.getNodeSourceText=getNodeSourceText;exports.getOrderedChildren=getOrderedChildren;exports.getTempVar=getTempVar;exports.identInLocalScope=identInLocalScope;exports.identWithinLexicalScope=identWithinLexicalScope;exports.indentBefore=indentBefore;exports.initScopeMetadata=initScopeMetadata;exports.injectTempVar=injectTempVar;exports.injectTempVarDeclarations=injectTempVarDeclarations;exports.move=move;exports.scopeTypes=scopeTypes;exports.updateIndent=updateIndent;exports.updateState=updateState;},{"./docblock":21,"esprima-fb":9}],24:[function(_dereq_,module,exports){var restParamVisitors=_dereq_('./es6-rest-param-visitors');var destructuringVisitors=_dereq_('./es6-destructuring-visitors');var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');function visitArrowFunction(traverse,node,path,state){var notInExpression=(path[0].type===Syntax.ExpressionStatement);if(notInExpression){utils.append('(',state);}
utils.append('function',state);renderParams(traverse,node,path,state);utils.catchupWhiteSpace(node.body.range[0],state);var renderBody=node.body.type==Syntax.BlockStatement?renderStatementBody:renderExpressionBody;path.unshift(node);renderBody(traverse,node,path,state);path.shift();var containsBindingSyntax=utils.containsChildMatching(node.body,function(node){return node.type===Syntax.ThisExpression||(node.type===Syntax.Identifier&&node.name==="super");});if(containsBindingSyntax){utils.append('.bind(this)',state);}
utils.catchupWhiteSpace(node.range[1],state);if(notInExpression){utils.append(')',state);}
return false;}
function renderParams(traverse,node,path,state){if(isParensFreeSingleParam(node,state)||!node.params.length){utils.append('(',state);}
if(node.params.length!==0){path.unshift(node);traverse(node.params,path,state);path.unshift();}
utils.append(')',state);}
function isParensFreeSingleParam(node,state){return node.params.length===1&&state.g.source[state.g.position]!=='(';}
function renderExpressionBody(traverse,node,path,state){utils.append('{',state);if(node.rest){utils.append(restParamVisitors.renderRestParamSetup(node,state),state);}
destructuringVisitors.renderDestructuredComponents(node,utils.updateState(state,{localScope:{parentNode:state.parentNode,parentScope:state.parentScope,identifiers:state.identifiers,tempVarIndex:0}}));utils.append('return ',state);renderStatementBody(traverse,node,path,state);utils.append(';}',state);}
function renderStatementBody(traverse,node,path,state){traverse(node.body,path,state);utils.catchup(node.body.range[1],state);}
visitArrowFunction.test=function(node,path,state){return node.type===Syntax.ArrowFunctionExpression;};exports.visitorList=[visitArrowFunction];},{"../src/utils":23,"./es6-destructuring-visitors":27,"./es6-rest-param-visitors":30,"esprima-fb":9}],25:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');function process(traverse,node,path,state){utils.move(node.range[0],state);traverse(node,path,state);utils.catchup(node.range[1],state);}
function visitCallSpread(traverse,node,path,state){utils.catchup(node.range[0],state);if(node.type===Syntax.NewExpression){utils.append('new (Function.prototype.bind.apply(',state);process(traverse,node.callee,path,state);}else if(node.callee.type===Syntax.MemberExpression){var tempVar=utils.injectTempVar(state);utils.append('('+tempVar+' = ',state);process(traverse,node.callee.object,path,state);utils.append(')',state);if(node.callee.property.type===Syntax.Identifier){utils.append('.',state);process(traverse,node.callee.property,path,state);}else{utils.append('[',state);process(traverse,node.callee.property,path,state);utils.append(']',state);}
utils.append('.apply('+tempVar,state);}else{var needsToBeWrappedInParenthesis=node.callee.type===Syntax.FunctionDeclaration||node.callee.type===Syntax.FunctionExpression;if(needsToBeWrappedInParenthesis){utils.append('(',state);}
process(traverse,node.callee,path,state);if(needsToBeWrappedInParenthesis){utils.append(')',state);}
utils.append('.apply(null',state);}
utils.append(', ',state);var args=node.arguments.slice();var spread=args.pop();if(args.length||node.type===Syntax.NewExpression){utils.append('[',state);if(node.type===Syntax.NewExpression){utils.append('null'+(args.length?', ':''),state);}
while(args.length){var arg=args.shift();utils.move(arg.range[0],state);traverse(arg,path,state);if(args.length){utils.catchup(args[0].range[0],state);}else{utils.catchup(arg.range[1],state);}}
utils.append('].concat(',state);process(traverse,spread.argument,path,state);utils.append(')',state);}else{process(traverse,spread.argument,path,state);}
utils.append(node.type===Syntax.NewExpression?'))':')',state);utils.move(node.range[1],state);return false;}
visitCallSpread.test=function(node,path,state){return((node.type===Syntax.CallExpression||node.type===Syntax.NewExpression)&&node.arguments.length>0&&node.arguments[node.arguments.length-1].type===Syntax.SpreadElement);};exports.visitorList=[visitCallSpread];},{"../src/utils":23,"esprima-fb":9}],26:[function(_dereq_,module,exports){'use strict';var base62=_dereq_('base62');var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');var reservedWordsHelper=_dereq_('./reserved-words-helper');var declareIdentInLocalScope=utils.declareIdentInLocalScope;var initScopeMetadata=utils.initScopeMetadata;var SUPER_PROTO_IDENT_PREFIX='____SuperProtoOf';var _anonClassUUIDCounter=0;var _mungedSymbolMaps={};function resetSymbols(){_anonClassUUIDCounter=0;_mungedSymbolMaps={};}
function _generateAnonymousClassName(state){var mungeNamespace=state.mungeNamespace||'';return'____Class'+mungeNamespace+base62.encode(_anonClassUUIDCounter++);}
function _getMungedName(identName,state){var mungeNamespace=state.mungeNamespace;var shouldMinify=state.g.opts.minify;if(shouldMinify){if(!_mungedSymbolMaps[mungeNamespace]){_mungedSymbolMaps[mungeNamespace]={symbolMap:{},identUUIDCounter:0};}
var symbolMap=_mungedSymbolMaps[mungeNamespace].symbolMap;if(!symbolMap[identName]){symbolMap[identName]=base62.encode(_mungedSymbolMaps[mungeNamespace].identUUIDCounter++);}
identName=symbolMap[identName];}
return'$'+mungeNamespace+identName;}
function _getSuperClassInfo(node,state){var ret={name:null,expression:null};if(node.superClass){if(node.superClass.type===Syntax.Identifier){ret.name=node.superClass.name;}else{ret.name=_generateAnonymousClassName(state);ret.expression=state.g.source.substring(node.superClass.range[0],node.superClass.range[1]);}}
return ret;}
function _isConstructorMethod(classElement){return classElement.type===Syntax.MethodDefinition&&classElement.key.type===Syntax.Identifier&&classElement.key.name==='constructor';}
function _shouldMungeIdentifier(node,state){return(!!state.methodFuncNode&&!utils.getDocblock(state).hasOwnProperty('preventMunge')&&/^_(?!_)/.test(node.name));}
function visitClassMethod(traverse,node,path,state){if(!state.g.opts.es5&&(node.kind==='get'||node.kind==='set')){throw new Error('This transform does not support '+node.kind+'ter methods for ES6 '+'classes. (line: '+node.loc.start.line+', col: '+
node.loc.start.column+')');}
state=utils.updateState(state,{methodNode:node});utils.catchup(node.range[0],state);path.unshift(node);traverse(node.value,path,state);path.shift();return false;}
visitClassMethod.test=function(node,path,state){return node.type===Syntax.MethodDefinition;};function visitClassFunctionExpression(traverse,node,path,state){var methodNode=path[0];var isGetter=methodNode.kind==='get';var isSetter=methodNode.kind==='set';state=utils.updateState(state,{methodFuncNode:node});if(methodNode.key.name==='constructor'){utils.append('function '+state.className,state);}else{var methodAccessorComputed=false;var methodAccessor;var prototypeOrStatic=methodNode["static"]?'':'.prototype';var objectAccessor=state.className+prototypeOrStatic;if(methodNode.key.type===Syntax.Identifier){methodAccessor=methodNode.key.name;if(_shouldMungeIdentifier(methodNode.key,state)){methodAccessor=_getMungedName(methodAccessor,state);}
if(isGetter||isSetter){methodAccessor=JSON.stringify(methodAccessor);}else if(reservedWordsHelper.isReservedWord(methodAccessor)){methodAccessorComputed=true;methodAccessor=JSON.stringify(methodAccessor);}}else if(methodNode.key.type===Syntax.Literal){methodAccessor=JSON.stringify(methodNode.key.value);methodAccessorComputed=true;}
if(isSetter||isGetter){utils.append('Object.defineProperty('+
objectAccessor+','+
methodAccessor+','+'{configurable:true,'+
methodNode.kind+':function',state);}else{if(state.g.opts.es3){if(methodAccessorComputed){methodAccessor='['+methodAccessor+']';}else{methodAccessor='.'+methodAccessor;}
utils.append(objectAccessor+
methodAccessor+'=function'+(node.generator?'*':''),state);}else{if(!methodAccessorComputed){methodAccessor=JSON.stringify(methodAccessor);}
utils.append('Object.defineProperty('+
objectAccessor+','+
methodAccessor+','+'{writable:true,configurable:true,'+'value:function'+(node.generator?'*':''),state);}}}
utils.move(methodNode.key.range[1],state);utils.append('(',state);var params=node.params;if(params.length>0){utils.catchupNewlines(params[0].range[0],state);for(var i=0;i<params.length;i++){utils.catchup(node.params[i].range[0],state);path.unshift(node);traverse(params[i],path,state);path.shift();}}
var closingParenPosition=utils.getNextSyntacticCharOffset(')',state);utils.catchupWhiteSpace(closingParenPosition,state);var openingBracketPosition=utils.getNextSyntacticCharOffset('{',state);utils.catchup(openingBracketPosition+1,state);if(!state.scopeIsStrict){utils.append('"use strict";',state);state=utils.updateState(state,{scopeIsStrict:true});}
utils.move(node.body.range[0]+'{'.length,state);path.unshift(node);traverse(node.body,path,state);path.shift();utils.catchup(node.body.range[1],state);if(methodNode.key.name!=='constructor'){if(isGetter||isSetter||!state.g.opts.es3){utils.append('})',state);}
utils.append(';',state);}
return false;}
visitClassFunctionExpression.test=function(node,path,state){return node.type===Syntax.FunctionExpression&&path[0].type===Syntax.MethodDefinition;};function visitClassMethodParam(traverse,node,path,state){var paramName=node.name;if(_shouldMungeIdentifier(node,state)){paramName=_getMungedName(node.name,state);}
utils.append(paramName,state);utils.move(node.range[1],state);}
visitClassMethodParam.test=function(node,path,state){if(!path[0]||!path[1]){return;}
var parentFuncExpr=path[0];var parentClassMethod=path[1];return parentFuncExpr.type===Syntax.FunctionExpression&&parentClassMethod.type===Syntax.MethodDefinition&&node.type===Syntax.Identifier;};function _renderClassBody(traverse,node,path,state){var className=state.className;var superClass=state.superClass;if(superClass.name){if(superClass.expression!==null){utils.append('var '+superClass.name+'='+superClass.expression+';',state);}
var keyName=superClass.name+'____Key';var keyNameDeclarator='';if(!utils.identWithinLexicalScope(keyName,state)){keyNameDeclarator='var ';declareIdentInLocalScope(keyName,initScopeMetadata(node),state);}
utils.append('for('+keyNameDeclarator+keyName+' in '+superClass.name+'){'+'if('+superClass.name+'.hasOwnProperty('+keyName+')){'+
className+'['+keyName+']='+
superClass.name+'['+keyName+'];'+'}'+'}',state);var superProtoIdentStr=SUPER_PROTO_IDENT_PREFIX+superClass.name;if(!utils.identWithinLexicalScope(superProtoIdentStr,state)){utils.append('var '+superProtoIdentStr+'='+superClass.name+'===null?'+'null:'+superClass.name+'.prototype;',state);declareIdentInLocalScope(superProtoIdentStr,initScopeMetadata(node),state);}
utils.append(className+'.prototype=Object.create('+superProtoIdentStr+');',state);utils.append(className+'.prototype.constructor='+className+';',state);utils.append(className+'.__superConstructor__='+superClass.name+';',state);}
if(!node.body.body.filter(_isConstructorMethod).pop()){utils.append('function '+className+'(){',state);if(!state.scopeIsStrict){utils.append('"use strict";',state);}
if(superClass.name){utils.append('if('+superClass.name+'!==null){'+
superClass.name+'.apply(this,arguments);}',state);}
utils.append('}',state);}
utils.move(node.body.range[0]+'{'.length,state);traverse(node.body,path,state);utils.catchupWhiteSpace(node.range[1],state);}
function visitClassDeclaration(traverse,node,path,state){var className=node.id.name;var superClass=_getSuperClassInfo(node,state);state=utils.updateState(state,{mungeNamespace:className,className:className,superClass:superClass});_renderClassBody(traverse,node,path,state);return false;}
visitClassDeclaration.test=function(node,path,state){return node.type===Syntax.ClassDeclaration;};function visitClassExpression(traverse,node,path,state){var className=node.id&&node.id.name||_generateAnonymousClassName(state);var superClass=_getSuperClassInfo(node,state);utils.append('(function(){',state);state=utils.updateState(state,{mungeNamespace:className,className:className,superClass:superClass});_renderClassBody(traverse,node,path,state);utils.append('return '+className+';})()',state);return false;}
visitClassExpression.test=function(node,path,state){return node.type===Syntax.ClassExpression;};function visitPrivateIdentifier(traverse,node,path,state){utils.append(_getMungedName(node.name,state),state);utils.move(node.range[1],state);}
visitPrivateIdentifier.test=function(node,path,state){if(node.type===Syntax.Identifier&&_shouldMungeIdentifier(node,state)){if(path[0].type===Syntax.MemberExpression&&path[0].object!==node&&path[0].computed===false){return true;}
if(utils.identWithinLexicalScope(node.name,state,state.methodFuncNode)){return true;}
if(path[0].type===Syntax.Property&&path[1].type===Syntax.ObjectExpression){return true;}
if(path[0].type===Syntax.FunctionExpression||path[0].type===Syntax.FunctionDeclaration||path[0].type===Syntax.ArrowFunctionExpression){for(var i=0;i<path[0].params.length;i++){if(path[0].params[i]===node){return true;}}}}
return false;};function visitSuperCallExpression(traverse,node,path,state){var superClassName=state.superClass.name;if(node.callee.type===Syntax.Identifier){if(_isConstructorMethod(state.methodNode)){utils.append(superClassName+'.call(',state);}else{var protoProp=SUPER_PROTO_IDENT_PREFIX+superClassName;if(state.methodNode.key.type===Syntax.Identifier){protoProp+='.'+state.methodNode.key.name;}else if(state.methodNode.key.type===Syntax.Literal){protoProp+='['+JSON.stringify(state.methodNode.key.value)+']';}
utils.append(protoProp+".call(",state);}
utils.move(node.callee.range[1],state);}else if(node.callee.type===Syntax.MemberExpression){utils.append(SUPER_PROTO_IDENT_PREFIX+superClassName,state);utils.move(node.callee.object.range[1],state);if(node.callee.computed){utils.catchup(node.callee.property.range[1]+']'.length,state);}else{utils.append('.'+node.callee.property.name,state);}
utils.append('.call(',state);utils.move(node.callee.range[1],state);}
utils.append('this',state);if(node.arguments.length>0){utils.append(',',state);utils.catchupWhiteSpace(node.arguments[0].range[0],state);traverse(node.arguments,path,state);}
utils.catchupWhiteSpace(node.range[1],state);utils.append(')',state);return false;}
visitSuperCallExpression.test=function(node,path,state){if(state.superClass&&node.type===Syntax.CallExpression){var callee=node.callee;if(callee.type===Syntax.Identifier&&callee.name==='super'||callee.type==Syntax.MemberExpression&&callee.object.name==='super'){return true;}}
return false;};function visitSuperMemberExpression(traverse,node,path,state){var superClassName=state.superClass.name;utils.append(SUPER_PROTO_IDENT_PREFIX+superClassName,state);utils.move(node.object.range[1],state);}
visitSuperMemberExpression.test=function(node,path,state){return state.superClass&&node.type===Syntax.MemberExpression&&node.object.type===Syntax.Identifier&&node.object.name==='super';};exports.resetSymbols=resetSymbols;exports.visitorList=[visitClassDeclaration,visitClassExpression,visitClassFunctionExpression,visitClassMethod,visitClassMethodParam,visitPrivateIdentifier,visitSuperCallExpression,visitSuperMemberExpression];},{"../src/utils":23,"./reserved-words-helper":34,"base62":10,"esprima-fb":9}],27:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');var reservedWordsHelper=_dereq_('./reserved-words-helper');var restParamVisitors=_dereq_('./es6-rest-param-visitors');var restPropertyHelpers=_dereq_('./es7-rest-property-helpers');function visitStructuredVariable(traverse,node,path,state){utils.append(utils.getTempVar(state.localScope.tempVarIndex)+'=',state);utils.catchupWhiteSpace(node.init.range[0],state);traverse(node.init,path,state);utils.catchup(node.init.range[1],state);utils.append(','+getDestructuredComponents(node.id,state),state);state.localScope.tempVarIndex++;return false;}
visitStructuredVariable.test=function(node,path,state){return node.type===Syntax.VariableDeclarator&&isStructuredPattern(node.id);};function isStructuredPattern(node){return node.type===Syntax.ObjectPattern||node.type===Syntax.ArrayPattern;}
function getDestructuredComponents(node,state){var tmpIndex=state.localScope.tempVarIndex;var components=[];var patternItems=getPatternItems(node);for(var idx=0;idx<patternItems.length;idx++){var item=patternItems[idx];if(!item){continue;}
if(item.type===Syntax.SpreadElement){components.push(item.argument.name+'=Array.prototype.slice.call('+
utils.getTempVar(tmpIndex)+','+idx+')');continue;}
if(item.type===Syntax.SpreadProperty){var restExpression=restPropertyHelpers.renderRestExpression(utils.getTempVar(tmpIndex),patternItems);components.push(item.argument.name+'='+restExpression);continue;}
var accessor=getPatternItemAccessor(node,item,tmpIndex,idx);var value=getPatternItemValue(node,item);if(value.type===Syntax.Identifier){components.push(value.name+'='+accessor);}else{components.push(utils.getTempVar(++state.localScope.tempVarIndex)+'='+accessor+','+getDestructuredComponents(value,state));}}
return components.join(',');}
function getPatternItems(node){return node.properties||node.elements;}
function getPatternItemAccessor(node,patternItem,tmpIndex,idx){var tmpName=utils.getTempVar(tmpIndex);if(node.type===Syntax.ObjectPattern){if(reservedWordsHelper.isReservedWord(patternItem.key.name)){return tmpName+'["'+patternItem.key.name+'"]';}else if(patternItem.key.type===Syntax.Literal){return tmpName+'['+JSON.stringify(patternItem.key.value)+']';}else if(patternItem.key.type===Syntax.Identifier){return tmpName+'.'+patternItem.key.name;}}else if(node.type===Syntax.ArrayPattern){return tmpName+'['+idx+']';}}
function getPatternItemValue(node,patternItem){return node.type===Syntax.ObjectPattern?patternItem.value:patternItem;}
function visitStructuredAssignment(traverse,node,path,state){var exprNode=node.expression;utils.append('var '+utils.getTempVar(state.localScope.tempVarIndex)+'=',state);utils.catchupWhiteSpace(exprNode.right.range[0],state);traverse(exprNode.right,path,state);utils.catchup(exprNode.right.range[1],state);utils.append(';'+getDestructuredComponents(exprNode.left,state)+';',state);utils.catchupWhiteSpace(node.range[1],state);state.localScope.tempVarIndex++;return false;}
visitStructuredAssignment.test=function(node,path,state){return node.type===Syntax.ExpressionStatement&&node.expression.type===Syntax.AssignmentExpression&&isStructuredPattern(node.expression.left);};function visitStructuredParameter(traverse,node,path,state){utils.append(utils.getTempVar(getParamIndex(node,path)),state);utils.catchupWhiteSpace(node.range[1],state);return true;}
function getParamIndex(paramNode,path){var funcNode=path[0];var tmpIndex=0;for(var k=0;k<funcNode.params.length;k++){var param=funcNode.params[k];if(param===paramNode){break;}
if(isStructuredPattern(param)){tmpIndex++;}}
return tmpIndex;}
visitStructuredParameter.test=function(node,path,state){return isStructuredPattern(node)&&isFunctionNode(path[0]);};function isFunctionNode(node){return(node.type==Syntax.FunctionDeclaration||node.type==Syntax.FunctionExpression||node.type==Syntax.MethodDefinition||node.type==Syntax.ArrowFunctionExpression);}
function visitFunctionBodyForStructuredParameter(traverse,node,path,state){var funcNode=path[0];utils.catchup(funcNode.body.range[0]+1,state);renderDestructuredComponents(funcNode,state);if(funcNode.rest){utils.append(restParamVisitors.renderRestParamSetup(funcNode,state),state);}
return true;}
function renderDestructuredComponents(funcNode,state){var destructuredComponents=[];for(var k=0;k<funcNode.params.length;k++){var param=funcNode.params[k];if(isStructuredPattern(param)){destructuredComponents.push(getDestructuredComponents(param,state));state.localScope.tempVarIndex++;}}
if(destructuredComponents.length){utils.append('var '+destructuredComponents.join(',')+';',state);}}
visitFunctionBodyForStructuredParameter.test=function(node,path,state){return node.type===Syntax.BlockStatement&&isFunctionNode(path[0]);};exports.visitorList=[visitStructuredVariable,visitStructuredAssignment,visitStructuredParameter,visitFunctionBodyForStructuredParameter];exports.renderDestructuredComponents=renderDestructuredComponents;},{"../src/utils":23,"./es6-rest-param-visitors":30,"./es7-rest-property-helpers":32,"./reserved-words-helper":34,"esprima-fb":9}],28:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');var reservedWordsHelper=_dereq_('./reserved-words-helper');function visitObjectConciseMethod(traverse,node,path,state){var isGenerator=node.value.generator;if(isGenerator){utils.catchupWhiteSpace(node.range[0]+1,state);}
if(node.computed){utils.catchup(node.key.range[1]+1,state);}else if(reservedWordsHelper.isReservedWord(node.key.name)){utils.catchup(node.key.range[0],state);utils.append('"',state);utils.catchup(node.key.range[1],state);utils.append('"',state);}
utils.catchup(node.key.range[1],state);utils.append(':function'+(isGenerator?'*':''),state);path.unshift(node);traverse(node.value,path,state);path.shift();return false;}
visitObjectConciseMethod.test=function(node,path,state){return node.type===Syntax.Property&&node.value.type===Syntax.FunctionExpression&&node.method===true;};exports.visitorList=[visitObjectConciseMethod];},{"../src/utils":23,"./reserved-words-helper":34,"esprima-fb":9}],29:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');function visitObjectLiteralShortNotation(traverse,node,path,state){utils.catchup(node.key.range[1],state);utils.append(':'+node.key.name,state);return false;}
visitObjectLiteralShortNotation.test=function(node,path,state){return node.type===Syntax.Property&&node.kind==='init'&&node.shorthand===true&&path[0].type!==Syntax.ObjectPattern;};exports.visitorList=[visitObjectLiteralShortNotation];},{"../src/utils":23,"esprima-fb":9}],30:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');function _nodeIsFunctionWithRestParam(node){return(node.type===Syntax.FunctionDeclaration||node.type===Syntax.FunctionExpression||node.type===Syntax.ArrowFunctionExpression)&&node.rest;}
function visitFunctionParamsWithRestParam(traverse,node,path,state){if(node.parametricType){utils.catchup(node.parametricType.range[0],state);path.unshift(node);traverse(node.parametricType,path,state);path.shift();}
if(node.params.length){path.unshift(node);traverse(node.params,path,state);path.shift();}else{utils.catchup(node.rest.range[0]-3,state);}
utils.catchupWhiteSpace(node.rest.range[1],state);path.unshift(node);traverse(node.body,path,state);path.shift();return false;}
visitFunctionParamsWithRestParam.test=function(node,path,state){return _nodeIsFunctionWithRestParam(node);};function renderRestParamSetup(functionNode,state){var idx=state.localScope.tempVarIndex++;var len=state.localScope.tempVarIndex++;return'for (var '+functionNode.rest.name+'=[],'+
utils.getTempVar(idx)+'='+functionNode.params.length+','+
utils.getTempVar(len)+'=arguments.length;'+
utils.getTempVar(idx)+'<'+utils.getTempVar(len)+';'+
utils.getTempVar(idx)+'++) '+
functionNode.rest.name+'.push(arguments['+utils.getTempVar(idx)+']);';}
function visitFunctionBodyWithRestParam(traverse,node,path,state){utils.catchup(node.range[0]+1,state);var parentNode=path[0];utils.append(renderRestParamSetup(parentNode,state),state);return true;}
visitFunctionBodyWithRestParam.test=function(node,path,state){return node.type===Syntax.BlockStatement&&_nodeIsFunctionWithRestParam(path[0]);};exports.renderRestParamSetup=renderRestParamSetup;exports.visitorList=[visitFunctionParamsWithRestParam,visitFunctionBodyWithRestParam];},{"../src/utils":23,"esprima-fb":9}],31:[function(_dereq_,module,exports){'use strict';var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');function visitTemplateLiteral(traverse,node,path,state){var templateElements=node.quasis;utils.append('(',state);for(var ii=0;ii<templateElements.length;ii++){var templateElement=templateElements[ii];if(templateElement.value.raw!==''){utils.append(getCookedValue(templateElement),state);if(!templateElement.tail){utils.append(' + ',state);}
utils.move(templateElement.range[0],state);utils.catchupNewlines(templateElement.range[1],state);}else{if(ii>0&&!templateElement.tail){utils.append(' + ',state);}}
utils.move(templateElement.range[1],state);if(!templateElement.tail){var substitution=node.expressions[ii];if(substitution.type===Syntax.Identifier||substitution.type===Syntax.MemberExpression||substitution.type===Syntax.CallExpression){utils.catchup(substitution.range[1],state);}else{utils.append('(',state);traverse(substitution,path,state);utils.catchup(substitution.range[1],state);utils.append(')',state);}
if(templateElements[ii+1].value.cooked!==''){utils.append(' + ',state);}}}
utils.move(node.range[1],state);utils.append(')',state);return false;}
visitTemplateLiteral.test=function(node,path,state){return node.type===Syntax.TemplateLiteral;};function visitTaggedTemplateExpression(traverse,node,path,state){var template=node.quasi;var numQuasis=template.quasis.length;utils.move(node.tag.range[0],state);traverse(node.tag,path,state);utils.catchup(node.tag.range[1],state);utils.append('(function() { var siteObj = [',state);for(var ii=0;ii<numQuasis;ii++){utils.append(getCookedValue(template.quasis[ii]),state);if(ii!==numQuasis-1){utils.append(', ',state);}}
utils.append(']; siteObj.raw = [',state);for(ii=0;ii<numQuasis;ii++){utils.append(getRawValue(template.quasis[ii]),state);if(ii!==numQuasis-1){utils.append(', ',state);}}
utils.append(']; Object.freeze(siteObj.raw); Object.freeze(siteObj); return siteObj; }()',state);if(numQuasis>1){for(ii=0;ii<template.expressions.length;ii++){var expression=template.expressions[ii];utils.append(', ',state);utils.move(template.quasis[ii].range[0],state);utils.catchupNewlines(template.quasis[ii].range[1],state);utils.move(expression.range[0],state);traverse(expression,path,state);utils.catchup(expression.range[1],state);}}
utils.catchupNewlines(node.range[1],state);utils.append(')',state);return false;}
visitTaggedTemplateExpression.test=function(node,path,state){return node.type===Syntax.TaggedTemplateExpression;};function getCookedValue(templateElement){return JSON.stringify(templateElement.value.cooked);}
function getRawValue(templateElement){return JSON.stringify(templateElement.value.raw);}
exports.visitorList=[visitTemplateLiteral,visitTaggedTemplateExpression];},{"../src/utils":23,"esprima-fb":9}],32:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var restFunction='(function(source, exclusion) {'+'var rest = {};'+'var hasOwn = Object.prototype.hasOwnProperty;'+'if (source == null) {'+'throw new TypeError();'+'}'+'for (var key in source) {'+'if (hasOwn.call(source, key) && !hasOwn.call(exclusion, key)) {'+'rest[key] = source[key];'+'}'+'}'+'return rest;'+'})';function getPropertyNames(properties){var names=[];for(var i=0;i<properties.length;i++){var property=properties[i];if(property.type===Syntax.SpreadProperty){continue;}
if(property.type===Syntax.Identifier){names.push(property.name);}else{names.push(property.key.name);}}
return names;}
function getRestFunctionCall(source,exclusion){return restFunction+'('+source+','+exclusion+')';}
function getSimpleShallowCopy(accessorExpression){return getRestFunctionCall(accessorExpression,'{}');}
function renderRestExpression(accessorExpression,excludedProperties){var excludedNames=getPropertyNames(excludedProperties);if(!excludedNames.length){return getSimpleShallowCopy(accessorExpression);}
return getRestFunctionCall(accessorExpression,'{'+excludedNames.join(':1,')+':1}');}
exports.renderRestExpression=renderRestExpression;},{"esprima-fb":9}],33:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');function visitObjectLiteralSpread(traverse,node,path,state){utils.catchup(node.range[0],state);utils.append('Object.assign({',state);utils.move(node.range[0]+1,state);var previousWasSpread=false;for(var i=0;i<node.properties.length;i++){var property=node.properties[i];if(property.type===Syntax.SpreadProperty){if(!previousWasSpread){utils.append('}',state);}
if(i===0){utils.append(',',state);}
utils.catchup(property.range[0],state);utils.move(property.range[0]+3,state);traverse(property.argument,path,state);utils.catchup(property.range[1],state);previousWasSpread=true;}else{utils.catchup(property.range[0],state);if(previousWasSpread){utils.append('{',state);}
traverse(property,path,state);utils.catchup(property.range[1],state);previousWasSpread=false;}}
utils.catchupWhiteSpace(node.range[1]-1,state);utils.move(node.range[1],state);if(!previousWasSpread){utils.append('}',state);}
utils.append(')',state);return false;}
visitObjectLiteralSpread.test=function(node,path,state){if(node.type!==Syntax.ObjectExpression){return false;}
var hasAtLeastOneSpreadProperty=false;for(var i=0;i<node.properties.length;i++){var property=node.properties[i];if(property.type===Syntax.SpreadProperty){hasAtLeastOneSpreadProperty=true;}else if(property.kind!=='init'){return false;}}
return hasAtLeastOneSpreadProperty;};exports.visitorList=[visitObjectLiteralSpread];},{"../src/utils":23,"esprima-fb":9}],34:[function(_dereq_,module,exports){var KEYWORDS=['break','do','in','typeof','case','else','instanceof','var','catch','export','new','void','class','extends','return','while','const','finally','super','with','continue','for','switch','yield','debugger','function','this','default','if','throw','delete','import','try'];var FUTURE_RESERVED_WORDS=['enum','await','implements','package','protected','static','interface','private','public'];var LITERALS=['null','true','false'];var RESERVED_WORDS=[].concat(KEYWORDS,FUTURE_RESERVED_WORDS,LITERALS);var reservedWordsMap=Object.create(null);RESERVED_WORDS.forEach(function(k){reservedWordsMap[k]=true;});var ES3_FUTURE_RESERVED_WORDS=['enum','implements','package','protected','static','interface','private','public'];var ES3_RESERVED_WORDS=[].concat(KEYWORDS,ES3_FUTURE_RESERVED_WORDS,LITERALS);var es3ReservedWordsMap=Object.create(null);ES3_RESERVED_WORDS.forEach(function(k){es3ReservedWordsMap[k]=true;});exports.isReservedWord=function(word){return!!reservedWordsMap[word];};exports.isES3ReservedWord=function(word){return!!es3ReservedWordsMap[word];};},{}],35:[function(_dereq_,module,exports){var Syntax=_dereq_('esprima-fb').Syntax;var utils=_dereq_('../src/utils');var reserverdWordsHelper=_dereq_('./reserved-words-helper');function visitProperty(traverse,node,path,state){utils.catchup(node.key.range[0],state);utils.append('"',state);utils.catchup(node.key.range[1],state);utils.append('"',state);utils.catchup(node.value.range[0],state);traverse(node.value,path,state);return false;}
visitProperty.test=function(node){return node.type===Syntax.Property&&node.key.type===Syntax.Identifier&&!node.method&&!node.shorthand&&!node.computed&&reserverdWordsHelper.isES3ReservedWord(node.key.name);};function visitMemberExpression(traverse,node,path,state){traverse(node.object,path,state);utils.catchup(node.property.range[0]-1,state);utils.append('[',state);utils.catchupWhiteSpace(node.property.range[0],state);utils.append('"',state);utils.catchup(node.property.range[1],state);utils.append('"]',state);return false;}
visitMemberExpression.test=function(node){return node.type===Syntax.MemberExpression&&node.property.type===Syntax.Identifier&&reserverdWordsHelper.isES3ReservedWord(node.property.name);};exports.visitorList=[visitProperty,visitMemberExpression];},{"../src/utils":23,"./reserved-words-helper":34,"esprima-fb":9}],36:[function(_dereq_,module,exports){var esprima=_dereq_('esprima-fb');var utils=_dereq_('../src/utils');var Syntax=esprima.Syntax;function _isFunctionNode(node){return node.type===Syntax.FunctionDeclaration||node.type===Syntax.FunctionExpression||node.type===Syntax.ArrowFunctionExpression;}
function visitClassProperty(traverse,node,path,state){utils.catchup(node.range[0],state);utils.catchupWhiteOut(node.range[1],state);return false;}
visitClassProperty.test=function(node,path,state){return node.type===Syntax.ClassProperty;};function visitTypeAlias(traverse,node,path,state){utils.catchupWhiteOut(node.range[1],state);return false;}
visitTypeAlias.test=function(node,path,state){return node.type===Syntax.TypeAlias;};function visitTypeCast(traverse,node,path,state){path.unshift(node);traverse(node.expression,path,state);path.shift();utils.catchup(node.typeAnnotation.range[0],state);utils.catchupWhiteOut(node.typeAnnotation.range[1],state);return false;}
visitTypeCast.test=function(node,path,state){return node.type===Syntax.TypeCastExpression;};function visitInterfaceDeclaration(traverse,node,path,state){utils.catchupWhiteOut(node.range[1],state);return false;}
visitInterfaceDeclaration.test=function(node,path,state){return node.type===Syntax.InterfaceDeclaration;};function visitDeclare(traverse,node,path,state){utils.catchupWhiteOut(node.range[1],state);return false;}
visitDeclare.test=function(node,path,state){switch(node.type){case Syntax.DeclareVariable:case Syntax.DeclareFunction:case Syntax.DeclareClass:case Syntax.DeclareModule:return true;}
return false;};function visitFunctionParametricAnnotation(traverse,node,path,state){utils.catchup(node.range[0],state);utils.catchupWhiteOut(node.range[1],state);return false;}
visitFunctionParametricAnnotation.test=function(node,path,state){return node.type===Syntax.TypeParameterDeclaration&&path[0]&&_isFunctionNode(path[0])&&node===path[0].typeParameters;};function visitFunctionReturnAnnotation(traverse,node,path,state){utils.catchup(node.range[0],state);utils.catchupWhiteOut(node.range[1],state);return false;}
visitFunctionReturnAnnotation.test=function(node,path,state){return path[0]&&_isFunctionNode(path[0])&&node===path[0].returnType;};function visitOptionalFunctionParameterAnnotation(traverse,node,path,state){utils.catchup(node.range[0]+node.name.length,state);utils.catchupWhiteOut(node.range[1],state);return false;}
visitOptionalFunctionParameterAnnotation.test=function(node,path,state){return node.type===Syntax.Identifier&&node.optional&&path[0]&&_isFunctionNode(path[0]);};function visitTypeAnnotatedIdentifier(traverse,node,path,state){utils.catchup(node.typeAnnotation.range[0],state);utils.catchupWhiteOut(node.typeAnnotation.range[1],state);return false;}
visitTypeAnnotatedIdentifier.test=function(node,path,state){return node.type===Syntax.Identifier&&node.typeAnnotation;};function visitTypeAnnotatedObjectOrArrayPattern(traverse,node,path,state){utils.catchup(node.typeAnnotation.range[0],state);utils.catchupWhiteOut(node.typeAnnotation.range[1],state);return false;}
visitTypeAnnotatedObjectOrArrayPattern.test=function(node,path,state){var rightType=node.type===Syntax.ObjectPattern||node.type===Syntax.ArrayPattern;return rightType&&node.typeAnnotation;};function visitMethod(traverse,node,path,state){path.unshift(node);traverse(node.key,path,state);path.unshift(node.value);traverse(node.value.params,path,state);node.value.rest&&traverse(node.value.rest,path,state);node.value.returnType&&traverse(node.value.returnType,path,state);traverse(node.value.body,path,state);path.shift();path.shift();return false;}
visitMethod.test=function(node,path,state){return(node.type==="Property"&&(node.method||node.kind==="set"||node.kind==="get"))||(node.type==="MethodDefinition");};function visitImportType(traverse,node,path,state){utils.catchupWhiteOut(node.range[1],state);return false;}
visitImportType.test=function(node,path,state){return node.type==='ImportDeclaration'&&node.isType;};exports.visitorList=[visitClassProperty,visitDeclare,visitImportType,visitInterfaceDeclaration,visitFunctionParametricAnnotation,visitFunctionReturnAnnotation,visitMethod,visitOptionalFunctionParameterAnnotation,visitTypeAlias,visitTypeCast,visitTypeAnnotatedIdentifier,visitTypeAnnotatedObjectOrArrayPattern];},{"../src/utils":23,"esprima-fb":9}],37:[function(_dereq_,module,exports){'use strict';var Syntax=_dereq_('jstransform').Syntax;var utils=_dereq_('jstransform/src/utils');function renderJSXLiteral(object,isLast,state,start,end){var lines=object.value.split(/\r\n|\n|\r/);if(start){utils.append(start,state);}
var lastNonEmptyLine=0;lines.forEach(function(line,index){if(line.match(/[^ \t]/)){lastNonEmptyLine=index;}});lines.forEach(function(line,index){var isFirstLine=index===0;var isLastLine=index===lines.length-1;var isLastNonEmptyLine=index===lastNonEmptyLine;var trimmedLine=line.replace(/\t/g,' ');if(!isFirstLine){trimmedLine=trimmedLine.replace(/^[ ]+/,'');}
if(!isLastLine){trimmedLine=trimmedLine.replace(/[ ]+$/,'');}
if(!isFirstLine){utils.append(line.match(/^[ \t]*/)[0],state);}
if(trimmedLine||isLastNonEmptyLine){utils.append(JSON.stringify(trimmedLine)+
(!isLastNonEmptyLine?' + \' \' +':''),state);if(isLastNonEmptyLine){if(end){utils.append(end,state);}
if(!isLast){utils.append(', ',state);}}
if(trimmedLine&&!isLastLine){utils.append(line.match(/[ \t]*$/)[0],state);}}
if(!isLastLine){utils.append('\n',state);}});utils.move(object.range[1],state);}
function renderJSXExpressionContainer(traverse,object,isLast,path,state){utils.move(object.range[0]+1,state);utils.catchup(object.expression.range[0],state);traverse(object.expression,path,state);if(!isLast&&object.expression.type!==Syntax.JSXEmptyExpression){utils.catchup(object.expression.range[1],state,trimLeft);utils.append(', ',state);}
utils.catchup(object.range[1]-1,state,trimLeft);utils.move(object.range[1],state);return false;}
function quoteAttrName(attr){if(!/^[a-z_$][a-z\d_$]*$/i.test(attr)){return'"'+attr+'"';}
return attr;}
function trimLeft(value){return value.replace(/^[ ]+/,'');}
exports.renderJSXExpressionContainer=renderJSXExpressionContainer;exports.renderJSXLiteral=renderJSXLiteral;exports.quoteAttrName=quoteAttrName;exports.trimLeft=trimLeft;},{"jstransform":22,"jstransform/src/utils":23}],38:[function(_dereq_,module,exports){'use strict';var Syntax=_dereq_('jstransform').Syntax;var utils=_dereq_('jstransform/src/utils');var renderJSXExpressionContainer=_dereq_('./jsx').renderJSXExpressionContainer;var renderJSXLiteral=_dereq_('./jsx').renderJSXLiteral;var quoteAttrName=_dereq_('./jsx').quoteAttrName;var trimLeft=_dereq_('./jsx').trimLeft;var reNonWhiteParen=/([^\s\(\)])/g;function stripNonWhiteParen(value){return value.replace(reNonWhiteParen,'');}
var tagConvention=/^[a-z]|\-/;function isTagName(name){return tagConvention.test(name);}
function visitReactTag(traverse,object,path,state){var openingElement=object.openingElement;var nameObject=openingElement.name;var attributesObject=openingElement.attributes;utils.catchup(openingElement.range[0],state,trimLeft);if(nameObject.type===Syntax.JSXNamespacedName&&nameObject.namespace){throw new Error('Namespace tags are not supported. ReactJSX is not XML.');}
utils.append('React.createElement(',state);if(nameObject.type===Syntax.JSXIdentifier&&isTagName(nameObject.name)){utils.append('"'+nameObject.name+'"',state);utils.move(nameObject.range[1],state);}else{utils.move(nameObject.range[0],state);utils.catchup(nameObject.range[1],state);}
utils.append(', ',state);var hasAttributes=attributesObject.length;var hasAtLeastOneSpreadProperty=attributesObject.some(function(attr){return attr.type===Syntax.JSXSpreadAttribute;});if(hasAtLeastOneSpreadProperty){utils.append('React.__spread({',state);}else if(hasAttributes){utils.append('{',state);}else{utils.append('null',state);}
var previousWasSpread=false;attributesObject.forEach(function(attr,index){var isLast=index===attributesObject.length-1;if(attr.type===Syntax.JSXSpreadAttribute){if(!previousWasSpread){utils.append('}, ',state);}
utils.catchup(attr.range[0],state,stripNonWhiteParen);utils.move(attr.range[0]+1,state);utils.catchup(attr.argument.range[0],state,stripNonWhiteParen);traverse(attr.argument,path,state);utils.catchup(attr.argument.range[1],state);utils.catchup(attr.range[1]-1,state,stripNonWhiteParen);if(!isLast){utils.append(', ',state);}
utils.move(attr.range[1],state);previousWasSpread=true;return;}
if(!isLast){isLast=attributesObject[index+1].type===Syntax.JSXSpreadAttribute;}
if(attr.name.namespace){throw new Error('Namespace attributes are not supported. ReactJSX is not XML.');}
var name=attr.name.name;utils.catchup(attr.range[0],state,trimLeft);if(previousWasSpread){utils.append('{',state);}
utils.append(quoteAttrName(name),state);utils.append(': ',state);if(!attr.value){state.g.buffer+='true';state.g.position=attr.name.range[1];if(!isLast){utils.append(', ',state);}}else{utils.move(attr.name.range[1],state);utils.catchupNewlines(attr.value.range[0],state);if(attr.value.type===Syntax.Literal){renderJSXLiteral(attr.value,isLast,state);}else{renderJSXExpressionContainer(traverse,attr.value,isLast,path,state);}}
utils.catchup(attr.range[1],state,trimLeft);previousWasSpread=false;});if(!openingElement.selfClosing){utils.catchup(openingElement.range[1]-1,state,trimLeft);utils.move(openingElement.range[1],state);}
if(hasAttributes&&!previousWasSpread){utils.append('}',state);}
if(hasAtLeastOneSpreadProperty){utils.append(')',state);}
var childrenToRender=object.children.filter(function(child){return!(child.type===Syntax.Literal&&typeof child.value==='string'&&child.value.match(/^[ \t]*[\r\n][ \t\r\n]*$/));});if(childrenToRender.length>0){var lastRenderableIndex;childrenToRender.forEach(function(child,index){if(child.type!==Syntax.JSXExpressionContainer||child.expression.type!==Syntax.JSXEmptyExpression){lastRenderableIndex=index;}});if(lastRenderableIndex!==undefined){utils.append(', ',state);}
childrenToRender.forEach(function(child,index){utils.catchup(child.range[0],state,trimLeft);var isLast=index>=lastRenderableIndex;if(child.type===Syntax.Literal){renderJSXLiteral(child,isLast,state);}else if(child.type===Syntax.JSXExpressionContainer){renderJSXExpressionContainer(traverse,child,isLast,path,state);}else{traverse(child,path,state);if(!isLast){utils.append(', ',state);}}
utils.catchup(child.range[1],state,trimLeft);});}
if(openingElement.selfClosing){utils.catchup(openingElement.range[1]-2,state,trimLeft);utils.move(openingElement.range[1],state);}else{utils.catchup(object.closingElement.range[0],state,trimLeft);utils.move(object.closingElement.range[1],state);}
utils.append(')',state);return false;}
visitReactTag.test=function(object,path,state){return object.type===Syntax.JSXElement;};exports.visitorList=[visitReactTag];},{"./jsx":37,"jstransform":22,"jstransform/src/utils":23}],39:[function(_dereq_,module,exports){'use strict';var Syntax=_dereq_('jstransform').Syntax;var utils=_dereq_('jstransform/src/utils');function addDisplayName(displayName,object,state){if(object&&object.type===Syntax.CallExpression&&object.callee.type===Syntax.MemberExpression&&object.callee.object.type===Syntax.Identifier&&object.callee.object.name==='React'&&object.callee.property.type===Syntax.Identifier&&object.callee.property.name==='createClass'&&object.arguments.length===1&&object.arguments[0].type===Syntax.ObjectExpression){var properties=object.arguments[0].properties;var safe=properties.every(function(property){var value=property.key.type===Syntax.Identifier?property.key.name:property.key.value;return value!=='displayName';});if(safe){utils.catchup(object.arguments[0].range[0]+1,state);utils.append('displayName: "'+displayName+'",',state);}}}
function visitReactDisplayName(traverse,object,path,state){var left,right;if(object.type===Syntax.AssignmentExpression){left=object.left;right=object.right;}else if(object.type===Syntax.Property){left=object.key;right=object.value;}else if(object.type===Syntax.VariableDeclarator){left=object.id;right=object.init;}
if(left&&left.type===Syntax.MemberExpression){left=left.property;}
if(left&&left.type===Syntax.Identifier){addDisplayName(left.name,right,state);}}
visitReactDisplayName.test=function(object,path,state){return(object.type===Syntax.AssignmentExpression||object.type===Syntax.Property||object.type===Syntax.VariableDeclarator);};exports.visitorList=[visitReactDisplayName];},{"jstransform":22,"jstransform/src/utils":23}],40:[function(_dereq_,module,exports){'use strict';var es6ArrowFunctions=_dereq_('jstransform/visitors/es6-arrow-function-visitors');var es6Classes=_dereq_('jstransform/visitors/es6-class-visitors');var es6Destructuring=_dereq_('jstransform/visitors/es6-destructuring-visitors');var es6ObjectConciseMethod=_dereq_('jstransform/visitors/es6-object-concise-method-visitors');var es6ObjectShortNotation=_dereq_('jstransform/visitors/es6-object-short-notation-visitors');var es6RestParameters=_dereq_('jstransform/visitors/es6-rest-param-visitors');var es6Templates=_dereq_('jstransform/visitors/es6-template-visitors');var es6CallSpread=_dereq_('jstransform/visitors/es6-call-spread-visitors');var es7SpreadProperty=_dereq_('jstransform/visitors/es7-spread-property-visitors');var react=_dereq_('./transforms/react');var reactDisplayName=_dereq_('./transforms/reactDisplayName');var reservedWords=_dereq_('jstransform/visitors/reserved-words-visitors');var transformVisitors={'es6-arrow-functions':es6ArrowFunctions.visitorList,'es6-classes':es6Classes.visitorList,'es6-destructuring':es6Destructuring.visitorList,'es6-object-concise-method':es6ObjectConciseMethod.visitorList,'es6-object-short-notation':es6ObjectShortNotation.visitorList,'es6-rest-params':es6RestParameters.visitorList,'es6-templates':es6Templates.visitorList,'es6-call-spread':es6CallSpread.visitorList,'es7-spread-property':es7SpreadProperty.visitorList,'react':react.visitorList.concat(reactDisplayName.visitorList),'reserved-words':reservedWords.visitorList};var transformSets={'harmony':['es6-arrow-functions','es6-object-concise-method','es6-object-short-notation','es6-classes','es6-rest-params','es6-templates','es6-destructuring','es6-call-spread','es7-spread-property'],'es3':['reserved-words'],'react':['react']};var transformRunOrder=['reserved-words','es6-arrow-functions','es6-object-concise-method','es6-object-short-notation','es6-classes','es6-rest-params','es6-templates','es6-destructuring','es6-call-spread','es7-spread-property','react'];function getAllVisitors(excludes){var ret=[];for(var i=0,il=transformRunOrder.length;i<il;i++){if(!excludes||excludes.indexOf(transformRunOrder[i])===-1){ret=ret.concat(transformVisitors[transformRunOrder[i]]);}}
return ret;}
function getVisitorsBySet(sets){var visitorsToInclude=sets.reduce(function(visitors,set){if(!transformSets.hasOwnProperty(set)){throw new Error('Unknown visitor set: '+set);}
transformSets[set].forEach(function(visitor){visitors[visitor]=true;});return visitors;},{});var visitorList=[];for(var i=0;i<transformRunOrder.length;i++){if(visitorsToInclude.hasOwnProperty(transformRunOrder[i])){visitorList=visitorList.concat(transformVisitors[transformRunOrder[i]]);}}
return visitorList;}
exports.getVisitorsBySet=getVisitorsBySet;exports.getAllVisitors=getAllVisitors;exports.transformVisitors=transformVisitors;},{"./transforms/react":38,"./transforms/reactDisplayName":39,"jstransform/visitors/es6-arrow-function-visitors":24,"jstransform/visitors/es6-call-spread-visitors":25,"jstransform/visitors/es6-class-visitors":26,"jstransform/visitors/es6-destructuring-visitors":27,"jstransform/visitors/es6-object-concise-method-visitors":28,"jstransform/visitors/es6-object-short-notation-visitors":29,"jstransform/visitors/es6-rest-param-visitors":30,"jstransform/visitors/es6-template-visitors":31,"jstransform/visitors/es7-spread-property-visitors":33,"jstransform/visitors/reserved-words-visitors":35}],41:[function(_dereq_,module,exports){'use strict';var Buffer=_dereq_('buffer').Buffer;function inlineSourceMap(sourceMap,sourceCode,sourceFilename){var json=sourceMap;if(typeof sourceMap.toJSON==='function'){json=sourceMap.toJSON();}
json.sources=[sourceFilename];json.sourcesContent=[sourceCode];var base64=Buffer(JSON.stringify(json)).toString('base64');return'//# sourceMappingURL=data:application/json;base64,'+base64;}
module.exports=inlineSourceMap;},{"buffer":3}]},{},[1])(1)});