UNPKG

@extjs/sencha-cmd-linux-32

Version:

Productivity and performance optimization tool for building applications with Sencha Ext JS and Sencha Touch.

46 lines 1.46 MB
function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}!function(global){"use strict";function setupGlobals(global){global.Reflect=global.Reflect||{},global.Reflect.global=global.Reflect.global||global}if(!global.$traceurRuntime){setupGlobals(global);var typeOf=function(x){return typeof x};global.$traceurRuntime={options:{},setupGlobals:setupGlobals,"typeof":typeOf}}}("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this),function(){function buildFromEncodedParts(opt_scheme,opt_userInfo,opt_domain,opt_port,opt_path,opt_queryData,opt_fragment){var out=[];return opt_scheme&&out.push(opt_scheme,":"),opt_domain&&(out.push("//"),opt_userInfo&&out.push(opt_userInfo,"@"),out.push(opt_domain),opt_port&&out.push(":",opt_port)),opt_path&&out.push(opt_path),opt_queryData&&out.push("?",opt_queryData),opt_fragment&&out.push("#",opt_fragment),out.join("")}function split(uri){return uri.match(splitRe)}function removeDotSegments(path){if("/"===path)return"/";for(var leadingSlash="/"===path[0]?"/":"",trailingSlash="/"===path.slice(-1)?"/":"",segments=path.split("/"),out=[],up=0,pos=0;pos<segments.length;pos++){var segment=segments[pos];switch(segment){case"":case".":break;case"..":out.length?out.pop():up++;break;default:out.push(segment)}}if(!leadingSlash){for(;up-- >0;)out.unshift("..");0===out.length&&out.push(".")}return leadingSlash+out.join("/")+trailingSlash}function joinAndCanonicalizePath(parts){var path=parts[ComponentIndex.PATH]||"";return path=removeDotSegments(path),parts[ComponentIndex.PATH]=path,buildFromEncodedParts(parts[ComponentIndex.SCHEME],parts[ComponentIndex.USER_INFO],parts[ComponentIndex.DOMAIN],parts[ComponentIndex.PORT],parts[ComponentIndex.PATH],parts[ComponentIndex.QUERY_DATA],parts[ComponentIndex.FRAGMENT])}function canonicalizeUrl(url){var parts=split(url);return joinAndCanonicalizePath(parts)}function resolveUrl(base,url){var parts=split(url),baseParts=split(base);if(parts[ComponentIndex.SCHEME])return joinAndCanonicalizePath(parts);parts[ComponentIndex.SCHEME]=baseParts[ComponentIndex.SCHEME];for(var i=ComponentIndex.SCHEME;i<=ComponentIndex.PORT;i++)parts[i]||(parts[i]=baseParts[i]);if("/"==parts[ComponentIndex.PATH][0])return joinAndCanonicalizePath(parts);var path=baseParts[ComponentIndex.PATH],index=path.lastIndexOf("/");return path=path.slice(0,index+1)+parts[ComponentIndex.PATH],parts[ComponentIndex.PATH]=path,joinAndCanonicalizePath(parts)}function isAbsolute(name){if(!name)return!1;if("/"===name[0])return!0;var parts=split(name);return!!parts[ComponentIndex.SCHEME]}var splitRe=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$"),ComponentIndex={SCHEME:1,USER_INFO:2,DOMAIN:3,PORT:4,PATH:5,QUERY_DATA:6,FRAGMENT:7};$traceurRuntime.canonicalizeUrl=canonicalizeUrl,$traceurRuntime.isAbsolute=isAbsolute,$traceurRuntime.removeDotSegments=removeDotSegments,$traceurRuntime.resolveUrl=resolveUrl}(),function(global){"use strict";function UncoatedModuleEntry(url,uncoatedModule){this.url=url,this.value_=uncoatedModule}function ModuleEvaluationError(erroneousModuleName,cause){this.message=this.constructor.name+": "+this.stripCause(cause)+" in "+erroneousModuleName,cause instanceof ModuleEvaluationError||!cause.stack?this.stack="":this.stack=this.stripStack(cause.stack)}function beforeLines(lines,number){var result=[],first=number-3;first<0&&(first=0);for(var i=first;i<number;i++)result.push(lines[i]);return result}function afterLines(lines,number){var last=number+1;last>lines.length-1&&(last=lines.length-1);for(var result=[],i=number;i<=last;i++)result.push(lines[i]);return result}function columnSpacing(columns){for(var result="",i=0;i<columns-1;i++)result+="-";return result}function UncoatedModuleInstantiator(url,func){UncoatedModuleEntry.call(this,url,null),this.func=func}function getUncoatedModuleInstantiator(name){if(name){var url=ModuleStore.normalize(name);return moduleInstantiators[url]}}function Module(uncoatedModule){var isLive=arguments[1],coatedModule=Object.create(null);return Object.getOwnPropertyNames(uncoatedModule).forEach(function(name){var getter,value;if(isLive===liveModuleSentinel){var descr=Object.getOwnPropertyDescriptor(uncoatedModule,name);descr.get&&(getter=descr.get)}getter||(value=uncoatedModule[name],getter=function(){return value}),Object.defineProperty(coatedModule,name,{get:getter,enumerable:!0})}),Object.preventExtensions(coatedModule),coatedModule}var baseURL,$__3=$traceurRuntime,canonicalizeUrl=$__3.canonicalizeUrl,resolveUrl=$__3.resolveUrl,isAbsolute=$__3.isAbsolute,moduleInstantiators=Object.create(null);baseURL=global.location&&global.location.href?resolveUrl(global.location.href,"./"):"",ModuleEvaluationError.prototype=Object.create(Error.prototype),ModuleEvaluationError.prototype.constructor=ModuleEvaluationError,ModuleEvaluationError.prototype.stripError=function(message){return message.replace(/.*Error:/,this.constructor.name+":")},ModuleEvaluationError.prototype.stripCause=function(cause){return cause?cause.message?this.stripError(cause.message):cause+"":""},ModuleEvaluationError.prototype.loadedBy=function(moduleName){this.stack+="\n loaded by "+moduleName},ModuleEvaluationError.prototype.stripStack=function(causeStack){var stack=[];return causeStack.split("\n").some(function(frame){return!!/UncoatedModuleInstantiator/.test(frame)||void stack.push(frame)}),stack[0]=this.stripError(stack[0]),stack.join("\n")},UncoatedModuleInstantiator.prototype=Object.create(UncoatedModuleEntry.prototype),UncoatedModuleInstantiator.prototype.getUncoatedModule=function(){var $__2=this;if(this.value_)return this.value_;try{var relativeRequire;return void 0!==typeof $traceurRuntime&&$traceurRuntime.require&&(relativeRequire=$traceurRuntime.require.bind(null,this.url)),this.value_=this.func.call(global,relativeRequire)}catch(ex){if(ex instanceof ModuleEvaluationError)throw ex.loadedBy(this.url),ex;if(ex.stack){var lines=(""+this.func).split("\n"),evaled=[];ex.stack.split("\n").some(function(frame,index){if(frame.indexOf("UncoatedModuleInstantiator.getUncoatedModule")>0)return!0;var m=/(at\s[^\s]*\s).*>:(\d*):(\d*)\)/.exec(frame);if(m){var line=parseInt(m[2],10);evaled=evaled.concat(beforeLines(lines,line)),1===index?evaled.push(columnSpacing(m[3])+"^ "+$__2.url):evaled.push(columnSpacing(m[3])+"^"),evaled=evaled.concat(afterLines(lines,line)),evaled.push("= = = = = = = = =")}else evaled.push(frame)}),ex.stack=evaled.join("\n")}throw new ModuleEvaluationError(this.url,ex)}};var moduleInstances=Object.create(null),liveModuleSentinel={},ModuleStore={normalize:function(name,refererName,refererAddress){if("string"!=typeof name)throw new TypeError("module name must be a string, not "+typeof name);if(isAbsolute(name))return canonicalizeUrl(name);if(/[^\.]\/\.\.\//.test(name))throw Error("module name embeds /../: "+name);return"."===name[0]&&refererName?resolveUrl(refererName,name):canonicalizeUrl(name)},get:function(normalizedName){var m=getUncoatedModuleInstantiator(normalizedName);if(m){var moduleInstance=moduleInstances[m.url];return moduleInstance?moduleInstance:(moduleInstance=Module(m.getUncoatedModule(),liveModuleSentinel),moduleInstances[m.url]=moduleInstance)}},set:function(normalizedName,module){normalizedName+="",moduleInstantiators[normalizedName]=new UncoatedModuleInstantiator(normalizedName,function(){return module}),moduleInstances[normalizedName]=module},get baseURL(){return baseURL},set baseURL(v){baseURL=v+""},registerModule:function(name,deps,func){var normalizedName=ModuleStore.normalize(name);if(moduleInstantiators[normalizedName])throw Error("duplicate module named "+normalizedName);moduleInstantiators[normalizedName]=new UncoatedModuleInstantiator(normalizedName,func)},bundleStore:Object.create(null),register:function(name,deps,func){deps&&(deps.length||func.length)?this.bundleStore[name]={deps:deps,execute:function(){var $__2=arguments,depMap={};deps.forEach(function(dep,index){return depMap[dep]=$__2[index]});var registryEntry=func.call(this,depMap);return registryEntry.execute.call(this),registryEntry.exports}}:this.registerModule(name,deps,func)},getAnonymousModule:function(func){return new Module(func.call(global),liveModuleSentinel)}},moduleStoreModule=new Module({ModuleStore:ModuleStore});ModuleStore.set("@traceur/src/runtime/ModuleStore.js",moduleStoreModule);var setupGlobals=$traceurRuntime.setupGlobals;$traceurRuntime.setupGlobals=function(global){setupGlobals(global)},$traceurRuntime.ModuleStore=ModuleStore,$traceurRuntime.registerModule=ModuleStore.registerModule.bind(ModuleStore),$traceurRuntime.getModule=ModuleStore.get,$traceurRuntime.setModule=ModuleStore.set,$traceurRuntime.normalizeModuleName=ModuleStore.normalize}("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/new-unique-string.js",[],function(){"use strict";function newUniqueString(){return"__$"+(1e9*random()>>>1)+"$"+ ++counter+"$__"}var random=Math.random,counter=Date.now()%1e9,$__default=newUniqueString;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/has-native-symbols.js",[],function(){"use strict";function hasNativeSymbol(){return v}var v=!!Object.getOwnPropertySymbols&&"function"==typeof Symbol,$__default=hasNativeSymbol;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/symbols.js",[],function(){"use strict";function nonEnum(value){return{configurable:!0,enumerable:!1,value:value,writable:!0}}function SymbolValue(description){var key=newUniqueString();$defineProperty(this,symbolDataProperty,{value:this}),$defineProperty(this,symbolInternalProperty,{value:key}),$defineProperty(this,symbolDescriptionProperty,{value:description}),$freeze(this),symbolValues[key]=this}function isSymbolString(s){return symbolValues[s]}function removeSymbolKeys(array){for(var rv=[],i=0;i<array.length;i++)isSymbolString(array[i])||rv.push(array[i]);return rv}function getOwnPropertyNames(object){return removeSymbolKeys($getOwnPropertyNames(object))}function keys(object){return removeSymbolKeys($keys(object))}function getOwnPropertySymbols(object){for(var rv=[],names=$getOwnPropertyNames(object),i=0;i<names.length;i++){var symbol=symbolValues[names[i]];symbol&&rv.push(symbol)}return rv}function polyfillSymbol(global){var Object=global.Object;hasNativeSymbol()||(global.Symbol=SymbolImpl,Object.getOwnPropertyNames=getOwnPropertyNames,Object.keys=keys,$defineProperty(Object,"getOwnPropertySymbols",nonEnum(getOwnPropertySymbols))),global.Symbol.iterator||(global.Symbol.iterator=global.Symbol("Symbol.iterator")),global.Symbol.observer||(global.Symbol.observer=global.Symbol("Symbol.observer"))}var newUniqueString=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../new-unique-string.js","traceur@0.0.107/src/runtime/modules/symbols.js"))["default"],hasNativeSymbol=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../has-native-symbols.js","traceur@0.0.107/src/runtime/modules/symbols.js"))["default"],$create=Object.create,$defineProperty=Object.defineProperty,$freeze=Object.freeze,$getOwnPropertyNames=Object.getOwnPropertyNames,$keys=Object.keys,$TypeError=TypeError,symbolInternalProperty=newUniqueString(),symbolDescriptionProperty=newUniqueString(),symbolDataProperty=newUniqueString(),symbolValues=$create(null),SymbolImpl=function(description){var value=new SymbolValue(description);if(!(this instanceof SymbolImpl))return value;throw new $TypeError("Symbol cannot be new'ed")};$defineProperty(SymbolImpl.prototype,"constructor",nonEnum(SymbolImpl)),$defineProperty(SymbolImpl.prototype,"toString",nonEnum(function(){var symbolValue=this[symbolDataProperty];return symbolValue[symbolInternalProperty]})),$defineProperty(SymbolImpl.prototype,"valueOf",nonEnum(function(){var symbolValue=this[symbolDataProperty];if(!symbolValue)throw $TypeError("Conversion from symbol to string");return symbolValue[symbolInternalProperty]})),$defineProperty(SymbolValue.prototype,"constructor",nonEnum(SymbolImpl)),$defineProperty(SymbolValue.prototype,"toString",{value:SymbolImpl.prototype.toString,enumerable:!1}),$defineProperty(SymbolValue.prototype,"valueOf",{value:SymbolImpl.prototype.valueOf,enumerable:!1}),$freeze(SymbolValue.prototype);var g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this;polyfillSymbol(g);var typeOf=hasNativeSymbol()?function(x){return typeof x}:function(x){return x instanceof SymbolValue?"symbol":typeof x};return{get typeof(){return typeOf}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/typeof.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_symbols_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./symbols.js","traceur@0.0.107/src/runtime/modules/typeof.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_symbols_46_js__["typeof"]}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/symbols.js",[],function(){"use strict";var t=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/typeof.js","traceur@0.0.107/src/runtime/symbols.js"))["default"];return $traceurRuntime["typeof"]=t,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/createClass.js",[],function(){"use strict";function forEachPropertyKey(object,f){getOwnPropertyNames(object).forEach(f),getOwnPropertySymbols&&getOwnPropertySymbols(object).forEach(f)}function getDescriptors(object){var descriptors={};return forEachPropertyKey(object,function(key){descriptors[key]=getOwnPropertyDescriptor(object,key),descriptors[key].enumerable=!1}),descriptors}function makePropertiesNonEnumerable(object){forEachPropertyKey(object,function(key){defineProperty(object,key,nonEnum)})}function createClass(ctor,object,staticObject,superClass){return defineProperty(object,"constructor",{value:ctor,configurable:!0,enumerable:!1,writable:!0}),arguments.length>3?("function"==typeof superClass&&(ctor.__proto__=superClass),ctor.prototype=create(getProtoParent(superClass),getDescriptors(object))):(makePropertiesNonEnumerable(object),ctor.prototype=object),defineProperty(ctor,"prototype",{configurable:!1,writable:!1}),defineProperties(ctor,getDescriptors(staticObject))}function getProtoParent(superClass){if("function"==typeof superClass){var prototype=superClass.prototype;if($Object(prototype)===prototype||null===prototype)return superClass.prototype;throw new $TypeError("super prototype must be an Object or null")}if(null===superClass)return null;throw new $TypeError("Super expression must either be null or a function, not "+typeof superClass+".")}var $Object=Object,$TypeError=TypeError,$__1=Object,create=$__1.create,defineProperties=$__1.defineProperties,defineProperty=$__1.defineProperty,getOwnPropertyDescriptor=$__1.getOwnPropertyDescriptor,getOwnPropertyNames=$__1.getOwnPropertyNames,getOwnPropertySymbols=$__1.getOwnPropertySymbols,nonEnum={enumerable:!1},$__default=createClass;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/superConstructor.js",[],function(){"use strict";function superConstructor(ctor){return ctor.__proto__}var $__default=superConstructor;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/superDescriptor.js",[],function(){"use strict";function superDescriptor(homeObject,name){var proto=getPrototypeOf(homeObject);do{var result=getOwnPropertyDescriptor(proto,name);if(result)return result;proto=getPrototypeOf(proto)}while(proto)}var $__0=Object,getOwnPropertyDescriptor=$__0.getOwnPropertyDescriptor,getPrototypeOf=$__0.getPrototypeOf,$__default=superDescriptor;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/superGet.js",[],function(){"use strict";function superGet(self,homeObject,name){var descriptor=superDescriptor(homeObject,name);if(descriptor){var value=descriptor.value;return value?value:descriptor.get?descriptor.get.call(self):value}}var superDescriptor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./superDescriptor.js","traceur@0.0.107/src/runtime/modules/superGet.js"))["default"],$__default=superGet;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/superSet.js",[],function(){"use strict";function superSet(self,homeObject,name,value){var descriptor=superDescriptor(homeObject,name);if(descriptor&&descriptor.set)return descriptor.set.call(self,value),value;throw $TypeError("super has no setter '"+name+"'.")}var superDescriptor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./superDescriptor.js","traceur@0.0.107/src/runtime/modules/superSet.js"))["default"],$TypeError=TypeError,$__default=superSet;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/classes.js",[],function(){"use strict";var createClass=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/createClass.js","traceur@0.0.107/src/runtime/classes.js"))["default"],superConstructor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/superConstructor.js","traceur@0.0.107/src/runtime/classes.js"))["default"],superGet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/superGet.js","traceur@0.0.107/src/runtime/classes.js"))["default"],superSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/superSet.js","traceur@0.0.107/src/runtime/classes.js"))["default"];return $traceurRuntime.createClass=createClass,$traceurRuntime.superConstructor=superConstructor,$traceurRuntime.superGet=superGet,$traceurRuntime.superSet=superSet,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/exportStar.js",[],function(){"use strict";function exportStar(object){for(var $__2=arguments,$__3=function(i){var $__6,mod=$__2[i],names=getOwnPropertyNames(mod),$__5=function(j){var name=names[j];return"__esModule"===name||"default"===name?0:void defineProperty(object,name,{get:function(){return mod[name]},enumerable:!0})};$__4:for(var j=0;j<names.length;j++)switch($__6=$__5(j)){case 0:continue $__4}},i=1;i<arguments.length;i++)$__3(i);return object}var $__1=Object,defineProperty=$__1.defineProperty,getOwnPropertyNames=$__1.getOwnPropertyNames,$__default=exportStar;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/exportStar.js",[],function(){"use strict";var exportStar=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/exportStar.js","traceur@0.0.107/src/runtime/exportStar.js"))["default"];return $traceurRuntime.exportStar=exportStar,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/private-symbol.js",[],function(){"use strict";function isPrivateSymbol(s){return privateNames[s]}function createPrivateSymbol(){var s=($Symbol||newUniqueString)();return privateNames[s]=!0,s}function hasPrivate(obj,sym){return hasOwnProperty.call(obj,sym)}function deletePrivate(obj,sym){return!!hasPrivate(obj,sym)&&(delete obj[sym],!0)}function setPrivate(obj,sym,val){obj[sym]=val}function getPrivate(obj,sym){var val=obj[sym];if(void 0!==val)return hasOwnProperty.call(obj,sym)?val:void 0}function init(){$getOwnPropertySymbols&&(Object.getOwnPropertySymbols=function(object){for(var rv=[],symbols=$getOwnPropertySymbols(object),i=0;i<symbols.length;i++){var symbol=symbols[i];isPrivateSymbol(symbol)||rv.push(symbol)}return rv})}var newUniqueString=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./new-unique-string.js","traceur@0.0.107/src/runtime/private-symbol.js"))["default"],$Symbol="function"==typeof Symbol?Symbol:void 0,$getOwnPropertySymbols=Object.getOwnPropertySymbols,$create=Object.create,privateNames=$create(null);return{get isPrivateSymbol(){return isPrivateSymbol},get createPrivateSymbol(){return createPrivateSymbol},get hasPrivate(){return hasPrivate},get deletePrivate(){return deletePrivate},get setPrivate(){return setPrivate},get getPrivate(){return getPrivate},get init(){return init}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/private-weak-map.js",[],function(){"use strict";function isPrivateSymbol(s){return!1}function createPrivateSymbol(){return new $WeakMap}function hasPrivate(obj,sym){return sym.has(obj)}function deletePrivate(obj,sym){return sym["delete"](obj)}function setPrivate(obj,sym,val){sym.set(obj,val)}function getPrivate(obj,sym){return sym.get(obj)}function init(){}var $WeakMap="function"==typeof WeakMap?WeakMap:void 0;return{get isPrivateSymbol(){return isPrivateSymbol},get createPrivateSymbol(){return createPrivateSymbol},get hasPrivate(){return hasPrivate},get deletePrivate(){return deletePrivate},get setPrivate(){return setPrivate},get getPrivate(){return getPrivate},get init(){return init}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/private.js",[],function(){"use strict";var sym=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./private-symbol.js","traceur@0.0.107/src/runtime/private.js")),weak=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./private-weak-map.js","traceur@0.0.107/src/runtime/private.js")),hasWeakMap="function"==typeof WeakMap,m=hasWeakMap?weak:sym,isPrivateSymbol=m.isPrivateSymbol,createPrivateSymbol=m.createPrivateSymbol,hasPrivate=m.hasPrivate,deletePrivate=m.deletePrivate,setPrivate=m.setPrivate,getPrivate=m.getPrivate;return m.init(),{get isPrivateSymbol(){return isPrivateSymbol},get createPrivateSymbol(){return createPrivateSymbol},get hasPrivate(){return hasPrivate},get deletePrivate(){return deletePrivate},get setPrivate(){return setPrivate},get getPrivate(){return getPrivate}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/properTailCalls.js",[],function(){"use strict";function createContinuation(operand,thisArg,argsArray){return[CONTINUATION_TYPE,operand,thisArg,argsArray]}function isContinuation(object){return object&&object[0]===CONTINUATION_TYPE}function $bind(operand,thisArg,args){for(var argArray=[thisArg],i=0;i<args.length;i++)argArray[i+1]=args[i];var func=$apply(Function.prototype.bind,operand,argArray);return func}function $construct(func,argArray){var object=new($bind(func,null,argArray));return object}function isTailRecursive(func){return!!getPrivate(func,isTailRecursiveName)}function tailCall(func,thisArg,argArray){var continuation=argArray[0];if(isContinuation(continuation))return continuation=$apply(func,thisArg,continuation[3]);for(continuation=createContinuation(func,thisArg,argArray);;){if(continuation=isTailRecursive(func)?$apply(func,continuation[2],[continuation]):$apply(func,continuation[2],continuation[3]),!isContinuation(continuation))return continuation;func=continuation[1]}}function construct(){var object;return object=isTailRecursive(this)?$construct(this,[createContinuation(null,null,arguments)]):$construct(this,arguments)}function setupProperTailCalls(){isTailRecursiveName=createPrivateSymbol(),Function.prototype.call=initTailRecursiveFunction(function(thisArg){var result=tailCall(function(thisArg){for(var argArray=[],i=1;i<arguments.length;++i)argArray[i-1]=arguments[i];var continuation=createContinuation(this,thisArg,argArray);return continuation},this,arguments);return result}),Function.prototype.apply=initTailRecursiveFunction(function(thisArg,argArray){var result=tailCall(function(thisArg,argArray){var continuation=createContinuation(this,thisArg,argArray);return continuation},this,arguments);return result})}function initTailRecursiveFunction(func){return null===isTailRecursiveName&&setupProperTailCalls(),setPrivate(func,isTailRecursiveName,!0),func}var $__0=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../private.js","traceur@0.0.107/src/runtime/modules/properTailCalls.js")),getPrivate=$__0.getPrivate,setPrivate=$__0.setPrivate,createPrivateSymbol=$__0.createPrivateSymbol,$apply=Function.prototype.call.bind(Function.prototype.apply),CONTINUATION_TYPE=Object.create(null),isTailRecursiveName=null;return{get construct(){return construct},get initTailRecursiveFunction(){return initTailRecursiveFunction},get call(){return tailCall},get continuation(){return createContinuation}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/properTailCalls.js",[],function(){"use strict";var $__0=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/properTailCalls.js","traceur@0.0.107/src/runtime/properTailCalls.js")),initTailRecursiveFunction=$__0.initTailRecursiveFunction,call=$__0.call,continuation=$__0.continuation,construct=$__0.construct;return $traceurRuntime.initTailRecursiveFunction=initTailRecursiveFunction,$traceurRuntime.call=call,$traceurRuntime.continuation=continuation,$traceurRuntime.construct=construct,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/relativeRequire.js",[],function(){"use strict";function relativeRequire(callerPath,requiredPath){function isDirectory(path){return"/"===path.slice(-1)}function isAbsolute(path){return"/"===path[0]}function isRelative(path){return"."===path[0]}if(path=path||"undefined"!=typeof require&&require("path"),!isDirectory(requiredPath)&&!isAbsolute(requiredPath))return isRelative(requiredPath)?require(path.resolve(path.dirname(callerPath),requiredPath)):require(requiredPath)}var path;return $traceurRuntime.require=relativeRequire,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/checkObjectCoercible.js",[],function(){"use strict";function checkObjectCoercible(v){if(null===v||void 0===v)throw new $TypeError("Value cannot be converted to an Object");return v}var $TypeError=TypeError,$__default=checkObjectCoercible;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/spread.js",[],function(){"use strict";function spread(){for(var iterResult,rv=[],j=0,i=0;i<arguments.length;i++){var valueToSpread=checkObjectCoercible(arguments[i]);if("function"!=typeof valueToSpread[Symbol.iterator])throw new TypeError("Cannot spread non-iterable object.");for(var iter=valueToSpread[Symbol.iterator]();!(iterResult=iter.next()).done;)rv[j++]=iterResult.value}return rv}var checkObjectCoercible=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../checkObjectCoercible.js","traceur@0.0.107/src/runtime/modules/spread.js"))["default"],$__default=spread;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/spread.js",[],function(){"use strict";var spread=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/spread.js","traceur@0.0.107/src/runtime/spread.js"))["default"];return $traceurRuntime.spread=spread,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/iteratorToArray.js",[],function(){"use strict";function iteratorToArray(iter){for(var tmp,rv=[],i=0;!(tmp=iter.next()).done;)rv[i++]=tmp.value;return rv}var $__default=iteratorToArray;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/destructuring.js",[],function(){"use strict";var iteratorToArray=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/iteratorToArray.js","traceur@0.0.107/src/runtime/destructuring.js"))["default"];return $traceurRuntime.iteratorToArray=iteratorToArray,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/async.js",[],function(){"use strict";function AsyncGeneratorFunction(){}function AsyncGeneratorFunctionPrototype(){}function initAsyncGeneratorFunction(functionObject){return functionObject.prototype=create(AsyncGeneratorFunctionPrototype.prototype),functionObject.__proto__=AsyncGeneratorFunctionPrototype,functionObject}function createAsyncGeneratorInstance(observe,functionObject){for(var args=[],$__10=2;$__10<arguments.length;$__10++)args[$__10-2]=arguments[$__10];var object=create(functionObject.prototype);return setPrivate(object,observeName,observe),object}function observeForEach(observe,next){return new Promise(function(resolve,reject){var generator=observe({next:function(value){return next.call(generator,value)},"throw":function(error){reject(error)},"return":function(value){resolve(value)}})})}function schedule(asyncF){return Promise.resolve().then(asyncF)}function createDecoratedGenerator(generator,onDone){return new DecoratedGenerator(generator,onDone)}var $__12=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../private.js","traceur@0.0.107/src/runtime/modules/async.js")),createPrivateSymbol=$__12.createPrivateSymbol,getPrivate=$__12.getPrivate,setPrivate=$__12.setPrivate,$__11=Object,create=$__11.create,defineProperty=$__11.defineProperty,observeName=createPrivateSymbol();AsyncGeneratorFunction.prototype=AsyncGeneratorFunctionPrototype,AsyncGeneratorFunctionPrototype.constructor=AsyncGeneratorFunction,defineProperty(AsyncGeneratorFunctionPrototype,"constructor",{enumerable:!1});var AsyncGeneratorContext=function(){function AsyncGeneratorContext(observer){var $__2=this;this.decoratedObserver=createDecoratedGenerator(observer,function(){$__2.done=!0}),this.done=!1,this.inReturn=!1}return $traceurRuntime.createClass(AsyncGeneratorContext,{"throw":function(error){if(!this.inReturn)throw error},"yield":function(value){if(this.done)throw void(this.inReturn=!0);var result;try{result=this.decoratedObserver.next(value)}catch(e){throw this.done=!0,e}if(void 0!==result){if(result.done)throw this.done=!0,void(this.inReturn=!0);return result.value}},yieldFor:function(observable){var ctx=this;return observeForEach(observable[Symbol.observer].bind(observable),function(value){if(ctx.done)return void this["return"]();var result;try{result=ctx.decoratedObserver.next(value)}catch(e){throw ctx.done=!0,e}if(void 0!==result)return result.done&&(ctx.done=!0),result})}},{})}();AsyncGeneratorFunctionPrototype.prototype[Symbol.observer]=function(observer){var observe=getPrivate(this,observeName),ctx=new AsyncGeneratorContext(observer);return schedule(function(){return observe(ctx)}).then(function(value){ctx.done||ctx.decoratedObserver["return"](value)})["catch"](function(error){ctx.done||ctx.decoratedObserver["throw"](error)}),ctx.decoratedObserver},defineProperty(AsyncGeneratorFunctionPrototype.prototype,Symbol.observer,{enumerable:!1});var generator=Symbol(),onDone=Symbol(),DecoratedGenerator=function(){function DecoratedGenerator(_generator,_onDone){this[generator]=_generator,this[onDone]=_onDone}return $traceurRuntime.createClass(DecoratedGenerator,{next:function(value){var result=this[generator].next(value);return void 0!==result&&result.done&&this[onDone].call(this),result},"throw":function(error){return this[onDone].call(this),this[generator]["throw"](error)},"return":function(value){return this[onDone].call(this),this[generator]["return"](value)}},{})}();return Array.prototype[Symbol.observer]=function(observer){var done=!1,decoratedObserver=createDecoratedGenerator(observer,function(){
return done=!0}),$__6=!0,$__7=!1,$__8=void 0;try{for(var $__4=void 0,$__3=this[Symbol.iterator]();!($__6=($__4=$__3.next()).done);$__6=!0){var value=$__4.value;if(decoratedObserver.next(value),done)return}}catch($__9){$__7=!0,$__8=$__9}finally{try{$__6||null==$__3["return"]||$__3["return"]()}finally{if($__7)throw $__8}}return decoratedObserver["return"](),decoratedObserver},defineProperty(Array.prototype,Symbol.observer,{enumerable:!1}),{get initAsyncGeneratorFunction(){return initAsyncGeneratorFunction},get createAsyncGeneratorInstance(){return createAsyncGeneratorInstance},get observeForEach(){return observeForEach},get schedule(){return schedule},get createDecoratedGenerator(){return createDecoratedGenerator}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/initAsyncGeneratorFunction.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./async.js","traceur@0.0.107/src/runtime/modules/initAsyncGeneratorFunction.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__.initAsyncGeneratorFunction}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/createAsyncGeneratorInstance.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./async.js","traceur@0.0.107/src/runtime/modules/createAsyncGeneratorInstance.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__.createAsyncGeneratorInstance}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/observeForEach.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./async.js","traceur@0.0.107/src/runtime/modules/observeForEach.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__.observeForEach}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/schedule.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./async.js","traceur@0.0.107/src/runtime/modules/schedule.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__.schedule}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/createDecoratedGenerator.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./async.js","traceur@0.0.107/src/runtime/modules/createDecoratedGenerator.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_async_46_js__.createDecoratedGenerator}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/async.js",[],function(){"use strict";var initAsyncGeneratorFunction=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/initAsyncGeneratorFunction.js","traceur@0.0.107/src/runtime/async.js"))["default"],createAsyncGeneratorInstance=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/createAsyncGeneratorInstance.js","traceur@0.0.107/src/runtime/async.js"))["default"],observeForEach=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/observeForEach.js","traceur@0.0.107/src/runtime/async.js"))["default"],schedule=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/schedule.js","traceur@0.0.107/src/runtime/async.js"))["default"],createDecoratedGenerator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/createDecoratedGenerator.js","traceur@0.0.107/src/runtime/async.js"))["default"];return $traceurRuntime.initAsyncGeneratorFunction=initAsyncGeneratorFunction,$traceurRuntime.createAsyncGeneratorInstance=createAsyncGeneratorInstance,$traceurRuntime.observeForEach=observeForEach,$traceurRuntime.schedule=schedule,$traceurRuntime.createDecoratedGenerator=createDecoratedGenerator,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/generators.js",[],function(){"use strict";function nonEnum(value){return{configurable:!0,enumerable:!1,value:value,writable:!0}}function getInternalError(state){return Error("Traceur compiler bug: invalid state in state machine: "+state)}function GeneratorContext(){this.state=0,this.GState=ST_NEWBORN,this.storedException=void 0,this.finallyFallThrough=void 0,this.sent_=void 0,this.returnValue=void 0,this.oldReturnValue=void 0,this.tryStack_=[]}function nextOrThrow(ctx,moveNext,action,x){switch(ctx.GState){case ST_EXECUTING:throw Error('"'+action+'" on executing generator');case ST_CLOSED:if("next"==action)return{value:void 0,done:!0};if(x===RETURN_SENTINEL)return{value:ctx.returnValue,done:!0};throw x;case ST_NEWBORN:if("throw"===action){if(ctx.GState=ST_CLOSED,x===RETURN_SENTINEL)return{value:ctx.returnValue,done:!0};throw x}if(void 0!==x)throw $TypeError("Sent value to newborn generator");case ST_SUSPENDED:ctx.GState=ST_EXECUTING,ctx.action=action,ctx.sent=x;var value;try{value=moveNext(ctx)}catch(ex){if(ex!==RETURN_SENTINEL)throw ex;value=ctx}var done=value===ctx;return done&&(value=ctx.returnValue),ctx.GState=done?ST_CLOSED:ST_SUSPENDED,{value:value,done:done}}}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}function createGeneratorInstance(innerFunction,functionObject,self){var moveNext=getMoveNext(innerFunction,self),ctx=new GeneratorContext,object=create(functionObject.prototype);return setPrivate(object,ctxName,ctx),setPrivate(object,moveNextName,moveNext),object}function initGeneratorFunction(functionObject){return functionObject.prototype=create(GeneratorFunctionPrototype.prototype),functionObject.__proto__=GeneratorFunctionPrototype,functionObject}function AsyncFunctionContext(){GeneratorContext.call(this),this.err=void 0;var ctx=this;ctx.result=new Promise(function(resolve,reject){ctx.resolve=resolve,ctx.reject=reject})}function asyncWrap(innerFunction,self){var moveNext=getMoveNext(innerFunction,self),ctx=new AsyncFunctionContext;return ctx.createCallback=function(newState){return function(value){ctx.state=newState,ctx.value=value,moveNext(ctx)}},ctx.errback=function(err){handleCatch(ctx,err),moveNext(ctx)},moveNext(ctx),ctx.result}function getMoveNext(innerFunction,self){return function(ctx){for(;;)try{return innerFunction.call(self,ctx)}catch(ex){handleCatch(ctx,ex)}}}function handleCatch(ctx,ex){ctx.storedException=ex;var last=ctx.tryStack_[ctx.tryStack_.length-1];return last?(ctx.state=void 0!==last["catch"]?last["catch"]:last["finally"],void(void 0!==last.finallyFallThrough&&(ctx.finallyFallThrough=last.finallyFallThrough))):void ctx.handleException(ex)}var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../private.js","traceur@0.0.107/src/runtime/modules/generators.js")),createPrivateSymbol=$__2.createPrivateSymbol,getPrivate=$__2.getPrivate,setPrivate=$__2.setPrivate,$TypeError=TypeError,$__1=Object,create=$__1.create,defineProperties=$__1.defineProperties,defineProperty=$__1.defineProperty,ST_NEWBORN=0,ST_EXECUTING=1,ST_SUSPENDED=2,ST_CLOSED=3,END_STATE=-2,RETHROW_STATE=-3,RETURN_SENTINEL={};GeneratorContext.prototype={pushTry:function(catchState,finallyState){if(null!==finallyState){for(var finallyFallThrough=null,i=this.tryStack_.length-1;i>=0;i--)if(void 0!==this.tryStack_[i]["catch"]){finallyFallThrough=this.tryStack_[i]["catch"];break}null===finallyFallThrough&&(finallyFallThrough=RETHROW_STATE),this.tryStack_.push({"finally":finallyState,finallyFallThrough:finallyFallThrough})}null!==catchState&&this.tryStack_.push({"catch":catchState})},popTry:function(){this.tryStack_.pop()},maybeUncatchable:function(){if(this.storedException===RETURN_SENTINEL)throw RETURN_SENTINEL},get sent(){return this.maybeThrow(),this.sent_},set sent(v){this.sent_=v},get sentIgnoreThrow(){return this.sent_},maybeThrow:function(){if("throw"===this.action)throw this.action="next",this.sent_},end:function(){switch(this.state){case END_STATE:return this;case RETHROW_STATE:throw this.storedException;default:throw getInternalError(this.state)}},handleException:function(ex){throw this.GState=ST_CLOSED,this.state=END_STATE,ex},wrapYieldStar:function(iterator){var ctx=this;return{next:function(v){return iterator.next(v)},"throw":function(e){var result;if(e===RETURN_SENTINEL){if(iterator["return"]){if(result=iterator["return"](ctx.returnValue),!result.done)return ctx.returnValue=ctx.oldReturnValue,result;ctx.returnValue=result.value}throw e}if(iterator["throw"])return iterator["throw"](e);throw iterator["return"]&&iterator["return"](),$TypeError("Inner iterator does not have a throw method")}}}};var ctxName=createPrivateSymbol(),moveNextName=createPrivateSymbol();return GeneratorFunction.prototype=GeneratorFunctionPrototype,defineProperty(GeneratorFunctionPrototype,"constructor",nonEnum(GeneratorFunction)),GeneratorFunctionPrototype.prototype={constructor:GeneratorFunctionPrototype,next:function(v){return nextOrThrow(getPrivate(this,ctxName),getPrivate(this,moveNextName),"next",v)},"throw":function(v){return nextOrThrow(getPrivate(this,ctxName),getPrivate(this,moveNextName),"throw",v)},"return":function(v){var ctx=getPrivate(this,ctxName);return ctx.oldReturnValue=ctx.returnValue,ctx.returnValue=v,nextOrThrow(ctx,getPrivate(this,moveNextName),"throw",RETURN_SENTINEL)}},defineProperties(GeneratorFunctionPrototype.prototype,{constructor:{enumerable:!1},next:{enumerable:!1},"throw":{enumerable:!1},"return":{enumerable:!1}}),Object.defineProperty(GeneratorFunctionPrototype.prototype,Symbol.iterator,nonEnum(function(){return this})),AsyncFunctionContext.prototype=create(GeneratorContext.prototype),AsyncFunctionContext.prototype.end=function(){switch(this.state){case END_STATE:this.resolve(this.returnValue);break;case RETHROW_STATE:this.reject(this.storedException);break;default:this.reject(getInternalError(this.state))}},AsyncFunctionContext.prototype.handleException=function(){this.state=RETHROW_STATE},{get createGeneratorInstance(){return createGeneratorInstance},get initGeneratorFunction(){return initGeneratorFunction},get asyncWrap(){return asyncWrap}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/asyncWrap.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_generators_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./generators.js","traceur@0.0.107/src/runtime/modules/asyncWrap.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_generators_46_js__.asyncWrap}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/initGeneratorFunction.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_generators_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./generators.js","traceur@0.0.107/src/runtime/modules/initGeneratorFunction.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_generators_46_js__.initGeneratorFunction}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/createGeneratorInstance.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_generators_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./generators.js","traceur@0.0.107/src/runtime/modules/createGeneratorInstance.js"));return{get default(){return $__traceur_64_0_46_0_46_107_47_src_47_runtime_47_modules_47_generators_46_js__.createGeneratorInstance}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/generators.js",[],function(){"use strict";var asyncWrap=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/asyncWrap.js","traceur@0.0.107/src/runtime/generators.js"))["default"],initGeneratorFunction=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/initGeneratorFunction.js","traceur@0.0.107/src/runtime/generators.js"))["default"],createGeneratorInstance=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/createGeneratorInstance.js","traceur@0.0.107/src/runtime/generators.js"))["default"];return $traceurRuntime.asyncWrap=asyncWrap,$traceurRuntime.initGeneratorFunction=initGeneratorFunction,$traceurRuntime.createGeneratorInstance=createGeneratorInstance,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/spawn.js",[],function(){"use strict";function spawn(self,args,gen){return new Promise(function(resolve,reject){function fulfill(v){try{step(gen.next(v))}catch(e){reject(e)}}function rejected(v){try{step(gen["throw"](v))}catch(e){reject(e)}}function step(res){res.done?resolve(res.value):Promise.resolve(res.value).then(fulfill,rejected)}step((gen=gen.apply(self,args)).next())})}var $__default=spawn;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/spawn.js",[],function(){"use strict";var spawn=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/spawn.js","traceur@0.0.107/src/runtime/spawn.js"))["default"];return $traceurRuntime.spawn=spawn,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/getTemplateObject.js",[],function(){"use strict";function getTemplateObject(raw){var cooked=arguments[1],key=raw.join("${}"),templateObject=map[key];return templateObject?templateObject:(cooked||(cooked=slice.call(raw)),map[key]=freeze(defineProperty(cooked,"raw",{value:freeze(raw)})))}var $__1=Object,defineProperty=$__1.defineProperty,freeze=$__1.freeze,slice=Array.prototype.slice,map=Object.create(null),$__default=getTemplateObject;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/template.js",[],function(){"use strict";var getTemplateObject=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/getTemplateObject.js","traceur@0.0.107/src/runtime/template.js"))["default"];return $traceurRuntime.getTemplateObject=getTemplateObject,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/modules/spreadProperties.js",[],function(){"use strict";function createDataProperty(o,p,v){defineProperty(o,p,{configurable:!0,enumerable:!0,value:v,writable:!0})}function copyDataProperties(target,source){if(null!=source){var copy=function(keys){for(var i=0;i<keys.length;i++){var nextKey=keys[i];if(propertyIsEnumerable.call(source,nextKey)){var propValue=source[nextKey];createDataProperty(target,nextKey,propValue)}}};copy(getOwnPropertyNames(source)),copy(getOwnPropertySymbols(source))}}var $__1=Object,defineProperty=$__1.defineProperty,getOwnPropertyNames=$__1.getOwnPropertyNames,getOwnPropertySymbols=$__1.getOwnPropertySymbols,propertyIsEnumerable=$__1.propertyIsEnumerable,$__default=function(){for(var target=arguments[0],i=1;i<arguments.length;i++)copyDataProperties(target,arguments[i]);return target};return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/jsx.js",[],function(){"use strict";var spreadProperties=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./modules/spreadProperties.js","traceur@0.0.107/src/runtime/jsx.js"))["default"];return $traceurRuntime.spreadProperties=spreadProperties,{}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/runtime-modules.js",[],function(){"use strict";return $traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./symbols.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./classes.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./exportStar.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./properTailCalls.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./relativeRequire.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./spread.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./destructuring.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./async.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./generators.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./spawn.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./template.js","traceur@0.0.107/src/runtime/runtime-modules.js")),$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./jsx.js","traceur@0.0.107/src/runtime/runtime-modules.js")),{}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/runtime-modules.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/frozen-data.js",[],function(){"use strict";function findIndex(arr,key){for(var i=0;i<arr.length;i+=2)if(arr[i]===key)return i;return-1}function setFrozen(arr,key,val){var i=findIndex(arr,key);i===-1&&arr.push(key,val)}function getFrozen(arr,key){var i=findIndex(arr,key);if(i!==-1)return arr[i+1]}function hasFrozen(arr,key){return findIndex(arr,key)!==-1}function deleteFrozen(arr,key){var i=findIndex(arr,key);return i!==-1&&(arr.splice(i,2),!0)}return{get setFrozen(){return setFrozen},get getFrozen(){return getFrozen},get hasFrozen(){return hasFrozen},get deleteFrozen(){return deleteFrozen}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/utils.js",[],function(){"use strict";function toObject(x){if(null==x)throw $TypeError();return $Object(x)}function toUint32(x){return x>>>0}function isObject(x){return x&&("object"==typeof x||"function"==typeof x)}function isCallable(x){return"function"==typeof x}function isNumber(x){return"number"==typeof x}function toInteger(x){return x=+x,$isNaN(x)?0:0!==x&&$isFinite(x)?x>0?$floor(x):$ceil(x):x}function toLength(x){var len=toInteger(x);return len<0?0:$min(len,MAX_SAFE_LENGTH)}function checkIterable(x){return isObject(x)?x[Symbol.iterator]:void 0}function isConstructor(x){return isCallable(x)}function createIteratorResultObject(value,done){return{value:value,done:done}}function maybeDefine(object,name,descr){name in object||Object.defineProperty(object,name,descr)}function maybeDefineMethod(object,name,value){maybeDefine(object,name,{value:value,configurable:!0,enumerable:!1,writable:!0})}function maybeDefineConst(object,name,value){maybeDefine(object,name,{value:value,configurable:!1,enumerable:!1,writable:!1})}function maybeAddFunctions(object,functions){for(var i=0;i<functions.length;i+=2){var name=functions[i],value=functions[i+1];maybeDefineMethod(object,name,value)}}function maybeAddConsts(object,consts){for(var i=0;i<consts.length;i+=2){var name=consts[i],value=consts[i+1];maybeDefineConst(object,name,value)}}function maybeAddIterator(object,func,Symbol){Symbol&&Symbol.iterator&&!object[Symbol.iterator]&&(object["@@iterator"]&&(func=object["@@iterator"]),Object.defineProperty(object,Symbol.iterator,{value:func,configurable:!0,enumerable:!1,writable:!0}))}function registerPolyfill(func){polyfills.push(func)}function polyfillAll(global){polyfills.forEach(function(f){return f(global)})}var $ceil=Math.ceil,$floor=Math.floor,$isFinite=isFinite,$isNaN=isNaN,$pow=Math.pow,$min=Math.min,$TypeError=TypeError,$Object=Object,MAX_SAFE_LENGTH=$pow(2,53)-1,polyfills=[];return{get toObject(){return toObject},get toUint32(){return toUint32},get isObject(){return isObject},get isCallable(){return isCallable},get isNumber(){return isNumber},get toInteger(){return toInteger},get toLength(){return toLength},get checkIterable(){return checkIterable},get isConstructor(){return isConstructor},get createIteratorResultObject(){return createIteratorResultObject},get maybeDefine(){return maybeDefine},get maybeDefineMethod(){return maybeDefineMethod},get maybeDefineConst(){return maybeDefineConst},get maybeAddFunctions(){return maybeAddFunctions},get maybeAddConsts(){return maybeAddConsts},get maybeAddIterator(){return maybeAddIterator},get registerPolyfill(){return registerPolyfill},get polyfillAll(){return polyfillAll}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/Map.js",[],function(){"use strict";function getHashCodeForObject(obj){return getPrivate(obj,hashCodeName)}function getOrSetHashCodeForObject(obj){var hash=getHashCodeForObject(obj);return hash||(hash=counter++,setPrivate(obj,hashCodeName,hash)),hash}function lookupIndex(map,key){if("string"==typeof key)return map.stringIndex_[key];if(isObject(key)){if(!isExtensible(key))return getFrozen(map.frozenData_,key);var hc=getHashCodeForObject(key);if(void 0===hc)return;return map.objectIndex_[hc]}return map.primitiveIndex_[key]}function initMap(map){map.entries_=[],map.objectIndex_=Object.create(null),map.stringIndex_=Object.create(null),map.primitiveIndex_=Object.create(null),map.frozenData_=[],map.deletedCount_=0}function needsPolyfill(global){var $__10=global,Map=$__10.Map,Symbol=$__10.Symbol;if(!(Map&&hasNativeSymbol()&&Map.prototype[Symbol.iterator]&&Map.prototype.entries))return!0;try{return 1!==new Map([[]]).size}catch(e){return!1}}function polyfillMap(global){needsPolyfill(global)&&(global.Map=Map)}var $__16=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../private.js","traceur@0.0.107/src/runtime/polyfills/Map.js")),createPrivateSymbol=$__16.createPrivateSymbol,getPrivate=$__16.getPrivate,setPrivate=$__16.setPrivate,$__17=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../frozen-data.js","traceur@0.0.107/src/runtime/polyfills/Map.js")),deleteFrozen=$__17.deleteFrozen,getFrozen=$__17.getFrozen,setFrozen=$__17.setFrozen,$__18=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/Map.js")),isObject=$__18.isObject,registerPolyfill=$__18.registerPolyfill,hasNativeSymbol=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../has-native-symbols.js","traceur@0.0.107/src/runtime/polyfills/Map.js"))["default"],$__9=Object,defineProperty=$__9.defineProperty,hasOwnProperty=($__9.getOwnPropertyDescriptor,$__9.hasOwnProperty),isExtensible=$__9.isExtensible,deletedSentinel={},counter=1,hashCodeName=createPrivateSymbol(),Map=function(){function Map(){var $__11,$__12,iterable=arguments[0];if(!isObject(this))throw new TypeError("Map called on incompatible type");if(hasOwnProperty.call(this,"entries_"))throw new TypeError("Map can not be reentrantly initialised");if(initMap(this),null!==iterable&&void 0!==iterable){var $__5=!0,$__6=!1,$__7=void 0;try{for(var $__3=void 0,$__2=iterable[Symbol.iterator]();!($__5=($__3=$__2.next()).done);$__5=!0){var $__10=$__3.value,key=($__11=$__10[Symbol.iterator](),($__12=$__11.next()).done?void 0:$__12.value),value=($__12=$__11.next()).done?void 0:$__12.value;this.set(key,value)}}catch($__8){$__6=!0,$__7=$__8}finally{try{$__5||null==$__2["return"]||$__2["return"]()}finally{if($__6)throw $__7}}}}return $traceurRuntime.createClass(Map,{get size(){return this.entries_.length/2-this.deletedCount_},get:function(key){var index=lookupIndex(this,key);if(void 0!==index)return this.entries_[index+1]},set:function(key,value){var index=lookupIndex(this,key);if(void 0!==index)this.entries_[index+1]=value;else if(index=this.entries_.length,this.entries_[index]=key,this.entries_[index+1]=value,isObject(key))if(isExtensible(key)){var hash=getOrSetHashCodeForObject(key);this.objectIndex_[hash]=index}else setFrozen(this.frozenData_,key,index);else"string"==typeof key?this.stringIndex_[key]=index:this.primitiveIndex_[key]=index;return this},has:function(key){return void 0!==lookupIndex(this,key)},"delete":function(key){var index=lookupIndex(this,key);if(void 0===index)return!1;if(this.entries_[index]=deletedSentinel,this.entries_[index+1]=void 0,this.deletedCount_++,isObject(key))if(isExtensible(key)){var hash=getHashCodeForObject(key);delete this.objectIndex_[hash]}else deleteFrozen(this.frozenData_,key);else"string"==typeof key?delete this.stringIndex_[key]:delete this.primitiveIndex_[key];return!0},clear:function(){initMap(this)},forEach:function(callbackFn){for(var thisArg=arguments[1],i=0;i<this.entries_.length;i+=2){var key=this.entries_[i],value=this.entries_[i+1];key!==deletedSentinel&&callbackFn.call(thisArg,value,key,this)}},entries:$traceurRuntime.initGeneratorFunction(function $__13(){var i,key,value;return $traceurRuntime.createGeneratorInstance(function($ctx){for(;;)switch($ctx.state){case 0:i=0,$ctx.state=12;break;case 12:$ctx.state=i<this.entries_.length?8:-2;break;case 4:i+=2,$ctx.state=12;break;case 8:key=this.entries_[i],value=this.entries_[i+1],$ctx.state=9;break;case 9:$ctx.state=key===deletedSentinel?4:6;break;case 6:return $ctx.state=2,[key,value];case 2:$ctx.maybeThrow(),$ctx.state=4;break;default:return $ctx.end()}},$__13,this)}),keys:$traceurRuntime.initGeneratorFunction(function $__14(){var i,key,value;return $traceurRuntime.createGeneratorInstance(function($ctx){for(;;)switch($ctx.state){case 0:i=0,$ctx.state=12;break;case 12:$ctx.state=i<this.entries_.length?8:-2;break;case 4:i+=2,$ctx.state=12;break;case 8:key=this.entries_[i],value=this.entries_[i+1],$ctx.state=9;break;case 9:$ctx.state=key===deletedSentinel?4:6;break;case 6:return $ctx.state=2,key;case 2:$ctx.maybeThrow(),$ctx.state=4;break;default:return $ctx.end()}},$__14,this)}),values:$traceurRuntime.initGeneratorFunction(function $__15(){var i,key,value;return $traceurRuntime.createGeneratorInstance(function($ctx){for(;;)switch($ctx.state){case 0:i=0,$ctx.state=12;break;case 12:$ctx.state=i<this.entries_.length?8:-2;break;case 4:i+=2,$ctx.state=12;break;case 8:key=this.entries_[i],value=this.entries_[i+1],$ctx.state=9;break;case 9:$ctx.state=key===deletedSentinel?4:6;break;case 6:return $ctx.state=2,value;case 2:$ctx.maybeThrow(),$ctx.state=4;break;default:return $ctx.end()}},$__15,this)})},{})}();return defineProperty(Map.prototype,Symbol.iterator,{configurable:!0,writable:!0,value:Map.prototype.entries}),registerPolyfill(polyfillMap),{get Map(){return Map},get polyfillMap(){return polyfillMap}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/Map.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/Set.js",[],function(){"use strict";function needsPolyfill(global){var $__11=global,Set=$__11.Set,Symbol=$__11.Symbol;if(!(Set&&hasNativeSymbol()&&Set.prototype[Symbol.iterator]&&Set.prototype.values))return!0;try{return 1!==new Set([1]).size}catch(e){return!1}}function polyfillSet(global){needsPolyfill(global)&&(global.Set=Set)}var $__18=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/Set.js")),isObject=$__18.isObject,registerPolyfill=$__18.registerPolyfill,Map=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Map.js","traceur@0.0.107/src/runtime/polyfills/Set.js")).Map,hasNativeSymbol=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../has-native-symbols.js","traceur@0.0.107/src/runtime/polyfills/Set.js"))["default"],hasOwnProperty=Object.prototype.hasOwnProperty,Set=function(){function Set(){var iterable=arguments[0];if(!isObject(this))throw new TypeError("Set called on incompatible type");if(hasOwnProperty.call(this,"map_"))throw new TypeError("Set can not be reentrantly initialised");if(this.map_=new Map,null!==iterable&&void 0!==iterable){var $__6=!0,$__7=!1,$__8=void 0;try{for(var $__4=void 0,$__3=iterable[Symbol.iterator]();!($__6=($__4=$__3.next()).done);$__6=!0){var item=$__4.value;this.add(item)}}catch($__9){$__7=!0,$__8=$__9}finally{try{$__6||null==$__3["return"]||$__3["return"]()}finally{if($__7)throw $__8}}}}return $traceurRuntime.createClass(Set,{get size(){return this.map_.size},has:function(key){return this.map_.has(key)},add:function(key){return this.map_.set(key,key),this},"delete":function(key){return this.map_["delete"](key)},clear:function(){return this.map_.clear()},forEach:function(callbackFn){var thisArg=arguments[1],$__2=this;return this.map_.forEach(function(value,key){callbackFn.call(thisArg,key,key,$__2)})},values:$traceurRuntime.initGeneratorFunction(function $__12(){var $__13,$__14;return $traceurRuntime.createGeneratorInstance(function($ctx){for(;;)switch($ctx.state){case 0:$__13=$ctx.wrapYieldStar(this.map_.keys()[Symbol.iterator]()),$ctx.sent=void 0,$ctx.action="next",$ctx.state=12;break;case 12:$__14=$__13[$ctx.action]($ctx.sentIgnoreThrow),$ctx.state=9;break;case 9:$ctx.state=$__14.done?3:2;break;case 3:$ctx.sent=$__14.value,$ctx.state=-2;break;case 2:return $ctx.state=12,$__14.value;default:return $ctx.end()}},$__12,this)}),entries:$traceurRuntime.initGeneratorFunction(function $__15(){var $__16,$__17;return $traceurRuntime.createGeneratorInstance(function($ctx){for(;;)switch($ctx.state){case 0:$__16=$ctx.wrapYieldStar(this.map_.entries()[Symbol.iterator]()),$ctx.sent=void 0,$ctx.action="next",$ctx.state=12;break;case 12:$__17=$__16[$ctx.action]($ctx.sentIgnoreThrow),$ctx.state=9;break;case 9:$ctx.state=$__17.done?3:2;break;case 3:$ctx.sent=$__17.value,$ctx.state=-2;break;case 2:return $ctx.state=12,$__17.value;default:return $ctx.end()}},$__15,this)})},{})}();return Object.defineProperty(Set.prototype,Symbol.iterator,{configurable:!0,writable:!0,value:Set.prototype.values}),Object.defineProperty(Set.prototype,"keys",{configurable:!0,writable:!0,value:Set.prototype.values}),registerPolyfill(polyfillSet),{get Set(){return Set},get polyfillSet(){return polyfillSet}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/Set.js"),$traceurRuntime.registerModule("traceur@0.0.107/node_modules/rsvp/lib/rsvp/asap.js",[],function(){"use strict";function asap(callback,arg){queue[len]=callback,queue[len+1]=arg,len+=2,2===len&&scheduleFlush()}function useNextTick(){var nextTick=process.nextTick,version=process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/);return Array.isArray(version)&&"0"===version[1]&&"10"===version[2]&&(nextTick=setImmediate),function(){nextTick(flush)}}function useVertxTimer(){return function(){vertxNext(flush)}}function useMutationObserver(){var iterations=0,observer=new BrowserMutationObserver(flush),node=document.createTextNode("");return observer.observe(node,{characterData:!0}),function(){node.data=iterations=++iterations%2}}function useMessageChannel(){var channel=new MessageChannel;return channel.port1.onmessage=flush,function(){channel.port2.postMessage(0)}}function useSetTimeout(){return function(){setTimeout(flush,1)}}function flush(){for(var i=0;i<len;i+=2){var callback=queue[i],arg=queue[i+1];callback(arg),queue[i]=void 0,queue[i+1]=void 0}len=0}function attemptVertex(){try{var r=require,vertx=r("vertx");return vertxNext=vertx.runOnLoop||vertx.runOnContext,useVertxTimer()}catch(e){return useSetTimeout()}}var vertxNext,scheduleFlush,len=0,$__default=({}.toString,asap),browserWindow="undefined"!=typeof window?window:void 0,browserGlobal=browserWindow||{},BrowserMutationObserver=browserGlobal.MutationObserver||browserGlobal.WebKitMutationObserver,isNode="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),isWorker="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,queue=Array(1e3);return scheduleFlush=isNode?useNextTick():BrowserMutationObserver?useMutationObserver():isWorker?useMessageChannel():void 0===browserWindow&&"function"==typeof require?attemptVertex():useSetTimeout(),
{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/Promise.js",[],function(){"use strict";function isPromise(x){return x&&"object"==typeof x&&void 0!==x.status_}function idResolveHandler(x){return x}function idRejectHandler(x){throw x}function chain(promise){var onResolve=void 0!==arguments[1]?arguments[1]:idResolveHandler,onReject=void 0!==arguments[2]?arguments[2]:idRejectHandler,deferred=getDeferred(promise.constructor);switch(promise.status_){case void 0:throw TypeError;case 0:promise.onResolve_.push(onResolve,deferred),promise.onReject_.push(onReject,deferred);break;case 1:promiseEnqueue(promise.value_,[onResolve,deferred]);break;case-1:promiseEnqueue(promise.value_,[onReject,deferred])}return deferred.promise}function getDeferred(C){if(this===$Promise){var promise=promiseInit(new $Promise(promiseRaw));return{promise:promise,resolve:function(x){promiseResolve(promise,x)},reject:function(r){promiseReject(promise,r)}}}var result={};return result.promise=new C(function(resolve,reject){result.resolve=resolve,result.reject=reject}),result}function promiseSet(promise,status,value,onResolve,onReject){return promise.status_=status,promise.value_=value,promise.onResolve_=onResolve,promise.onReject_=onReject,promise}function promiseInit(promise){return promiseSet(promise,0,void 0,[],[])}function promiseResolve(promise,x){promiseDone(promise,1,x,promise.onResolve_)}function promiseReject(promise,r){promiseDone(promise,-1,r,promise.onReject_)}function promiseDone(promise,status,value,reactions){0===promise.status_&&(promiseEnqueue(value,reactions),promiseSet(promise,status,value))}function promiseEnqueue(value,tasks){async(function(){for(var i=0;i<tasks.length;i+=2)promiseHandle(value,tasks[i],tasks[i+1])})}function promiseHandle(value,handler,deferred){try{var result=handler(value);if(result===deferred.promise)throw new TypeError;isPromise(result)?chain(result,deferred.resolve,deferred.reject):deferred.resolve(result)}catch(e){try{deferred.reject(e)}catch(e){}}}function promiseCoerce(constructor,x){if(!isPromise(x)&&isObject(x)){var then;try{then=x.then}catch(r){var promise=$PromiseReject.call(constructor,r);return setPrivate(x,thenableSymbol,promise),promise}if("function"==typeof then){var p=getPrivate(x,thenableSymbol);if(p)return p;var deferred=getDeferred(constructor);setPrivate(x,thenableSymbol,deferred.promise);try{then.call(x,deferred.resolve,deferred.reject)}catch(r){deferred.reject(r)}return deferred.promise}}return x}function polyfillPromise(global){global.Promise||(global.Promise=Promise)}var async=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../../node_modules/rsvp/lib/rsvp/asap.js","traceur@0.0.107/src/runtime/polyfills/Promise.js"))["default"],$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/Promise.js")),isObject=$__9.isObject,registerPolyfill=$__9.registerPolyfill,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../private.js","traceur@0.0.107/src/runtime/polyfills/Promise.js")),createPrivateSymbol=$__10.createPrivateSymbol,getPrivate=$__10.getPrivate,setPrivate=$__10.setPrivate,promiseRaw={},Promise=function(){function Promise(resolver){if(resolver!==promiseRaw){if("function"!=typeof resolver)throw new TypeError;var promise=promiseInit(this);try{resolver(function(x){promiseResolve(promise,x)},function(r){promiseReject(promise,r)})}catch(e){promiseReject(promise,e)}}}return $traceurRuntime.createClass(Promise,{"catch":function(onReject){return this.then(void 0,onReject)},then:function(onResolve,onReject){"function"!=typeof onResolve&&(onResolve=idResolveHandler),"function"!=typeof onReject&&(onReject=idRejectHandler);var that=this,constructor=this.constructor;return chain(this,function(x){return x=promiseCoerce(constructor,x),x===that?onReject(new TypeError):isPromise(x)?x.then(onResolve,onReject):onResolve(x)},onReject)}},{resolve:function(x){return this===$Promise?isPromise(x)?x:promiseSet(new $Promise(promiseRaw),1,x):new this(function(resolve,reject){resolve(x)})},reject:function(r){return this===$Promise?promiseSet(new $Promise(promiseRaw),-1,r):new this(function(resolve,reject){reject(r)})},all:function(values){var deferred=getDeferred(this),resolutions=[];try{var makeCountdownFunction=function(i){return function(x){resolutions[i]=x,0===--count&&deferred.resolve(resolutions)}},count=0,i=0,$__4=!0,$__5=!1,$__6=void 0;try{for(var $__2=void 0,$__1=values[Symbol.iterator]();!($__4=($__2=$__1.next()).done);$__4=!0){var value=$__2.value,countdownFunction=makeCountdownFunction(i);this.resolve(value).then(countdownFunction,function(r){deferred.reject(r)}),++i,++count}}catch($__7){$__5=!0,$__6=$__7}finally{try{$__4||null==$__1["return"]||$__1["return"]()}finally{if($__5)throw $__6}}0===count&&deferred.resolve(resolutions)}catch(e){deferred.reject(e)}return deferred.promise},race:function(values){var deferred=getDeferred(this);try{for(var i=0;i<values.length;i++)this.resolve(values[i]).then(function(x){deferred.resolve(x)},function(r){deferred.reject(r)})}catch(e){deferred.reject(e)}return deferred.promise}})}(),$Promise=Promise,$PromiseReject=$Promise.reject,thenableSymbol=createPrivateSymbol();return registerPolyfill(polyfillPromise),{get Promise(){return Promise},get polyfillPromise(){return polyfillPromise}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/Promise.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/StringIterator.js",[],function(){"use strict";function createStringIterator(string){var s=string+"",iterator=Object.create(StringIterator.prototype);return iterator[iteratedString]=s,iterator[stringIteratorNextIndex]=0,iterator}var $__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/StringIterator.js")),createIteratorResultObject=$__3.createIteratorResultObject,isObject=$__3.isObject,hasOwnProperty=Object.prototype.hasOwnProperty,iteratedString=Symbol("iteratedString"),stringIteratorNextIndex=Symbol("stringIteratorNextIndex"),StringIterator=function(){function StringIterator(){}var $__1;return $traceurRuntime.createClass(StringIterator,($__1={},Object.defineProperty($__1,"next",{value:function(){var o=this;if(!isObject(o)||!hasOwnProperty.call(o,iteratedString))throw new TypeError("this must be a StringIterator object");var s=o[iteratedString];if(void 0===s)return createIteratorResultObject(void 0,!0);var position=o[stringIteratorNextIndex],len=s.length;if(position>=len)return o[iteratedString]=void 0,createIteratorResultObject(void 0,!0);var resultString,first=s.charCodeAt(position);if(first<55296||first>56319||position+1===len)resultString=String.fromCharCode(first);else{var second=s.charCodeAt(position+1);resultString=second<56320||second>57343?String.fromCharCode(first):String.fromCharCode(first)+String.fromCharCode(second)}return o[stringIteratorNextIndex]=position+resultString.length,createIteratorResultObject(resultString,!1)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty($__1,Symbol.iterator,{value:function(){return this},configurable:!0,enumerable:!0,writable:!0}),$__1),{})}();return{get createStringIterator(){return createStringIterator}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/String.js",[],function(){"use strict";function startsWith(search){var string=this+"";if(null==this||"[object RegExp]"==$toString.call(search))throw TypeError();var stringLength=string.length,searchString=search+"",position=(searchString.length,arguments.length>1?arguments[1]:void 0),pos=position?+position:0;isNaN(pos)&&(pos=0);var start=Math.min(Math.max(pos,0),stringLength);return $indexOf.call(string,searchString,pos)==start}function endsWith(search){var string=this+"";if(null==this||"[object RegExp]"==$toString.call(search))throw TypeError();var stringLength=string.length,searchString=search+"",searchLength=searchString.length,pos=stringLength;if(arguments.length>1){var position=arguments[1];void 0!==position&&(pos=position?+position:0,isNaN(pos)&&(pos=0))}var end=Math.min(Math.max(pos,0),stringLength),start=end-searchLength;return!(start<0)&&$lastIndexOf.call(string,searchString,start)==start}function includes(search){if(null==this)throw TypeError();var string=this+"";if(search&&"[object RegExp]"==$toString.call(search))throw TypeError();var stringLength=string.length,searchString=search+"",searchLength=searchString.length,position=arguments.length>1?arguments[1]:void 0,pos=position?+position:0;pos!=pos&&(pos=0);var start=Math.min(Math.max(pos,0),stringLength);return!(searchLength+start>stringLength)&&$indexOf.call(string,searchString,pos)!=-1}function repeat(count){if(null==this)throw TypeError();var string=this+"",n=count?+count:0;if(isNaN(n)&&(n=0),n<0||n==1/0)throw RangeError();if(0==n)return"";for(var result="";n--;)result+=string;return result}function codePointAt(position){if(null==this)throw TypeError();var string=this+"",size=string.length,index=position?+position:0;if(isNaN(index)&&(index=0),!(index<0||index>=size)){var second,first=string.charCodeAt(index);return first>=55296&&first<=56319&&size>index+1&&(second=string.charCodeAt(index+1),second>=56320&&second<=57343)?1024*(first-55296)+second-56320+65536:first}}function raw(callsite){var raw=callsite.raw,len=raw.length>>>0;if(0===len)return"";for(var s="",i=0;;){if(s+=raw[i],i+1===len)return s;s+=arguments[++i]}}function fromCodePoint(_){var highSurrogate,lowSurrogate,codeUnits=[],floor=Math.floor,index=-1,length=arguments.length;if(!length)return"";for(;++index<length;){var codePoint=+arguments[index];if(!isFinite(codePoint)||codePoint<0||codePoint>1114111||floor(codePoint)!=codePoint)throw RangeError("Invalid code point: "+codePoint);codePoint<=65535?codeUnits.push(codePoint):(codePoint-=65536,highSurrogate=(codePoint>>10)+55296,lowSurrogate=codePoint%1024+56320,codeUnits.push(highSurrogate,lowSurrogate))}return String.fromCharCode.apply(null,codeUnits)}function stringPrototypeIterator(){var o=checkObjectCoercible(this),s=o+"";return createStringIterator(s)}function polyfillString(global){var String=global.String;maybeAddFunctions(String.prototype,["codePointAt",codePointAt,"endsWith",endsWith,"includes",includes,"repeat",repeat,"startsWith",startsWith]),maybeAddFunctions(String,["fromCodePoint",fromCodePoint,"raw",raw]),maybeAddIterator(String.prototype,stringPrototypeIterator,Symbol)}var checkObjectCoercible=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../checkObjectCoercible.js","traceur@0.0.107/src/runtime/polyfills/String.js"))["default"],createStringIterator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./StringIterator.js","traceur@0.0.107/src/runtime/polyfills/String.js")).createStringIterator,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/String.js")),maybeAddFunctions=$__3.maybeAddFunctions,maybeAddIterator=$__3.maybeAddIterator,registerPolyfill=$__3.registerPolyfill,$toString=Object.prototype.toString,$indexOf=String.prototype.indexOf,$lastIndexOf=String.prototype.lastIndexOf;return registerPolyfill(polyfillString),{get startsWith(){return startsWith},get endsWith(){return endsWith},get includes(){return includes},get repeat(){return repeat},get codePointAt(){return codePointAt},get raw(){return raw},get fromCodePoint(){return fromCodePoint},get stringPrototypeIterator(){return stringPrototypeIterator},get polyfillString(){return polyfillString}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/String.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/ArrayIterator.js",[],function(){"use strict";function createArrayIterator(array,kind){var object=toObject(array),iterator=new ArrayIterator;return iterator.iteratorObject_=object,iterator.arrayIteratorNextIndex_=0,iterator.arrayIterationKind_=kind,iterator}function entries(){return createArrayIterator(this,ARRAY_ITERATOR_KIND_ENTRIES)}function keys(){return createArrayIterator(this,ARRAY_ITERATOR_KIND_KEYS)}function values(){return createArrayIterator(this,ARRAY_ITERATOR_KIND_VALUES)}var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/ArrayIterator.js")),toObject=$__2.toObject,toUint32=$__2.toUint32,createIteratorResultObject=$__2.createIteratorResultObject,ARRAY_ITERATOR_KIND_KEYS=1,ARRAY_ITERATOR_KIND_VALUES=2,ARRAY_ITERATOR_KIND_ENTRIES=3,ArrayIterator=function(){function ArrayIterator(){}var $__1;return $traceurRuntime.createClass(ArrayIterator,($__1={},Object.defineProperty($__1,"next",{value:function(){var iterator=toObject(this),array=iterator.iteratorObject_;if(!array)throw new TypeError("Object is not an ArrayIterator");var index=iterator.arrayIteratorNextIndex_,itemKind=iterator.arrayIterationKind_,length=toUint32(array.length);return index>=length?(iterator.arrayIteratorNextIndex_=1/0,createIteratorResultObject(void 0,!0)):(iterator.arrayIteratorNextIndex_=index+1,itemKind==ARRAY_ITERATOR_KIND_VALUES?createIteratorResultObject(array[index],!1):itemKind==ARRAY_ITERATOR_KIND_ENTRIES?createIteratorResultObject([index,array[index]],!1):createIteratorResultObject(index,!1))},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty($__1,Symbol.iterator,{value:function(){return this},configurable:!0,enumerable:!0,writable:!0}),$__1),{})}();return{get entries(){return entries},get keys(){return keys},get values(){return values}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/Array.js",[],function(){"use strict";function from(arrLike){var arr,len,mapFn=arguments[1],thisArg=arguments[2],C=this,items=toObject(arrLike),mapping=void 0!==mapFn,k=0;if(mapping&&!isCallable(mapFn))throw TypeError();if(checkIterable(items)){arr=isConstructor(C)?new C:[];var $__3=!0,$__4=!1,$__5=void 0;try{for(var $__1=void 0,$__0=items[Symbol.iterator]();!($__3=($__1=$__0.next()).done);$__3=!0){var item=$__1.value;mapping?arr[k]=mapFn.call(thisArg,item,k):arr[k]=item,k++}}catch($__6){$__4=!0,$__5=$__6}finally{try{$__3||null==$__0["return"]||$__0["return"]()}finally{if($__4)throw $__5}}return arr.length=k,arr}for(len=toLength(items.length),arr=isConstructor(C)?new C(len):Array(len);k<len;k++)mapping?arr[k]=void 0===thisArg?mapFn(items[k],k):mapFn.call(thisArg,items[k],k):arr[k]=items[k];return arr.length=len,arr}function of(){for(var items=[],$__7=0;$__7<arguments.length;$__7++)items[$__7]=arguments[$__7];for(var C=this,len=items.length,arr=isConstructor(C)?new C(len):Array(len),k=0;k<len;k++)arr[k]=items[k];return arr.length=len,arr}function fill(value){var start=void 0!==arguments[1]?arguments[1]:0,end=arguments[2],object=toObject(this),len=toLength(object.length),fillStart=toInteger(start),fillEnd=void 0!==end?toInteger(end):len;for(fillStart=fillStart<0?Math.max(len+fillStart,0):Math.min(fillStart,len),fillEnd=fillEnd<0?Math.max(len+fillEnd,0):Math.min(fillEnd,len);fillStart<fillEnd;)object[fillStart]=value,fillStart++;return object}function find(predicate){var thisArg=arguments[1];return findHelper(this,predicate,thisArg)}function findIndex(predicate){var thisArg=arguments[1];return findHelper(this,predicate,thisArg,!0)}function findHelper(self,predicate){var thisArg=arguments[2],returnIndex=void 0!==arguments[3]&&arguments[3],object=toObject(self),len=toLength(object.length);if(!isCallable(predicate))throw TypeError();for(var i=0;i<len;i++){var value=object[i];if(predicate.call(thisArg,value,i,object))return returnIndex?i:value}return returnIndex?-1:void 0}function polyfillArray(global){var $__8=global,Array=$__8.Array,Object=$__8.Object,Symbol=$__8.Symbol,values=jsValues;Symbol&&Symbol.iterator&&Array.prototype[Symbol.iterator]&&(values=Array.prototype[Symbol.iterator]),maybeAddFunctions(Array.prototype,["entries",entries,"keys",keys,"values",values,"fill",fill,"find",find,"findIndex",findIndex]),maybeAddFunctions(Array,["from",from,"of",of]),maybeAddIterator(Array.prototype,values,Symbol),maybeAddIterator(Object.getPrototypeOf([].values()),function(){return this},Symbol)}var $__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ArrayIterator.js","traceur@0.0.107/src/runtime/polyfills/Array.js")),entries=$__9.entries,keys=$__9.keys,jsValues=$__9.values,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/Array.js")),checkIterable=$__10.checkIterable,isCallable=$__10.isCallable,isConstructor=$__10.isConstructor,maybeAddFunctions=$__10.maybeAddFunctions,maybeAddIterator=$__10.maybeAddIterator,registerPolyfill=$__10.registerPolyfill,toInteger=$__10.toInteger,toLength=$__10.toLength,toObject=$__10.toObject;return registerPolyfill(polyfillArray),{get from(){return from},get of(){return of},get fill(){return fill},get find(){return find},get findIndex(){return findIndex},get polyfillArray(){return polyfillArray}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/Array.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/assign.js",[],function(){"use strict";function assign(target){for(var i=1;i<arguments.length;i++){var source=arguments[i],props=null==source?[]:keys(source),p=void 0,length=props.length;for(p=0;p<length;p++){var name=props[p];target[name]=source[name]}}return target}var keys=Object.keys,$__default=assign;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/Object.js",[],function(){"use strict";function is(left,right){return left===right?0!==left||1/left===1/right:left!==left&&right!==right}function mixin(target,source){var p,descriptor,props=getOwnPropertyNames(source),length=props.length;for(p=0;p<length;p++){props[p];descriptor=getOwnPropertyDescriptor(source,props[p]),defineProperty(target,props[p],descriptor)}return target}function polyfillObject(global){var Object=global.Object;maybeAddFunctions(Object,["assign",assign,"is",is,"mixin",mixin])}var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/Object.js")),maybeAddFunctions=$__2.maybeAddFunctions,registerPolyfill=$__2.registerPolyfill,assign=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./assign.js","traceur@0.0.107/src/runtime/polyfills/Object.js"))["default"],$__0=Object,defineProperty=$__0.defineProperty,getOwnPropertyDescriptor=$__0.getOwnPropertyDescriptor,getOwnPropertyNames=$__0.getOwnPropertyNames;return registerPolyfill(polyfillObject),{get assign(){return assign},get is(){return is},get mixin(){return mixin},get polyfillObject(){return polyfillObject}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/Object.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/Number.js",[],function(){"use strict";function NumberIsFinite(number){return isNumber(number)&&$isFinite(number)}function isInteger(number){return NumberIsFinite(number)&&toInteger(number)===number}function NumberIsNaN(number){return isNumber(number)&&$isNaN(number)}function isSafeInteger(number){if(NumberIsFinite(number)){var integral=toInteger(number);if(integral===number)return $abs(integral)<=MAX_SAFE_INTEGER}return!1}function polyfillNumber(global){var Number=global.Number;maybeAddConsts(Number,["MAX_SAFE_INTEGER",MAX_SAFE_INTEGER,"MIN_SAFE_INTEGER",MIN_SAFE_INTEGER,"EPSILON",EPSILON]),maybeAddFunctions(Number,["isFinite",NumberIsFinite,"isInteger",isInteger,"isNaN",NumberIsNaN,"isSafeInteger",isSafeInteger])}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/Number.js")),isNumber=$__1.isNumber,maybeAddConsts=$__1.maybeAddConsts,maybeAddFunctions=$__1.maybeAddFunctions,registerPolyfill=$__1.registerPolyfill,toInteger=$__1.toInteger,$abs=Math.abs,$isFinite=isFinite,$isNaN=isNaN,MAX_SAFE_INTEGER=Math.pow(2,53)-1,MIN_SAFE_INTEGER=-Math.pow(2,53)+1,EPSILON=Math.pow(2,-52);return registerPolyfill(polyfillNumber),{get MAX_SAFE_INTEGER(){return MAX_SAFE_INTEGER},get MIN_SAFE_INTEGER(){return MIN_SAFE_INTEGER},get EPSILON(){return EPSILON},get isFinite(){return NumberIsFinite},get isInteger(){return isInteger},get isNaN(){return NumberIsNaN},get isSafeInteger(){return isSafeInteger},get polyfillNumber(){return polyfillNumber}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/Number.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/fround.js",[],function(){"use strict";function packIEEE754(v,ebits,fbits){function roundToEven(n){var w=floor(n),f=n-w;return f<.5?w:f>.5?w+1:w%2?w+1:w}var s,e,f,i,bits,str,bytes,bias=(1<<ebits-1)-1;for(v!==v?(e=(1<<ebits)-1,f=pow(2,fbits-1),s=0):v===1/0||v===-(1/0)?(e=(1<<ebits)-1,f=0,s=v<0?1:0):0===v?(e=0,f=0,s=1/v===-(1/0)?1:0):(s=v<0,v=abs(v),v>=pow(2,1-bias)?(e=min(floor(log(v)/LN2),1023),f=roundToEven(v/pow(2,e)*pow(2,fbits)),f/pow(2,fbits)>=2&&(e+=1,f=1),e>bias?(e=(1<<ebits)-1,f=0):(e+=bias,f-=pow(2,fbits))):(e=0,f=roundToEven(v/pow(2,1-bias-fbits)))),bits=[],i=fbits;i;i-=1)bits.push(f%2?1:0),f=floor(f/2);for(i=ebits;i;i-=1)bits.push(e%2?1:0),e=floor(e/2);for(bits.push(s?1:0),bits.reverse(),str=bits.join(""),bytes=[];str.length;)bytes.push(parseInt(str.substring(0,8),2)),str=str.substring(8);return bytes}function unpackIEEE754(bytes,ebits,fbits){var i,j,b,str,bias,s,e,f,bits=[];for(i=bytes.length;i;i-=1)for(b=bytes[i-1],j=8;j;j-=1)bits.push(b%2?1:0),b>>=1;return bits.reverse(),str=bits.join(""),bias=(1<<ebits-1)-1,s=parseInt(str.substring(0,1),2)?-1:1,e=parseInt(str.substring(1,1+ebits),2),f=parseInt(str.substring(1+ebits),2),e===(1<<ebits)-1?0!==f?NaN:s*(1/0):e>0?s*pow(2,e-bias)*(1+f/pow(2,fbits)):0!==f?s*pow(2,-(bias-1))*(f/pow(2,fbits)):s<0?-0:0}function unpackF32(b){return unpackIEEE754(b,8,23)}function packF32(v){return packIEEE754(v,8,23)}function fround(x){return 0===x||!$isFinite(x)||$isNaN(x)?x:unpackF32(packF32(+x))}var $isFinite=isFinite,$isNaN=isNaN,$__0=Math,LN2=$__0.LN2,abs=$__0.abs,floor=$__0.floor,log=$__0.log,min=$__0.min,pow=$__0.pow;return{get fround(){return fround}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/Math.js",[],function(){"use strict";function clz32(x){if(x=toUint32(+x),0==x)return 32;var result=0;return 0===(4294901760&x)&&(x<<=16,result+=16),0===(4278190080&x)&&(x<<=8,result+=8),0===(4026531840&x)&&(x<<=4,result+=4),0===(3221225472&x)&&(x<<=2,result+=2),0===(2147483648&x)&&(x<<=1,result+=1),result}function imul(x,y){x=toUint32(+x),y=toUint32(+y);var xh=x>>>16&65535,xl=65535&x,yh=y>>>16&65535,yl=65535&y;return xl*yl+(xh*yl+xl*yh<<16>>>0)|0}function sign(x){return x=+x,x>0?1:x<0?-1:x}function log10(x){return.4342944819032518*log(x)}function log2(x){return 1.4426950408889634*log(x)}function log1p(x){if(x=+x,x<-1||$isNaN(x))return NaN;if(0===x||x===1/0)return x;if(x===-1)return-(1/0);var result=0,n=50;if(x<0||x>1)return log(1+x);for(var i=1;i<n;i++)i%2===0?result-=pow(x,i)/i:result+=pow(x,i)/i;return result}function expm1(x){return x=+x,x===-(1/0)?-1:$isFinite(x)&&0!==x?exp(x)-1:x}function cosh(x){return x=+x,0===x?1:$isNaN(x)?NaN:$isFinite(x)?(x<0&&(x=-x),x>21?exp(x)/2:(exp(x)+exp(-x))/2):1/0}function sinh(x){return x=+x,$isFinite(x)&&0!==x?(exp(x)-exp(-x))/2:x}function tanh(x){if(x=+x,0===x)return x;if(!$isFinite(x))return sign(x);var exp1=exp(x),exp2=exp(-x);return(exp1-exp2)/(exp1+exp2)}function acosh(x){return x=+x,x<1?NaN:$isFinite(x)?log(x+sqrt(x+1)*sqrt(x-1)):x}function asinh(x){return x=+x,0!==x&&$isFinite(x)?x>0?log(x+sqrt(x*x+1)):-log(-x+sqrt(x*x+1)):x}function atanh(x){return x=+x,x===-1?-(1/0):1===x?1/0:0===x?x:$isNaN(x)||x<-1||x>1?NaN:.5*log((1+x)/(1-x))}function hypot(x,y){for(var length=arguments.length,args=Array(length),max=0,i=0;i<length;i++){var n=arguments[i];if(n=+n,n===1/0||n===-(1/0))return 1/0;n=abs(n),n>max&&(max=n),args[i]=n}0===max&&(max=1);for(var sum=0,compensation=0,i=0;i<length;i++){var n=args[i]/max,summand=n*n-compensation,preliminary=sum+summand;compensation=preliminary-sum-summand,sum=preliminary}return sqrt(sum)*max}function trunc(x){return x=+x,x>0?floor(x):x<0?ceil(x):x}function cbrt(x){if(x=+x,0===x)return x;var negate=x<0;negate&&(x=-x);var result=pow(x,1/3);return negate?-result:result}function polyfillMath(global){var Math=global.Math;maybeAddFunctions(Math,["acosh",acosh,"asinh",asinh,"atanh",atanh,"cbrt",cbrt,"clz32",clz32,"cosh",cosh,"expm1",expm1,"fround",fround,"hypot",hypot,"imul",imul,"log10",log10,"log1p",log1p,"log2",log2,"sign",sign,"sinh",sinh,"tanh",tanh,"trunc",trunc])}var fround,f32,jsFround=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./fround.js","traceur@0.0.107/src/runtime/polyfills/Math.js")).fround,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/Math.js")),maybeAddFunctions=$__3.maybeAddFunctions,registerPolyfill=$__3.registerPolyfill,toUint32=$__3.toUint32,$isFinite=isFinite,$isNaN=isNaN,$__0=Math,abs=$__0.abs,ceil=$__0.ceil,exp=$__0.exp,floor=$__0.floor,log=$__0.log,pow=$__0.pow,sqrt=$__0.sqrt;return"function"==typeof Float32Array?(f32=new Float32Array(1),fround=function(x){return f32[0]=+x,f32[0]}):fround=jsFround,registerPolyfill(polyfillMath),{get clz32(){return clz32},get imul(){return imul},get sign(){return sign},get log10(){return log10},get log2(){return log2},get log1p(){return log1p},get expm1(){return expm1},get cosh(){return cosh},get sinh(){return sinh},get tanh(){return tanh},get acosh(){return acosh},get asinh(){return asinh},get atanh(){return atanh},get hypot(){return hypot},get trunc(){return trunc},get fround(){return fround},get cbrt(){return cbrt},get polyfillMath(){return polyfillMath}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/Math.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/WeakMap.js",[],function(){"use strict";function needsPolyfill(global){var $__4=global,WeakMap=$__4.WeakMap;$__4.Symbol;if(!WeakMap||!hasNativeSymbol())return!0;try{var o={},wm=new WeakMap([[o,!1]]);return wm.get(o)}catch(e){return!1}}function polyfillWeakMap(global){needsPolyfill(global)&&(global.WeakMap=WeakMap)}var $__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../private.js","traceur@0.0.107/src/runtime/polyfills/WeakMap.js")),createPrivateSymbol=$__5.createPrivateSymbol,deletePrivate=$__5.deletePrivate,getPrivate=$__5.getPrivate,hasPrivate=$__5.hasPrivate,setPrivate=$__5.setPrivate,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../frozen-data.js","traceur@0.0.107/src/runtime/polyfills/WeakMap.js")),deleteFrozen=$__6.deleteFrozen,getFrozen=$__6.getFrozen,hasFrozen=$__6.hasFrozen,setFrozen=$__6.setFrozen,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/WeakMap.js")),isObject=$__7.isObject,registerPolyfill=$__7.registerPolyfill,hasNativeSymbol=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../has-native-symbols.js","traceur@0.0.107/src/runtime/polyfills/WeakMap.js"))["default"],$__2=Object,isExtensible=($__2.defineProperty,$__2.getOwnPropertyDescriptor,$__2.isExtensible),$TypeError=TypeError,WeakMap=(Object.prototype.hasOwnProperty,function(){function WeakMap(){this.name_=createPrivateSymbol(),this.frozenData_=[]}return $traceurRuntime.createClass(WeakMap,{set:function(key,value){if(!isObject(key))throw new $TypeError("key must be an object");return isExtensible(key)?setPrivate(key,this.name_,value):setFrozen(this.frozenData_,key,value),this},get:function(key){if(isObject(key))return isExtensible(key)?getPrivate(key,this.name_):getFrozen(this.frozenData_,key)},"delete":function(key){return!!isObject(key)&&(isExtensible(key)?deletePrivate(key,this.name_):deleteFrozen(this.frozenData_,key))},has:function(key){return!!isObject(key)&&(isExtensible(key)?hasPrivate(key,this.name_):hasFrozen(this.frozenData_,key))}},{})}());return registerPolyfill(polyfillWeakMap),{get WeakMap(){return WeakMap},get polyfillWeakMap(){return polyfillWeakMap}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/WeakMap.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/WeakSet.js",[],function(){"use strict";function needsPolyfill(global){var $__4=global,WeakSet=$__4.WeakSet;$__4.Symbol;if(!WeakSet||!hasNativeSymbol())return!0;try{var o={},wm=new WeakSet([[o]]);return!wm.has(o)}catch(e){return!1}}function polyfillWeakSet(global){needsPolyfill(global)&&(global.WeakSet=WeakSet)}var $__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../private.js","traceur@0.0.107/src/runtime/polyfills/WeakSet.js")),createPrivateSymbol=$__5.createPrivateSymbol,deletePrivate=$__5.deletePrivate,hasPrivate=($__5.getPrivate,$__5.hasPrivate),setPrivate=$__5.setPrivate,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../frozen-data.js","traceur@0.0.107/src/runtime/polyfills/WeakSet.js")),deleteFrozen=$__6.deleteFrozen,getFrozen=$__6.getFrozen,setFrozen=$__6.setFrozen,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/WeakSet.js")),isObject=$__7.isObject,registerPolyfill=$__7.registerPolyfill,hasNativeSymbol=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../has-native-symbols.js","traceur@0.0.107/src/runtime/polyfills/WeakSet.js"))["default"],$__2=Object,isExtensible=($__2.defineProperty,$__2.isExtensible),$TypeError=TypeError,WeakSet=(Object.prototype.hasOwnProperty,function(){function WeakSet(){this.name_=createPrivateSymbol(),this.frozenData_=[]}return $traceurRuntime.createClass(WeakSet,{add:function(value){if(!isObject(value))throw new $TypeError("value must be an object");return isExtensible(value)?setPrivate(value,this.name_,!0):setFrozen(this.frozenData_,value,value),this},"delete":function(value){return!!isObject(value)&&(isExtensible(value)?deletePrivate(value,this.name_):deleteFrozen(this.frozenData_,value))},has:function(value){return!!isObject(value)&&(isExtensible(value)?hasPrivate(value,this.name_):getFrozen(this.frozenData_,value)===value)}},{})}());return registerPolyfill(polyfillWeakSet),{get WeakSet(){return WeakSet},get polyfillWeakSet(){return polyfillWeakSet}}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/WeakSet.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/runtime/polyfills/polyfills.js",[],function(){"use strict";var polyfillAll=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./utils.js","traceur@0.0.107/src/runtime/polyfills/polyfills.js")).polyfillAll;polyfillAll(Reflect.global);var setupGlobals=$traceurRuntime.setupGlobals;return $traceurRuntime.setupGlobals=function(global){setupGlobals(global),polyfillAll(global)},{}}),$traceurRuntime.getModule("traceur@0.0.107/src/runtime/polyfills/polyfills.js"),$traceurRuntime.registerModule("traceur@0.0.107/src/util/SourceRange.js",[],function(){"use strict";var SourceRange=function(){function SourceRange(start,end){this.start=start,this.end=end}return $traceurRuntime.createClass(SourceRange,{toString:function(){var str=this.start.source.contents;return str.slice(this.start.offset,this.end.offset)}},{})}();return{get SourceRange(){return SourceRange}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/ErrorReporter.js",[],function(){"use strict";function format(location,text){var args=arguments[2],i=0;return text=text.replace(/%./g,function(s){switch(s){case"%s":return args&&args[i++];case"%%":return"%"}return s}),location&&(text=location+": "+text),text}var ErrorReporter=($traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SourceRange.js","traceur@0.0.107/src/util/ErrorReporter.js")).SourceRange,function(){function ErrorReporter(){this.hadError_=!1}return $traceurRuntime.createClass(ErrorReporter,{reportError:function(location,message){this.hadError_=!0,this.reportMessageInternal(location,message)},reportMessageInternal:function(location,message){
location&&(message=location.start+": "+message),console.error(message)},hadError:function(){return this.hadError_},clearError:function(){this.hadError_=!1}},{})}());return ErrorReporter.format=format,{get ErrorReporter(){return ErrorReporter},get format(){return format}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/MutedErrorReporter.js",[],function(){"use strict";var ErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ErrorReporter.js","traceur@0.0.107/src/util/MutedErrorReporter.js")).ErrorReporter,MutedErrorReporter=function($__super){function MutedErrorReporter(){$traceurRuntime.superConstructor(MutedErrorReporter).apply(this,arguments)}return $traceurRuntime.createClass(MutedErrorReporter,{reportMessageInternal:function(location,format,args){}},{},$__super)}(ErrorReporter);return{get MutedErrorReporter(){return MutedErrorReporter}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/Options.js",[],function(){"use strict";function enumerableOnlyObject(obj){var result=Object.create(null);return Object.keys(obj).forEach(function(key){Object.defineProperty(result,key,{enumerable:!0,value:obj[key]})}),result}function addFeatureOption(name,kind){featureOptions[name]=!0,kind===EXPERIMENTAL&&(experimentalOptions[name]=!0);var defaultValue=kind===ON_BY_DEFAULT;defaultValues[name]=defaultValue}function addBoolOption(name){defaultValues[name]=!1}function coerceOptionValue(v){switch(v){case"false":return!1;case"true":case!0:return!0;default:return!!v&&v+""}}function toCamelCase(s){return s.replace(/-\w/g,function(ch){return ch[1].toUpperCase()})}function toDashCase(s){return s.replace(/[A-Z]/g,function(ch){return"-"+ch.toLowerCase()})}function addOptions(flags,commandOptions){flags.option("--referrer <name>","Bracket output code with System.referrerName=<name>",function(name){return commandOptions.setOption("referrer",name),System.map=System.semverMap(name),name}),flags.option("--modules <"+moduleOptions.join(", ")+">","select the output format for modules",function(moduleFormat){commandOptions.modules=moduleFormat}),flags.option("--moduleName [true|false|default]","true for named, false for anonymous modules; default depends on --modules",function(moduleName){moduleName="true"===moduleName||"false"!==moduleName&&"default",commandOptions.moduleName=moduleName}),flags.option("--outputLanguage <es6|es5>","compilation target language",function(outputLanguage){if("es6"!==outputLanguage&&"es5"!==outputLanguage)throw Error("outputLanguage must be one of es5, es6");commandOptions.outputLanguage=outputLanguage}),flags.option("--source-maps [file|inline|memory]","sourceMaps generated to file or inline with data: URL",function(to){return commandOptions.sourceMaps=to}),flags.option("--source-root <true|false|string>","sourcemap sourceRoot value. false to omit, true for directory of output file.",function(to){return"false"===to?to=!1:"true"===to&&(to=!0),commandOptions.sourceRoot=to}),flags.option("--low-resolution-source-maps","Lower sourceMaps granularity to one mapping per output line",function(){return commandOptions.lowResolutionSourceMap=!0}),flags.option("--experimental","Turns on all experimental features",function(){commandOptions.experimental=!0}),flags.option("--atscript","Turns on all AtScript features",function(){commandOptions.atscript=!0}),Object.keys(commandOptions).forEach(function(name){var dashedName=toDashCase(name);if(!flags.optionFor("--"+name)&&!flags.optionFor("--"+dashedName))if(name in featureOptions)flags.option("--"+dashedName+" [true|false|parse]",descriptions[name]),flags.on(dashedName,function(value){return commandOptions.setOptionCoerced(dashedName,value)});else{if(null===commandOptions[name])throw Error("Unexpected null commandOption "+name);flags.option("--"+dashedName,descriptions[name]),flags.on(dashedName,function(){return commandOptions.setOption(dashedName,!0)})}}),commandOptions.setDefaults()}var optionsV01=enumerableOnlyObject({annotations:!1,arrayComprehension:!1,arrowFunctions:!0,asyncFunctions:!1,asyncGenerators:!1,blockBinding:!0,classes:!0,commentCallback:!1,computedPropertyNames:!0,debug:!1,debugNames:!1,defaultParameters:!0,destructuring:!0,exponentiation:!1,exportFromExtended:!1,forOf:!0,forOn:!1,freeVariableChecker:!1,generatorComprehension:!1,generators:!0,inputSourceMap:!1,jsx:!1,lowResolutionSourceMap:!1,memberVariables:!1,moduleName:"default",modules:"bootstrap",numericLiterals:!0,outputLanguage:"es5",properTailCalls:!1,propertyMethods:!0,propertyNameShorthand:!0,referrer:"",require:!1,restParameters:!0,script:!1,sourceMaps:!1,sourceRoot:!1,spread:!0,spreadProperties:!1,symbols:!0,templateLiterals:!0,types:!1,unicodeEscapeSequences:!0,unicodeExpressions:!0,validate:!1}),versionLockedOptions=optionsV01,defaultValues=Object.create(null),featureOptions=Object.create(null),experimentalOptions=Object.create(null),moduleOptions=["amd","commonjs","closure","instantiate","inline","bootstrap","parse"],EXPERIMENTAL=0,ON_BY_DEFAULT=1;addFeatureOption("arrowFunctions",ON_BY_DEFAULT),addFeatureOption("blockBinding",ON_BY_DEFAULT),addFeatureOption("classes",ON_BY_DEFAULT),addFeatureOption("computedPropertyNames",ON_BY_DEFAULT),addFeatureOption("defaultParameters",ON_BY_DEFAULT),addFeatureOption("destructuring",ON_BY_DEFAULT),addFeatureOption("forOf",ON_BY_DEFAULT),addFeatureOption("generators",ON_BY_DEFAULT),addFeatureOption("modules","SPECIAL"),addFeatureOption("numericLiterals",ON_BY_DEFAULT),addFeatureOption("propertyMethods",ON_BY_DEFAULT),addFeatureOption("propertyNameShorthand",ON_BY_DEFAULT),addFeatureOption("restParameters",ON_BY_DEFAULT),addFeatureOption("sourceMaps","SPECIAL"),addFeatureOption("spread",ON_BY_DEFAULT),addFeatureOption("symbols",ON_BY_DEFAULT),addFeatureOption("templateLiterals",ON_BY_DEFAULT),addFeatureOption("unicodeEscapeSequences",ON_BY_DEFAULT),addFeatureOption("unicodeExpressions",ON_BY_DEFAULT),addFeatureOption("properTailCalls",EXPERIMENTAL),addFeatureOption("annotations",EXPERIMENTAL),addFeatureOption("arrayComprehension",EXPERIMENTAL),addFeatureOption("asyncFunctions",EXPERIMENTAL),addFeatureOption("asyncGenerators",EXPERIMENTAL),addFeatureOption("exponentiation",EXPERIMENTAL),addFeatureOption("exportFromExtended",EXPERIMENTAL),addFeatureOption("forOn",EXPERIMENTAL),addFeatureOption("generatorComprehension",EXPERIMENTAL),addFeatureOption("jsx",EXPERIMENTAL),addFeatureOption("memberVariables",EXPERIMENTAL),addFeatureOption("require",EXPERIMENTAL),addFeatureOption("spreadProperties",EXPERIMENTAL),addFeatureOption("types",EXPERIMENTAL);var transformOptionsPrototype={};Object.keys(featureOptions).forEach(function(name){Object.defineProperty(transformOptionsPrototype,name,{get:function(){var v=this.proxiedOptions_[name];return"parse"!==v&&v},enumerable:!0})});var parseOptionsPrototype={};Object.keys(featureOptions).forEach(function(name){Object.defineProperty(parseOptionsPrototype,name,{get:function(){return!!this.proxiedOptions_[name]},enumerable:!0})}),addBoolOption("commentCallback"),addBoolOption("debug"),addBoolOption("debugNames"),addBoolOption("freeVariableChecker"),addBoolOption("script"),addBoolOption("validate");var Options=function(){function Options(){var options=void 0!==arguments[0]?arguments[0]:Object.create(null);this.reset(),Object.defineProperties(this,{modules_:{value:versionLockedOptions.modules,writable:!0,enumerable:!1},sourceMaps_:{value:versionLockedOptions.sourceMaps,writable:!0,enumerable:!1},sourceRoot_:{value:versionLockedOptions.sourceRoot,writable:!0,enumerable:!1},transformOptions:{value:Object.create(transformOptionsPrototype,{proxiedOptions_:{value:this,enumerable:!1}}),enumerable:!1},parseOptions:{value:Object.create(parseOptionsPrototype,{proxiedOptions_:{value:this,enumerable:!1}}),enumerable:!1}}),this.setFromObject(options)}return $traceurRuntime.createClass(Options,{set experimental(v){var $__2=this;v=coerceOptionValue(v),Object.keys(experimentalOptions).forEach(function(name){$__2[name]=v})},get experimental(){var value,$__2=this;return Object.keys(experimentalOptions).every(function(name){var currentValue=$__2[name];return void 0===value?(value=currentValue,!0):currentValue===value||(value=null,!1)}),value},get atscript(){return this.types&&this.annotations&&this.memberVariables},set atscript(value){this.types=value,this.annotations=value,this.memberVariables=value},get modules(){return this.modules_},set modules(value){if("boolean"!=typeof value||value||(value="bootstrap"),moduleOptions.indexOf(value)===-1)throw Error("Invalid 'modules' option '"+value+"', not in "+moduleOptions.join(", "));this.modules_=value},get sourceMaps(){return this.sourceMaps_},set sourceMaps(value){if(null===value||"boolean"==typeof value)return void(this.sourceMaps_=!!value&&"file");if("file"!==value&&"inline"!==value&&"memory"!==value)throw Error("Option sourceMaps should be [false|inline|file|memory], not "+value);this.sourceMaps_=value},reset:function(){var allOff=arguments[0],$__2=this,useDefault=void 0===allOff;Object.keys(defaultValues).forEach(function(name){$__2[name]=useDefault&&defaultValues[name]}),this.setDefaults()},setDefaults:function(){this.modules="bootstrap",this.moduleName="default",this.outputLanguage="es5",this.referrer="",this.sourceMaps=!1,this.sourceRoot=!1,this.lowResolutionSourceMap=!1,this.inputSourceMap=!1},setFromObject:function(object){var $__2=this;return Object.keys(this).forEach(function(name){name in object&&$__2.setOption(name,object[name])}),this.modules=object.modules||this.modules,"boolean"!=typeof object.sourceMaps&&"string"!=typeof object.sourceMaps||(this.sourceMaps=object.sourceMaps),void 0!==object.sourceRoot&&(this.sourceRoot=object.sourceRoot),this},setOption:function(name,value){if(name=toCamelCase(name),!(name in this))throw Error("Unknown option: "+name);this[name]=value},diff:function(ref){var $__2=this,mismatches=[];return Object.keys(this).forEach(function(key){$__2[key]!==ref[key]&&mismatches.push({key:key,now:$traceurRuntime.options[key],v01:ref[key]})}),mismatches}},{experimental:function(){return new Options(experimentalOptions)},atscript:function(){return new Options({types:!0,annotations:!0,memberVariables:!0})},listUnknownOptions:function(obj){var unknowns=[];return Object.keys(obj).forEach(function(propName){propName in optionsV01||unknowns.push(propName)}),unknowns}})}(),descriptions={experimental:"Turns on all experimental features",require:"Generate require function argument for node when modules=register",sourceMaps:"Generate source map and ('file') write to .map or ('inline') append data URL"},CommandOptions=function($__super){function CommandOptions(){$traceurRuntime.superConstructor(CommandOptions).apply(this,arguments)}return $traceurRuntime.createClass(CommandOptions,{parseCommand:function(s){var re=/--([^=]+)(?:=(.+))?/,m=re.exec(s);m&&this.setOptionCoerced(m[1],m[2])},setOptionCoerced:function(name,value){value=void 0===value||null===value||coerceOptionValue(value),this.setOption(name,value)}},{fromString:function(s){return CommandOptions.fromArgv(s.split(/\s+/))},fromArgv:function(args){var options=new CommandOptions;return args.forEach(function(arg){return options.parseCommand(arg)}),options}},$__super)}(Options);return{get optionsV01(){return optionsV01},get versionLockedOptions(){return versionLockedOptions},get Options(){return Options},get CommandOptions(){return CommandOptions},get toDashCase(){return toDashCase},get addOptions(){return addOptions}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/webLoader.js",[],function(){"use strict";var webLoader={load:function(url,callback,errback){var xhr=new XMLHttpRequest;return xhr.onload=function(){if(200==xhr.status||0==xhr.status)callback(xhr.responseText);else{var err;err=404===xhr.status?"File not found '"+url+"'":xhr.status+xhr.statusText,errback(err)}xhr=null},xhr.onerror=function(err){errback(err)},xhr.open("GET",url,!0),xhr.send(),function(){xhr&&xhr.abort()}}};return{get webLoader(){return webLoader}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/WebPageTranscoder.js",[],function(){"use strict";var ErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util/ErrorReporter.js","traceur@0.0.107/src/WebPageTranscoder.js")).ErrorReporter,CommandOptions=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Options.js","traceur@0.0.107/src/WebPageTranscoder.js")).CommandOptions,webLoader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./loader/webLoader.js","traceur@0.0.107/src/WebPageTranscoder.js")).webLoader,scriptSelector='script[type="module"],script[type="text/traceur"]',WebPageTranscoder=function(){function WebPageTranscoder(){var url=void 0!==arguments[0]?arguments[0]:document.location.href,traceurOptions=void 0!==arguments[1]?arguments[1]:new Options;this.url=url,this.numPending_=0,this.numberInlined_=0,this.traceurOptions_=traceurOptions}return $traceurRuntime.createClass(WebPageTranscoder,{asyncLoad_:function(url,fncOfContent,onScriptsReady){var $__3=this;this.numPending_++,webLoader.load(url,function(content){content?fncOfContent(content):console.warn("Failed to load",url),--$__3.numPending_<=0&&onScriptsReady()},function(error){console.error("WebPageTranscoder FAILED to load "+url,error.stack||error)})},addFileFromScriptElement:function(scriptElement,name,content){var options=this.traceurOptions_,elementOptionString=scriptElement.getAttribute("traceurOptions");elementOptionString&&(options=CommandOptions.fromString(elementOptionString));var loadingResult,nameInfo={address:name,referrerName:window.location.href,name:name,metadata:{traceurOptions:options}};loadingResult="module"===scriptElement.type?System.module(content,nameInfo):System.script(content,nameInfo),loadingResult["catch"](function(error){console.error(error.stack||error)})},nextInlineScriptName_:function(){if(this.numberInlined_+=1,!this.inlineScriptNameBase_){var segments=this.url.split(".");segments.pop(),this.inlineScriptNameBase_=segments.join(".")}return this.inlineScriptNameBase_+"_inline_script_"+this.numberInlined_+".js"},addFilesFromScriptElements:function(scriptElements,onScriptsReady){for(var i=0,length=scriptElements.length;i<length;i++){var scriptElement=scriptElements[i];if(scriptElement.src){var name$__4=scriptElement.src;this.asyncLoad_(name$__4,this.addFileFromScriptElement.bind(this,scriptElement,name$__4),onScriptsReady)}else{var name=this.nextInlineScriptName_(),content=scriptElement.textContent;this.addFileFromScriptElement(scriptElement,name,content)}}this.numPending_<=0&&onScriptsReady()},get reporter(){return this.reporter_||(this.reporter_=new ErrorReporter),this.reporter_},putFile:function(file){var scriptElement=document.createElement("script");scriptElement.setAttribute("data-traceur-src-url",file.name),scriptElement.textContent=file.generatedSource;var parent=file.scriptElement.parentNode;parent.insertBefore(scriptElement,file.scriptElement||null)},selectAndProcessScripts:function(done){var selector=scriptSelector,scripts=document.querySelectorAll(selector);return scripts.length?void this.addFilesFromScriptElements(scripts,function(){done()}):void done()},run:function(){var done=void 0!==arguments[0]?arguments[0]:function(){},$__3=this,ready=document.readyState;"complete"===ready||"loaded"===ready?this.selectAndProcessScripts(done):document.addEventListener("DOMContentLoaded",function(){return $__3.selectAndProcessScripts(done)},!1)}},{})}();return{get scriptSelector(){return scriptSelector},get WebPageTranscoder(){return WebPageTranscoder}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/StringSet.js",[],function(){"use strict";function assertString(value){if("string"!=typeof value)throw new TypeError}var StringSet=function(){function StringSet(){this.storage_=Object.create(null)}return $traceurRuntime.createClass(StringSet,{add:function(value){assertString(value),this.storage_[value]=!0},has:function(value){return assertString(value),void 0!==this.storage_[value]},"delete":function(value){assertString(value),delete this.storage_[value]},isEmpty:function(){for(var _ in this.storage_)return!1;return!0},valuesAsArray:function(){return Object.keys(this.storage_)},forEach:function(func){for(var value in this.storage_)func(value)}},{})}();return{get StringSet(){return StringSet}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/StringMap.js",[],function(){"use strict";function assertString(value){if("string"!=typeof value)throw new TypeError}var StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./StringSet.js","traceur@0.0.107/src/util/StringMap.js")).StringSet,StringMap=function(){function StringMap(){this.storage_=Object.create(null)}return $traceurRuntime.createClass(StringMap,{set:function(key,value){assertString(key),this.storage_[key]=value},get:function(key){return assertString(key),this.storage_[key]},"delete":function(key){assertString(key),delete this.storage_[key]},has:function(key){return assertString(key),void 0!==this.storage_[key]},keysAsArray:function(){return Object.keys(this.storage_)},keysAsSet:function(){var set=new StringSet;return this.forEach(function(key){return set.add(key)}),set},forEach:function(func){for(var key in this.storage_)func(key,this.storage_[key])}},{})}();return{get StringMap(){return StringMap}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/HTMLImportTranscoder.js",[],function(){"use strict";var StringMap=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util/StringMap.js","traceur@0.0.107/src/HTMLImportTranscoder.js")).StringMap,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./WebPageTranscoder.js","traceur@0.0.107/src/HTMLImportTranscoder.js")),WebPageTranscoder=$__4.WebPageTranscoder,scriptSelector=$__4.scriptSelector,importSelector="link[rel=import][href]",HTMLImportTranscoder=function(){function HTMLImportTranscoder(){this.importsToProcess_=[]}return $traceurRuntime.createClass(HTMLImportTranscoder,{findAllChildrenHTMLImports_:function(parentImportNodes){for(var parentIndex=0;parentIndex<parentImportNodes.length;parentIndex++){var parentLink=parentImportNodes[parentIndex],childImportNodes=parentLink["import"].querySelectorAll(importSelector);childImportNodes.length>0&&this.findAllChildrenHTMLImports_(childImportNodes),this.importsToProcess_.push(parentLink)}},filterHTMLImports_:function(importNodes){this.findAllChildrenHTMLImports_(importNodes);for(var importsToParse=[],dupFilterMap=new StringMap,index=0;index<this.importsToProcess_.length;index++){var processLink=this.importsToProcess_[index];if(!dupFilterMap.has(processLink.href)){dupFilterMap.set(processLink.href,0);var scripts=processLink["import"].querySelectorAll(scriptSelector);scripts.length>0&&importsToParse.push({href:processLink.href,scripts:scripts})}}return this.importsToProcess_=[],importsToParse},selectAndProcessHTMLImports:function(importNodes,done){var importInfoList=this.filterHTMLImports_(importNodes);0===importInfoList.length&&done();var processCount=importInfoList.length;importInfoList.forEach(function(importInfo){var transcoder=new WebPageTranscoder(importInfo.href);transcoder.addFilesFromScriptElements(importInfo.scripts,function(){processCount--,0===processCount&&done&&done()})})},run:function(){var done=void 0!==arguments[0]?arguments[0]:function(){},$__2=this,ready=document.readyState;if("complete"===ready||"loaded"===ready){var importNodes=document.querySelectorAll(importSelector);importNodes.length>0&&this.selectAndProcessHTMLImports(importNodes,done)}else document.addEventListener("HTMLImportsLoaded",function(event){var importNodes=event.detail&&event.detail.allImports?event.detail.allImports:document.querySelectorAll(importSelector);importNodes.length>0&&$__2.selectAndProcessHTMLImports(importNodes,done)})}},{})}();return{get HTMLImportTranscoder(){return HTMLImportTranscoder}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/CollectingErrorReporter.js",[],function(){"use strict";var ErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/ErrorReporter.js","traceur@0.0.107/src/util/CollectingErrorReporter.js")).ErrorReporter,MultipleErrors=function($__super){function MultipleErrors(errors){$traceurRuntime.superConstructor(MultipleErrors).call(this),this.message=errors?errors.join("\n"):"",this.name="MultipleErrors",this.errors=errors}return $traceurRuntime.createClass(MultipleErrors,{},{},$__super)}(Error),CollectingErrorReporter=function($__super){function CollectingErrorReporter(){$traceurRuntime.superConstructor(CollectingErrorReporter).call(this),this.errors=[]}return $traceurRuntime.createClass(CollectingErrorReporter,{reportMessageInternal:function(location,message){this.errors.push(location.start+": "+message)},errorsAsString:function(){return this.toError().message},toError:function(){return new MultipleErrors(this.errors)}},{},$__super)}(ErrorReporter);return{get MultipleErrors(){return MultipleErrors},get CollectingErrorReporter(){return CollectingErrorReporter}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util-imports.js",[],function(){"use strict";$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util/MutedErrorReporter.js","traceur@0.0.107/src/util-imports.js"));var $__traceur_64_0_46_0_46_107_47_src_47_WebPageTranscoder_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./WebPageTranscoder.js","traceur@0.0.107/src/util-imports.js")),$__traceur_64_0_46_0_46_107_47_src_47_HTMLImportTranscoder_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./HTMLImportTranscoder.js","traceur@0.0.107/src/util-imports.js")),$__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Options.js","traceur@0.0.107/src/util-imports.js")),addOptions=$__1.addOptions,CommandOptions=$__1.CommandOptions,Options=$__1.Options,ErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util/ErrorReporter.js","traceur@0.0.107/src/util-imports.js")).ErrorReporter,CollectingErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util/CollectingErrorReporter.js","traceur@0.0.107/src/util-imports.js")).CollectingErrorReporter,util={addOptions:addOptions,CommandOptions:CommandOptions,CollectingErrorReporter:CollectingErrorReporter,ErrorReporter:ErrorReporter,Options:Options};return{get WebPageTranscoder(){return $__traceur_64_0_46_0_46_107_47_src_47_WebPageTranscoder_46_js__.WebPageTranscoder},get HTMLImportTranscoder(){return $__traceur_64_0_46_0_46_107_47_src_47_HTMLImportTranscoder_46_js__.HTMLImportTranscoder},get util(){return util}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/trees/ParseTreeType.js",[],function(){"use strict";var ANNOTATION="ANNOTATION",ANON_BLOCK="ANON_BLOCK",ARGUMENT_LIST="ARGUMENT_LIST",ARRAY_COMPREHENSION="ARRAY_COMPREHENSION",ARRAY_LITERAL="ARRAY_LITERAL",ARRAY_PATTERN="ARRAY_PATTERN",ARRAY_TYPE="ARRAY_TYPE",ARROW_FUNCTION="ARROW_FUNCTION",ASSIGNMENT_ELEMENT="ASSIGNMENT_ELEMENT",AWAIT_EXPRESSION="AWAIT_EXPRESSION",BINARY_EXPRESSION="BINARY_EXPRESSION",BINDING_ELEMENT="BINDING_ELEMENT",BINDING_IDENTIFIER="BINDING_IDENTIFIER",BLOCK="BLOCK",BREAK_STATEMENT="BREAK_STATEMENT",CALL_EXPRESSION="CALL_EXPRESSION",CALL_SIGNATURE="CALL_SIGNATURE",CASE_CLAUSE="CASE_CLAUSE",CATCH="CATCH",CLASS_DECLARATION="CLASS_DECLARATION",CLASS_EXPRESSION="CLASS_EXPRESSION",COMMA_EXPRESSION="COMMA_EXPRESSION",COMPREHENSION_FOR="COMPREHENSION_FOR",COMPREHENSION_IF="COMPREHENSION_IF",COMPUTED_PROPERTY_NAME="COMPUTED_PROPERTY_NAME",CONDITIONAL_EXPRESSION="CONDITIONAL_EXPRESSION",CONSTRUCT_SIGNATURE="CONSTRUCT_SIGNATURE",CONSTRUCTOR_TYPE="CONSTRUCTOR_TYPE",CONTINUE_STATEMENT="CONTINUE_STATEMENT",COVER_FORMALS="COVER_FORMALS",COVER_INITIALIZED_NAME="COVER_INITIALIZED_NAME",DEBUGGER_STATEMENT="DEBUGGER_STATEMENT",DEFAULT_CLAUSE="DEFAULT_CLAUSE",DO_WHILE_STATEMENT="DO_WHILE_STATEMENT",EMPTY_STATEMENT="EMPTY_STATEMENT",EXPORT_DECLARATION="EXPORT_DECLARATION",EXPORT_DEFAULT="EXPORT_DEFAULT",EXPORT_SPECIFIER="EXPORT_SPECIFIER",EXPORT_SPECIFIER_SET="EXPORT_SPECIFIER_SET",EXPORT_STAR="EXPORT_STAR",EXPRESSION_STATEMENT="EXPRESSION_STATEMENT",FINALLY="FINALLY",FOR_IN_STATEMENT="FOR_IN_STATEMENT",FOR_OF_STATEMENT="FOR_OF_STATEMENT",FOR_ON_STATEMENT="FOR_ON_STATEMENT",FOR_STATEMENT="FOR_STATEMENT",FORMAL_PARAMETER="FORMAL_PARAMETER",FORMAL_PARAMETER_LIST="FORMAL_PARAMETER_LIST",FORWARD_DEFAULT_EXPORT="FORWARD_DEFAULT_EXPORT",FUNCTION_BODY="FUNCTION_BODY",FUNCTION_DECLARATION="FUNCTION_DECLARATION",FUNCTION_EXPRESSION="FUNCTION_EXPRESSION",FUNCTION_TYPE="FUNCTION_TYPE",GENERATOR_COMPREHENSION="GENERATOR_COMPREHENSION",GET_ACCESSOR="GET_ACCESSOR",IDENTIFIER_EXPRESSION="IDENTIFIER_EXPRESSION",IF_STATEMENT="IF_STATEMENT",IMPORT_CLAUSE_PAIR="IMPORT_CLAUSE_PAIR",IMPORT_DECLARATION="IMPORT_DECLARATION",IMPORT_SPECIFIER="IMPORT_SPECIFIER",IMPORT_SPECIFIER_SET="IMPORT_SPECIFIER_SET",IMPORT_TYPE_CLAUSE="IMPORT_TYPE_CLAUSE",IMPORTED_BINDING="IMPORTED_BINDING",INDEX_SIGNATURE="INDEX_SIGNATURE",INTERFACE_DECLARATION="INTERFACE_DECLARATION",JSX_ATTRIBUTE="JSX_ATTRIBUTE",JSX_ELEMENT="JSX_ELEMENT",JSX_ELEMENT_NAME="JSX_ELEMENT_NAME",JSX_PLACEHOLDER="JSX_PLACEHOLDER",JSX_SPREAD_ATTRIBUTE="JSX_SPREAD_ATTRIBUTE",JSX_TEXT="JSX_TEXT",LABELLED_STATEMENT="LABELLED_STATEMENT",LITERAL_EXPRESSION="LITERAL_EXPRESSION",LITERAL_PROPERTY_NAME="LITERAL_PROPERTY_NAME",MEMBER_EXPRESSION="MEMBER_EXPRESSION",MEMBER_LOOKUP_EXPRESSION="MEMBER_LOOKUP_EXPRESSION",METHOD="METHOD",METHOD_SIGNATURE="METHOD_SIGNATURE",MODULE="MODULE",MODULE_SPECIFIER="MODULE_SPECIFIER",NAME_SPACE_EXPORT="NAME_SPACE_EXPORT",NAME_SPACE_IMPORT="NAME_SPACE_IMPORT",NAMED_EXPORT="NAMED_EXPORT",NEW_EXPRESSION="NEW_EXPRESSION",OBJECT_LITERAL="OBJECT_LITERAL",OBJECT_PATTERN="OBJECT_PATTERN",OBJECT_PATTERN_FIELD="OBJECT_PATTERN_FIELD",OBJECT_TYPE="OBJECT_TYPE",PAREN_EXPRESSION="PAREN_EXPRESSION",POSTFIX_EXPRESSION="POSTFIX_EXPRESSION",PREDEFINED_TYPE="PREDEFINED_TYPE",PROPERTY_NAME_ASSIGNMENT="PROPERTY_NAME_ASSIGNMENT",PROPERTY_NAME_SHORTHAND="PROPERTY_NAME_SHORTHAND",PROPERTY_SIGNATURE="PROPERTY_SIGNATURE",PROPERTY_VARIABLE_DECLARATION="PROPERTY_VARIABLE_DECLARATION",REST_PARAMETER="REST_PARAMETER",RETURN_STATEMENT="RETURN_STATEMENT",SCRIPT="SCRIPT",SET_ACCESSOR="SET_ACCESSOR",SPREAD_EXPRESSION="SPREAD_EXPRESSION",SPREAD_PATTERN_ELEMENT="SPREAD_PATTERN_ELEMENT",STATE_MACHINE="STATE_MACHINE",SUPER_EXPRESSION="SUPER_EXPRESSION",SWITCH_STATEMENT="SWITCH_STATEMENT",SYNTAX_ERROR_TREE="SYNTAX_ERROR_TREE",TEMPLATE_LITERAL_EXPRESSION="TEMPLATE_LITERAL_EXPRESSION",TEMPLATE_LITERAL_PORTION="TEMPLATE_LITERAL_PORTION",TEMPLATE_SUBSTITUTION="TEMPLATE_SUBSTITUTION",THIS_EXPRESSION="THIS_EXPRESSION",THROW_STATEMENT="THROW_STATEMENT",TRY_STATEMENT="TRY_STATEMENT",TYPE_ALIAS_DECLARATION="TYPE_ALIAS_DECLARATION",TYPE_ARGUMENTS="TYPE_ARGUMENTS",TYPE_NAME="TYPE_NAME",TYPE_PARAMETER="TYPE_PARAMETER",TYPE_PARAMETERS="TYPE_PARAMETERS",TYPE_REFERENCE="TYPE_REFERENCE",UNARY_EXPRESSION="UNARY_EXPRESSION",UNION_TYPE="UNION_TYPE",VARIABLE_DECLARATION="VARIABLE_DECLARATION",VARIABLE_DECLARATION_LIST="VARIABLE_DECLARATION_LIST",VARIABLE_STATEMENT="VARIABLE_STATEMENT",WHILE_STATEMENT="WHILE_STATEMENT",WITH_STATEMENT="WITH_STATEMENT",YIELD_EXPRESSION="YIELD_EXPRESSION";return{get ANNOTATION(){return ANNOTATION},get ANON_BLOCK(){return ANON_BLOCK},get ARGUMENT_LIST(){return ARGUMENT_LIST},get ARRAY_COMPREHENSION(){return ARRAY_COMPREHENSION},get ARRAY_LITERAL(){return ARRAY_LITERAL},get ARRAY_PATTERN(){return ARRAY_PATTERN},get ARRAY_TYPE(){return ARRAY_TYPE},get ARROW_FUNCTION(){return ARROW_FUNCTION},get ASSIGNMENT_ELEMENT(){return ASSIGNMENT_ELEMENT},get AWAIT_EXPRESSION(){return AWAIT_EXPRESSION},get BINARY_EXPRESSION(){return BINARY_EXPRESSION},get BINDING_ELEMENT(){return BINDING_ELEMENT},get BINDING_IDENTIFIER(){return BINDING_IDENTIFIER},get BLOCK(){return BLOCK},get BREAK_STATEMENT(){return BREAK_STATEMENT},get CALL_EXPRESSION(){return CALL_EXPRESSION},get CALL_SIGNATURE(){return CALL_SIGNATURE},get CASE_CLAUSE(){return CASE_CLAUSE},get CATCH(){return CATCH},get CLASS_DECLARATION(){return CLASS_DECLARATION},get CLASS_EXPRESSION(){return CLASS_EXPRESSION},get COMMA_EXPRESSION(){return COMMA_EXPRESSION},get COMPREHENSION_FOR(){return COMPREHENSION_FOR},get COMPREHENSION_IF(){return COMPREHENSION_IF},get COMPUTED_PROPERTY_NAME(){return COMPUTED_PROPERTY_NAME},get CONDITIONAL_EXPRESSION(){return CONDITIONAL_EXPRESSION},get CONSTRUCT_SIGNATURE(){return CONSTRUCT_SIGNATURE},get CONSTRUCTOR_TYPE(){return CONSTRUCTOR_TYPE},get CONTINUE_STATEMENT(){return CONTINUE_STATEMENT},get COVER_FORMALS(){return COVER_FORMALS},get COVER_INITIALIZED_NAME(){return COVER_INITIALIZED_NAME},get DEBUGGER_STATEMENT(){return DEBUGGER_STATEMENT},get DEFAULT_CLAUSE(){return DEFAULT_CLAUSE},get DO_WHILE_STATEMENT(){return DO_WHILE_STATEMENT},get EMPTY_STATEMENT(){return EMPTY_STATEMENT},get EXPORT_DECLARATION(){return EXPORT_DECLARATION},get EXPORT_DEFAULT(){return EXPORT_DEFAULT},get EXPORT_SPECIFIER(){return EXPORT_SPECIFIER},get EXPORT_SPECIFIER_SET(){return EXPORT_SPECIFIER_SET},get EXPORT_STAR(){return EXPORT_STAR},get EXPRESSION_STATEMENT(){return EXPRESSION_STATEMENT},get FINALLY(){return FINALLY},get FOR_IN_STATEMENT(){return FOR_IN_STATEMENT},get FOR_OF_STATEMENT(){return FOR_OF_STATEMENT},get FOR_ON_STATEMENT(){return FOR_ON_STATEMENT},get FOR_STATEMENT(){return FOR_STATEMENT},get FORMAL_PARAMETER(){return FORMAL_PARAMETER},get FORMAL_PARAMETER_LIST(){return FORMAL_PARAMETER_LIST},get FORWARD_DEFAULT_EXPORT(){return FORWARD_DEFAULT_EXPORT},get FUNCTION_BODY(){return FUNCTION_BODY},get FUNCTION_DECLARATION(){return FUNCTION_DECLARATION},get FUNCTION_EXPRESSION(){return FUNCTION_EXPRESSION},get FUNCTION_TYPE(){return FUNCTION_TYPE},get GENERATOR_COMPREHENSION(){return GENERATOR_COMPREHENSION},get GET_ACCESSOR(){return GET_ACCESSOR},get IDENTIFIER_EXPRESSION(){return IDENTIFIER_EXPRESSION},get IF_STATEMENT(){return IF_STATEMENT},get IMPORT_CLAUSE_PAIR(){return IMPORT_CLAUSE_PAIR},get IMPORT_DECLARATION(){return IMPORT_DECLARATION},get IMPORT_SPECIFIER(){return IMPORT_SPECIFIER},get IMPORT_SPECIFIER_SET(){return IMPORT_SPECIFIER_SET},get IMPORT_TYPE_CLAUSE(){return IMPORT_TYPE_CLAUSE},get IMPORTED_BINDING(){return IMPORTED_BINDING},get INDEX_SIGNATURE(){return INDEX_SIGNATURE},get INTERFACE_DECLARATION(){return INTERFACE_DECLARATION},get JSX_ATTRIBUTE(){return JSX_ATTRIBUTE},get JSX_ELEMENT(){return JSX_ELEMENT},get JSX_ELEMENT_NAME(){return JSX_ELEMENT_NAME},get JSX_PLACEHOLDER(){return JSX_PLACEHOLDER},get JSX_SPREAD_ATTRIBUTE(){return JSX_SPREAD_ATTRIBUTE},get JSX_TEXT(){return JSX_TEXT},get LABELLED_STATEMENT(){return LABELLED_STATEMENT},get LITERAL_EXPRESSION(){return LITERAL_EXPRESSION},get LITERAL_PROPERTY_NAME(){return LITERAL_PROPERTY_NAME},get MEMBER_EXPRESSION(){return MEMBER_EXPRESSION},get MEMBER_LOOKUP_EXPRESSION(){return MEMBER_LOOKUP_EXPRESSION},get METHOD(){return METHOD},get METHOD_SIGNATURE(){return METHOD_SIGNATURE},get MODULE(){return MODULE},get MODULE_SPECIFIER(){return MODULE_SPECIFIER},get NAME_SPACE_EXPORT(){return NAME_SPACE_EXPORT},get NAME_SPACE_IMPORT(){return NAME_SPACE_IMPORT},get NAMED_EXPORT(){return NAMED_EXPORT},get NEW_EXPRESSION(){return NEW_EXPRESSION},get OBJECT_LITERAL(){return OBJECT_LITERAL},get OBJECT_PATTERN(){return OBJECT_PATTERN},get OBJECT_PATTERN_FIELD(){return OBJECT_PATTERN_FIELD},get OBJECT_TYPE(){return OBJECT_TYPE},get PAREN_EXPRESSION(){return PAREN_EXPRESSION},get POSTFIX_EXPRESSION(){return POSTFIX_EXPRESSION},get PREDEFINED_TYPE(){return PREDEFINED_TYPE},get PROPERTY_NAME_ASSIGNMENT(){return PROPERTY_NAME_ASSIGNMENT},get PROPERTY_NAME_SHORTHAND(){return PROPERTY_NAME_SHORTHAND},get PROPERTY_SIGNATURE(){return PROPERTY_SIGNATURE},get PROPERTY_VARIABLE_DECLARATION(){return PROPERTY_VARIABLE_DECLARATION},get REST_PARAMETER(){return REST_PARAMETER},get RETURN_STATEMENT(){return RETURN_STATEMENT},get SCRIPT(){return SCRIPT},get SET_ACCESSOR(){return SET_ACCESSOR},get SPREAD_EXPRESSION(){return SPREAD_EXPRESSION;
},get SPREAD_PATTERN_ELEMENT(){return SPREAD_PATTERN_ELEMENT},get STATE_MACHINE(){return STATE_MACHINE},get SUPER_EXPRESSION(){return SUPER_EXPRESSION},get SWITCH_STATEMENT(){return SWITCH_STATEMENT},get SYNTAX_ERROR_TREE(){return SYNTAX_ERROR_TREE},get TEMPLATE_LITERAL_EXPRESSION(){return TEMPLATE_LITERAL_EXPRESSION},get TEMPLATE_LITERAL_PORTION(){return TEMPLATE_LITERAL_PORTION},get TEMPLATE_SUBSTITUTION(){return TEMPLATE_SUBSTITUTION},get THIS_EXPRESSION(){return THIS_EXPRESSION},get THROW_STATEMENT(){return THROW_STATEMENT},get TRY_STATEMENT(){return TRY_STATEMENT},get TYPE_ALIAS_DECLARATION(){return TYPE_ALIAS_DECLARATION},get TYPE_ARGUMENTS(){return TYPE_ARGUMENTS},get TYPE_NAME(){return TYPE_NAME},get TYPE_PARAMETER(){return TYPE_PARAMETER},get TYPE_PARAMETERS(){return TYPE_PARAMETERS},get TYPE_REFERENCE(){return TYPE_REFERENCE},get UNARY_EXPRESSION(){return UNARY_EXPRESSION},get UNION_TYPE(){return UNION_TYPE},get VARIABLE_DECLARATION(){return VARIABLE_DECLARATION},get VARIABLE_DECLARATION_LIST(){return VARIABLE_DECLARATION_LIST},get VARIABLE_STATEMENT(){return VARIABLE_STATEMENT},get WHILE_STATEMENT(){return WHILE_STATEMENT},get WITH_STATEMENT(){return WITH_STATEMENT},get YIELD_EXPRESSION(){return YIELD_EXPRESSION}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/TokenType.js",[],function(){"use strict";var AMPERSAND="&",AMPERSAND_EQUAL="&=",AND="&&",ARROW="=>",AT="@",BACK_QUOTE="`",BANG="!",BAR="|",BAR_EQUAL="|=",BREAK="break",CARET="^",CARET_EQUAL="^=",CASE="case",CATCH="catch",CLASS="class",CLOSE_ANGLE=">",CLOSE_CURLY="}",CLOSE_PAREN=")",CLOSE_SQUARE="]",COLON=":",COMMA=",",CONST="const",CONTINUE="continue",DEBUGGER="debugger",DEFAULT="default",DELETE="delete",DO="do",DOT_DOT_DOT="...",ELSE="else",END_OF_FILE="End of File",ENUM="enum",EQUAL="=",EQUAL_EQUAL="==",EQUAL_EQUAL_EQUAL="===",ERROR="error",EXPORT="export",EXTENDS="extends",FALSE="false",FINALLY="finally",FOR="for",FUNCTION="function",GREATER_EQUAL=">=",IDENTIFIER="identifier",IF="if",IMPLEMENTS="implements",IMPORT="import",IN="in",INSTANCEOF="instanceof",INTERFACE="interface",JSX_IDENTIFIER="jsx identifier",LEFT_SHIFT="<<",LEFT_SHIFT_EQUAL="<<=",LESS_EQUAL="<=",LET="let",MINUS="-",MINUS_EQUAL="-=",MINUS_MINUS="--",NEW="new",NO_SUBSTITUTION_TEMPLATE="no substitution template",NOT_EQUAL="!=",NOT_EQUAL_EQUAL="!==",NULL="null",NUMBER="number literal",OPEN_ANGLE="<",OPEN_CURLY="{",OPEN_PAREN="(",OPEN_SQUARE="[",OR="||",PACKAGE="package",PERCENT="%",PERCENT_EQUAL="%=",PERIOD=".",PLUS="+",PLUS_EQUAL="+=",PLUS_PLUS="++",PRIVATE="private",PROTECTED="protected",PUBLIC="public",QUESTION="?",REGULAR_EXPRESSION="regular expression literal",RETURN="return",RIGHT_SHIFT=">>",RIGHT_SHIFT_EQUAL=">>=",SEMI_COLON=";",SLASH="/",SLASH_EQUAL="/=",STAR="*",STAR_EQUAL="*=",STAR_STAR="**",STAR_STAR_EQUAL="**=",STATIC="static",STRING="string literal",SUPER="super",SWITCH="switch",TEMPLATE_HEAD="template head",TEMPLATE_MIDDLE="template middle",TEMPLATE_TAIL="template tail",THIS="this",THROW="throw",TILDE="~",TRUE="true",TRY="try",TYPEOF="typeof",UNSIGNED_RIGHT_SHIFT=">>>",UNSIGNED_RIGHT_SHIFT_EQUAL=">>>=",VAR="var",VOID="void",WHILE="while",WITH="with",YIELD="yield";return{get AMPERSAND(){return AMPERSAND},get AMPERSAND_EQUAL(){return AMPERSAND_EQUAL},get AND(){return AND},get ARROW(){return ARROW},get AT(){return AT},get BACK_QUOTE(){return BACK_QUOTE},get BANG(){return BANG},get BAR(){return BAR},get BAR_EQUAL(){return BAR_EQUAL},get BREAK(){return BREAK},get CARET(){return CARET},get CARET_EQUAL(){return CARET_EQUAL},get CASE(){return CASE},get CATCH(){return CATCH},get CLASS(){return CLASS},get CLOSE_ANGLE(){return CLOSE_ANGLE},get CLOSE_CURLY(){return CLOSE_CURLY},get CLOSE_PAREN(){return CLOSE_PAREN},get CLOSE_SQUARE(){return CLOSE_SQUARE},get COLON(){return COLON},get COMMA(){return COMMA},get CONST(){return CONST},get CONTINUE(){return CONTINUE},get DEBUGGER(){return DEBUGGER},get DEFAULT(){return DEFAULT},get DELETE(){return DELETE},get DO(){return DO},get DOT_DOT_DOT(){return DOT_DOT_DOT},get ELSE(){return ELSE},get END_OF_FILE(){return END_OF_FILE},get ENUM(){return ENUM},get EQUAL(){return EQUAL},get EQUAL_EQUAL(){return EQUAL_EQUAL},get EQUAL_EQUAL_EQUAL(){return EQUAL_EQUAL_EQUAL},get ERROR(){return ERROR},get EXPORT(){return EXPORT},get EXTENDS(){return EXTENDS},get FALSE(){return FALSE},get FINALLY(){return FINALLY},get FOR(){return FOR},get FUNCTION(){return FUNCTION},get GREATER_EQUAL(){return GREATER_EQUAL},get IDENTIFIER(){return IDENTIFIER},get IF(){return IF},get IMPLEMENTS(){return IMPLEMENTS},get IMPORT(){return IMPORT},get IN(){return IN},get INSTANCEOF(){return INSTANCEOF},get INTERFACE(){return INTERFACE},get JSX_IDENTIFIER(){return JSX_IDENTIFIER},get LEFT_SHIFT(){return LEFT_SHIFT},get LEFT_SHIFT_EQUAL(){return LEFT_SHIFT_EQUAL},get LESS_EQUAL(){return LESS_EQUAL},get LET(){return LET},get MINUS(){return MINUS},get MINUS_EQUAL(){return MINUS_EQUAL},get MINUS_MINUS(){return MINUS_MINUS},get NEW(){return NEW},get NO_SUBSTITUTION_TEMPLATE(){return NO_SUBSTITUTION_TEMPLATE},get NOT_EQUAL(){return NOT_EQUAL},get NOT_EQUAL_EQUAL(){return NOT_EQUAL_EQUAL},get NULL(){return NULL},get NUMBER(){return NUMBER},get OPEN_ANGLE(){return OPEN_ANGLE},get OPEN_CURLY(){return OPEN_CURLY},get OPEN_PAREN(){return OPEN_PAREN},get OPEN_SQUARE(){return OPEN_SQUARE},get OR(){return OR},get PACKAGE(){return PACKAGE},get PERCENT(){return PERCENT},get PERCENT_EQUAL(){return PERCENT_EQUAL},get PERIOD(){return PERIOD},get PLUS(){return PLUS},get PLUS_EQUAL(){return PLUS_EQUAL},get PLUS_PLUS(){return PLUS_PLUS},get PRIVATE(){return PRIVATE},get PROTECTED(){return PROTECTED},get PUBLIC(){return PUBLIC},get QUESTION(){return QUESTION},get REGULAR_EXPRESSION(){return REGULAR_EXPRESSION},get RETURN(){return RETURN},get RIGHT_SHIFT(){return RIGHT_SHIFT},get RIGHT_SHIFT_EQUAL(){return RIGHT_SHIFT_EQUAL},get SEMI_COLON(){return SEMI_COLON},get SLASH(){return SLASH},get SLASH_EQUAL(){return SLASH_EQUAL},get STAR(){return STAR},get STAR_EQUAL(){return STAR_EQUAL},get STAR_STAR(){return STAR_STAR},get STAR_STAR_EQUAL(){return STAR_STAR_EQUAL},get STATIC(){return STATIC},get STRING(){return STRING},get SUPER(){return SUPER},get SWITCH(){return SWITCH},get TEMPLATE_HEAD(){return TEMPLATE_HEAD},get TEMPLATE_MIDDLE(){return TEMPLATE_MIDDLE},get TEMPLATE_TAIL(){return TEMPLATE_TAIL},get THIS(){return THIS},get THROW(){return THROW},get TILDE(){return TILDE},get TRUE(){return TRUE},get TRY(){return TRY},get TYPEOF(){return TYPEOF},get UNSIGNED_RIGHT_SHIFT(){return UNSIGNED_RIGHT_SHIFT},get UNSIGNED_RIGHT_SHIFT_EQUAL(){return UNSIGNED_RIGHT_SHIFT_EQUAL},get VAR(){return VAR},get VOID(){return VOID},get WHILE(){return WHILE},get WITH(){return WITH},get YIELD(){return YIELD}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/Token.js",[],function(){"use strict";function isAssignmentOperator(type){switch(type){case AMPERSAND_EQUAL:case BAR_EQUAL:case CARET_EQUAL:case EQUAL:case LEFT_SHIFT_EQUAL:case MINUS_EQUAL:case PERCENT_EQUAL:case PLUS_EQUAL:case RIGHT_SHIFT_EQUAL:case SLASH_EQUAL:case STAR_EQUAL:case STAR_STAR_EQUAL:case UNSIGNED_RIGHT_SHIFT_EQUAL:return!0}return!1}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TokenType.js","traceur@0.0.107/src/syntax/Token.js")),AMPERSAND_EQUAL=$__1.AMPERSAND_EQUAL,BAR_EQUAL=$__1.BAR_EQUAL,CARET_EQUAL=$__1.CARET_EQUAL,EQUAL=$__1.EQUAL,LEFT_SHIFT_EQUAL=$__1.LEFT_SHIFT_EQUAL,MINUS_EQUAL=$__1.MINUS_EQUAL,PERCENT_EQUAL=$__1.PERCENT_EQUAL,PLUS_EQUAL=$__1.PLUS_EQUAL,RIGHT_SHIFT_EQUAL=$__1.RIGHT_SHIFT_EQUAL,SLASH_EQUAL=$__1.SLASH_EQUAL,STAR_EQUAL=$__1.STAR_EQUAL,STAR_STAR_EQUAL=$__1.STAR_STAR_EQUAL,UNSIGNED_RIGHT_SHIFT_EQUAL=$__1.UNSIGNED_RIGHT_SHIFT_EQUAL,Token=function(){function Token(type,location){this.type=type,this.location=location}return $traceurRuntime.createClass(Token,{toString:function(){return this.type},isAssignmentOperator:function(){return isAssignmentOperator(this.type)},isKeyword:function(){return!1},isStrictKeyword:function(){return!1}},{})}();return{get Token(){return Token},get isAssignmentOperator(){return isAssignmentOperator}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/JSON.js",[],function(){"use strict";function transform(v){var replacer=void 0!==arguments[1]?arguments[1]:function(k,v){return v};return transform_(replacer("",v),replacer)}function transform_(v,replacer){var rv,tv;if(Array.isArray(v)){var len=v.length;rv=Array(len);for(var i=0;i<len;i++)tv=transform_(replacer(i+"",v[i]),replacer),rv[i]=void 0===tv?null:tv;return rv}return v instanceof Object?(rv={},Object.keys(v).forEach(function(k){tv=transform_(replacer(k,v[k]),replacer),void 0!==tv&&(rv[k]=tv)}),rv):v}return{get transform(){return transform}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/PredefinedName.js",[],function(){"use strict";var $ARGUMENTS="$arguments",ANY="any",APPLY="apply",ARGUMENTS="arguments",ARRAY="Array",AS="as",ASYNC="async",ASYNC_STAR="async star",AWAIT="await",BIND="bind",CALL="call",CONFIGURABLE="configurable",CONSTRUCTOR="constructor",CREATE="create",CURRENT="current",DEFINE_PROPERTY="defineProperty",ENUMERABLE="enumerable",FREEZE="freeze",FROM="from",FUNCTION="Function",GET="get",HAS="has",LENGTH="length",MODULE="module",NEW="new",OBJECT="Object",OBJECT_NAME="Object",OF="of",ON="on",PREVENT_EXTENSIONS="preventExtensions",PROTOTYPE="prototype",PUSH="push",SET="set",SLICE="slice",THIS="this",TRACEUR_RUNTIME="$traceurRuntime",TYPE="type",UNDEFINED="undefined",WRITABLE="writable";return{get $ARGUMENTS(){return $ARGUMENTS},get ANY(){return ANY},get APPLY(){return APPLY},get ARGUMENTS(){return ARGUMENTS},get ARRAY(){return ARRAY},get AS(){return AS},get ASYNC(){return ASYNC},get ASYNC_STAR(){return ASYNC_STAR},get AWAIT(){return AWAIT},get BIND(){return BIND},get CALL(){return CALL},get CONFIGURABLE(){return CONFIGURABLE},get CONSTRUCTOR(){return CONSTRUCTOR},get CREATE(){return CREATE},get CURRENT(){return CURRENT},get DEFINE_PROPERTY(){return DEFINE_PROPERTY},get ENUMERABLE(){return ENUMERABLE},get FREEZE(){return FREEZE},get FROM(){return FROM},get FUNCTION(){return FUNCTION},get GET(){return GET},get HAS(){return HAS},get LENGTH(){return LENGTH},get MODULE(){return MODULE},get NEW(){return NEW},get OBJECT(){return OBJECT},get OBJECT_NAME(){return OBJECT_NAME},get OF(){return OF},get ON(){return ON},get PREVENT_EXTENSIONS(){return PREVENT_EXTENSIONS},get PROTOTYPE(){return PROTOTYPE},get PUSH(){return PUSH},get SET(){return SET},get SLICE(){return SLICE},get THIS(){return THIS},get TRACEUR_RUNTIME(){return TRACEUR_RUNTIME},get TYPE(){return TYPE},get UNDEFINED(){return UNDEFINED},get WRITABLE(){return WRITABLE}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/trees/ParseTree.js",[],function(){"use strict";var ParseTreeType=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeType.js","traceur@0.0.107/src/syntax/trees/ParseTree.js")),$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../TokenType.js","traceur@0.0.107/src/syntax/trees/ParseTree.js")),IDENTIFIER=$__2.IDENTIFIER,STAR=$__2.STAR,STRING=$__2.STRING,VAR=$__2.VAR,Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../Token.js","traceur@0.0.107/src/syntax/trees/ParseTree.js")).Token,utilJSON=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../util/JSON.js","traceur@0.0.107/src/syntax/trees/ParseTree.js")),$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PredefinedName.js","traceur@0.0.107/src/syntax/trees/ParseTree.js")),ASYNC=$__4.ASYNC,ASYNC_STAR=$__4.ASYNC_STAR,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeType.js","traceur@0.0.107/src/syntax/trees/ParseTree.js")),ARRAY_COMPREHENSION=$__5.ARRAY_COMPREHENSION,ARRAY_LITERAL=$__5.ARRAY_LITERAL,ARRAY_PATTERN=$__5.ARRAY_PATTERN,ARROW_FUNCTION=$__5.ARROW_FUNCTION,AWAIT_EXPRESSION=$__5.AWAIT_EXPRESSION,BINARY_EXPRESSION=$__5.BINARY_EXPRESSION,BINDING_IDENTIFIER=$__5.BINDING_IDENTIFIER,BLOCK=$__5.BLOCK,BREAK_STATEMENT=$__5.BREAK_STATEMENT,CALL_EXPRESSION=$__5.CALL_EXPRESSION,CLASS_DECLARATION=$__5.CLASS_DECLARATION,CLASS_EXPRESSION=$__5.CLASS_EXPRESSION,COMMA_EXPRESSION=$__5.COMMA_EXPRESSION,CONDITIONAL_EXPRESSION=$__5.CONDITIONAL_EXPRESSION,CONSTRUCTOR_TYPE=$__5.CONSTRUCTOR_TYPE,CONTINUE_STATEMENT=$__5.CONTINUE_STATEMENT,DEBUGGER_STATEMENT=$__5.DEBUGGER_STATEMENT,DO_WHILE_STATEMENT=$__5.DO_WHILE_STATEMENT,EMPTY_STATEMENT=$__5.EMPTY_STATEMENT,EXPORT_DECLARATION=$__5.EXPORT_DECLARATION,EXPRESSION_STATEMENT=$__5.EXPRESSION_STATEMENT,FOR_IN_STATEMENT=$__5.FOR_IN_STATEMENT,FOR_OF_STATEMENT=$__5.FOR_OF_STATEMENT,FOR_ON_STATEMENT=$__5.FOR_ON_STATEMENT,FOR_STATEMENT=$__5.FOR_STATEMENT,FORMAL_PARAMETER=$__5.FORMAL_PARAMETER,FUNCTION_DECLARATION=$__5.FUNCTION_DECLARATION,FUNCTION_EXPRESSION=$__5.FUNCTION_EXPRESSION,FUNCTION_TYPE=$__5.FUNCTION_TYPE,GENERATOR_COMPREHENSION=$__5.GENERATOR_COMPREHENSION,IDENTIFIER_EXPRESSION=$__5.IDENTIFIER_EXPRESSION,IF_STATEMENT=$__5.IF_STATEMENT,IMPORT_DECLARATION=$__5.IMPORT_DECLARATION,IMPORTED_BINDING=$__5.IMPORTED_BINDING,INTERFACE_DECLARATION=$__5.INTERFACE_DECLARATION,JSX_ELEMENT=$__5.JSX_ELEMENT,LABELLED_STATEMENT=$__5.LABELLED_STATEMENT,LITERAL_EXPRESSION=$__5.LITERAL_EXPRESSION,LITERAL_PROPERTY_NAME=$__5.LITERAL_PROPERTY_NAME,MEMBER_EXPRESSION=$__5.MEMBER_EXPRESSION,MEMBER_LOOKUP_EXPRESSION=$__5.MEMBER_LOOKUP_EXPRESSION,NEW_EXPRESSION=$__5.NEW_EXPRESSION,OBJECT_LITERAL=$__5.OBJECT_LITERAL,OBJECT_PATTERN=$__5.OBJECT_PATTERN,OBJECT_TYPE=$__5.OBJECT_TYPE,PAREN_EXPRESSION=$__5.PAREN_EXPRESSION,POSTFIX_EXPRESSION=$__5.POSTFIX_EXPRESSION,PREDEFINED_TYPE=$__5.PREDEFINED_TYPE,PROPERTY_NAME_SHORTHAND=$__5.PROPERTY_NAME_SHORTHAND,REST_PARAMETER=$__5.REST_PARAMETER,RETURN_STATEMENT=$__5.RETURN_STATEMENT,SPREAD_EXPRESSION=$__5.SPREAD_EXPRESSION,SPREAD_PATTERN_ELEMENT=$__5.SPREAD_PATTERN_ELEMENT,SUPER_EXPRESSION=$__5.SUPER_EXPRESSION,SWITCH_STATEMENT=$__5.SWITCH_STATEMENT,TEMPLATE_LITERAL_EXPRESSION=$__5.TEMPLATE_LITERAL_EXPRESSION,THIS_EXPRESSION=$__5.THIS_EXPRESSION,THROW_STATEMENT=$__5.THROW_STATEMENT,TRY_STATEMENT=$__5.TRY_STATEMENT,TYPE_ALIAS_DECLARATION=$__5.TYPE_ALIAS_DECLARATION,TYPE_NAME=$__5.TYPE_NAME,TYPE_REFERENCE=$__5.TYPE_REFERENCE,UNARY_EXPRESSION=$__5.UNARY_EXPRESSION,VARIABLE_DECLARATION=$__5.VARIABLE_DECLARATION,VARIABLE_STATEMENT=$__5.VARIABLE_STATEMENT,WHILE_STATEMENT=$__5.WHILE_STATEMENT,WITH_STATEMENT=$__5.WITH_STATEMENT,YIELD_EXPRESSION=$__5.YIELD_EXPRESSION,ParseTree=function(){function ParseTree(location){this.location=location}return $traceurRuntime.createClass(ParseTree,{isPattern:function(){switch(this.type){case ARRAY_PATTERN:case OBJECT_PATTERN:return!0;default:return!1}},isLeftHandSideExpression:function(){switch(this.type){case ARRAY_PATTERN:case IDENTIFIER_EXPRESSION:case MEMBER_EXPRESSION:case MEMBER_LOOKUP_EXPRESSION:case OBJECT_PATTERN:return!0;case PAREN_EXPRESSION:return this.expression.isLeftHandSideExpression();default:return!1}},isAssignmentExpression:function(){switch(this.type){case ARRAY_COMPREHENSION:case ARRAY_LITERAL:case ARROW_FUNCTION:case AWAIT_EXPRESSION:case BINARY_EXPRESSION:case CALL_EXPRESSION:case CLASS_EXPRESSION:case CONDITIONAL_EXPRESSION:case FUNCTION_EXPRESSION:case GENERATOR_COMPREHENSION:case IDENTIFIER_EXPRESSION:case JSX_ELEMENT:case LITERAL_EXPRESSION:case MEMBER_EXPRESSION:case MEMBER_LOOKUP_EXPRESSION:case NEW_EXPRESSION:case OBJECT_LITERAL:case PAREN_EXPRESSION:case POSTFIX_EXPRESSION:case TEMPLATE_LITERAL_EXPRESSION:case SUPER_EXPRESSION:case THIS_EXPRESSION:case UNARY_EXPRESSION:case YIELD_EXPRESSION:return!0;default:return!1}},isMemberExpression:function(){switch(this.type){case THIS_EXPRESSION:case CLASS_EXPRESSION:case SUPER_EXPRESSION:case IDENTIFIER_EXPRESSION:case JSX_ELEMENT:case LITERAL_EXPRESSION:case ARRAY_LITERAL:case OBJECT_LITERAL:case PAREN_EXPRESSION:case TEMPLATE_LITERAL_EXPRESSION:case FUNCTION_EXPRESSION:case MEMBER_LOOKUP_EXPRESSION:case MEMBER_EXPRESSION:case CALL_EXPRESSION:return!0;case NEW_EXPRESSION:return null!==this.args}return!1},isExpression:function(){return this.isAssignmentExpression()||this.type===COMMA_EXPRESSION},isAssignmentOrSpread:function(){return this.isAssignmentExpression()||this.type===SPREAD_EXPRESSION},isRestParameter:function(){return this.type===REST_PARAMETER||this.type===FORMAL_PARAMETER&&this.parameter.isRestParameter()},isSpreadPatternElement:function(){return this.type===SPREAD_PATTERN_ELEMENT},isStatementListItem:function(){return this.isStatement()||this.isDeclaration()||this.type===TYPE_ALIAS_DECLARATION},isStatement:function(){switch(this.type){case BLOCK:case VARIABLE_STATEMENT:case EMPTY_STATEMENT:case EXPRESSION_STATEMENT:case IF_STATEMENT:case CONTINUE_STATEMENT:case BREAK_STATEMENT:case RETURN_STATEMENT:case WITH_STATEMENT:case LABELLED_STATEMENT:case THROW_STATEMENT:case TRY_STATEMENT:case DEBUGGER_STATEMENT:return!0}return this.isBreakableStatement()},isDeclaration:function(){switch(this.type){case FUNCTION_DECLARATION:case CLASS_DECLARATION:return!0}return this.isLexicalDeclaration()},isLexicalDeclaration:function(){switch(this.type){case VARIABLE_STATEMENT:return this.declarations.declarationType!==VAR}return!1},isBreakableStatement:function(){switch(this.type){case SWITCH_STATEMENT:return!0}return this.isIterationStatement()},isIterationStatement:function(){switch(this.type){case DO_WHILE_STATEMENT:case FOR_IN_STATEMENT:case FOR_OF_STATEMENT:case FOR_ON_STATEMENT:case FOR_STATEMENT:case WHILE_STATEMENT:return!0}return!1},isScriptElement:function(){switch(this.type){case CLASS_DECLARATION:case EXPORT_DECLARATION:case FUNCTION_DECLARATION:case IMPORT_DECLARATION:case INTERFACE_DECLARATION:case VARIABLE_DECLARATION:case TYPE_ALIAS_DECLARATION:return!0}return this.isStatement()},isGenerator:function(){return null!==this.functionKind&&this.functionKind.type===STAR},isAsyncFunction:function(){return null!==this.functionKind&&this.functionKind.type===IDENTIFIER&&this.functionKind.value===ASYNC},isAsyncGenerator:function(){return null!==this.functionKind&&this.functionKind.type===IDENTIFIER&&this.functionKind.value===ASYNC_STAR},isType:function(){switch(this.type){case CONSTRUCTOR_TYPE:case FUNCTION_TYPE:case OBJECT_TYPE:case PREDEFINED_TYPE:case TYPE_NAME:case TYPE_REFERENCE:return!0}return!1},getDirectivePrologueStringToken_:function(){var tree=this;return tree.type===EXPRESSION_STATEMENT&&(tree=tree.expression)&&tree.type===LITERAL_EXPRESSION&&(tree=tree.literalToken)?tree.type!==STRING?null:tree:null},isDirectivePrologue:function(){return null!==this.getDirectivePrologueStringToken_()},isUseStrictDirective:function(){var token=this.getDirectivePrologueStringToken_();if(!token)return!1;var v=token.value;return'"use strict"'===v||"'use strict'"===v},toJSON:function(){return utilJSON.transform(this,ParseTree.replacer)},stringify:function(){var indent=void 0!==arguments[0]?arguments[0]:2;return JSON.stringify(this,ParseTree.replacer,indent)},getStringValue:function(){switch(this.type){case IDENTIFIER_EXPRESSION:case BINDING_IDENTIFIER:return""+this.identifierToken;case IMPORTED_BINDING:return this.binding.getStringValue();case PROPERTY_NAME_SHORTHAND:return""+this.name;case LITERAL_PROPERTY_NAME:return""+this.literalToken}throw Error("Not yet implemented")}},{stripLocation:function(key,value){if("location"!==key)return value},replacer:function(k,v){if(v instanceof ParseTree||v instanceof Token){var rv={type:v.type};return Object.keys(v).forEach(function(name){"location"!==name&&(rv[name]=v[name])}),rv}return v}})}();return{get ParseTreeType(){return ParseTreeType},get ParseTree(){return ParseTree}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/trees/ParseTrees.js",[],function(){"use strict";var ParseTree=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTree.js","traceur@0.0.107/src/syntax/trees/ParseTrees.js")).ParseTree,ParseTreeType=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeType.js","traceur@0.0.107/src/syntax/trees/ParseTrees.js")),ANNOTATION=ParseTreeType.ANNOTATION,Annotation=function($__super){function Annotation(location,name,args){$traceurRuntime.superConstructor(Annotation).call(this,location),this.name=name,this.args=args}return $traceurRuntime.createClass(Annotation,{transform:function(transformer){return transformer.transformAnnotation(this)},visit:function(visitor){visitor.visitAnnotation(this)},get type(){return ANNOTATION}},{},$__super)}(ParseTree),ANON_BLOCK=ParseTreeType.ANON_BLOCK,AnonBlock=function($__super){function AnonBlock(location,statements){$traceurRuntime.superConstructor(AnonBlock).call(this,location),this.statements=statements}return $traceurRuntime.createClass(AnonBlock,{transform:function(transformer){return transformer.transformAnonBlock(this)},visit:function(visitor){visitor.visitAnonBlock(this)},get type(){return ANON_BLOCK}},{},$__super)}(ParseTree),ARGUMENT_LIST=ParseTreeType.ARGUMENT_LIST,ArgumentList=function($__super){function ArgumentList(location,args){$traceurRuntime.superConstructor(ArgumentList).call(this,location),this.args=args}return $traceurRuntime.createClass(ArgumentList,{transform:function(transformer){return transformer.transformArgumentList(this)},visit:function(visitor){visitor.visitArgumentList(this)},get type(){return ARGUMENT_LIST}},{},$__super)}(ParseTree),ARRAY_COMPREHENSION=ParseTreeType.ARRAY_COMPREHENSION,ArrayComprehension=function($__super){function ArrayComprehension(location,comprehensionList,expression){$traceurRuntime.superConstructor(ArrayComprehension).call(this,location),this.comprehensionList=comprehensionList,this.expression=expression}return $traceurRuntime.createClass(ArrayComprehension,{transform:function(transformer){return transformer.transformArrayComprehension(this)},visit:function(visitor){visitor.visitArrayComprehension(this)},get type(){return ARRAY_COMPREHENSION}},{},$__super)}(ParseTree),ARRAY_LITERAL=ParseTreeType.ARRAY_LITERAL,ArrayLiteral=function($__super){function ArrayLiteral(location,elements){$traceurRuntime.superConstructor(ArrayLiteral).call(this,location),this.elements=elements}return $traceurRuntime.createClass(ArrayLiteral,{transform:function(transformer){return transformer.transformArrayLiteral(this)},visit:function(visitor){visitor.visitArrayLiteral(this)},get type(){return ARRAY_LITERAL}},{},$__super)}(ParseTree),ARRAY_PATTERN=ParseTreeType.ARRAY_PATTERN,ArrayPattern=function($__super){function ArrayPattern(location,elements){$traceurRuntime.superConstructor(ArrayPattern).call(this,location),this.elements=elements}return $traceurRuntime.createClass(ArrayPattern,{transform:function(transformer){return transformer.transformArrayPattern(this)},visit:function(visitor){visitor.visitArrayPattern(this)},get type(){return ARRAY_PATTERN}},{},$__super)}(ParseTree),ARRAY_TYPE=ParseTreeType.ARRAY_TYPE,ArrayType=function($__super){function ArrayType(location,elementType){$traceurRuntime.superConstructor(ArrayType).call(this,location),this.elementType=elementType}return $traceurRuntime.createClass(ArrayType,{transform:function(transformer){return transformer.transformArrayType(this)},visit:function(visitor){visitor.visitArrayType(this)},get type(){return ARRAY_TYPE}},{},$__super)}(ParseTree),ARROW_FUNCTION=ParseTreeType.ARROW_FUNCTION,ArrowFunction=function($__super){function ArrowFunction(location,functionKind,parameterList,body){$traceurRuntime.superConstructor(ArrowFunction).call(this,location),this.functionKind=functionKind,this.parameterList=parameterList,this.body=body}return $traceurRuntime.createClass(ArrowFunction,{transform:function(transformer){return transformer.transformArrowFunction(this)},visit:function(visitor){visitor.visitArrowFunction(this)},get type(){return ARROW_FUNCTION}},{},$__super)}(ParseTree),ASSIGNMENT_ELEMENT=ParseTreeType.ASSIGNMENT_ELEMENT,AssignmentElement=function($__super){function AssignmentElement(location,assignment,initializer){$traceurRuntime.superConstructor(AssignmentElement).call(this,location),this.assignment=assignment,this.initializer=initializer}return $traceurRuntime.createClass(AssignmentElement,{transform:function(transformer){return transformer.transformAssignmentElement(this)},visit:function(visitor){visitor.visitAssignmentElement(this)},get type(){return ASSIGNMENT_ELEMENT}},{},$__super)}(ParseTree),AWAIT_EXPRESSION=ParseTreeType.AWAIT_EXPRESSION,AwaitExpression=function($__super){function AwaitExpression(location,expression){$traceurRuntime.superConstructor(AwaitExpression).call(this,location),this.expression=expression}return $traceurRuntime.createClass(AwaitExpression,{transform:function(transformer){return transformer.transformAwaitExpression(this)},visit:function(visitor){visitor.visitAwaitExpression(this)},get type(){return AWAIT_EXPRESSION}},{},$__super)}(ParseTree),BINARY_EXPRESSION=ParseTreeType.BINARY_EXPRESSION,BinaryExpression=function($__super){function BinaryExpression(location,left,operator,right){$traceurRuntime.superConstructor(BinaryExpression).call(this,location),this.left=left,this.operator=operator,this.right=right}return $traceurRuntime.createClass(BinaryExpression,{transform:function(transformer){return transformer.transformBinaryExpression(this)},visit:function(visitor){visitor.visitBinaryExpression(this)},get type(){return BINARY_EXPRESSION}},{},$__super)}(ParseTree),BINDING_ELEMENT=ParseTreeType.BINDING_ELEMENT,BindingElement=function($__super){function BindingElement(location,binding,initializer){$traceurRuntime.superConstructor(BindingElement).call(this,location),this.binding=binding,this.initializer=initializer}return $traceurRuntime.createClass(BindingElement,{transform:function(transformer){return transformer.transformBindingElement(this)},visit:function(visitor){visitor.visitBindingElement(this)},get type(){return BINDING_ELEMENT}},{},$__super)}(ParseTree),BINDING_IDENTIFIER=ParseTreeType.BINDING_IDENTIFIER,BindingIdentifier=function($__super){function BindingIdentifier(location,identifierToken){$traceurRuntime.superConstructor(BindingIdentifier).call(this,location),this.identifierToken=identifierToken}return $traceurRuntime.createClass(BindingIdentifier,{transform:function(transformer){return transformer.transformBindingIdentifier(this)},visit:function(visitor){visitor.visitBindingIdentifier(this)},get type(){return BINDING_IDENTIFIER}},{},$__super)}(ParseTree),BLOCK=ParseTreeType.BLOCK,Block=function($__super){function Block(location,statements){$traceurRuntime.superConstructor(Block).call(this,location),this.statements=statements}return $traceurRuntime.createClass(Block,{transform:function(transformer){return transformer.transformBlock(this)},visit:function(visitor){visitor.visitBlock(this)},get type(){return BLOCK}},{},$__super)}(ParseTree),BREAK_STATEMENT=ParseTreeType.BREAK_STATEMENT,BreakStatement=function($__super){function BreakStatement(location,name){$traceurRuntime.superConstructor(BreakStatement).call(this,location),this.name=name}return $traceurRuntime.createClass(BreakStatement,{transform:function(transformer){return transformer.transformBreakStatement(this)},visit:function(visitor){visitor.visitBreakStatement(this)},get type(){return BREAK_STATEMENT}},{},$__super)}(ParseTree),CALL_EXPRESSION=ParseTreeType.CALL_EXPRESSION,CallExpression=function($__super){function CallExpression(location,operand,args){$traceurRuntime.superConstructor(CallExpression).call(this,location),this.operand=operand,this.args=args}return $traceurRuntime.createClass(CallExpression,{transform:function(transformer){return transformer.transformCallExpression(this)},visit:function(visitor){visitor.visitCallExpression(this)},get type(){return CALL_EXPRESSION}},{},$__super)}(ParseTree),CALL_SIGNATURE=ParseTreeType.CALL_SIGNATURE,CallSignature=function($__super){function CallSignature(location,typeParameters,parameterList,returnType){$traceurRuntime.superConstructor(CallSignature).call(this,location),this.typeParameters=typeParameters,this.parameterList=parameterList,this.returnType=returnType}return $traceurRuntime.createClass(CallSignature,{transform:function(transformer){return transformer.transformCallSignature(this)},visit:function(visitor){visitor.visitCallSignature(this)},get type(){return CALL_SIGNATURE}},{},$__super)}(ParseTree),CASE_CLAUSE=ParseTreeType.CASE_CLAUSE,CaseClause=function($__super){function CaseClause(location,expression,statements){$traceurRuntime.superConstructor(CaseClause).call(this,location),this.expression=expression,this.statements=statements}return $traceurRuntime.createClass(CaseClause,{transform:function(transformer){return transformer.transformCaseClause(this)},visit:function(visitor){visitor.visitCaseClause(this)},get type(){return CASE_CLAUSE}},{},$__super)}(ParseTree),CATCH=ParseTreeType.CATCH,Catch=function($__super){function Catch(location,binding,catchBody){$traceurRuntime.superConstructor(Catch).call(this,location),this.binding=binding,this.catchBody=catchBody}return $traceurRuntime.createClass(Catch,{transform:function(transformer){return transformer.transformCatch(this)},visit:function(visitor){visitor.visitCatch(this)},get type(){return CATCH}},{},$__super)}(ParseTree),CLASS_DECLARATION=ParseTreeType.CLASS_DECLARATION,ClassDeclaration=function($__super){function ClassDeclaration(location,name,superClass,elements,annotations,typeParameters){$traceurRuntime.superConstructor(ClassDeclaration).call(this,location),this.name=name,this.superClass=superClass,this.elements=elements,this.annotations=annotations,this.typeParameters=typeParameters}return $traceurRuntime.createClass(ClassDeclaration,{transform:function(transformer){return transformer.transformClassDeclaration(this)},visit:function(visitor){visitor.visitClassDeclaration(this)},get type(){return CLASS_DECLARATION}},{},$__super)}(ParseTree),CLASS_EXPRESSION=ParseTreeType.CLASS_EXPRESSION,ClassExpression=function($__super){function ClassExpression(location,name,superClass,elements,annotations,typeParameters){$traceurRuntime.superConstructor(ClassExpression).call(this,location),this.name=name,this.superClass=superClass,this.elements=elements,this.annotations=annotations,this.typeParameters=typeParameters}return $traceurRuntime.createClass(ClassExpression,{transform:function(transformer){return transformer.transformClassExpression(this)},visit:function(visitor){visitor.visitClassExpression(this)},get type(){return CLASS_EXPRESSION}},{},$__super)}(ParseTree),COMMA_EXPRESSION=ParseTreeType.COMMA_EXPRESSION,CommaExpression=function($__super){function CommaExpression(location,expressions){$traceurRuntime.superConstructor(CommaExpression).call(this,location),this.expressions=expressions}return $traceurRuntime.createClass(CommaExpression,{transform:function(transformer){return transformer.transformCommaExpression(this)},visit:function(visitor){visitor.visitCommaExpression(this)},get type(){return COMMA_EXPRESSION}},{},$__super)}(ParseTree),COMPREHENSION_FOR=ParseTreeType.COMPREHENSION_FOR,ComprehensionFor=function($__super){function ComprehensionFor(location,left,iterator){$traceurRuntime.superConstructor(ComprehensionFor).call(this,location),this.left=left,this.iterator=iterator}return $traceurRuntime.createClass(ComprehensionFor,{transform:function(transformer){return transformer.transformComprehensionFor(this)},visit:function(visitor){visitor.visitComprehensionFor(this)},get type(){return COMPREHENSION_FOR}},{},$__super)}(ParseTree),COMPREHENSION_IF=ParseTreeType.COMPREHENSION_IF,ComprehensionIf=function($__super){function ComprehensionIf(location,expression){$traceurRuntime.superConstructor(ComprehensionIf).call(this,location),this.expression=expression}return $traceurRuntime.createClass(ComprehensionIf,{transform:function(transformer){return transformer.transformComprehensionIf(this)},visit:function(visitor){visitor.visitComprehensionIf(this)},get type(){return COMPREHENSION_IF}},{},$__super)}(ParseTree),COMPUTED_PROPERTY_NAME=ParseTreeType.COMPUTED_PROPERTY_NAME,ComputedPropertyName=function($__super){function ComputedPropertyName(location,expression){
$traceurRuntime.superConstructor(ComputedPropertyName).call(this,location),this.expression=expression}return $traceurRuntime.createClass(ComputedPropertyName,{transform:function(transformer){return transformer.transformComputedPropertyName(this)},visit:function(visitor){visitor.visitComputedPropertyName(this)},get type(){return COMPUTED_PROPERTY_NAME}},{},$__super)}(ParseTree),CONDITIONAL_EXPRESSION=ParseTreeType.CONDITIONAL_EXPRESSION,ConditionalExpression=function($__super){function ConditionalExpression(location,condition,left,right){$traceurRuntime.superConstructor(ConditionalExpression).call(this,location),this.condition=condition,this.left=left,this.right=right}return $traceurRuntime.createClass(ConditionalExpression,{transform:function(transformer){return transformer.transformConditionalExpression(this)},visit:function(visitor){visitor.visitConditionalExpression(this)},get type(){return CONDITIONAL_EXPRESSION}},{},$__super)}(ParseTree),CONSTRUCT_SIGNATURE=ParseTreeType.CONSTRUCT_SIGNATURE,ConstructSignature=function($__super){function ConstructSignature(location,typeParameters,parameterList,returnType){$traceurRuntime.superConstructor(ConstructSignature).call(this,location),this.typeParameters=typeParameters,this.parameterList=parameterList,this.returnType=returnType}return $traceurRuntime.createClass(ConstructSignature,{transform:function(transformer){return transformer.transformConstructSignature(this)},visit:function(visitor){visitor.visitConstructSignature(this)},get type(){return CONSTRUCT_SIGNATURE}},{},$__super)}(ParseTree),CONSTRUCTOR_TYPE=ParseTreeType.CONSTRUCTOR_TYPE,ConstructorType=function($__super){function ConstructorType(location,typeParameters,parameterList,returnType){$traceurRuntime.superConstructor(ConstructorType).call(this,location),this.typeParameters=typeParameters,this.parameterList=parameterList,this.returnType=returnType}return $traceurRuntime.createClass(ConstructorType,{transform:function(transformer){return transformer.transformConstructorType(this)},visit:function(visitor){visitor.visitConstructorType(this)},get type(){return CONSTRUCTOR_TYPE}},{},$__super)}(ParseTree),CONTINUE_STATEMENT=ParseTreeType.CONTINUE_STATEMENT,ContinueStatement=function($__super){function ContinueStatement(location,name){$traceurRuntime.superConstructor(ContinueStatement).call(this,location),this.name=name}return $traceurRuntime.createClass(ContinueStatement,{transform:function(transformer){return transformer.transformContinueStatement(this)},visit:function(visitor){visitor.visitContinueStatement(this)},get type(){return CONTINUE_STATEMENT}},{},$__super)}(ParseTree),COVER_FORMALS=ParseTreeType.COVER_FORMALS,CoverFormals=function($__super){function CoverFormals(location,expressions){$traceurRuntime.superConstructor(CoverFormals).call(this,location),this.expressions=expressions}return $traceurRuntime.createClass(CoverFormals,{transform:function(transformer){return transformer.transformCoverFormals(this)},visit:function(visitor){visitor.visitCoverFormals(this)},get type(){return COVER_FORMALS}},{},$__super)}(ParseTree),COVER_INITIALIZED_NAME=ParseTreeType.COVER_INITIALIZED_NAME,CoverInitializedName=function($__super){function CoverInitializedName(location,name,equalToken,initializer){$traceurRuntime.superConstructor(CoverInitializedName).call(this,location),this.name=name,this.equalToken=equalToken,this.initializer=initializer}return $traceurRuntime.createClass(CoverInitializedName,{transform:function(transformer){return transformer.transformCoverInitializedName(this)},visit:function(visitor){visitor.visitCoverInitializedName(this)},get type(){return COVER_INITIALIZED_NAME}},{},$__super)}(ParseTree),DEBUGGER_STATEMENT=ParseTreeType.DEBUGGER_STATEMENT,DebuggerStatement=function($__super){function DebuggerStatement(location){$traceurRuntime.superConstructor(DebuggerStatement).call(this,location)}return $traceurRuntime.createClass(DebuggerStatement,{transform:function(transformer){return transformer.transformDebuggerStatement(this)},visit:function(visitor){visitor.visitDebuggerStatement(this)},get type(){return DEBUGGER_STATEMENT}},{},$__super)}(ParseTree),DEFAULT_CLAUSE=ParseTreeType.DEFAULT_CLAUSE,DefaultClause=function($__super){function DefaultClause(location,statements){$traceurRuntime.superConstructor(DefaultClause).call(this,location),this.statements=statements}return $traceurRuntime.createClass(DefaultClause,{transform:function(transformer){return transformer.transformDefaultClause(this)},visit:function(visitor){visitor.visitDefaultClause(this)},get type(){return DEFAULT_CLAUSE}},{},$__super)}(ParseTree),DO_WHILE_STATEMENT=ParseTreeType.DO_WHILE_STATEMENT,DoWhileStatement=function($__super){function DoWhileStatement(location,body,condition){$traceurRuntime.superConstructor(DoWhileStatement).call(this,location),this.body=body,this.condition=condition}return $traceurRuntime.createClass(DoWhileStatement,{transform:function(transformer){return transformer.transformDoWhileStatement(this)},visit:function(visitor){visitor.visitDoWhileStatement(this)},get type(){return DO_WHILE_STATEMENT}},{},$__super)}(ParseTree),EMPTY_STATEMENT=ParseTreeType.EMPTY_STATEMENT,EmptyStatement=function($__super){function EmptyStatement(location){$traceurRuntime.superConstructor(EmptyStatement).call(this,location)}return $traceurRuntime.createClass(EmptyStatement,{transform:function(transformer){return transformer.transformEmptyStatement(this)},visit:function(visitor){visitor.visitEmptyStatement(this)},get type(){return EMPTY_STATEMENT}},{},$__super)}(ParseTree),EXPORT_DECLARATION=ParseTreeType.EXPORT_DECLARATION,ExportDeclaration=function($__super){function ExportDeclaration(location,declaration,annotations){$traceurRuntime.superConstructor(ExportDeclaration).call(this,location),this.declaration=declaration,this.annotations=annotations}return $traceurRuntime.createClass(ExportDeclaration,{transform:function(transformer){return transformer.transformExportDeclaration(this)},visit:function(visitor){visitor.visitExportDeclaration(this)},get type(){return EXPORT_DECLARATION}},{},$__super)}(ParseTree),EXPORT_DEFAULT=ParseTreeType.EXPORT_DEFAULT,ExportDefault=function($__super){function ExportDefault(location,expression){$traceurRuntime.superConstructor(ExportDefault).call(this,location),this.expression=expression}return $traceurRuntime.createClass(ExportDefault,{transform:function(transformer){return transformer.transformExportDefault(this)},visit:function(visitor){visitor.visitExportDefault(this)},get type(){return EXPORT_DEFAULT}},{},$__super)}(ParseTree),EXPORT_SPECIFIER=ParseTreeType.EXPORT_SPECIFIER,ExportSpecifier=function($__super){function ExportSpecifier(location,lhs,rhs){$traceurRuntime.superConstructor(ExportSpecifier).call(this,location),this.lhs=lhs,this.rhs=rhs}return $traceurRuntime.createClass(ExportSpecifier,{transform:function(transformer){return transformer.transformExportSpecifier(this)},visit:function(visitor){visitor.visitExportSpecifier(this)},get type(){return EXPORT_SPECIFIER}},{},$__super)}(ParseTree),EXPORT_SPECIFIER_SET=ParseTreeType.EXPORT_SPECIFIER_SET,ExportSpecifierSet=function($__super){function ExportSpecifierSet(location,specifiers){$traceurRuntime.superConstructor(ExportSpecifierSet).call(this,location),this.specifiers=specifiers}return $traceurRuntime.createClass(ExportSpecifierSet,{transform:function(transformer){return transformer.transformExportSpecifierSet(this)},visit:function(visitor){visitor.visitExportSpecifierSet(this)},get type(){return EXPORT_SPECIFIER_SET}},{},$__super)}(ParseTree),EXPORT_STAR=ParseTreeType.EXPORT_STAR,ExportStar=function($__super){function ExportStar(location){$traceurRuntime.superConstructor(ExportStar).call(this,location)}return $traceurRuntime.createClass(ExportStar,{transform:function(transformer){return transformer.transformExportStar(this)},visit:function(visitor){visitor.visitExportStar(this)},get type(){return EXPORT_STAR}},{},$__super)}(ParseTree),EXPRESSION_STATEMENT=ParseTreeType.EXPRESSION_STATEMENT,ExpressionStatement=function($__super){function ExpressionStatement(location,expression){$traceurRuntime.superConstructor(ExpressionStatement).call(this,location),this.expression=expression}return $traceurRuntime.createClass(ExpressionStatement,{transform:function(transformer){return transformer.transformExpressionStatement(this)},visit:function(visitor){visitor.visitExpressionStatement(this)},get type(){return EXPRESSION_STATEMENT}},{},$__super)}(ParseTree),FINALLY=ParseTreeType.FINALLY,Finally=function($__super){function Finally(location,block){$traceurRuntime.superConstructor(Finally).call(this,location),this.block=block}return $traceurRuntime.createClass(Finally,{transform:function(transformer){return transformer.transformFinally(this)},visit:function(visitor){visitor.visitFinally(this)},get type(){return FINALLY}},{},$__super)}(ParseTree),FOR_IN_STATEMENT=ParseTreeType.FOR_IN_STATEMENT,ForInStatement=function($__super){function ForInStatement(location,initializer,collection,body){$traceurRuntime.superConstructor(ForInStatement).call(this,location),this.initializer=initializer,this.collection=collection,this.body=body}return $traceurRuntime.createClass(ForInStatement,{transform:function(transformer){return transformer.transformForInStatement(this)},visit:function(visitor){visitor.visitForInStatement(this)},get type(){return FOR_IN_STATEMENT}},{},$__super)}(ParseTree),FOR_OF_STATEMENT=ParseTreeType.FOR_OF_STATEMENT,ForOfStatement=function($__super){function ForOfStatement(location,initializer,collection,body){$traceurRuntime.superConstructor(ForOfStatement).call(this,location),this.initializer=initializer,this.collection=collection,this.body=body}return $traceurRuntime.createClass(ForOfStatement,{transform:function(transformer){return transformer.transformForOfStatement(this)},visit:function(visitor){visitor.visitForOfStatement(this)},get type(){return FOR_OF_STATEMENT}},{},$__super)}(ParseTree),FOR_ON_STATEMENT=ParseTreeType.FOR_ON_STATEMENT,ForOnStatement=function($__super){function ForOnStatement(location,initializer,observable,body){$traceurRuntime.superConstructor(ForOnStatement).call(this,location),this.initializer=initializer,this.observable=observable,this.body=body}return $traceurRuntime.createClass(ForOnStatement,{transform:function(transformer){return transformer.transformForOnStatement(this)},visit:function(visitor){visitor.visitForOnStatement(this)},get type(){return FOR_ON_STATEMENT}},{},$__super)}(ParseTree),FOR_STATEMENT=ParseTreeType.FOR_STATEMENT,ForStatement=function($__super){function ForStatement(location,initializer,condition,increment,body){$traceurRuntime.superConstructor(ForStatement).call(this,location),this.initializer=initializer,this.condition=condition,this.increment=increment,this.body=body}return $traceurRuntime.createClass(ForStatement,{transform:function(transformer){return transformer.transformForStatement(this)},visit:function(visitor){visitor.visitForStatement(this)},get type(){return FOR_STATEMENT}},{},$__super)}(ParseTree),FORMAL_PARAMETER=ParseTreeType.FORMAL_PARAMETER,FormalParameter=function($__super){function FormalParameter(location,parameter,typeAnnotation,annotations){$traceurRuntime.superConstructor(FormalParameter).call(this,location),this.parameter=parameter,this.typeAnnotation=typeAnnotation,this.annotations=annotations}return $traceurRuntime.createClass(FormalParameter,{transform:function(transformer){return transformer.transformFormalParameter(this)},visit:function(visitor){visitor.visitFormalParameter(this)},get type(){return FORMAL_PARAMETER}},{},$__super)}(ParseTree),FORMAL_PARAMETER_LIST=ParseTreeType.FORMAL_PARAMETER_LIST,FormalParameterList=function($__super){function FormalParameterList(location,parameters){$traceurRuntime.superConstructor(FormalParameterList).call(this,location),this.parameters=parameters}return $traceurRuntime.createClass(FormalParameterList,{transform:function(transformer){return transformer.transformFormalParameterList(this)},visit:function(visitor){visitor.visitFormalParameterList(this)},get type(){return FORMAL_PARAMETER_LIST}},{},$__super)}(ParseTree),FORWARD_DEFAULT_EXPORT=ParseTreeType.FORWARD_DEFAULT_EXPORT,ForwardDefaultExport=function($__super){function ForwardDefaultExport(location,name){$traceurRuntime.superConstructor(ForwardDefaultExport).call(this,location),this.name=name}return $traceurRuntime.createClass(ForwardDefaultExport,{transform:function(transformer){return transformer.transformForwardDefaultExport(this)},visit:function(visitor){visitor.visitForwardDefaultExport(this)},get type(){return FORWARD_DEFAULT_EXPORT}},{},$__super)}(ParseTree),FUNCTION_BODY=ParseTreeType.FUNCTION_BODY,FunctionBody=function($__super){function FunctionBody(location,statements){$traceurRuntime.superConstructor(FunctionBody).call(this,location),this.statements=statements}return $traceurRuntime.createClass(FunctionBody,{transform:function(transformer){return transformer.transformFunctionBody(this)},visit:function(visitor){visitor.visitFunctionBody(this)},get type(){return FUNCTION_BODY}},{},$__super)}(ParseTree),FUNCTION_DECLARATION=ParseTreeType.FUNCTION_DECLARATION,FunctionDeclaration=function($__super){function FunctionDeclaration(location,name,functionKind,parameterList,typeAnnotation,annotations,body){$traceurRuntime.superConstructor(FunctionDeclaration).call(this,location),this.name=name,this.functionKind=functionKind,this.parameterList=parameterList,this.typeAnnotation=typeAnnotation,this.annotations=annotations,this.body=body}return $traceurRuntime.createClass(FunctionDeclaration,{transform:function(transformer){return transformer.transformFunctionDeclaration(this)},visit:function(visitor){visitor.visitFunctionDeclaration(this)},get type(){return FUNCTION_DECLARATION}},{},$__super)}(ParseTree),FUNCTION_EXPRESSION=ParseTreeType.FUNCTION_EXPRESSION,FunctionExpression=function($__super){function FunctionExpression(location,name,functionKind,parameterList,typeAnnotation,annotations,body){$traceurRuntime.superConstructor(FunctionExpression).call(this,location),this.name=name,this.functionKind=functionKind,this.parameterList=parameterList,this.typeAnnotation=typeAnnotation,this.annotations=annotations,this.body=body}return $traceurRuntime.createClass(FunctionExpression,{transform:function(transformer){return transformer.transformFunctionExpression(this)},visit:function(visitor){visitor.visitFunctionExpression(this)},get type(){return FUNCTION_EXPRESSION}},{},$__super)}(ParseTree),FUNCTION_TYPE=ParseTreeType.FUNCTION_TYPE,FunctionType=function($__super){function FunctionType(location,typeParameters,parameterList,returnType){$traceurRuntime.superConstructor(FunctionType).call(this,location),this.typeParameters=typeParameters,this.parameterList=parameterList,this.returnType=returnType}return $traceurRuntime.createClass(FunctionType,{transform:function(transformer){return transformer.transformFunctionType(this)},visit:function(visitor){visitor.visitFunctionType(this)},get type(){return FUNCTION_TYPE}},{},$__super)}(ParseTree),GENERATOR_COMPREHENSION=ParseTreeType.GENERATOR_COMPREHENSION,GeneratorComprehension=function($__super){function GeneratorComprehension(location,comprehensionList,expression){$traceurRuntime.superConstructor(GeneratorComprehension).call(this,location),this.comprehensionList=comprehensionList,this.expression=expression}return $traceurRuntime.createClass(GeneratorComprehension,{transform:function(transformer){return transformer.transformGeneratorComprehension(this)},visit:function(visitor){visitor.visitGeneratorComprehension(this)},get type(){return GENERATOR_COMPREHENSION}},{},$__super)}(ParseTree),GET_ACCESSOR=ParseTreeType.GET_ACCESSOR,GetAccessor=function($__super){function GetAccessor(location,isStatic,name,typeAnnotation,annotations,body){$traceurRuntime.superConstructor(GetAccessor).call(this,location),this.isStatic=isStatic,this.name=name,this.typeAnnotation=typeAnnotation,this.annotations=annotations,this.body=body}return $traceurRuntime.createClass(GetAccessor,{transform:function(transformer){return transformer.transformGetAccessor(this)},visit:function(visitor){visitor.visitGetAccessor(this)},get type(){return GET_ACCESSOR}},{},$__super)}(ParseTree),IDENTIFIER_EXPRESSION=ParseTreeType.IDENTIFIER_EXPRESSION,IdentifierExpression=function($__super){function IdentifierExpression(location,identifierToken){$traceurRuntime.superConstructor(IdentifierExpression).call(this,location),this.identifierToken=identifierToken}return $traceurRuntime.createClass(IdentifierExpression,{transform:function(transformer){return transformer.transformIdentifierExpression(this)},visit:function(visitor){visitor.visitIdentifierExpression(this)},get type(){return IDENTIFIER_EXPRESSION}},{},$__super)}(ParseTree),IF_STATEMENT=ParseTreeType.IF_STATEMENT,IfStatement=function($__super){function IfStatement(location,condition,ifClause,elseClause){$traceurRuntime.superConstructor(IfStatement).call(this,location),this.condition=condition,this.ifClause=ifClause,this.elseClause=elseClause}return $traceurRuntime.createClass(IfStatement,{transform:function(transformer){return transformer.transformIfStatement(this)},visit:function(visitor){visitor.visitIfStatement(this)},get type(){return IF_STATEMENT}},{},$__super)}(ParseTree),IMPORTED_BINDING=ParseTreeType.IMPORTED_BINDING,ImportedBinding=function($__super){function ImportedBinding(location,binding){$traceurRuntime.superConstructor(ImportedBinding).call(this,location),this.binding=binding}return $traceurRuntime.createClass(ImportedBinding,{transform:function(transformer){return transformer.transformImportedBinding(this)},visit:function(visitor){visitor.visitImportedBinding(this)},get type(){return IMPORTED_BINDING}},{},$__super)}(ParseTree),IMPORT_CLAUSE_PAIR=ParseTreeType.IMPORT_CLAUSE_PAIR,ImportClausePair=function($__super){function ImportClausePair(location,first,second){$traceurRuntime.superConstructor(ImportClausePair).call(this,location),this.first=first,this.second=second}return $traceurRuntime.createClass(ImportClausePair,{transform:function(transformer){return transformer.transformImportClausePair(this)},visit:function(visitor){visitor.visitImportClausePair(this)},get type(){return IMPORT_CLAUSE_PAIR}},{},$__super)}(ParseTree),IMPORT_DECLARATION=ParseTreeType.IMPORT_DECLARATION,ImportDeclaration=function($__super){function ImportDeclaration(location,importClause,moduleSpecifier){$traceurRuntime.superConstructor(ImportDeclaration).call(this,location),this.importClause=importClause,this.moduleSpecifier=moduleSpecifier}return $traceurRuntime.createClass(ImportDeclaration,{transform:function(transformer){return transformer.transformImportDeclaration(this)},visit:function(visitor){visitor.visitImportDeclaration(this)},get type(){return IMPORT_DECLARATION}},{},$__super)}(ParseTree),IMPORT_SPECIFIER=ParseTreeType.IMPORT_SPECIFIER,ImportSpecifier=function($__super){function ImportSpecifier(location,binding,name){$traceurRuntime.superConstructor(ImportSpecifier).call(this,location),this.binding=binding,this.name=name}return $traceurRuntime.createClass(ImportSpecifier,{transform:function(transformer){return transformer.transformImportSpecifier(this)},visit:function(visitor){visitor.visitImportSpecifier(this)},get type(){return IMPORT_SPECIFIER}},{},$__super)}(ParseTree),IMPORT_SPECIFIER_SET=ParseTreeType.IMPORT_SPECIFIER_SET,ImportSpecifierSet=function($__super){function ImportSpecifierSet(location,specifiers){$traceurRuntime.superConstructor(ImportSpecifierSet).call(this,location),this.specifiers=specifiers}return $traceurRuntime.createClass(ImportSpecifierSet,{transform:function(transformer){return transformer.transformImportSpecifierSet(this)},visit:function(visitor){visitor.visitImportSpecifierSet(this)},get type(){return IMPORT_SPECIFIER_SET}},{},$__super)}(ParseTree),IMPORT_TYPE_CLAUSE=ParseTreeType.IMPORT_TYPE_CLAUSE,ImportTypeClause=function($__super){function ImportTypeClause(location,clause){$traceurRuntime.superConstructor(ImportTypeClause).call(this,location),this.clause=clause}return $traceurRuntime.createClass(ImportTypeClause,{transform:function(transformer){return transformer.transformImportTypeClause(this)},visit:function(visitor){visitor.visitImportTypeClause(this)},get type(){return IMPORT_TYPE_CLAUSE}},{},$__super)}(ParseTree),INDEX_SIGNATURE=ParseTreeType.INDEX_SIGNATURE,IndexSignature=function($__super){function IndexSignature(location,name,indexType,typeAnnotation){$traceurRuntime.superConstructor(IndexSignature).call(this,location),this.name=name,this.indexType=indexType,this.typeAnnotation=typeAnnotation}return $traceurRuntime.createClass(IndexSignature,{transform:function(transformer){return transformer.transformIndexSignature(this)},visit:function(visitor){visitor.visitIndexSignature(this)},get type(){return INDEX_SIGNATURE}},{},$__super)}(ParseTree),INTERFACE_DECLARATION=ParseTreeType.INTERFACE_DECLARATION,InterfaceDeclaration=function($__super){function InterfaceDeclaration(location,name,typeParameters,extendsClause,objectType){$traceurRuntime.superConstructor(InterfaceDeclaration).call(this,location),this.name=name,this.typeParameters=typeParameters,this.extendsClause=extendsClause,this.objectType=objectType}return $traceurRuntime.createClass(InterfaceDeclaration,{transform:function(transformer){return transformer.transformInterfaceDeclaration(this)},visit:function(visitor){visitor.visitInterfaceDeclaration(this)},get type(){return INTERFACE_DECLARATION}},{},$__super)}(ParseTree),JSX_ATTRIBUTE=ParseTreeType.JSX_ATTRIBUTE,JsxAttribute=function($__super){function JsxAttribute(location,name,value){$traceurRuntime.superConstructor(JsxAttribute).call(this,location),this.name=name,this.value=value}return $traceurRuntime.createClass(JsxAttribute,{transform:function(transformer){return transformer.transformJsxAttribute(this)},visit:function(visitor){visitor.visitJsxAttribute(this)},get type(){return JSX_ATTRIBUTE}},{},$__super)}(ParseTree),JSX_ELEMENT=ParseTreeType.JSX_ELEMENT,JsxElement=function($__super){function JsxElement(location,name,attributes,children){$traceurRuntime.superConstructor(JsxElement).call(this,location),this.name=name,this.attributes=attributes,this.children=children}return $traceurRuntime.createClass(JsxElement,{transform:function(transformer){return transformer.transformJsxElement(this)},visit:function(visitor){visitor.visitJsxElement(this)},get type(){return JSX_ELEMENT}},{},$__super)}(ParseTree),JSX_ELEMENT_NAME=ParseTreeType.JSX_ELEMENT_NAME,JsxElementName=function($__super){function JsxElementName(location,names){$traceurRuntime.superConstructor(JsxElementName).call(this,location),this.names=names}return $traceurRuntime.createClass(JsxElementName,{transform:function(transformer){return transformer.transformJsxElementName(this)},visit:function(visitor){visitor.visitJsxElementName(this)},get type(){return JSX_ELEMENT_NAME}},{},$__super)}(ParseTree),JSX_PLACEHOLDER=ParseTreeType.JSX_PLACEHOLDER,JsxPlaceholder=function($__super){function JsxPlaceholder(location,expression){$traceurRuntime.superConstructor(JsxPlaceholder).call(this,location),this.expression=expression}return $traceurRuntime.createClass(JsxPlaceholder,{transform:function(transformer){return transformer.transformJsxPlaceholder(this)},visit:function(visitor){visitor.visitJsxPlaceholder(this)},get type(){return JSX_PLACEHOLDER}},{},$__super)}(ParseTree),JSX_SPREAD_ATTRIBUTE=ParseTreeType.JSX_SPREAD_ATTRIBUTE,JsxSpreadAttribute=function($__super){function JsxSpreadAttribute(location,expression){$traceurRuntime.superConstructor(JsxSpreadAttribute).call(this,location),this.expression=expression}return $traceurRuntime.createClass(JsxSpreadAttribute,{transform:function(transformer){return transformer.transformJsxSpreadAttribute(this)},visit:function(visitor){visitor.visitJsxSpreadAttribute(this)},get type(){return JSX_SPREAD_ATTRIBUTE}},{},$__super)}(ParseTree),JSX_TEXT=ParseTreeType.JSX_TEXT,JsxText=function($__super){function JsxText(location,value){$traceurRuntime.superConstructor(JsxText).call(this,location),this.value=value}return $traceurRuntime.createClass(JsxText,{transform:function(transformer){return transformer.transformJsxText(this)},visit:function(visitor){visitor.visitJsxText(this)},get type(){return JSX_TEXT}},{},$__super)}(ParseTree),LABELLED_STATEMENT=ParseTreeType.LABELLED_STATEMENT,LabelledStatement=function($__super){function LabelledStatement(location,name,statement){$traceurRuntime.superConstructor(LabelledStatement).call(this,location),this.name=name,this.statement=statement}return $traceurRuntime.createClass(LabelledStatement,{transform:function(transformer){return transformer.transformLabelledStatement(this)},visit:function(visitor){visitor.visitLabelledStatement(this)},get type(){return LABELLED_STATEMENT}},{},$__super)}(ParseTree),LITERAL_EXPRESSION=ParseTreeType.LITERAL_EXPRESSION,LiteralExpression=function($__super){function LiteralExpression(location,literalToken){$traceurRuntime.superConstructor(LiteralExpression).call(this,location),this.literalToken=literalToken}return $traceurRuntime.createClass(LiteralExpression,{transform:function(transformer){return transformer.transformLiteralExpression(this)},visit:function(visitor){visitor.visitLiteralExpression(this)},get type(){return LITERAL_EXPRESSION}},{},$__super)}(ParseTree),LITERAL_PROPERTY_NAME=ParseTreeType.LITERAL_PROPERTY_NAME,LiteralPropertyName=function($__super){function LiteralPropertyName(location,literalToken){$traceurRuntime.superConstructor(LiteralPropertyName).call(this,location),this.literalToken=literalToken}return $traceurRuntime.createClass(LiteralPropertyName,{transform:function(transformer){return transformer.transformLiteralPropertyName(this)},visit:function(visitor){visitor.visitLiteralPropertyName(this)},get type(){return LITERAL_PROPERTY_NAME}},{},$__super)}(ParseTree),MEMBER_EXPRESSION=ParseTreeType.MEMBER_EXPRESSION,MemberExpression=function($__super){function MemberExpression(location,operand,memberName){$traceurRuntime.superConstructor(MemberExpression).call(this,location),this.operand=operand,this.memberName=memberName}return $traceurRuntime.createClass(MemberExpression,{transform:function(transformer){return transformer.transformMemberExpression(this)},visit:function(visitor){visitor.visitMemberExpression(this)},get type(){return MEMBER_EXPRESSION}},{},$__super)}(ParseTree),MEMBER_LOOKUP_EXPRESSION=ParseTreeType.MEMBER_LOOKUP_EXPRESSION,MemberLookupExpression=function($__super){function MemberLookupExpression(location,operand,memberExpression){$traceurRuntime.superConstructor(MemberLookupExpression).call(this,location),this.operand=operand,this.memberExpression=memberExpression}return $traceurRuntime.createClass(MemberLookupExpression,{transform:function(transformer){return transformer.transformMemberLookupExpression(this)},visit:function(visitor){visitor.visitMemberLookupExpression(this)},get type(){return MEMBER_LOOKUP_EXPRESSION}},{},$__super)}(ParseTree),METHOD=ParseTreeType.METHOD,Method=function($__super){function Method(location,isStatic,functionKind,name,parameterList,typeAnnotation,annotations,body,debugName){$traceurRuntime.superConstructor(Method).call(this,location),this.isStatic=isStatic,this.functionKind=functionKind,this.name=name,this.parameterList=parameterList,this.typeAnnotation=typeAnnotation,this.annotations=annotations,this.body=body,this.debugName=debugName}return $traceurRuntime.createClass(Method,{transform:function(transformer){return transformer.transformMethod(this)},visit:function(visitor){visitor.visitMethod(this)},get type(){return METHOD}},{},$__super)}(ParseTree),METHOD_SIGNATURE=ParseTreeType.METHOD_SIGNATURE,MethodSignature=function($__super){function MethodSignature(location,name,optional,callSignature){$traceurRuntime.superConstructor(MethodSignature).call(this,location),this.name=name,this.optional=optional,this.callSignature=callSignature}return $traceurRuntime.createClass(MethodSignature,{transform:function(transformer){return transformer.transformMethodSignature(this)},visit:function(visitor){visitor.visitMethodSignature(this)},get type(){return METHOD_SIGNATURE}},{},$__super)}(ParseTree),MODULE=ParseTreeType.MODULE,Module=function($__super){function Module(location,scriptItemList,moduleName){$traceurRuntime.superConstructor(Module).call(this,location),this.scriptItemList=scriptItemList,this.moduleName=moduleName}return $traceurRuntime.createClass(Module,{transform:function(transformer){return transformer.transformModule(this)},visit:function(visitor){visitor.visitModule(this)},get type(){return MODULE}},{},$__super)}(ParseTree),MODULE_SPECIFIER=ParseTreeType.MODULE_SPECIFIER,ModuleSpecifier=function($__super){function ModuleSpecifier(location,token){$traceurRuntime.superConstructor(ModuleSpecifier).call(this,location),this.token=token}return $traceurRuntime.createClass(ModuleSpecifier,{transform:function(transformer){return transformer.transformModuleSpecifier(this)},visit:function(visitor){visitor.visitModuleSpecifier(this)},get type(){return MODULE_SPECIFIER}},{},$__super)}(ParseTree),NAME_SPACE_EXPORT=ParseTreeType.NAME_SPACE_EXPORT,NameSpaceExport=function($__super){function NameSpaceExport(location,name){$traceurRuntime.superConstructor(NameSpaceExport).call(this,location),this.name=name}return $traceurRuntime.createClass(NameSpaceExport,{transform:function(transformer){return transformer.transformNameSpaceExport(this)},visit:function(visitor){visitor.visitNameSpaceExport(this)},get type(){return NAME_SPACE_EXPORT}},{},$__super)}(ParseTree),NAME_SPACE_IMPORT=ParseTreeType.NAME_SPACE_IMPORT,NameSpaceImport=function($__super){function NameSpaceImport(location,binding){$traceurRuntime.superConstructor(NameSpaceImport).call(this,location),this.binding=binding}return $traceurRuntime.createClass(NameSpaceImport,{transform:function(transformer){return transformer.transformNameSpaceImport(this)},visit:function(visitor){visitor.visitNameSpaceImport(this)},get type(){return NAME_SPACE_IMPORT}},{},$__super)}(ParseTree),NAMED_EXPORT=ParseTreeType.NAMED_EXPORT,NamedExport=function($__super){function NamedExport(location,exportClause,moduleSpecifier){$traceurRuntime.superConstructor(NamedExport).call(this,location),this.exportClause=exportClause,this.moduleSpecifier=moduleSpecifier}return $traceurRuntime.createClass(NamedExport,{transform:function(transformer){return transformer.transformNamedExport(this)},visit:function(visitor){visitor.visitNamedExport(this)},get type(){return NAMED_EXPORT}},{},$__super)}(ParseTree),NEW_EXPRESSION=ParseTreeType.NEW_EXPRESSION,NewExpression=function($__super){function NewExpression(location,operand,args){$traceurRuntime.superConstructor(NewExpression).call(this,location),this.operand=operand,this.args=args}return $traceurRuntime.createClass(NewExpression,{transform:function(transformer){return transformer.transformNewExpression(this)},visit:function(visitor){visitor.visitNewExpression(this)},get type(){return NEW_EXPRESSION}},{},$__super)}(ParseTree),OBJECT_LITERAL=ParseTreeType.OBJECT_LITERAL,ObjectLiteral=function($__super){function ObjectLiteral(location,propertyNameAndValues){$traceurRuntime.superConstructor(ObjectLiteral).call(this,location),this.propertyNameAndValues=propertyNameAndValues}return $traceurRuntime.createClass(ObjectLiteral,{transform:function(transformer){return transformer.transformObjectLiteral(this)},visit:function(visitor){visitor.visitObjectLiteral(this)},get type(){return OBJECT_LITERAL}},{},$__super)}(ParseTree),OBJECT_PATTERN=ParseTreeType.OBJECT_PATTERN,ObjectPattern=function($__super){function ObjectPattern(location,fields){$traceurRuntime.superConstructor(ObjectPattern).call(this,location),this.fields=fields}return $traceurRuntime.createClass(ObjectPattern,{transform:function(transformer){return transformer.transformObjectPattern(this)},visit:function(visitor){visitor.visitObjectPattern(this)},get type(){return OBJECT_PATTERN}},{},$__super)}(ParseTree),OBJECT_PATTERN_FIELD=ParseTreeType.OBJECT_PATTERN_FIELD,ObjectPatternField=function($__super){
function ObjectPatternField(location,name,element){$traceurRuntime.superConstructor(ObjectPatternField).call(this,location),this.name=name,this.element=element}return $traceurRuntime.createClass(ObjectPatternField,{transform:function(transformer){return transformer.transformObjectPatternField(this)},visit:function(visitor){visitor.visitObjectPatternField(this)},get type(){return OBJECT_PATTERN_FIELD}},{},$__super)}(ParseTree),OBJECT_TYPE=ParseTreeType.OBJECT_TYPE,ObjectType=function($__super){function ObjectType(location,typeMembers){$traceurRuntime.superConstructor(ObjectType).call(this,location),this.typeMembers=typeMembers}return $traceurRuntime.createClass(ObjectType,{transform:function(transformer){return transformer.transformObjectType(this)},visit:function(visitor){visitor.visitObjectType(this)},get type(){return OBJECT_TYPE}},{},$__super)}(ParseTree),PAREN_EXPRESSION=ParseTreeType.PAREN_EXPRESSION,ParenExpression=function($__super){function ParenExpression(location,expression){$traceurRuntime.superConstructor(ParenExpression).call(this,location),this.expression=expression}return $traceurRuntime.createClass(ParenExpression,{transform:function(transformer){return transformer.transformParenExpression(this)},visit:function(visitor){visitor.visitParenExpression(this)},get type(){return PAREN_EXPRESSION}},{},$__super)}(ParseTree),POSTFIX_EXPRESSION=ParseTreeType.POSTFIX_EXPRESSION,PostfixExpression=function($__super){function PostfixExpression(location,operand,operator){$traceurRuntime.superConstructor(PostfixExpression).call(this,location),this.operand=operand,this.operator=operator}return $traceurRuntime.createClass(PostfixExpression,{transform:function(transformer){return transformer.transformPostfixExpression(this)},visit:function(visitor){visitor.visitPostfixExpression(this)},get type(){return POSTFIX_EXPRESSION}},{},$__super)}(ParseTree),PREDEFINED_TYPE=ParseTreeType.PREDEFINED_TYPE,PredefinedType=function($__super){function PredefinedType(location,typeToken){$traceurRuntime.superConstructor(PredefinedType).call(this,location),this.typeToken=typeToken}return $traceurRuntime.createClass(PredefinedType,{transform:function(transformer){return transformer.transformPredefinedType(this)},visit:function(visitor){visitor.visitPredefinedType(this)},get type(){return PREDEFINED_TYPE}},{},$__super)}(ParseTree),SCRIPT=ParseTreeType.SCRIPT,Script=function($__super){function Script(location,scriptItemList,moduleName){$traceurRuntime.superConstructor(Script).call(this,location),this.scriptItemList=scriptItemList,this.moduleName=moduleName}return $traceurRuntime.createClass(Script,{transform:function(transformer){return transformer.transformScript(this)},visit:function(visitor){visitor.visitScript(this)},get type(){return SCRIPT}},{},$__super)}(ParseTree),PROPERTY_NAME_ASSIGNMENT=ParseTreeType.PROPERTY_NAME_ASSIGNMENT,PropertyNameAssignment=function($__super){function PropertyNameAssignment(location,name,value){$traceurRuntime.superConstructor(PropertyNameAssignment).call(this,location),this.name=name,this.value=value}return $traceurRuntime.createClass(PropertyNameAssignment,{transform:function(transformer){return transformer.transformPropertyNameAssignment(this)},visit:function(visitor){visitor.visitPropertyNameAssignment(this)},get type(){return PROPERTY_NAME_ASSIGNMENT}},{},$__super)}(ParseTree),PROPERTY_NAME_SHORTHAND=ParseTreeType.PROPERTY_NAME_SHORTHAND,PropertyNameShorthand=function($__super){function PropertyNameShorthand(location,name){$traceurRuntime.superConstructor(PropertyNameShorthand).call(this,location),this.name=name}return $traceurRuntime.createClass(PropertyNameShorthand,{transform:function(transformer){return transformer.transformPropertyNameShorthand(this)},visit:function(visitor){visitor.visitPropertyNameShorthand(this)},get type(){return PROPERTY_NAME_SHORTHAND}},{},$__super)}(ParseTree),PROPERTY_VARIABLE_DECLARATION=ParseTreeType.PROPERTY_VARIABLE_DECLARATION,PropertyVariableDeclaration=function($__super){function PropertyVariableDeclaration(location,isStatic,name,typeAnnotation,annotations,initializer){$traceurRuntime.superConstructor(PropertyVariableDeclaration).call(this,location),this.isStatic=isStatic,this.name=name,this.typeAnnotation=typeAnnotation,this.annotations=annotations,this.initializer=initializer}return $traceurRuntime.createClass(PropertyVariableDeclaration,{transform:function(transformer){return transformer.transformPropertyVariableDeclaration(this)},visit:function(visitor){visitor.visitPropertyVariableDeclaration(this)},get type(){return PROPERTY_VARIABLE_DECLARATION}},{},$__super)}(ParseTree),PROPERTY_SIGNATURE=ParseTreeType.PROPERTY_SIGNATURE,PropertySignature=function($__super){function PropertySignature(location,name,optional,typeAnnotation){$traceurRuntime.superConstructor(PropertySignature).call(this,location),this.name=name,this.optional=optional,this.typeAnnotation=typeAnnotation}return $traceurRuntime.createClass(PropertySignature,{transform:function(transformer){return transformer.transformPropertySignature(this)},visit:function(visitor){visitor.visitPropertySignature(this)},get type(){return PROPERTY_SIGNATURE}},{},$__super)}(ParseTree),REST_PARAMETER=ParseTreeType.REST_PARAMETER,RestParameter=function($__super){function RestParameter(location,identifier){$traceurRuntime.superConstructor(RestParameter).call(this,location),this.identifier=identifier}return $traceurRuntime.createClass(RestParameter,{transform:function(transformer){return transformer.transformRestParameter(this)},visit:function(visitor){visitor.visitRestParameter(this)},get type(){return REST_PARAMETER}},{},$__super)}(ParseTree),RETURN_STATEMENT=ParseTreeType.RETURN_STATEMENT,ReturnStatement=function($__super){function ReturnStatement(location,expression){$traceurRuntime.superConstructor(ReturnStatement).call(this,location),this.expression=expression}return $traceurRuntime.createClass(ReturnStatement,{transform:function(transformer){return transformer.transformReturnStatement(this)},visit:function(visitor){visitor.visitReturnStatement(this)},get type(){return RETURN_STATEMENT}},{},$__super)}(ParseTree),SET_ACCESSOR=ParseTreeType.SET_ACCESSOR,SetAccessor=function($__super){function SetAccessor(location,isStatic,name,parameterList,annotations,body){$traceurRuntime.superConstructor(SetAccessor).call(this,location),this.isStatic=isStatic,this.name=name,this.parameterList=parameterList,this.annotations=annotations,this.body=body}return $traceurRuntime.createClass(SetAccessor,{transform:function(transformer){return transformer.transformSetAccessor(this)},visit:function(visitor){visitor.visitSetAccessor(this)},get type(){return SET_ACCESSOR}},{},$__super)}(ParseTree),SPREAD_EXPRESSION=ParseTreeType.SPREAD_EXPRESSION,SpreadExpression=function($__super){function SpreadExpression(location,expression){$traceurRuntime.superConstructor(SpreadExpression).call(this,location),this.expression=expression}return $traceurRuntime.createClass(SpreadExpression,{transform:function(transformer){return transformer.transformSpreadExpression(this)},visit:function(visitor){visitor.visitSpreadExpression(this)},get type(){return SPREAD_EXPRESSION}},{},$__super)}(ParseTree),SPREAD_PATTERN_ELEMENT=ParseTreeType.SPREAD_PATTERN_ELEMENT,SpreadPatternElement=function($__super){function SpreadPatternElement(location,lvalue){$traceurRuntime.superConstructor(SpreadPatternElement).call(this,location),this.lvalue=lvalue}return $traceurRuntime.createClass(SpreadPatternElement,{transform:function(transformer){return transformer.transformSpreadPatternElement(this)},visit:function(visitor){visitor.visitSpreadPatternElement(this)},get type(){return SPREAD_PATTERN_ELEMENT}},{},$__super)}(ParseTree),SUPER_EXPRESSION=ParseTreeType.SUPER_EXPRESSION,SuperExpression=function($__super){function SuperExpression(location){$traceurRuntime.superConstructor(SuperExpression).call(this,location)}return $traceurRuntime.createClass(SuperExpression,{transform:function(transformer){return transformer.transformSuperExpression(this)},visit:function(visitor){visitor.visitSuperExpression(this)},get type(){return SUPER_EXPRESSION}},{},$__super)}(ParseTree),SWITCH_STATEMENT=ParseTreeType.SWITCH_STATEMENT,SwitchStatement=function($__super){function SwitchStatement(location,expression,caseClauses){$traceurRuntime.superConstructor(SwitchStatement).call(this,location),this.expression=expression,this.caseClauses=caseClauses}return $traceurRuntime.createClass(SwitchStatement,{transform:function(transformer){return transformer.transformSwitchStatement(this)},visit:function(visitor){visitor.visitSwitchStatement(this)},get type(){return SWITCH_STATEMENT}},{},$__super)}(ParseTree),SYNTAX_ERROR_TREE=ParseTreeType.SYNTAX_ERROR_TREE,SyntaxErrorTree=function($__super){function SyntaxErrorTree(location,nextToken,message){$traceurRuntime.superConstructor(SyntaxErrorTree).call(this,location),this.nextToken=nextToken,this.message=message}return $traceurRuntime.createClass(SyntaxErrorTree,{transform:function(transformer){return transformer.transformSyntaxErrorTree(this)},visit:function(visitor){visitor.visitSyntaxErrorTree(this)},get type(){return SYNTAX_ERROR_TREE}},{},$__super)}(ParseTree),TEMPLATE_LITERAL_EXPRESSION=ParseTreeType.TEMPLATE_LITERAL_EXPRESSION,TemplateLiteralExpression=function($__super){function TemplateLiteralExpression(location,operand,elements){$traceurRuntime.superConstructor(TemplateLiteralExpression).call(this,location),this.operand=operand,this.elements=elements}return $traceurRuntime.createClass(TemplateLiteralExpression,{transform:function(transformer){return transformer.transformTemplateLiteralExpression(this)},visit:function(visitor){visitor.visitTemplateLiteralExpression(this)},get type(){return TEMPLATE_LITERAL_EXPRESSION}},{},$__super)}(ParseTree),TEMPLATE_LITERAL_PORTION=ParseTreeType.TEMPLATE_LITERAL_PORTION,TemplateLiteralPortion=function($__super){function TemplateLiteralPortion(location,value){$traceurRuntime.superConstructor(TemplateLiteralPortion).call(this,location),this.value=value}return $traceurRuntime.createClass(TemplateLiteralPortion,{transform:function(transformer){return transformer.transformTemplateLiteralPortion(this)},visit:function(visitor){visitor.visitTemplateLiteralPortion(this)},get type(){return TEMPLATE_LITERAL_PORTION}},{},$__super)}(ParseTree),TEMPLATE_SUBSTITUTION=ParseTreeType.TEMPLATE_SUBSTITUTION,TemplateSubstitution=function($__super){function TemplateSubstitution(location,expression){$traceurRuntime.superConstructor(TemplateSubstitution).call(this,location),this.expression=expression}return $traceurRuntime.createClass(TemplateSubstitution,{transform:function(transformer){return transformer.transformTemplateSubstitution(this)},visit:function(visitor){visitor.visitTemplateSubstitution(this)},get type(){return TEMPLATE_SUBSTITUTION}},{},$__super)}(ParseTree),THIS_EXPRESSION=ParseTreeType.THIS_EXPRESSION,ThisExpression=function($__super){function ThisExpression(location){$traceurRuntime.superConstructor(ThisExpression).call(this,location)}return $traceurRuntime.createClass(ThisExpression,{transform:function(transformer){return transformer.transformThisExpression(this)},visit:function(visitor){visitor.visitThisExpression(this)},get type(){return THIS_EXPRESSION}},{},$__super)}(ParseTree),THROW_STATEMENT=ParseTreeType.THROW_STATEMENT,ThrowStatement=function($__super){function ThrowStatement(location,value){$traceurRuntime.superConstructor(ThrowStatement).call(this,location),this.value=value}return $traceurRuntime.createClass(ThrowStatement,{transform:function(transformer){return transformer.transformThrowStatement(this)},visit:function(visitor){visitor.visitThrowStatement(this)},get type(){return THROW_STATEMENT}},{},$__super)}(ParseTree),TRY_STATEMENT=ParseTreeType.TRY_STATEMENT,TryStatement=function($__super){function TryStatement(location,body,catchBlock,finallyBlock){$traceurRuntime.superConstructor(TryStatement).call(this,location),this.body=body,this.catchBlock=catchBlock,this.finallyBlock=finallyBlock}return $traceurRuntime.createClass(TryStatement,{transform:function(transformer){return transformer.transformTryStatement(this)},visit:function(visitor){visitor.visitTryStatement(this)},get type(){return TRY_STATEMENT}},{},$__super)}(ParseTree),TYPE_ALIAS_DECLARATION=ParseTreeType.TYPE_ALIAS_DECLARATION,TypeAliasDeclaration=function($__super){function TypeAliasDeclaration(location,name,value){$traceurRuntime.superConstructor(TypeAliasDeclaration).call(this,location),this.name=name,this.value=value}return $traceurRuntime.createClass(TypeAliasDeclaration,{transform:function(transformer){return transformer.transformTypeAliasDeclaration(this)},visit:function(visitor){visitor.visitTypeAliasDeclaration(this)},get type(){return TYPE_ALIAS_DECLARATION}},{},$__super)}(ParseTree),TYPE_ARGUMENTS=ParseTreeType.TYPE_ARGUMENTS,TypeArguments=function($__super){function TypeArguments(location,args){$traceurRuntime.superConstructor(TypeArguments).call(this,location),this.args=args}return $traceurRuntime.createClass(TypeArguments,{transform:function(transformer){return transformer.transformTypeArguments(this)},visit:function(visitor){visitor.visitTypeArguments(this)},get type(){return TYPE_ARGUMENTS}},{},$__super)}(ParseTree),TYPE_NAME=ParseTreeType.TYPE_NAME,TypeName=function($__super){function TypeName(location,moduleName,name){$traceurRuntime.superConstructor(TypeName).call(this,location),this.moduleName=moduleName,this.name=name}return $traceurRuntime.createClass(TypeName,{transform:function(transformer){return transformer.transformTypeName(this)},visit:function(visitor){visitor.visitTypeName(this)},get type(){return TYPE_NAME}},{},$__super)}(ParseTree),TYPE_PARAMETER=ParseTreeType.TYPE_PARAMETER,TypeParameter=function($__super){function TypeParameter(location,identifierToken,extendsType){$traceurRuntime.superConstructor(TypeParameter).call(this,location),this.identifierToken=identifierToken,this.extendsType=extendsType}return $traceurRuntime.createClass(TypeParameter,{transform:function(transformer){return transformer.transformTypeParameter(this)},visit:function(visitor){visitor.visitTypeParameter(this)},get type(){return TYPE_PARAMETER}},{},$__super)}(ParseTree),TYPE_PARAMETERS=ParseTreeType.TYPE_PARAMETERS,TypeParameters=function($__super){function TypeParameters(location,parameters){$traceurRuntime.superConstructor(TypeParameters).call(this,location),this.parameters=parameters}return $traceurRuntime.createClass(TypeParameters,{transform:function(transformer){return transformer.transformTypeParameters(this)},visit:function(visitor){visitor.visitTypeParameters(this)},get type(){return TYPE_PARAMETERS}},{},$__super)}(ParseTree),TYPE_REFERENCE=ParseTreeType.TYPE_REFERENCE,TypeReference=function($__super){function TypeReference(location,typeName,args){$traceurRuntime.superConstructor(TypeReference).call(this,location),this.typeName=typeName,this.args=args}return $traceurRuntime.createClass(TypeReference,{transform:function(transformer){return transformer.transformTypeReference(this)},visit:function(visitor){visitor.visitTypeReference(this)},get type(){return TYPE_REFERENCE}},{},$__super)}(ParseTree),UNARY_EXPRESSION=ParseTreeType.UNARY_EXPRESSION,UnaryExpression=function($__super){function UnaryExpression(location,operator,operand){$traceurRuntime.superConstructor(UnaryExpression).call(this,location),this.operator=operator,this.operand=operand}return $traceurRuntime.createClass(UnaryExpression,{transform:function(transformer){return transformer.transformUnaryExpression(this)},visit:function(visitor){visitor.visitUnaryExpression(this)},get type(){return UNARY_EXPRESSION}},{},$__super)}(ParseTree),UNION_TYPE=ParseTreeType.UNION_TYPE,UnionType=function($__super){function UnionType(location,types){$traceurRuntime.superConstructor(UnionType).call(this,location),this.types=types}return $traceurRuntime.createClass(UnionType,{transform:function(transformer){return transformer.transformUnionType(this)},visit:function(visitor){visitor.visitUnionType(this)},get type(){return UNION_TYPE}},{},$__super)}(ParseTree),VARIABLE_DECLARATION=ParseTreeType.VARIABLE_DECLARATION,VariableDeclaration=function($__super){function VariableDeclaration(location,lvalue,typeAnnotation,initializer){$traceurRuntime.superConstructor(VariableDeclaration).call(this,location),this.lvalue=lvalue,this.typeAnnotation=typeAnnotation,this.initializer=initializer}return $traceurRuntime.createClass(VariableDeclaration,{transform:function(transformer){return transformer.transformVariableDeclaration(this)},visit:function(visitor){visitor.visitVariableDeclaration(this)},get type(){return VARIABLE_DECLARATION}},{},$__super)}(ParseTree),VARIABLE_DECLARATION_LIST=ParseTreeType.VARIABLE_DECLARATION_LIST,VariableDeclarationList=function($__super){function VariableDeclarationList(location,declarationType,declarations){$traceurRuntime.superConstructor(VariableDeclarationList).call(this,location),this.declarationType=declarationType,this.declarations=declarations}return $traceurRuntime.createClass(VariableDeclarationList,{transform:function(transformer){return transformer.transformVariableDeclarationList(this)},visit:function(visitor){visitor.visitVariableDeclarationList(this)},get type(){return VARIABLE_DECLARATION_LIST}},{},$__super)}(ParseTree),VARIABLE_STATEMENT=ParseTreeType.VARIABLE_STATEMENT,VariableStatement=function($__super){function VariableStatement(location,declarations){$traceurRuntime.superConstructor(VariableStatement).call(this,location),this.declarations=declarations}return $traceurRuntime.createClass(VariableStatement,{transform:function(transformer){return transformer.transformVariableStatement(this)},visit:function(visitor){visitor.visitVariableStatement(this)},get type(){return VARIABLE_STATEMENT}},{},$__super)}(ParseTree),WHILE_STATEMENT=ParseTreeType.WHILE_STATEMENT,WhileStatement=function($__super){function WhileStatement(location,condition,body){$traceurRuntime.superConstructor(WhileStatement).call(this,location),this.condition=condition,this.body=body}return $traceurRuntime.createClass(WhileStatement,{transform:function(transformer){return transformer.transformWhileStatement(this)},visit:function(visitor){visitor.visitWhileStatement(this)},get type(){return WHILE_STATEMENT}},{},$__super)}(ParseTree),WITH_STATEMENT=ParseTreeType.WITH_STATEMENT,WithStatement=function($__super){function WithStatement(location,expression,body){$traceurRuntime.superConstructor(WithStatement).call(this,location),this.expression=expression,this.body=body}return $traceurRuntime.createClass(WithStatement,{transform:function(transformer){return transformer.transformWithStatement(this)},visit:function(visitor){visitor.visitWithStatement(this)},get type(){return WITH_STATEMENT}},{},$__super)}(ParseTree),YIELD_EXPRESSION=ParseTreeType.YIELD_EXPRESSION,YieldExpression=function($__super){function YieldExpression(location,expression,isYieldFor){$traceurRuntime.superConstructor(YieldExpression).call(this,location),this.expression=expression,this.isYieldFor=isYieldFor}return $traceurRuntime.createClass(YieldExpression,{transform:function(transformer){return transformer.transformYieldExpression(this)},visit:function(visitor){visitor.visitYieldExpression(this)},get type(){return YIELD_EXPRESSION}},{},$__super)}(ParseTree);return{get Annotation(){return Annotation},get AnonBlock(){return AnonBlock},get ArgumentList(){return ArgumentList},get ArrayComprehension(){return ArrayComprehension},get ArrayLiteral(){return ArrayLiteral},get ArrayPattern(){return ArrayPattern},get ArrayType(){return ArrayType},get ArrowFunction(){return ArrowFunction},get AssignmentElement(){return AssignmentElement},get AwaitExpression(){return AwaitExpression},get BinaryExpression(){return BinaryExpression},get BindingElement(){return BindingElement},get BindingIdentifier(){return BindingIdentifier},get Block(){return Block},get BreakStatement(){return BreakStatement},get CallExpression(){return CallExpression},get CallSignature(){return CallSignature},get CaseClause(){return CaseClause},get Catch(){return Catch},get ClassDeclaration(){return ClassDeclaration},get ClassExpression(){return ClassExpression},get CommaExpression(){return CommaExpression},get ComprehensionFor(){return ComprehensionFor},get ComprehensionIf(){return ComprehensionIf},get ComputedPropertyName(){return ComputedPropertyName},get ConditionalExpression(){return ConditionalExpression},get ConstructSignature(){return ConstructSignature},get ConstructorType(){return ConstructorType},get ContinueStatement(){return ContinueStatement},get CoverFormals(){return CoverFormals},get CoverInitializedName(){return CoverInitializedName},get DebuggerStatement(){return DebuggerStatement},get DefaultClause(){return DefaultClause},get DoWhileStatement(){return DoWhileStatement},get EmptyStatement(){return EmptyStatement},get ExportDeclaration(){return ExportDeclaration},get ExportDefault(){return ExportDefault},get ExportSpecifier(){return ExportSpecifier},get ExportSpecifierSet(){return ExportSpecifierSet},get ExportStar(){return ExportStar},get ExpressionStatement(){return ExpressionStatement},get Finally(){return Finally},get ForInStatement(){return ForInStatement},get ForOfStatement(){return ForOfStatement},get ForOnStatement(){return ForOnStatement},get ForStatement(){return ForStatement},get FormalParameter(){return FormalParameter},get FormalParameterList(){return FormalParameterList},get ForwardDefaultExport(){return ForwardDefaultExport},get FunctionBody(){return FunctionBody},get FunctionDeclaration(){return FunctionDeclaration},get FunctionExpression(){return FunctionExpression},get FunctionType(){return FunctionType},get GeneratorComprehension(){return GeneratorComprehension},get GetAccessor(){return GetAccessor},get IdentifierExpression(){return IdentifierExpression},get IfStatement(){return IfStatement},get ImportedBinding(){return ImportedBinding},get ImportClausePair(){return ImportClausePair},get ImportDeclaration(){return ImportDeclaration},get ImportSpecifier(){return ImportSpecifier},get ImportSpecifierSet(){return ImportSpecifierSet},get ImportTypeClause(){return ImportTypeClause},get IndexSignature(){return IndexSignature},get InterfaceDeclaration(){return InterfaceDeclaration},get JsxAttribute(){return JsxAttribute},get JsxElement(){return JsxElement},get JsxElementName(){return JsxElementName},get JsxPlaceholder(){return JsxPlaceholder},get JsxSpreadAttribute(){return JsxSpreadAttribute},get JsxText(){return JsxText},get LabelledStatement(){return LabelledStatement},get LiteralExpression(){return LiteralExpression},get LiteralPropertyName(){return LiteralPropertyName},get MemberExpression(){return MemberExpression},get MemberLookupExpression(){return MemberLookupExpression},get Method(){return Method},get MethodSignature(){return MethodSignature},get Module(){return Module},get ModuleSpecifier(){return ModuleSpecifier},get NameSpaceExport(){return NameSpaceExport},get NameSpaceImport(){return NameSpaceImport},get NamedExport(){return NamedExport},get NewExpression(){return NewExpression},get ObjectLiteral(){return ObjectLiteral},get ObjectPattern(){return ObjectPattern},get ObjectPatternField(){return ObjectPatternField},get ObjectType(){return ObjectType},get ParenExpression(){return ParenExpression},get PostfixExpression(){return PostfixExpression},get PredefinedType(){return PredefinedType},get Script(){return Script},get PropertyNameAssignment(){return PropertyNameAssignment},get PropertyNameShorthand(){return PropertyNameShorthand},get PropertyVariableDeclaration(){return PropertyVariableDeclaration},get PropertySignature(){return PropertySignature},get RestParameter(){return RestParameter},get ReturnStatement(){return ReturnStatement},get SetAccessor(){return SetAccessor},get SpreadExpression(){return SpreadExpression},get SpreadPatternElement(){return SpreadPatternElement},get SuperExpression(){return SuperExpression},get SwitchStatement(){return SwitchStatement},get SyntaxErrorTree(){return SyntaxErrorTree},get TemplateLiteralExpression(){return TemplateLiteralExpression},get TemplateLiteralPortion(){return TemplateLiteralPortion},get TemplateSubstitution(){return TemplateSubstitution},get ThisExpression(){return ThisExpression},get ThrowStatement(){return ThrowStatement},get TryStatement(){return TryStatement},get TypeAliasDeclaration(){return TypeAliasDeclaration},get TypeArguments(){return TypeArguments},get TypeName(){return TypeName},get TypeParameter(){return TypeParameter},get TypeParameters(){return TypeParameters},get TypeReference(){return TypeReference},get UnaryExpression(){return UnaryExpression},get UnionType(){return UnionType},get VariableDeclaration(){return VariableDeclaration},get VariableDeclarationList(){return VariableDeclarationList},get VariableStatement(){return VariableStatement},get WhileStatement(){return WhileStatement},get WithStatement(){return WithStatement},get YieldExpression(){return YieldExpression}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ParseTreeTransformer.js",[],function(){"use strict";var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ParseTreeTransformer.js")),Annotation=$__2.Annotation,AnonBlock=$__2.AnonBlock,ArgumentList=$__2.ArgumentList,ArrayComprehension=$__2.ArrayComprehension,ArrayLiteral=$__2.ArrayLiteral,ArrayPattern=$__2.ArrayPattern,ArrayType=$__2.ArrayType,ArrowFunction=$__2.ArrowFunction,AssignmentElement=$__2.AssignmentElement,AwaitExpression=$__2.AwaitExpression,BinaryExpression=$__2.BinaryExpression,BindingElement=$__2.BindingElement,Block=($__2.BindingIdentifier,$__2.Block),CallExpression=($__2.BreakStatement,$__2.CallExpression),CallSignature=$__2.CallSignature,CaseClause=$__2.CaseClause,Catch=$__2.Catch,ClassDeclaration=$__2.ClassDeclaration,ClassExpression=$__2.ClassExpression,CommaExpression=$__2.CommaExpression,ComprehensionFor=$__2.ComprehensionFor,ComprehensionIf=$__2.ComprehensionIf,ComputedPropertyName=$__2.ComputedPropertyName,ConditionalExpression=$__2.ConditionalExpression,ConstructSignature=$__2.ConstructSignature,ConstructorType=$__2.ConstructorType,CoverFormals=($__2.ContinueStatement,$__2.CoverFormals),CoverInitializedName=$__2.CoverInitializedName,DefaultClause=($__2.DebuggerStatement,$__2.DefaultClause),DoWhileStatement=$__2.DoWhileStatement,ExportDeclaration=($__2.EmptyStatement,$__2.ExportDeclaration),ExportDefault=$__2.ExportDefault,ExportSpecifierSet=($__2.ExportSpecifier,$__2.ExportSpecifierSet),ExpressionStatement=($__2.ExportStar,$__2.ExpressionStatement),Finally=$__2.Finally,ForInStatement=$__2.ForInStatement,ForOfStatement=$__2.ForOfStatement,ForOnStatement=$__2.ForOnStatement,ForStatement=$__2.ForStatement,FormalParameter=$__2.FormalParameter,FormalParameterList=$__2.FormalParameterList,FunctionBody=($__2.ForwardDefaultExport,$__2.FunctionBody),FunctionDeclaration=$__2.FunctionDeclaration,FunctionExpression=$__2.FunctionExpression,FunctionType=$__2.FunctionType,GeneratorComprehension=$__2.GeneratorComprehension,GetAccessor=$__2.GetAccessor,IfStatement=($__2.IdentifierExpression,$__2.IfStatement),ImportedBinding=$__2.ImportedBinding,ImportClausePair=$__2.ImportClausePair,ImportDeclaration=$__2.ImportDeclaration,ImportSpecifier=$__2.ImportSpecifier,ImportSpecifierSet=$__2.ImportSpecifierSet,ImportTypeClause=$__2.ImportTypeClause,IndexSignature=$__2.IndexSignature,InterfaceDeclaration=$__2.InterfaceDeclaration,JsxAttribute=$__2.JsxAttribute,JsxElement=$__2.JsxElement,JsxPlaceholder=($__2.JsxElementName,$__2.JsxPlaceholder),JsxSpreadAttribute=$__2.JsxSpreadAttribute,LabelledStatement=($__2.JsxText,$__2.LabelledStatement),MemberExpression=($__2.LiteralExpression,$__2.LiteralPropertyName,$__2.MemberExpression),MemberLookupExpression=$__2.MemberLookupExpression,Method=$__2.Method,MethodSignature=$__2.MethodSignature,Module=$__2.Module,NameSpaceImport=($__2.ModuleSpecifier,$__2.NameSpaceExport,$__2.NameSpaceImport),NamedExport=$__2.NamedExport,NewExpression=$__2.NewExpression,ObjectLiteral=$__2.ObjectLiteral,ObjectPattern=$__2.ObjectPattern,ObjectPatternField=$__2.ObjectPatternField,ObjectType=$__2.ObjectType,ParenExpression=$__2.ParenExpression,PostfixExpression=$__2.PostfixExpression,Script=($__2.PredefinedType,$__2.Script),PropertyNameAssignment=$__2.PropertyNameAssignment,PropertyVariableDeclaration=($__2.PropertyNameShorthand,$__2.PropertyVariableDeclaration),PropertySignature=$__2.PropertySignature,RestParameter=$__2.RestParameter,ReturnStatement=$__2.ReturnStatement,SetAccessor=$__2.SetAccessor,SpreadExpression=$__2.SpreadExpression,SpreadPatternElement=$__2.SpreadPatternElement,SwitchStatement=($__2.SuperExpression,$__2.SwitchStatement),TemplateLiteralExpression=($__2.SyntaxErrorTree,$__2.TemplateLiteralExpression),TemplateSubstitution=($__2.TemplateLiteralPortion,$__2.TemplateSubstitution),ThrowStatement=($__2.ThisExpression,$__2.ThrowStatement),TryStatement=$__2.TryStatement,TypeAliasDeclaration=$__2.TypeAliasDeclaration,TypeArguments=$__2.TypeArguments,TypeName=$__2.TypeName,TypeParameter=$__2.TypeParameter,TypeParameters=$__2.TypeParameters,TypeReference=$__2.TypeReference,UnaryExpression=$__2.UnaryExpression,UnionType=$__2.UnionType,VariableDeclaration=$__2.VariableDeclaration,VariableDeclarationList=$__2.VariableDeclarationList,VariableStatement=$__2.VariableStatement,WhileStatement=$__2.WhileStatement,WithStatement=$__2.WithStatement,YieldExpression=$__2.YieldExpression,ParseTreeTransformer=function(){function ParseTreeTransformer(){}return $traceurRuntime.createClass(ParseTreeTransformer,{transformAny:function(tree){return null===tree?null:tree.transform(this)},transformList:function(list){for(var $__1,builder=null,index=0;index<list.length;index++){var element=list[index],transformed=this.transformAny(element);null==builder&&element==transformed||(null===builder&&(builder=list.slice(0,index)),transformed instanceof AnonBlock?($__1=builder).push.apply($__1,$traceurRuntime.spread(transformed.statements)):builder.push(transformed))}return builder||list},transformStateMachine:function(tree){throw Error("State machines should not live outside of the GeneratorTransformer.")},transformToBlockOrStatement:function(tree){var transformed=this.transformAny(tree);return transformed instanceof AnonBlock?new Block(transformed.location,transformed.statements):transformed},transformAnnotation:function(tree){var name=this.transformAny(tree.name),args=this.transformAny(tree.args);return name===tree.name&&args===tree.args?tree:new Annotation(tree.location,name,args)},transformAnonBlock:function(tree){var statements=this.transformList(tree.statements);return statements===tree.statements?tree:new AnonBlock(tree.location,statements)},transformArgumentList:function(tree){var args=this.transformList(tree.args);return args===tree.args?tree:new ArgumentList(tree.location,args)},transformArrayComprehension:function(tree){var comprehensionList=this.transformList(tree.comprehensionList),expression=this.transformAny(tree.expression);return comprehensionList===tree.comprehensionList&&expression===tree.expression?tree:new ArrayComprehension(tree.location,comprehensionList,expression)},transformArrayLiteral:function(tree){var elements=this.transformList(tree.elements);return elements===tree.elements?tree:new ArrayLiteral(tree.location,elements)},transformArrayPattern:function(tree){var elements=this.transformList(tree.elements);return elements===tree.elements?tree:new ArrayPattern(tree.location,elements)},transformArrayType:function(tree){var elementType=this.transformAny(tree.elementType);return elementType===tree.elementType?tree:new ArrayType(tree.location,elementType)},transformArrowFunction:function(tree){var parameterList=this.transformAny(tree.parameterList),body=this.transformAny(tree.body);return parameterList===tree.parameterList&&body===tree.body?tree:new ArrowFunction(tree.location,tree.functionKind,parameterList,body)},transformAssignmentElement:function(tree){
var assignment=this.transformAny(tree.assignment),initializer=this.transformAny(tree.initializer);return assignment===tree.assignment&&initializer===tree.initializer?tree:new AssignmentElement(tree.location,assignment,initializer)},transformAwaitExpression:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new AwaitExpression(tree.location,expression)},transformBinaryExpression:function(tree){var left=this.transformAny(tree.left),right=this.transformAny(tree.right);return left===tree.left&&right===tree.right?tree:new BinaryExpression(tree.location,left,tree.operator,right)},transformBindingElement:function(tree){var binding=this.transformAny(tree.binding),initializer=this.transformAny(tree.initializer);return binding===tree.binding&&initializer===tree.initializer?tree:new BindingElement(tree.location,binding,initializer)},transformBindingIdentifier:function(tree){return tree},transformBlock:function(tree){var statements=this.transformList(tree.statements);return statements===tree.statements?tree:new Block(tree.location,statements)},transformBreakStatement:function(tree){return tree},transformCallExpression:function(tree){var operand=this.transformAny(tree.operand),args=this.transformAny(tree.args);return operand===tree.operand&&args===tree.args?tree:new CallExpression(tree.location,operand,args)},transformCallSignature:function(tree){var typeParameters=this.transformAny(tree.typeParameters),parameterList=this.transformAny(tree.parameterList),returnType=this.transformAny(tree.returnType);return typeParameters===tree.typeParameters&&parameterList===tree.parameterList&&returnType===tree.returnType?tree:new CallSignature(tree.location,typeParameters,parameterList,returnType)},transformCaseClause:function(tree){var expression=this.transformAny(tree.expression),statements=this.transformList(tree.statements);return expression===tree.expression&&statements===tree.statements?tree:new CaseClause(tree.location,expression,statements)},transformCatch:function(tree){var binding=this.transformAny(tree.binding),catchBody=this.transformAny(tree.catchBody);return binding===tree.binding&&catchBody===tree.catchBody?tree:new Catch(tree.location,binding,catchBody)},transformClassDeclaration:function(tree){var name=this.transformAny(tree.name),superClass=this.transformAny(tree.superClass),elements=this.transformList(tree.elements),annotations=this.transformList(tree.annotations),typeParameters=this.transformAny(tree.typeParameters);return name===tree.name&&superClass===tree.superClass&&elements===tree.elements&&annotations===tree.annotations&&typeParameters===tree.typeParameters?tree:new ClassDeclaration(tree.location,name,superClass,elements,annotations,typeParameters)},transformClassExpression:function(tree){var name=this.transformAny(tree.name),superClass=this.transformAny(tree.superClass),elements=this.transformList(tree.elements),annotations=this.transformList(tree.annotations),typeParameters=this.transformAny(tree.typeParameters);return name===tree.name&&superClass===tree.superClass&&elements===tree.elements&&annotations===tree.annotations&&typeParameters===tree.typeParameters?tree:new ClassExpression(tree.location,name,superClass,elements,annotations,typeParameters)},transformCommaExpression:function(tree){var expressions=this.transformList(tree.expressions);return expressions===tree.expressions?tree:new CommaExpression(tree.location,expressions)},transformComprehensionFor:function(tree){var left=this.transformAny(tree.left),iterator=this.transformAny(tree.iterator);return left===tree.left&&iterator===tree.iterator?tree:new ComprehensionFor(tree.location,left,iterator)},transformComprehensionIf:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new ComprehensionIf(tree.location,expression)},transformComputedPropertyName:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new ComputedPropertyName(tree.location,expression)},transformConditionalExpression:function(tree){var condition=this.transformAny(tree.condition),left=this.transformAny(tree.left),right=this.transformAny(tree.right);return condition===tree.condition&&left===tree.left&&right===tree.right?tree:new ConditionalExpression(tree.location,condition,left,right)},transformConstructSignature:function(tree){var typeParameters=this.transformAny(tree.typeParameters),parameterList=this.transformAny(tree.parameterList),returnType=this.transformAny(tree.returnType);return typeParameters===tree.typeParameters&&parameterList===tree.parameterList&&returnType===tree.returnType?tree:new ConstructSignature(tree.location,typeParameters,parameterList,returnType)},transformConstructorType:function(tree){var typeParameters=this.transformAny(tree.typeParameters),parameterList=this.transformAny(tree.parameterList),returnType=this.transformAny(tree.returnType);return typeParameters===tree.typeParameters&&parameterList===tree.parameterList&&returnType===tree.returnType?tree:new ConstructorType(tree.location,typeParameters,parameterList,returnType)},transformContinueStatement:function(tree){return tree},transformCoverFormals:function(tree){var expressions=this.transformList(tree.expressions);return expressions===tree.expressions?tree:new CoverFormals(tree.location,expressions)},transformCoverInitializedName:function(tree){var initializer=this.transformAny(tree.initializer);return initializer===tree.initializer?tree:new CoverInitializedName(tree.location,tree.name,tree.equalToken,initializer)},transformDebuggerStatement:function(tree){return tree},transformDefaultClause:function(tree){var statements=this.transformList(tree.statements);return statements===tree.statements?tree:new DefaultClause(tree.location,statements)},transformDoWhileStatement:function(tree){var body=this.transformToBlockOrStatement(tree.body),condition=this.transformAny(tree.condition);return body===tree.body&&condition===tree.condition?tree:new DoWhileStatement(tree.location,body,condition)},transformEmptyStatement:function(tree){return tree},transformExportDeclaration:function(tree){var declaration=this.transformAny(tree.declaration),annotations=this.transformList(tree.annotations);return declaration===tree.declaration&&annotations===tree.annotations?tree:new ExportDeclaration(tree.location,declaration,annotations)},transformExportDefault:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new ExportDefault(tree.location,expression)},transformExportSpecifier:function(tree){return tree},transformExportSpecifierSet:function(tree){var specifiers=this.transformList(tree.specifiers);return specifiers===tree.specifiers?tree:new ExportSpecifierSet(tree.location,specifiers)},transformExportStar:function(tree){return tree},transformExpressionStatement:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new ExpressionStatement(tree.location,expression)},transformFinally:function(tree){var block=this.transformAny(tree.block);return block===tree.block?tree:new Finally(tree.location,block)},transformForInStatement:function(tree){var initializer=this.transformAny(tree.initializer),collection=this.transformAny(tree.collection),body=this.transformToBlockOrStatement(tree.body);return initializer===tree.initializer&&collection===tree.collection&&body===tree.body?tree:new ForInStatement(tree.location,initializer,collection,body)},transformForOfStatement:function(tree){var initializer=this.transformAny(tree.initializer),collection=this.transformAny(tree.collection),body=this.transformToBlockOrStatement(tree.body);return initializer===tree.initializer&&collection===tree.collection&&body===tree.body?tree:new ForOfStatement(tree.location,initializer,collection,body)},transformForOnStatement:function(tree){var initializer=this.transformAny(tree.initializer),observable=this.transformAny(tree.observable),body=this.transformToBlockOrStatement(tree.body);return initializer===tree.initializer&&observable===tree.observable&&body===tree.body?tree:new ForOnStatement(tree.location,initializer,observable,body)},transformForStatement:function(tree){var initializer=this.transformAny(tree.initializer),condition=this.transformAny(tree.condition),increment=this.transformAny(tree.increment),body=this.transformToBlockOrStatement(tree.body);return initializer===tree.initializer&&condition===tree.condition&&increment===tree.increment&&body===tree.body?tree:new ForStatement(tree.location,initializer,condition,increment,body)},transformFormalParameter:function(tree){var parameter=this.transformAny(tree.parameter),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations);return parameter===tree.parameter&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations?tree:new FormalParameter(tree.location,parameter,typeAnnotation,annotations)},transformFormalParameterList:function(tree){var parameters=this.transformList(tree.parameters);return parameters===tree.parameters?tree:new FormalParameterList(tree.location,parameters)},transformForwardDefaultExport:function(tree){return tree},transformFunctionBody:function(tree){var statements=this.transformList(tree.statements);return statements===tree.statements?tree:new FunctionBody(tree.location,statements)},transformFunctionDeclaration:function(tree){var name=this.transformAny(tree.name),parameterList=this.transformAny(tree.parameterList),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),body=this.transformAny(tree.body);return name===tree.name&&parameterList===tree.parameterList&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&body===tree.body?tree:new FunctionDeclaration(tree.location,name,tree.functionKind,parameterList,typeAnnotation,annotations,body)},transformFunctionExpression:function(tree){var name=this.transformAny(tree.name),parameterList=this.transformAny(tree.parameterList),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),body=this.transformAny(tree.body);return name===tree.name&&parameterList===tree.parameterList&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&body===tree.body?tree:new FunctionExpression(tree.location,name,tree.functionKind,parameterList,typeAnnotation,annotations,body)},transformFunctionType:function(tree){var typeParameters=this.transformAny(tree.typeParameters),parameterList=this.transformAny(tree.parameterList),returnType=this.transformAny(tree.returnType);return typeParameters===tree.typeParameters&&parameterList===tree.parameterList&&returnType===tree.returnType?tree:new FunctionType(tree.location,typeParameters,parameterList,returnType)},transformGeneratorComprehension:function(tree){var comprehensionList=this.transformList(tree.comprehensionList),expression=this.transformAny(tree.expression);return comprehensionList===tree.comprehensionList&&expression===tree.expression?tree:new GeneratorComprehension(tree.location,comprehensionList,expression)},transformGetAccessor:function(tree){var name=this.transformAny(tree.name),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),body=this.transformAny(tree.body);return name===tree.name&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&body===tree.body?tree:new GetAccessor(tree.location,tree.isStatic,name,typeAnnotation,annotations,body)},transformIdentifierExpression:function(tree){return tree},transformIfStatement:function(tree){var condition=this.transformAny(tree.condition),ifClause=this.transformToBlockOrStatement(tree.ifClause),elseClause=this.transformToBlockOrStatement(tree.elseClause);return condition===tree.condition&&ifClause===tree.ifClause&&elseClause===tree.elseClause?tree:new IfStatement(tree.location,condition,ifClause,elseClause)},transformImportedBinding:function(tree){var binding=this.transformAny(tree.binding);return binding===tree.binding?tree:new ImportedBinding(tree.location,binding)},transformImportClausePair:function(tree){var first=this.transformAny(tree.first),second=this.transformAny(tree.second);return first===tree.first&&second===tree.second?tree:new ImportClausePair(tree.location,first,second)},transformImportDeclaration:function(tree){var importClause=this.transformAny(tree.importClause),moduleSpecifier=this.transformAny(tree.moduleSpecifier);return importClause===tree.importClause&&moduleSpecifier===tree.moduleSpecifier?tree:new ImportDeclaration(tree.location,importClause,moduleSpecifier)},transformImportSpecifier:function(tree){var binding=this.transformAny(tree.binding);return binding===tree.binding?tree:new ImportSpecifier(tree.location,binding,tree.name)},transformImportSpecifierSet:function(tree){var specifiers=this.transformList(tree.specifiers);return specifiers===tree.specifiers?tree:new ImportSpecifierSet(tree.location,specifiers)},transformImportTypeClause:function(tree){var clause=this.transformAny(tree.clause);return clause===tree.clause?tree:new ImportTypeClause(tree.location,clause)},transformIndexSignature:function(tree){var indexType=this.transformAny(tree.indexType),typeAnnotation=this.transformAny(tree.typeAnnotation);return indexType===tree.indexType&&typeAnnotation===tree.typeAnnotation?tree:new IndexSignature(tree.location,tree.name,indexType,typeAnnotation)},transformInterfaceDeclaration:function(tree){var typeParameters=this.transformAny(tree.typeParameters),objectType=this.transformAny(tree.objectType);return typeParameters===tree.typeParameters&&objectType===tree.objectType?tree:new InterfaceDeclaration(tree.location,tree.name,typeParameters,tree.extendsClause,objectType)},transformJsxAttribute:function(tree){var value=this.transformAny(tree.value);return value===tree.value?tree:new JsxAttribute(tree.location,tree.name,value)},transformJsxElement:function(tree){var name=this.transformAny(tree.name),attributes=this.transformList(tree.attributes),children=this.transformList(tree.children);return name===tree.name&&attributes===tree.attributes&&children===tree.children?tree:new JsxElement(tree.location,name,attributes,children)},transformJsxElementName:function(tree){return tree},transformJsxPlaceholder:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new JsxPlaceholder(tree.location,expression)},transformJsxSpreadAttribute:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new JsxSpreadAttribute(tree.location,expression)},transformJsxText:function(tree){return tree},transformLabelledStatement:function(tree){var statement=this.transformAny(tree.statement);return statement===tree.statement?tree:new LabelledStatement(tree.location,tree.name,statement)},transformLiteralExpression:function(tree){return tree},transformLiteralPropertyName:function(tree){return tree},transformMemberExpression:function(tree){var operand=this.transformAny(tree.operand);return operand===tree.operand?tree:new MemberExpression(tree.location,operand,tree.memberName)},transformMemberLookupExpression:function(tree){var operand=this.transformAny(tree.operand),memberExpression=this.transformAny(tree.memberExpression);return operand===tree.operand&&memberExpression===tree.memberExpression?tree:new MemberLookupExpression(tree.location,operand,memberExpression)},transformMethod:function(tree){var name=this.transformAny(tree.name),parameterList=this.transformAny(tree.parameterList),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),body=this.transformAny(tree.body),debugName=this.transformAny(tree.debugName);return name===tree.name&&parameterList===tree.parameterList&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&body===tree.body&&debugName===tree.debugName?tree:new Method(tree.location,tree.isStatic,tree.functionKind,name,parameterList,typeAnnotation,annotations,body,debugName)},transformMethodSignature:function(tree){var name=this.transformAny(tree.name),callSignature=this.transformAny(tree.callSignature);return name===tree.name&&callSignature===tree.callSignature?tree:new MethodSignature(tree.location,name,tree.optional,callSignature)},transformModule:function(tree){var scriptItemList=this.transformList(tree.scriptItemList);return scriptItemList===tree.scriptItemList?tree:new Module(tree.location,scriptItemList,tree.moduleName)},transformModuleSpecifier:function(tree){return tree},transformNameSpaceExport:function(tree){return tree},transformNameSpaceImport:function(tree){var binding=this.transformAny(tree.binding);return binding===tree.binding?tree:new NameSpaceImport(tree.location,binding)},transformNamedExport:function(tree){var exportClause=this.transformAny(tree.exportClause),moduleSpecifier=this.transformAny(tree.moduleSpecifier);return exportClause===tree.exportClause&&moduleSpecifier===tree.moduleSpecifier?tree:new NamedExport(tree.location,exportClause,moduleSpecifier)},transformNewExpression:function(tree){var operand=this.transformAny(tree.operand),args=this.transformAny(tree.args);return operand===tree.operand&&args===tree.args?tree:new NewExpression(tree.location,operand,args)},transformObjectLiteral:function(tree){var propertyNameAndValues=this.transformList(tree.propertyNameAndValues);return propertyNameAndValues===tree.propertyNameAndValues?tree:new ObjectLiteral(tree.location,propertyNameAndValues)},transformObjectPattern:function(tree){var fields=this.transformList(tree.fields);return fields===tree.fields?tree:new ObjectPattern(tree.location,fields)},transformObjectPatternField:function(tree){var name=this.transformAny(tree.name),element=this.transformAny(tree.element);return name===tree.name&&element===tree.element?tree:new ObjectPatternField(tree.location,name,element)},transformObjectType:function(tree){var typeMembers=this.transformList(tree.typeMembers);return typeMembers===tree.typeMembers?tree:new ObjectType(tree.location,typeMembers)},transformParenExpression:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new ParenExpression(tree.location,expression)},transformPostfixExpression:function(tree){var operand=this.transformAny(tree.operand);return operand===tree.operand?tree:new PostfixExpression(tree.location,operand,tree.operator)},transformPredefinedType:function(tree){return tree},transformScript:function(tree){var scriptItemList=this.transformList(tree.scriptItemList);return scriptItemList===tree.scriptItemList?tree:new Script(tree.location,scriptItemList,tree.moduleName)},transformPropertyNameAssignment:function(tree){var name=this.transformAny(tree.name),value=this.transformAny(tree.value);return name===tree.name&&value===tree.value?tree:new PropertyNameAssignment(tree.location,name,value)},transformPropertyNameShorthand:function(tree){return tree},transformPropertyVariableDeclaration:function(tree){var name=this.transformAny(tree.name),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),initializer=this.transformAny(tree.initializer);return name===tree.name&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&initializer===tree.initializer?tree:new PropertyVariableDeclaration(tree.location,tree.isStatic,name,typeAnnotation,annotations,initializer)},transformPropertySignature:function(tree){var name=this.transformAny(tree.name),typeAnnotation=this.transformAny(tree.typeAnnotation);return name===tree.name&&typeAnnotation===tree.typeAnnotation?tree:new PropertySignature(tree.location,name,tree.optional,typeAnnotation)},transformRestParameter:function(tree){var identifier=this.transformAny(tree.identifier);return identifier===tree.identifier?tree:new RestParameter(tree.location,identifier)},transformReturnStatement:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new ReturnStatement(tree.location,expression)},transformSetAccessor:function(tree){var name=this.transformAny(tree.name),parameterList=this.transformAny(tree.parameterList),annotations=this.transformList(tree.annotations),body=this.transformAny(tree.body);return name===tree.name&&parameterList===tree.parameterList&&annotations===tree.annotations&&body===tree.body?tree:new SetAccessor(tree.location,tree.isStatic,name,parameterList,annotations,body)},transformSpreadExpression:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new SpreadExpression(tree.location,expression)},transformSpreadPatternElement:function(tree){var lvalue=this.transformAny(tree.lvalue);return lvalue===tree.lvalue?tree:new SpreadPatternElement(tree.location,lvalue)},transformSuperExpression:function(tree){return tree},transformSwitchStatement:function(tree){var expression=this.transformAny(tree.expression),caseClauses=this.transformList(tree.caseClauses);return expression===tree.expression&&caseClauses===tree.caseClauses?tree:new SwitchStatement(tree.location,expression,caseClauses)},transformSyntaxErrorTree:function(tree){return tree},transformTemplateLiteralExpression:function(tree){var operand=this.transformAny(tree.operand),elements=this.transformList(tree.elements);return operand===tree.operand&&elements===tree.elements?tree:new TemplateLiteralExpression(tree.location,operand,elements)},transformTemplateLiteralPortion:function(tree){return tree},transformTemplateSubstitution:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new TemplateSubstitution(tree.location,expression)},transformThisExpression:function(tree){return tree},transformThrowStatement:function(tree){var value=this.transformAny(tree.value);return value===tree.value?tree:new ThrowStatement(tree.location,value)},transformTryStatement:function(tree){var body=this.transformAny(tree.body),catchBlock=this.transformAny(tree.catchBlock),finallyBlock=this.transformAny(tree.finallyBlock);return body===tree.body&&catchBlock===tree.catchBlock&&finallyBlock===tree.finallyBlock?tree:new TryStatement(tree.location,body,catchBlock,finallyBlock)},transformTypeAliasDeclaration:function(tree){var value=this.transformAny(tree.value);return value===tree.value?tree:new TypeAliasDeclaration(tree.location,tree.name,value)},transformTypeArguments:function(tree){var args=this.transformList(tree.args);return args===tree.args?tree:new TypeArguments(tree.location,args)},transformTypeName:function(tree){var moduleName=this.transformAny(tree.moduleName);return moduleName===tree.moduleName?tree:new TypeName(tree.location,moduleName,tree.name)},transformTypeParameter:function(tree){var extendsType=this.transformAny(tree.extendsType);return extendsType===tree.extendsType?tree:new TypeParameter(tree.location,tree.identifierToken,extendsType)},transformTypeParameters:function(tree){var parameters=this.transformList(tree.parameters);return parameters===tree.parameters?tree:new TypeParameters(tree.location,parameters)},transformTypeReference:function(tree){var typeName=this.transformAny(tree.typeName),args=this.transformAny(tree.args);return typeName===tree.typeName&&args===tree.args?tree:new TypeReference(tree.location,typeName,args)},transformUnaryExpression:function(tree){var operand=this.transformAny(tree.operand);return operand===tree.operand?tree:new UnaryExpression(tree.location,tree.operator,operand)},transformUnionType:function(tree){var types=this.transformList(tree.types);return types===tree.types?tree:new UnionType(tree.location,types)},transformVariableDeclaration:function(tree){var lvalue=this.transformAny(tree.lvalue),typeAnnotation=this.transformAny(tree.typeAnnotation),initializer=this.transformAny(tree.initializer);return lvalue===tree.lvalue&&typeAnnotation===tree.typeAnnotation&&initializer===tree.initializer?tree:new VariableDeclaration(tree.location,lvalue,typeAnnotation,initializer)},transformVariableDeclarationList:function(tree){var declarations=this.transformList(tree.declarations);return declarations===tree.declarations?tree:new VariableDeclarationList(tree.location,tree.declarationType,declarations)},transformVariableStatement:function(tree){var declarations=this.transformAny(tree.declarations);return declarations===tree.declarations?tree:new VariableStatement(tree.location,declarations)},transformWhileStatement:function(tree){var condition=this.transformAny(tree.condition),body=this.transformToBlockOrStatement(tree.body);return condition===tree.condition&&body===tree.body?tree:new WhileStatement(tree.location,condition,body)},transformWithStatement:function(tree){var expression=this.transformAny(tree.expression),body=this.transformToBlockOrStatement(tree.body);return expression===tree.expression&&body===tree.body?tree:new WithStatement(tree.location,expression,body)},transformYieldExpression:function(tree){var expression=this.transformAny(tree.expression);return expression===tree.expression?tree:new YieldExpression(tree.location,expression,tree.isYieldFor)}},{})}();return{get ParseTreeTransformer(){return ParseTreeTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/AttachModuleNameTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/module/AttachModuleNameTransformer.js")).ParseTreeTransformer,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/module/AttachModuleNameTransformer.js")),Module=$__2.Module,Script=$__2.Script,AttachModuleNameTransformer=function($__super){function AttachModuleNameTransformer(moduleName){$traceurRuntime.superConstructor(AttachModuleNameTransformer).call(this),this.moduleName_=moduleName}return $traceurRuntime.createClass(AttachModuleNameTransformer,{transformModule:function(tree){return new Module(tree.location,tree.scriptItemList,this.moduleName_)},transformScript:function(tree){return new Script(tree.location,tree.scriptItemList,this.moduleName_)}},{},$__super)}(ParseTreeTransformer);return{get AttachModuleNameTransformer(){return AttachModuleNameTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/IdentifierToken.js",[],function(){"use strict";var Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Token.js","traceur@0.0.107/src/syntax/IdentifierToken.js")).Token,IDENTIFIER=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TokenType.js","traceur@0.0.107/src/syntax/IdentifierToken.js")).IDENTIFIER,IdentifierToken=function($__super){function IdentifierToken(location,value){$traceurRuntime.superConstructor(IdentifierToken).call(this,IDENTIFIER,location),this.value=value}return $traceurRuntime.createClass(IdentifierToken,{toString:function(){return this.value}},{},$__super)}(Token);return{get IdentifierToken(){return IdentifierToken}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/LiteralToken.js",[],function(){"use strict";var Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Token.js","traceur@0.0.107/src/syntax/LiteralToken.js")).Token,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TokenType.js","traceur@0.0.107/src/syntax/LiteralToken.js")),NULL=$__11.NULL,NUMBER=$__11.NUMBER,STRING=$__11.STRING,StringParser=function(){function StringParser(value){this.value=value,this.index=0}var $__2;return $traceurRuntime.createClass(StringParser,($__2={},Object.defineProperty($__2,Symbol.iterator,{value:function(){return this},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty($__2,"next",{value:function(){return++this.index>=this.value.length-1?{value:void 0,done:!0}:{value:this.value[this.index],done:!1}},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty($__2,"parse",{value:function(){if(this.value.indexOf("\\")===-1)return this.value.slice(1,-1);var result="",$__6=!0,$__7=!1,$__8=void 0;try{for(var $__4=void 0,$__3=this[Symbol.iterator]();!($__6=($__4=$__3.next()).done);$__6=!0){var ch=$__4.value;result+="\\"===ch?this.parseEscapeSequence():ch}}catch($__9){$__7=!0,$__8=$__9}finally{try{$__6||null==$__3["return"]||$__3["return"]()}finally{if($__7)throw $__8}}return result},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty($__2,"parseEscapeSequence",{value:function(){var ch=this.next().value;switch(ch){case"\n":case"\r":case"\u2028":case"\u2029":return"";case"0":return"\0";case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";case"v":return"\x0B";case"x":return String.fromCharCode(parseInt(this.next().value+this.next().value,16));case"u":var nextValue=this.next().value;if("{"===nextValue){for(var hexDigits="";"}"!==(nextValue=this.next().value);)hexDigits+=nextValue;var codePoint=parseInt(hexDigits,16);if(codePoint<=65535)return String.fromCharCode(codePoint);var high=Math.floor((codePoint-65536)/1024)+55296,low=(codePoint-65536)%1024+56320;return String.fromCharCode(high,low)}return String.fromCharCode(parseInt(nextValue+this.next().value+this.next().value+this.next().value,16));default:if(+ch<8)throw Error("Octal literals are not supported");return ch}},configurable:!0,enumerable:!0,writable:!0}),$__2),{})}(),LiteralToken=function($__super){function LiteralToken(type,value,location){$traceurRuntime.superConstructor(LiteralToken).call(this,type,location),this.value=value}return $traceurRuntime.createClass(LiteralToken,{toString:function(){return this.value},get processedValue(){switch(this.type){case NULL:return null;case NUMBER:var value=this.value;if(48===value.charCodeAt(0))switch(value.charCodeAt(1)){case 66:case 98:return parseInt(this.value.slice(2),2);case 79:case 111:return parseInt(this.value.slice(2),8)}return+this.value;case STRING:var parser=new StringParser(this.value);return parser.parse();default:throw Error("Not implemented")}}},{},$__super)}(Token);return{get LiteralToken(){return LiteralToken}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/assert.js",[],function(){"use strict";function assert(b){if(!b&&$traceurRuntime.options.debug)throw Error("Assertion failed")}return{get assert(){return assert}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ParseTreeFactory.js",[],function(){"use strict";function createOperatorToken(operator){return new Token(operator,null)}function createIdentifierToken(identifier){return new IdentifierToken(null,identifier)}function createStringLiteralToken(value){return new LiteralToken(STRING,JSON.stringify(value),null)}function createBooleanLiteralToken(value){return new Token(value?TRUE:FALSE,null)}function createNullLiteralToken(){return new LiteralToken(NULL,"null",null)}function createNumberLiteralToken(value){return new LiteralToken(NUMBER,value+"",null)}function createEmptyParameterList(){return new FormalParameterList(null,[])}function createFormalParameter(name){var bindingIdentifier=createBindingIdentifier(name);return new FormalParameter(null,new BindingElement(null,bindingIdentifier,null),null,[])}function createArgumentList(list){return new ArgumentList(null,list)}function createEmptyArgumentList(){return createArgumentList([])}function createArrayLiteral(list){return new ArrayLiteral(null,list)}function createEmptyArrayLiteral(){return createArrayLiteral([])}function createAssignmentExpression(lhs,rhs){return new BinaryExpression(null,lhs,createOperatorToken(EQUAL),rhs)}function createBinaryExpression(left,operator,right){return new BinaryExpression(null,left,operator,right)}function createBindingIdentifier(identifier){if("string"==typeof identifier)identifier=createIdentifierToken(identifier);else{if(identifier.type===ParseTreeType.BINDING_IDENTIFIER)return identifier;if(identifier.type===ParseTreeType.IDENTIFIER_EXPRESSION)return new BindingIdentifier(identifier.location,identifier.identifierToken);
}return new BindingIdentifier(null,identifier)}function createImportedBinding(name){var bindingIdentifier=createBindingIdentifier(name);return new ImportedBinding(bindingIdentifier.location,bindingIdentifier)}function createEmptyStatement(){return new EmptyStatement(null)}function createEmptyBlock(){return createBlock([])}function createBlock(statements){return new Block(null,statements)}function createFunctionBody(statements){return new FunctionBody(null,statements)}function createScopedExpression(body,scope){return assert("FUNCTION_BODY"===body.type),createCallCall(createParenExpression(createFunctionExpression(createEmptyParameterList(),body)),scope)}function createImmediatelyInvokedFunctionExpression(body){return assert("FUNCTION_BODY"===body.type),createCallExpression(createParenExpression(createFunctionExpression(createEmptyParameterList(),body)))}function createCallExpression(operand){var args=void 0!==arguments[1]?arguments[1]:createEmptyArgumentList();return new CallExpression(null,operand,args)}function createBreakStatement(){var name=void 0!==arguments[0]?arguments[0]:null;return new BreakStatement(null,name)}function createCallCall(func,thisExpression){return createCallExpression(createMemberExpression(func,CALL),createArgumentList([thisExpression]))}function createCaseClause(expression,statements){return new CaseClause(null,expression,statements)}function createCatch(identifier,catchBody){return identifier=createBindingIdentifier(identifier),new Catch(null,identifier,catchBody)}function createClassDeclaration(name,superClass,elements){return new ClassDeclaration(null,name,superClass,elements,[])}function createCommaExpression(expressions){return new CommaExpression(null,expressions)}function createConditionalExpression(condition,left,right){return new ConditionalExpression(null,condition,left,right)}function createContinueStatement(){var name=void 0!==arguments[0]?arguments[0]:null;return new ContinueStatement(null,name)}function createDefaultClause(statements){return new DefaultClause(null,statements)}function createDoWhileStatement(body,condition){return new DoWhileStatement(null,body,condition)}function createAssignmentStatement(lhs,rhs){return createExpressionStatement(createAssignmentExpression(lhs,rhs))}function createCallStatement(operand){var args=arguments[1];return createExpressionStatement(createCallExpression(operand,args))}function createExpressionStatement(expression){return new ExpressionStatement(null,expression)}function createFinally(block){return new Finally(null,block)}function createForOfStatement(initializer,collection,body){return new ForOfStatement(null,initializer,collection,body)}function createForInStatement(initializer,collection,body){return new ForInStatement(null,initializer,collection,body)}function createForStatement(variables,condition,increment,body){return new ForStatement(null,variables,condition,increment,body)}function createFunctionExpression(parameterList,body){return assert("FUNCTION_BODY"===body.type),new FunctionExpression(null,null,(!1),parameterList,null,[],body)}function createIdentifierExpression(identifier){return"string"==typeof identifier?identifier=createIdentifierToken(identifier):identifier instanceof BindingIdentifier&&(identifier=identifier.identifierToken),new IdentifierExpression(null,identifier)}function createUndefinedExpression(){return createIdentifierExpression(UNDEFINED)}function createIfStatement(condition,ifClause){var elseClause=void 0!==arguments[2]?arguments[2]:null;return new IfStatement(null,condition,ifClause,elseClause)}function createStringLiteral(value){return new LiteralExpression(null,createStringLiteralToken(value))}function createBooleanLiteral(value){return new LiteralExpression(null,createBooleanLiteralToken(value))}function createTrueLiteral(){return createBooleanLiteral(!0)}function createFalseLiteral(){return createBooleanLiteral(!1)}function createNullLiteral(){return new LiteralExpression(null,createNullLiteralToken())}function createNumberLiteral(value){return new LiteralExpression(null,createNumberLiteralToken(value))}function createMemberExpression(operand,memberName){for(var memberNames=[],$__0=2;$__0<arguments.length;$__0++)memberNames[$__0-2]=arguments[$__0];("string"==typeof operand||operand instanceof IdentifierToken)&&(operand=createIdentifierExpression(operand)),"string"==typeof memberName&&(memberName=createIdentifierToken(memberName)),memberName instanceof LiteralToken&&(memberName=new LiteralExpression(null,memberName));for(var tree=memberName instanceof LiteralExpression?new MemberLookupExpression(null,operand,memberName):new MemberExpression(null,operand,memberName),i=0;i<memberNames.length;i++)tree=createMemberExpression(tree,memberNames[i]);return tree}function createMemberLookupExpression(operand,memberExpression){return new MemberLookupExpression(null,operand,memberExpression)}function createThisExpression(){return new ThisExpression(null)}function createNewExpression(operand,args){return new NewExpression(null,operand,args)}function createObjectFreeze(value){return createCallExpression(createMemberExpression(OBJECT,FREEZE),createArgumentList([value]))}function createObjectCreate(protoExpression){var descriptors=arguments[1],argumentList=[protoExpression];return descriptors&&argumentList.push(descriptors),createCallExpression(createMemberExpression(OBJECT,CREATE),createArgumentList(argumentList))}function createObjectLiteralForDescriptor(descr){var propertyNameAndValues=Object.keys(descr).map(function(name){var value=descr[name];return value instanceof ParseTree||(value=createBooleanLiteral(!!value)),createPropertyNameAssignment(name,value)});return createObjectLiteral(propertyNameAndValues)}function createDefineProperty(tree,name,descr){return"string"==typeof name&&(name=createStringLiteral(name)),createCallExpression(createMemberExpression(OBJECT,DEFINE_PROPERTY),createArgumentList([tree,name,createObjectLiteralForDescriptor(descr)]))}function createObjectLiteral(propertyNameAndValues){return new ObjectLiteral(null,propertyNameAndValues)}function createParenExpression(expression){return new ParenExpression(null,expression)}function createPostfixExpression(operand,operator){return new PostfixExpression(null,operand,operator)}function createScript(scriptItemList){return new Script(null,scriptItemList,null)}function createPropertyNameAssignment(identifier,value){return"string"==typeof identifier&&(identifier=createLiteralPropertyName(identifier)),new PropertyNameAssignment(null,identifier,value)}function createLiteralPropertyName(name){return new LiteralPropertyName(null,createIdentifierToken(name))}function createRestParameter(identifier){var rest=new RestParameter(null,createBindingIdentifier(identifier));return new FormalParameter(null,rest,null,[])}function createReturnStatement(expression){return new ReturnStatement(null,expression)}function createSwitchStatement(expression,caseClauses){return new SwitchStatement(null,expression,caseClauses)}function createThrowStatement(value){return new ThrowStatement(null,value)}function createTryStatement(body,catchBlock){var finallyBlock=void 0!==arguments[2]?arguments[2]:null;return new TryStatement(null,body,catchBlock,finallyBlock)}function createUnaryExpression(operator,operand){return new UnaryExpression(null,operator,operand)}function createUseStrictDirective(){return createExpressionStatement(createStringLiteral("use strict"))}function createVariableDeclarationList(binding,identifierOrDeclarations){var initializer=arguments[2];if(identifierOrDeclarations instanceof Array){var declarations=identifierOrDeclarations;return new VariableDeclarationList(null,binding,declarations)}var identifier=identifierOrDeclarations;return createVariableDeclarationList(binding,[createVariableDeclaration(identifier,initializer)])}function createVariableDeclaration(identifier,initializer){return identifier instanceof ParseTree&&(identifier.type===ParseTreeType.BINDING_IDENTIFIER||identifier.type===ParseTreeType.OBJECT_PATTERN||identifier.type===ParseTreeType.ARRAY_PATTERN)||(identifier=createBindingIdentifier(identifier)),new VariableDeclaration(null,identifier,null,initializer)}function createVariableStatement(listOrBinding){var identifier=arguments[1],initializer=arguments[2];if(listOrBinding instanceof VariableDeclarationList)return new VariableStatement(null,listOrBinding);var binding=listOrBinding,list=createVariableDeclarationList(binding,identifier,initializer);return createVariableStatement(list)}function createVoid0(){return createParenExpression(createUnaryExpression(createOperatorToken(VOID),createNumberLiteral(0)))}function createWhileStatement(condition,body){return new WhileStatement(null,condition,body)}function createWithStatement(expression,body){return new WithStatement(null,expression,body)}function createAssignStateStatement(state){return createAssignmentStatement(createMemberExpression("$ctx","state"),createNumberLiteral(state))}var IdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/IdentifierToken.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")).IdentifierToken,LiteralToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/LiteralToken.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")).LiteralToken,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTree.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")),ParseTree=$__3.ParseTree,ParseTreeType=$__3.ParseTreeType,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")),CALL=$__4.CALL,CREATE=$__4.CREATE,DEFINE_PROPERTY=$__4.DEFINE_PROPERTY,FREEZE=$__4.FREEZE,OBJECT=$__4.OBJECT,UNDEFINED=$__4.UNDEFINED,Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/Token.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")).Token,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")),EQUAL=$__6.EQUAL,FALSE=$__6.FALSE,NULL=$__6.NULL,NUMBER=$__6.NUMBER,STRING=$__6.STRING,TRUE=$__6.TRUE,VOID=$__6.VOID,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/assert.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")).assert,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ParseTreeFactory.js")),ArgumentList=$__8.ArgumentList,ArrayLiteral=$__8.ArrayLiteral,BindingElement=$__8.BindingElement,BinaryExpression=$__8.BinaryExpression,BindingIdentifier=$__8.BindingIdentifier,Block=$__8.Block,BreakStatement=$__8.BreakStatement,CallExpression=$__8.CallExpression,CaseClause=$__8.CaseClause,Catch=$__8.Catch,ClassDeclaration=$__8.ClassDeclaration,CommaExpression=$__8.CommaExpression,ConditionalExpression=$__8.ConditionalExpression,ContinueStatement=$__8.ContinueStatement,DefaultClause=$__8.DefaultClause,DoWhileStatement=$__8.DoWhileStatement,EmptyStatement=$__8.EmptyStatement,ExpressionStatement=$__8.ExpressionStatement,Finally=$__8.Finally,ForInStatement=$__8.ForInStatement,ForOfStatement=$__8.ForOfStatement,ForStatement=$__8.ForStatement,FormalParameter=$__8.FormalParameter,FormalParameterList=$__8.FormalParameterList,FunctionBody=$__8.FunctionBody,FunctionExpression=$__8.FunctionExpression,IdentifierExpression=$__8.IdentifierExpression,IfStatement=$__8.IfStatement,ImportedBinding=$__8.ImportedBinding,LiteralExpression=$__8.LiteralExpression,LiteralPropertyName=$__8.LiteralPropertyName,MemberExpression=$__8.MemberExpression,MemberLookupExpression=$__8.MemberLookupExpression,NewExpression=$__8.NewExpression,ObjectLiteral=$__8.ObjectLiteral,ParenExpression=$__8.ParenExpression,PostfixExpression=$__8.PostfixExpression,Script=$__8.Script,PropertyNameAssignment=$__8.PropertyNameAssignment,RestParameter=$__8.RestParameter,ReturnStatement=$__8.ReturnStatement,SwitchStatement=($__8.SpreadExpression,$__8.SwitchStatement),ThisExpression=$__8.ThisExpression,ThrowStatement=$__8.ThrowStatement,TryStatement=$__8.TryStatement,UnaryExpression=$__8.UnaryExpression,VariableDeclaration=$__8.VariableDeclaration,VariableDeclarationList=$__8.VariableDeclarationList,VariableStatement=$__8.VariableStatement,WhileStatement=$__8.WhileStatement,WithStatement=$__8.WithStatement;Array.prototype.slice.call.bind(Array.prototype.slice),Array.prototype.map.call.bind(Array.prototype.map);return{get createOperatorToken(){return createOperatorToken},get createIdentifierToken(){return createIdentifierToken},get createStringLiteralToken(){return createStringLiteralToken},get createBooleanLiteralToken(){return createBooleanLiteralToken},get createNullLiteralToken(){return createNullLiteralToken},get createNumberLiteralToken(){return createNumberLiteralToken},get createEmptyParameterList(){return createEmptyParameterList},get createFormalParameter(){return createFormalParameter},get createArgumentList(){return createArgumentList},get createEmptyArgumentList(){return createEmptyArgumentList},get createArrayLiteral(){return createArrayLiteral},get createEmptyArrayLiteral(){return createEmptyArrayLiteral},get createAssignmentExpression(){return createAssignmentExpression},get createBinaryExpression(){return createBinaryExpression},get createBindingIdentifier(){return createBindingIdentifier},get createImportedBinding(){return createImportedBinding},get createEmptyStatement(){return createEmptyStatement},get createEmptyBlock(){return createEmptyBlock},get createBlock(){return createBlock},get createFunctionBody(){return createFunctionBody},get createScopedExpression(){return createScopedExpression},get createImmediatelyInvokedFunctionExpression(){return createImmediatelyInvokedFunctionExpression},get createCallExpression(){return createCallExpression},get createBreakStatement(){return createBreakStatement},get createCaseClause(){return createCaseClause},get createCatch(){return createCatch},get createClassDeclaration(){return createClassDeclaration},get createCommaExpression(){return createCommaExpression},get createConditionalExpression(){return createConditionalExpression},get createContinueStatement(){return createContinueStatement},get createDefaultClause(){return createDefaultClause},get createDoWhileStatement(){return createDoWhileStatement},get createAssignmentStatement(){return createAssignmentStatement},get createCallStatement(){return createCallStatement},get createExpressionStatement(){return createExpressionStatement},get createFinally(){return createFinally},get createForOfStatement(){return createForOfStatement},get createForInStatement(){return createForInStatement},get createForStatement(){return createForStatement},get createFunctionExpression(){return createFunctionExpression},get createIdentifierExpression(){return createIdentifierExpression},get createUndefinedExpression(){return createUndefinedExpression},get createIfStatement(){return createIfStatement},get createStringLiteral(){return createStringLiteral},get createBooleanLiteral(){return createBooleanLiteral},get createTrueLiteral(){return createTrueLiteral},get createFalseLiteral(){return createFalseLiteral},get createNullLiteral(){return createNullLiteral},get createNumberLiteral(){return createNumberLiteral},get createMemberExpression(){return createMemberExpression},get createMemberLookupExpression(){return createMemberLookupExpression},get createThisExpression(){return createThisExpression},get createNewExpression(){return createNewExpression},get createObjectFreeze(){return createObjectFreeze},get createObjectCreate(){return createObjectCreate},get createObjectLiteralForDescriptor(){return createObjectLiteralForDescriptor},get createDefineProperty(){return createDefineProperty},get createObjectLiteral(){return createObjectLiteral},get createParenExpression(){return createParenExpression},get createPostfixExpression(){return createPostfixExpression},get createScript(){return createScript},get createPropertyNameAssignment(){return createPropertyNameAssignment},get createLiteralPropertyName(){return createLiteralPropertyName},get createRestParameter(){return createRestParameter},get createReturnStatement(){return createReturnStatement},get createSwitchStatement(){return createSwitchStatement},get createThrowStatement(){return createThrowStatement},get createTryStatement(){return createTryStatement},get createUnaryExpression(){return createUnaryExpression},get createUseStrictDirective(){return createUseStrictDirective},get createVariableDeclarationList(){return createVariableDeclarationList},get createVariableDeclaration(){return createVariableDeclaration},get createVariableStatement(){return createVariableStatement},get createVoid0(){return createVoid0},get createWhileStatement(){return createWhileStatement},get createWithStatement(){return createWithStatement},get createAssignStateStatement(){return createAssignStateStatement}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/PrependStatements.js",[],function(){"use strict";function prependStatements(statements){for(var $__1,statementsToPrepend=[],$__0=1;$__0<arguments.length;$__0++)statementsToPrepend[$__0-1]=arguments[$__0];if(!statements.length)return statementsToPrepend;if(!statementsToPrepend.length)return statements;var transformed=[],inProlog=!0;return statements.forEach(function(statement){var $__1;inProlog&&!statement.isDirectivePrologue()&&(($__1=transformed).push.apply($__1,$traceurRuntime.spread(statementsToPrepend)),inProlog=!1),transformed.push(statement)}),inProlog&&($__1=transformed).push.apply($__1,$traceurRuntime.spread(statementsToPrepend)),transformed}return{get prependStatements(){return prependStatements}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/TempVarTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/TempVarTransformer.js")).ParseTreeTransformer,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/TempVarTransformer.js")),Module=$__6.Module,Script=$__6.Script,ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/TempVarTransformer.js")).ARGUMENTS,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/codegeneration/TempVarTransformer.js")).StringSet,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/TempVarTransformer.js")),LET=$__9.LET,VAR=$__9.VAR,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/TempVarTransformer.js")),createFunctionBody=$__10.createFunctionBody,createThisExpression=$__10.createThisExpression,createIdentifierExpression=$__10.createIdentifierExpression,createVariableDeclaration=$__10.createVariableDeclaration,createVariableDeclarationList=$__10.createVariableDeclarationList,createVariableStatement=$__10.createVariableStatement,prependStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/TempVarTransformer.js")).prependStatements,TempVarStatement=function(){function TempVarStatement(name,initializer){this.name=name,this.initializer=initializer}return $traceurRuntime.createClass(TempVarStatement,{},{})}(),TempScope=function(){function TempScope(){this.identifiers=[]}return $traceurRuntime.createClass(TempScope,{push:function(identifier){this.identifiers.push(identifier)},pop:function(){return this.identifiers.pop()},release:function(obj){for(var i=this.identifiers.length-1;i>=0;i--)obj.releaseTempName(this.identifiers[i])}},{})}(),VarScope=function(){function VarScope(options){this.thisName=null,this.argumentName=null,this.tempVarStatements=[],this.declarationType_=options.blockBinding&&!options.transformOptions.blockBinding?LET:VAR}return $traceurRuntime.createClass(VarScope,{push:function(tempVarStatement){this.tempVarStatements.push(tempVarStatement)},pop:function(){return this.tempVarStatements.pop()},release:function(obj){for(var i=this.tempVarStatements.length-1;i>=0;i--)obj.releaseTempName(this.tempVarStatements[i].name)},isEmpty:function(){return!this.tempVarStatements.length},createVariableStatement:function(){for(var declarations=[],seenNames=new StringSet,i=0;i<this.tempVarStatements.length;i++){var $__4=this.tempVarStatements[i],name=$__4.name,initializer=$__4.initializer;if(seenNames.has(name)){if(initializer)throw Error("Invalid use of TempVarTransformer")}else seenNames.add(name),declarations.push(createVariableDeclaration(name,initializer))}return createVariableStatement(createVariableDeclarationList(this.declarationType_,declarations))}},{})}(),TempVarTransformer=function($__super){function TempVarTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(TempVarTransformer).call(this),this.identifierGenerator=identifierGenerator,this.reporter=reporter,this.options=options,this.tempVarStack_=[new VarScope(this.options)],this.tempScopeStack_=[new TempScope],this.namePool_=[]}return $traceurRuntime.createClass(TempVarTransformer,{transformStatements_:function(statements){this.tempVarStack_.push(new VarScope(this.options));var transformedStatements=this.transformList(statements),vars=this.tempVarStack_.pop();if(vars.isEmpty())return transformedStatements;var variableStatement=vars.createVariableStatement();return vars.release(this),prependStatements(transformedStatements,variableStatement)},transformScript:function(tree){var scriptItemList=this.transformStatements_(tree.scriptItemList);return scriptItemList===tree.scriptItemList?tree:new Script(tree.location,scriptItemList,tree.moduleName)},transformModule:function(tree){var scriptItemList=this.transformStatements_(tree.scriptItemList);return scriptItemList===tree.scriptItemList?tree:new Module(tree.location,scriptItemList,tree.moduleName)},transformFunctionBody:function(tree){this.pushTempScope();var statements=this.transformStatements_(tree.statements);return this.popTempScope(),statements===tree.statements?tree:createFunctionBody(statements)},getTempIdentifier:function(){var name=this.getName_();return this.tempScopeStack_[this.tempScopeStack_.length-1].push(name),name},getName_:function(){return this.namePool_.length?this.namePool_.pop():this.identifierGenerator.generateUniqueIdentifier()},addTempVar:function(){var initializer=void 0!==arguments[0]?arguments[0]:null,vars=this.tempVarStack_[this.tempVarStack_.length-1],name=this.getName_();return vars.push(new TempVarStatement(name,initializer)),name},registerTempVarName:function(name){var vars=this.tempVarStack_[this.tempVarStack_.length-1];vars.push(new TempVarStatement(name,null))},addTempVarForThis:function(){var varScope=this.tempVarStack_[this.tempVarStack_.length-1];return varScope.thisName||(varScope.thisName=this.addTempVar(createThisExpression()))},addTempVarForArguments:function(){var varScope=this.tempVarStack_[this.tempVarStack_.length-1];return varScope.argumentName||(varScope.argumentName=this.addTempVar(createIdentifierExpression(ARGUMENTS)))},pushTempScope:function(){this.tempScopeStack_.push(new TempScope)},popTempScope:function(){this.tempScopeStack_.pop().release(this)},releaseTempName:function(name){this.namePool_.push(name)}},{},$__super)}(ParseTreeTransformer);return{get TempVarTransformer(){return TempVarTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/ParseTreeVisitor.js",[],function(){"use strict";var ParseTreeVisitor=function(){function ParseTreeVisitor(){}return $traceurRuntime.createClass(ParseTreeVisitor,{visitAny:function(tree){null!==tree&&tree.visit(this)},visit:function(tree){this.visitAny(tree)},visitList:function(list){if(list)for(var i=0;i<list.length;i++)this.visitAny(list[i])},visitStateMachine:function(tree){throw Error("State machines should not live outside of the GeneratorTransformer.")},visitAnnotation:function(tree){this.visitAny(tree.name),this.visitAny(tree.args)},visitAnonBlock:function(tree){this.visitList(tree.statements)},visitArgumentList:function(tree){this.visitList(tree.args)},visitArrayComprehension:function(tree){this.visitList(tree.comprehensionList),this.visitAny(tree.expression)},visitArrayLiteral:function(tree){this.visitList(tree.elements)},visitArrayPattern:function(tree){this.visitList(tree.elements)},visitArrayType:function(tree){this.visitAny(tree.elementType)},visitArrowFunction:function(tree){this.visitAny(tree.parameterList),this.visitAny(tree.body)},visitAssignmentElement:function(tree){this.visitAny(tree.assignment),this.visitAny(tree.initializer)},visitAwaitExpression:function(tree){this.visitAny(tree.expression)},visitBinaryExpression:function(tree){this.visitAny(tree.left),this.visitAny(tree.right)},visitBindingElement:function(tree){this.visitAny(tree.binding),this.visitAny(tree.initializer)},visitBindingIdentifier:function(tree){},visitBlock:function(tree){this.visitList(tree.statements)},visitBreakStatement:function(tree){},visitCallExpression:function(tree){this.visitAny(tree.operand),this.visitAny(tree.args)},visitCallSignature:function(tree){this.visitAny(tree.typeParameters),this.visitAny(tree.parameterList),this.visitAny(tree.returnType)},visitCaseClause:function(tree){this.visitAny(tree.expression),this.visitList(tree.statements)},visitCatch:function(tree){this.visitAny(tree.binding),this.visitAny(tree.catchBody)},visitClassDeclaration:function(tree){this.visitAny(tree.name),this.visitAny(tree.superClass),this.visitList(tree.elements),this.visitList(tree.annotations),this.visitAny(tree.typeParameters)},visitClassExpression:function(tree){this.visitAny(tree.name),this.visitAny(tree.superClass),this.visitList(tree.elements),this.visitList(tree.annotations),this.visitAny(tree.typeParameters)},visitCommaExpression:function(tree){this.visitList(tree.expressions)},visitComprehensionFor:function(tree){this.visitAny(tree.left),this.visitAny(tree.iterator)},visitComprehensionIf:function(tree){this.visitAny(tree.expression)},visitComputedPropertyName:function(tree){this.visitAny(tree.expression)},visitConditionalExpression:function(tree){this.visitAny(tree.condition),this.visitAny(tree.left),this.visitAny(tree.right)},visitConstructSignature:function(tree){this.visitAny(tree.typeParameters),this.visitAny(tree.parameterList),this.visitAny(tree.returnType)},visitConstructorType:function(tree){this.visitAny(tree.typeParameters),this.visitAny(tree.parameterList),this.visitAny(tree.returnType)},visitContinueStatement:function(tree){},visitCoverFormals:function(tree){this.visitList(tree.expressions)},visitCoverInitializedName:function(tree){this.visitAny(tree.initializer)},visitDebuggerStatement:function(tree){},visitDefaultClause:function(tree){this.visitList(tree.statements)},visitDoWhileStatement:function(tree){this.visitAny(tree.body),this.visitAny(tree.condition)},visitEmptyStatement:function(tree){},visitExportDeclaration:function(tree){this.visitAny(tree.declaration),this.visitList(tree.annotations)},visitExportDefault:function(tree){this.visitAny(tree.expression)},visitExportSpecifier:function(tree){},visitExportSpecifierSet:function(tree){this.visitList(tree.specifiers)},visitExportStar:function(tree){},visitExpressionStatement:function(tree){this.visitAny(tree.expression)},visitFinally:function(tree){this.visitAny(tree.block)},visitForInStatement:function(tree){this.visitAny(tree.initializer),this.visitAny(tree.collection),this.visitAny(tree.body)},visitForOfStatement:function(tree){this.visitAny(tree.initializer),this.visitAny(tree.collection),this.visitAny(tree.body)},visitForOnStatement:function(tree){this.visitAny(tree.initializer),this.visitAny(tree.observable),this.visitAny(tree.body)},visitForStatement:function(tree){this.visitAny(tree.initializer),this.visitAny(tree.condition),this.visitAny(tree.increment),this.visitAny(tree.body)},visitFormalParameter:function(tree){this.visitAny(tree.parameter),this.visitAny(tree.typeAnnotation),this.visitList(tree.annotations)},visitFormalParameterList:function(tree){this.visitList(tree.parameters)},visitForwardDefaultExport:function(tree){},visitFunctionBody:function(tree){this.visitList(tree.statements)},visitFunctionDeclaration:function(tree){this.visitAny(tree.name),this.visitAny(tree.parameterList),this.visitAny(tree.typeAnnotation),this.visitList(tree.annotations),this.visitAny(tree.body)},visitFunctionExpression:function(tree){this.visitAny(tree.name),this.visitAny(tree.parameterList),this.visitAny(tree.typeAnnotation),this.visitList(tree.annotations),this.visitAny(tree.body)},visitFunctionType:function(tree){this.visitAny(tree.typeParameters),this.visitAny(tree.parameterList),this.visitAny(tree.returnType)},visitGeneratorComprehension:function(tree){this.visitList(tree.comprehensionList),this.visitAny(tree.expression)},visitGetAccessor:function(tree){this.visitAny(tree.name),this.visitAny(tree.typeAnnotation),this.visitList(tree.annotations),this.visitAny(tree.body)},visitIdentifierExpression:function(tree){},visitIfStatement:function(tree){this.visitAny(tree.condition),this.visitAny(tree.ifClause),this.visitAny(tree.elseClause)},visitImportedBinding:function(tree){this.visitAny(tree.binding)},visitImportClausePair:function(tree){this.visitAny(tree.first),this.visitAny(tree.second)},visitImportDeclaration:function(tree){this.visitAny(tree.importClause),this.visitAny(tree.moduleSpecifier)},visitImportSpecifier:function(tree){this.visitAny(tree.binding)},visitImportSpecifierSet:function(tree){this.visitList(tree.specifiers)},visitImportTypeClause:function(tree){this.visitAny(tree.clause)},visitIndexSignature:function(tree){this.visitAny(tree.indexType),this.visitAny(tree.typeAnnotation)},visitInterfaceDeclaration:function(tree){this.visitAny(tree.typeParameters),this.visitAny(tree.objectType)},visitJsxAttribute:function(tree){this.visitAny(tree.value)},visitJsxElement:function(tree){this.visitAny(tree.name),this.visitList(tree.attributes),this.visitList(tree.children)},visitJsxElementName:function(tree){},visitJsxPlaceholder:function(tree){this.visitAny(tree.expression)},visitJsxSpreadAttribute:function(tree){this.visitAny(tree.expression)},visitJsxText:function(tree){},visitLabelledStatement:function(tree){this.visitAny(tree.statement)},visitLiteralExpression:function(tree){},visitLiteralPropertyName:function(tree){},visitMemberExpression:function(tree){this.visitAny(tree.operand)},visitMemberLookupExpression:function(tree){this.visitAny(tree.operand),this.visitAny(tree.memberExpression)},visitMethod:function(tree){this.visitAny(tree.name),this.visitAny(tree.parameterList),this.visitAny(tree.typeAnnotation),this.visitList(tree.annotations),this.visitAny(tree.body),this.visitAny(tree.debugName)},visitMethodSignature:function(tree){this.visitAny(tree.name),this.visitAny(tree.callSignature)},visitModule:function(tree){this.visitList(tree.scriptItemList)},visitModuleSpecifier:function(tree){},visitNameSpaceExport:function(tree){},visitNameSpaceImport:function(tree){this.visitAny(tree.binding)},visitNamedExport:function(tree){this.visitAny(tree.exportClause),this.visitAny(tree.moduleSpecifier)},visitNewExpression:function(tree){this.visitAny(tree.operand),this.visitAny(tree.args)},visitObjectLiteral:function(tree){this.visitList(tree.propertyNameAndValues)},visitObjectPattern:function(tree){this.visitList(tree.fields)},visitObjectPatternField:function(tree){this.visitAny(tree.name),this.visitAny(tree.element)},visitObjectType:function(tree){this.visitList(tree.typeMembers)},visitParenExpression:function(tree){this.visitAny(tree.expression)},visitPostfixExpression:function(tree){
this.visitAny(tree.operand)},visitPredefinedType:function(tree){},visitScript:function(tree){this.visitList(tree.scriptItemList)},visitPropertyNameAssignment:function(tree){this.visitAny(tree.name),this.visitAny(tree.value)},visitPropertyNameShorthand:function(tree){},visitPropertyVariableDeclaration:function(tree){this.visitAny(tree.name),this.visitAny(tree.typeAnnotation),this.visitList(tree.annotations),this.visitAny(tree.initializer)},visitPropertySignature:function(tree){this.visitAny(tree.name),this.visitAny(tree.typeAnnotation)},visitRestParameter:function(tree){this.visitAny(tree.identifier)},visitReturnStatement:function(tree){this.visitAny(tree.expression)},visitSetAccessor:function(tree){this.visitAny(tree.name),this.visitAny(tree.parameterList),this.visitList(tree.annotations),this.visitAny(tree.body)},visitSpreadExpression:function(tree){this.visitAny(tree.expression)},visitSpreadPatternElement:function(tree){this.visitAny(tree.lvalue)},visitSuperExpression:function(tree){},visitSwitchStatement:function(tree){this.visitAny(tree.expression),this.visitList(tree.caseClauses)},visitSyntaxErrorTree:function(tree){},visitTemplateLiteralExpression:function(tree){this.visitAny(tree.operand),this.visitList(tree.elements)},visitTemplateLiteralPortion:function(tree){},visitTemplateSubstitution:function(tree){this.visitAny(tree.expression)},visitThisExpression:function(tree){},visitThrowStatement:function(tree){this.visitAny(tree.value)},visitTryStatement:function(tree){this.visitAny(tree.body),this.visitAny(tree.catchBlock),this.visitAny(tree.finallyBlock)},visitTypeAliasDeclaration:function(tree){this.visitAny(tree.value)},visitTypeArguments:function(tree){this.visitList(tree.args)},visitTypeName:function(tree){this.visitAny(tree.moduleName)},visitTypeParameter:function(tree){this.visitAny(tree.extendsType)},visitTypeParameters:function(tree){this.visitList(tree.parameters)},visitTypeReference:function(tree){this.visitAny(tree.typeName),this.visitAny(tree.args)},visitUnaryExpression:function(tree){this.visitAny(tree.operand)},visitUnionType:function(tree){this.visitList(tree.types)},visitVariableDeclaration:function(tree){this.visitAny(tree.lvalue),this.visitAny(tree.typeAnnotation),this.visitAny(tree.initializer)},visitVariableDeclarationList:function(tree){this.visitList(tree.declarations)},visitVariableStatement:function(tree){this.visitAny(tree.declarations)},visitWhileStatement:function(tree){this.visitAny(tree.condition),this.visitAny(tree.body)},visitWithStatement:function(tree){this.visitAny(tree.expression),this.visitAny(tree.body)},visitYieldExpression:function(tree){this.visitAny(tree.expression)}},{})}();return{get ParseTreeVisitor(){return ParseTreeVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/bindingsInDestructuringPattern.js",[],function(){"use strict";function bindingsInDestructuringPattern(tree){var v=new BindingsInDestructuringPatternVisitor;return v.visitAny(tree),v.bindings}var ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/semantics/bindingsInDestructuringPattern.js")).ParseTreeVisitor,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/semantics/bindingsInDestructuringPattern.js")).StringSet,BindingsInDestructuringPatternVisitor=function($__super){function BindingsInDestructuringPatternVisitor(){$traceurRuntime.superConstructor(BindingsInDestructuringPatternVisitor).call(this),this.bindings=new StringSet}return $traceurRuntime.createClass(BindingsInDestructuringPatternVisitor,{visitBindingIdentifier:function(tree){this.bindings.add(tree.getStringValue())},visitBindingElement:function(tree){this.visitAny(tree.binding)},visitVariableDeclaration:function(tree){this.visitAny(tree.lvalue)}},{},$__super)}(ParseTreeVisitor),$__default=bindingsInDestructuringPattern;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/FindVisitor.js",[],function(){"use strict";var ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/codegeneration/FindVisitor.js")).ParseTreeVisitor,FindVisitor=function($__super){function FindVisitor(){var keepOnGoing=arguments[0];$traceurRuntime.superConstructor(FindVisitor).call(this),this.found_=!1,this.shouldContinue_=!0,this.keepOnGoing_=keepOnGoing}return $traceurRuntime.createClass(FindVisitor,{get found(){return this.found_},set found(v){v&&(this.found_=!0,this.keepOnGoing_||(this.shouldContinue_=!1))},visitAny:function(tree){this.shouldContinue_&&tree&&tree.visit(this)},visitList:function(list){if(list)for(var i=0;this.shouldContinue_&&i<list.length;i++)this.visitAny(list[i])}},{},$__super)}(ParseTreeVisitor);return{get FindVisitor(){return FindVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/SyntaxErrorReporter.js",[],function(){"use strict";var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ErrorReporter.js","traceur@0.0.107/src/util/SyntaxErrorReporter.js")),ErrorReporter=$__1.ErrorReporter,format=$__1.format,SyntaxErrorReporter=function($__super){function SyntaxErrorReporter(){$traceurRuntime.superConstructor(SyntaxErrorReporter).apply(this,arguments)}return $traceurRuntime.createClass(SyntaxErrorReporter,{reportMessageInternal:function(location,message){var s=format(location,message);throw new SyntaxError(s)}},{},$__super)}(ErrorReporter);return{get SyntaxErrorReporter(){return SyntaxErrorReporter}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/JsxIdentifierToken.js",[],function(){"use strict";var Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Token.js","traceur@0.0.107/src/syntax/JsxIdentifierToken.js")).Token,JSX_IDENTIFIER=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TokenType.js","traceur@0.0.107/src/syntax/JsxIdentifierToken.js")).JSX_IDENTIFIER,JsxIdentifierToken=function($__super){function JsxIdentifierToken(location,value){$traceurRuntime.superConstructor(JsxIdentifierToken).call(this,JSX_IDENTIFIER,location),this.value=value}return $traceurRuntime.createClass(JsxIdentifierToken,{toString:function(){return this.value}},{},$__super)}(Token);return{get JsxIdentifierToken(){return JsxIdentifierToken}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/Keywords.js",[],function(){"use strict";function getKeywordType(value){return keywordsByName[value]}function isStrictKeyword(value){return getKeywordType(value)===STRICT_KEYWORD}var keywords=["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","finally","for","function","if","import","in","instanceof","let","new","return","super","switch","this","throw","try","typeof","var","void","while","with","enum","extends","null","true","false"],strictKeywords=["implements","interface","package","private","protected","public","static","yield"],keywordsByName=Object.create(null),NORMAL_KEYWORD=1,STRICT_KEYWORD=2;return keywords.forEach(function(value){keywordsByName[value]=NORMAL_KEYWORD}),strictKeywords.forEach(function(value){keywordsByName[value]=STRICT_KEYWORD}),{get NORMAL_KEYWORD(){return NORMAL_KEYWORD},get STRICT_KEYWORD(){return STRICT_KEYWORD},get getKeywordType(){return getKeywordType},get isStrictKeyword(){return isStrictKeyword}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/KeywordToken.js",[],function(){"use strict";var STRICT_KEYWORD=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Keywords.js","traceur@0.0.107/src/syntax/KeywordToken.js")).STRICT_KEYWORD,Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Token.js","traceur@0.0.107/src/syntax/KeywordToken.js")).Token,KeywordToken=function($__super){function KeywordToken(type,keywordType,location){$traceurRuntime.superConstructor(KeywordToken).call(this,type,location),this.isStrictKeyword_=keywordType===STRICT_KEYWORD}return $traceurRuntime.createClass(KeywordToken,{isKeyword:function(){return!0},isStrictKeyword:function(){return this.isStrictKeyword_}},{},$__super)}(Token);return{get KeywordToken(){return KeywordToken}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/unicode-tables.js",[],function(){"use strict";var idStartTable=[170,170,181,181,186,186,192,214,216,246,248,442,443,443,444,447,448,451,452,659,660,660,661,687,688,705,710,721,736,740,748,748,750,750,880,883,884,884,886,887,890,890,891,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1599,1600,1600,1601,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2226,2308,2361,2365,2365,2384,2384,2392,2401,2417,2417,2418,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3653,3654,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4348,4349,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5873,5880,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6210,6211,6211,6212,6263,6272,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7287,7288,7293,7401,7404,7406,7409,7413,7414,7424,7467,7468,7530,7531,7543,7544,7544,7545,7578,7579,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8472,8472,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8494,8494,8495,8500,8501,8504,8505,8505,8508,8511,8517,8521,8526,8526,8544,8578,8579,8580,8581,8584,11264,11310,11312,11358,11360,11387,11388,11389,11390,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,12293,12293,12294,12294,12295,12295,12321,12329,12337,12341,12344,12346,12347,12347,12348,12348,12353,12438,12443,12444,12445,12446,12447,12447,12449,12538,12540,12542,12543,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,40980,40981,40981,40982,42124,42192,42231,42232,42237,42240,42507,42508,42508,42512,42527,42538,42539,42560,42605,42606,42606,42623,42623,42624,42651,42652,42653,42656,42725,42726,42735,42775,42783,42786,42863,42864,42864,42865,42887,42888,42888,42891,42894,42896,42925,42928,42929,42999,42999,43e3,43001,43002,43002,43003,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43494,43495,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616,43631,43632,43632,43633,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43740,43741,43741,43744,43754,43762,43762,43763,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43871,43876,43877,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65391,65392,65392,65393,65437,65438,65439,65440,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66352,66368,66369,66369,66370,66377,66378,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66639,66640,66717,66816,66855,66864,66915,67072,67382,67392,67413,67424,67431,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68147,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,69635,69687,69763,69807,69840,69864,69891,69926,69968,70002,70006,70006,70019,70066,70081,70084,70106,70106,70144,70161,70163,70187,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70493,70497,70784,70831,70852,70853,70855,70855,71040,71086,71168,71215,71236,71236,71296,71338,71840,71903,71935,71935,72384,72440,73728,74648,74752,74862,77824,78894,92160,92728,92736,92766,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93952,94020,94032,94032,94099,94111,110592,110593,113664,113770,113776,113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,124928,125124,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173782,173824,177972,177984,178205,194560,195101],idContinueTable=[183,183,768,879,903,903,1155,1159,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1552,1562,1611,1631,1632,1641,1648,1648,1750,1756,1759,1764,1767,1768,1770,1773,1776,1785,1809,1809,1840,1866,1958,1968,1984,1993,2027,2035,2070,2073,2075,2083,2085,2087,2089,2093,2137,2139,2276,2306,2307,2307,2362,2362,2363,2363,2364,2364,2366,2368,2369,2376,2377,2380,2381,2381,2382,2383,2385,2391,2402,2403,2406,2415,2433,2433,2434,2435,2492,2492,2494,2496,2497,2500,2503,2504,2507,2508,2509,2509,2519,2519,2530,2531,2534,2543,2561,2562,2563,2563,2620,2620,2622,2624,2625,2626,2631,2632,2635,2637,2641,2641,2662,2671,2672,2673,2677,2677,2689,2690,2691,2691,2748,2748,2750,2752,2753,2757,2759,2760,2761,2761,2763,2764,2765,2765,2786,2787,2790,2799,2817,2817,2818,2819,2876,2876,2878,2878,2879,2879,2880,2880,2881,2884,2887,2888,2891,2892,2893,2893,2902,2902,2903,2903,2914,2915,2918,2927,2946,2946,3006,3007,3008,3008,3009,3010,3014,3016,3018,3020,3021,3021,3031,3031,3046,3055,3072,3072,3073,3075,3134,3136,3137,3140,3142,3144,3146,3149,3157,3158,3170,3171,3174,3183,3201,3201,3202,3203,3260,3260,3262,3262,3263,3263,3264,3268,3270,3270,3271,3272,3274,3275,3276,3277,3285,3286,3298,3299,3302,3311,3329,3329,3330,3331,3390,3392,3393,3396,3398,3400,3402,3404,3405,3405,3415,3415,3426,3427,3430,3439,3458,3459,3530,3530,3535,3537,3538,3540,3542,3542,3544,3551,3558,3567,3570,3571,3633,3633,3636,3642,3655,3662,3664,3673,3761,3761,3764,3769,3771,3772,3784,3789,3792,3801,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3903,3953,3966,3967,3967,3968,3972,3974,3975,3981,3991,3993,4028,4038,4038,4139,4140,4141,4144,4145,4145,4146,4151,4152,4152,4153,4154,4155,4156,4157,4158,4160,4169,4182,4183,4184,4185,4190,4192,4194,4196,4199,4205,4209,4212,4226,4226,4227,4228,4229,4230,4231,4236,4237,4237,4239,4239,4240,4249,4250,4252,4253,4253,4957,4959,4969,4977,5906,5908,5938,5940,5970,5971,6002,6003,6068,6069,6070,6070,6071,6077,6078,6085,6086,6086,6087,6088,6089,6099,6109,6109,6112,6121,6155,6157,6160,6169,6313,6313,6432,6434,6435,6438,6439,6440,6441,6443,6448,6449,6450,6450,6451,6456,6457,6459,6470,6479,6576,6592,6600,6601,6608,6617,6618,6618,6679,6680,6681,6682,6683,6683,6741,6741,6742,6742,6743,6743,6744,6750,6752,6752,6753,6753,6754,6754,6755,6756,6757,6764,6765,6770,6771,6780,6783,6783,6784,6793,6800,6809,6832,6845,6912,6915,6916,6916,6964,6964,6965,6965,6966,6970,6971,6971,6972,6972,6973,6977,6978,6978,6979,6980,6992,7001,7019,7027,7040,7041,7042,7042,7073,7073,7074,7077,7078,7079,7080,7081,7082,7082,7083,7085,7088,7097,7142,7142,7143,7143,7144,7145,7146,7148,7149,7149,7150,7150,7151,7153,7154,7155,7204,7211,7212,7219,7220,7221,7222,7223,7232,7241,7248,7257,7376,7378,7380,7392,7393,7393,7394,7400,7405,7405,7410,7411,7412,7412,7416,7417,7616,7669,7676,7679,8255,8256,8276,8276,8400,8412,8417,8417,8421,8432,11503,11505,11647,11647,11744,11775,12330,12333,12334,12335,12441,12442,42528,42537,42607,42607,42612,42621,42655,42655,42736,42737,43010,43010,43014,43014,43019,43019,43043,43044,43045,43046,43047,43047,43136,43137,43188,43203,43204,43204,43216,43225,43232,43249,43264,43273,43302,43309,43335,43345,43346,43347,43392,43394,43395,43395,43443,43443,43444,43445,43446,43449,43450,43451,43452,43452,43453,43456,43472,43481,43493,43493,43504,43513,43561,43566,43567,43568,43569,43570,43571,43572,43573,43574,43587,43587,43596,43596,43597,43597,43600,43609,43643,43643,43644,43644,43645,43645,43696,43696,43698,43700,43703,43704,43710,43711,43713,43713,43755,43755,43756,43757,43758,43759,43765,43765,43766,43766,44003,44004,44005,44005,44006,44007,44008,44008,44009,44010,44012,44012,44013,44013,44016,44025,64286,64286,65024,65039,65056,65069,65075,65076,65101,65103,65296,65305,65343,65343,66045,66045,66272,66272,66422,66426,66720,66729,68097,68099,68101,68102,68108,68111,68152,68154,68159,68159,68325,68326,69632,69632,69633,69633,69634,69634,69688,69702,69734,69743,69759,69761,69762,69762,69808,69810,69811,69814,69815,69816,69817,69818,69872,69881,69888,69890,69927,69931,69932,69932,69933,69940,69942,69951,70003,70003,70016,70017,70018,70018,70067,70069,70070,70078,70079,70080,70096,70105,70188,70190,70191,70193,70194,70195,70196,70196,70197,70197,70198,70199,70367,70367,70368,70370,70371,70378,70384,70393,70401,70401,70402,70403,70460,70460,70462,70463,70464,70464,70465,70468,70471,70472,70475,70477,70487,70487,70498,70499,70502,70508,70512,70516,70832,70834,70835,70840,70841,70841,70842,70842,70843,70846,70847,70848,70849,70849,70850,70851,70864,70873,71087,71089,71090,71093,71096,71099,71100,71101,71102,71102,71103,71104,71216,71218,71219,71226,71227,71228,71229,71229,71230,71230,71231,71232,71248,71257,71339,71339,71340,71340,71341,71341,71342,71343,71344,71349,71350,71350,71351,71351,71360,71369,71904,71913,92768,92777,92912,92916,92976,92982,93008,93017,94033,94078,94095,94098,113821,113822,119141,119142,119143,119145,119149,119154,119163,119170,119173,119179,119210,119213,119362,119364,120782,120831,125136,125142,917760,917999];return{get idStartTable(){return idStartTable},get idContinueTable(){return idContinueTable}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/Scanner.js",[],function(){"use strict";function isWhitespace(code){if(code<128)return isWhitespaceArray[code];switch(code){case 160:case 65279:case 8232:case 8233:return!0}return!1}function isLineTerminator(code){switch(code){case 10:case 13:case 8232:case 8233:return!0}return!1}function isDecimalDigit(code){return code>=48&&code<=57}function isHexDigit(code){return code<128&&isHexDigitArray[code]}function isBinaryDigit(code){return 48===code||49===code}function isOctalDigit(code){return code>=48&&code<=55}function isIdentifierStart(code){return code<128?isIdentifierStartArray[code]:inTable(idStartTable,code)}function isIdentifierPart(code){return code<128?isIdentifierPartArray[code]:inTable(idStartTable,code)||inTable(idContinueTable,code)||8204===code||8205===code}function inTable(table,code){for(var i=0;i<table.length;){if(code<table[i++])return!1;if(code<=table[i++])return!0}return!1}function isRegularExpressionChar(code){switch(code){case 47:return!1;case 91:case 92:return!0}return!isLineTerminator(code)}function isRegularExpressionFirstChar(code){return isRegularExpressionChar(code)&&42!==code}function init(reporter,file,parser,traceurOptions){errorReporter=reporter,lineNumberTable=file.lineNumberTable,input=file.contents,length=file.contents.length,setIndex(0),currentParser=parser,options=traceurOptions}function getLastToken(){return lastToken}function nextRegularExpressionLiteralToken(){return lastToken=nextRegularExpressionLiteralToken2(),token=scanToken(),lastToken}function nextTemplateLiteralToken(){var t=nextTemplateLiteralToken2();return token=scanToken(),t}function setIndex(i){index=i,lastToken=null,token=null,lookaheadToken=null,updateCurrentCharCode()}function getPosition(){return getPositionByOffset(getOffset())}function getPositionByOffset(offset){return lineNumberTable.getSourcePosition(offset)}function nextCloseAngle(){switch(token.type){case GREATER_EQUAL:case RIGHT_SHIFT:case RIGHT_SHIFT_EQUAL:case UNSIGNED_RIGHT_SHIFT:case UNSIGNED_RIGHT_SHIFT_EQUAL:return setIndex(index-token.type.length+1),lastToken=createToken(CLOSE_ANGLE,index),token=scanToken(),lastToken}return nextToken()}function getTokenRange(startOffset){return lineNumberTable.getSourceRange(startOffset,index)}function getOffset(){return token?token.location.start.offset:index}function nextRegularExpressionLiteralToken2(){var beginIndex=index-(""+token).length;if(token.type===SLASH_EQUAL?skipRegularExpressionBodyContinuation():skipRegularExpressionBody(beginIndex),47!==currentCharCode)return reportError("Expected '/' in regular expression literal",beginIndex),new LiteralToken(REGULAR_EXPRESSION,getTokenString(beginIndex),getTokenRange(beginIndex));for(next();isIdentifierPart(currentCharCode);)next();return new LiteralToken(REGULAR_EXPRESSION,getTokenString(beginIndex),getTokenRange(beginIndex))}function skipRegularExpressionBody(beginIndex){return isRegularExpressionFirstChar(currentCharCode)?void skipRegularExpressionBodyContinuation():void reportError("Expected regular expression first char",beginIndex)}function skipRegularExpressionBodyContinuation(){for(;!isAtEnd()&&isRegularExpressionChar(currentCharCode);)if(!skipRegularExpressionChar())return}function skipRegularExpressionChar(){switch(currentCharCode){case 92:return skipRegularExpressionBackslashSequence();case 91:return skipRegularExpressionClass();default:return next(),!0}}function skipRegularExpressionBackslashSequence(){var beginIndex=index;return next(),isLineTerminator(currentCharCode)||isAtEnd()?(reportError("New line not allowed in regular expression literal",beginIndex,index),!1):(next(),!0)}function skipRegularExpressionClass(){var beginIndex=index;for(next();!isAtEnd()&&peekRegularExpressionClassChar();)if(!skipRegularExpressionClassChar())return!1;return 93!==currentCharCode?(reportError("']' expected",beginIndex,index),!1):(next(),!0)}function peekRegularExpressionClassChar(){return 93!==currentCharCode&&!isLineTerminator(currentCharCode)}function skipRegularExpressionClassChar(){return 92===currentCharCode?skipRegularExpressionBackslashSequence():(next(),!0)}function skipTemplateCharacter(){for(;!isAtEnd();)switch(currentCharCode){case 96:return;case 92:skipStringLiteralEscapeSequence();break;case 36:var code=input.charCodeAt(index+1);if(123===code)return;next();break;default:next()}}function scanTemplateStart(beginIndex){return isAtEnd()?(reportError("Unterminated template literal",beginIndex,index),lastToken=createToken(END_OF_FILE,beginIndex)):nextTemplateLiteralTokenShared(NO_SUBSTITUTION_TEMPLATE,TEMPLATE_HEAD)}function nextTemplateLiteralToken2(){return isAtEnd()?(reportError("Expected '}' after expression in template literal",index,index),createToken(END_OF_FILE,index)):token.type!==CLOSE_CURLY?(reportError("Expected '}' after expression in template literal",index,index),createToken(ERROR,index)):nextTemplateLiteralTokenShared(TEMPLATE_TAIL,TEMPLATE_MIDDLE)}function nextTemplateLiteralTokenShared(endType,middleType){var beginIndex=index;if(skipTemplateCharacter(),isAtEnd())return reportError("Unterminated template literal"),createToken(ERROR,beginIndex);var value=getTokenString(beginIndex);switch(currentCharCode){case 96:return next(),lastToken=new LiteralToken(endType,value,getTokenRange(beginIndex-1));case 36:return next(),next(),lastToken=new LiteralToken(middleType,value,getTokenRange(beginIndex-1))}}function peekJsxToken(){return token||(token=scanJsxToken())}function nextJsxToken(){return lastToken=peekJsxToken(),token=null,lastToken}function scanJsxToken(){skipComments();var beginIndex=index;switch(currentCharCode){case 34:case 39:return scanJsxStringLiteral(beginIndex,currentCharCode);case 62:return next(),createToken(CLOSE_ANGLE,beginIndex)}if(!isIdentifierStart(currentCharCode))return scanToken();for(next();isIdentifierPart(currentCharCode)||45===currentCharCode;)next();var value=input.slice(beginIndex,index);return new JsxIdentifierToken(getTokenRange(beginIndex),value)}function scanJsxStringLiteral(beginIndex,terminator){for(next();!isAtEnd()&&currentCharCode!==terminator;)next();return currentCharCode!==terminator?reportError("Unterminated String Literal",beginIndex):next(),new LiteralToken(STRING,getTokenString(beginIndex),getTokenRange(beginIndex))}function nextJsxTextToken(){return lastToken=token||scanJsxTextToken(),token=null,lastToken}function skipJsxText(){for(;!isAtEnd()&&peekJsxText();)next()}function isJsxTextChar(code){switch(code){case 60:case 123:return!1}return!0}function skipJsxText(){for(;!isAtEnd()&&isJsxTextChar(currentCharCode);)next()}function scanJsxTextToken(){var beginIndex=index;if(isAtEnd())return createToken(END_OF_FILE,beginIndex);if(skipJsxText(),beginIndex===index)switch(currentCharCode){case 60:return next(),createToken(OPEN_ANGLE,beginIndex);case 123:return next(),createToken(OPEN_CURLY,beginIndex)}return new LiteralToken(STRING,getTokenString(beginIndex),getTokenRange(beginIndex))}function nextToken(){var t=peekToken();return token=lookaheadToken||scanToken(),lookaheadToken=null,lastToken=t,t}function peekTokenNoLineTerminator(){for(var t=peekToken(),start=lastToken.location.end.offset,end=t.location.start.offset,i=start;i<end;i++)if(isLineTerminator(input.charCodeAt(i)))return null;return t}function peek(expectedType){return peekToken().type===expectedType}function peekLookahead(expectedType){return peekTokenLookahead().type===expectedType}function peekToken(){return token||(token=scanToken())}function peekType(){return peekToken().type}function peekLocation(){return peekToken().location}function peekTokenLookahead(){return token||(token=scanToken()),lookaheadToken||(lookaheadToken=scanToken()),lookaheadToken}function skipWhitespace(){for(;!isAtEnd()&&peekWhitespace();)next()}function peekWhitespace(){return isWhitespace(currentCharCode)}function skipComments(){for(;skipComment(););}function skipComment(){skipWhitespace();var code=currentCharCode;if(47===code)switch(code=input.charCodeAt(index+1)){case 47:return skipSingleLineComment(),!0;case 42:return skipMultiLineComment(),!0}return!1}function commentCallback(start,index){options.commentCallback&&currentParser.handleComment(lineNumberTable.getSourceRange(start,index))}function skipSingleLineComment(){var start=index;for(index+=2;!isAtEnd()&&!isLineTerminator(input.charCodeAt(index++)););updateCurrentCharCode(),commentCallback(start,index)}function skipMultiLineComment(){var start=index,i=input.indexOf("*/",index+2);index=i!==-1?i+2:length,updateCurrentCharCode(),commentCallback(start,index)}function scanToken(){skipComments();var beginIndex=index;if(isAtEnd())return createToken(END_OF_FILE,beginIndex);var code=currentCharCode;switch(next(),code){case 123:return createToken(OPEN_CURLY,beginIndex);case 125:return createToken(CLOSE_CURLY,beginIndex);case 40:return createToken(OPEN_PAREN,beginIndex);case 41:return createToken(CLOSE_PAREN,beginIndex);case 91:return createToken(OPEN_SQUARE,beginIndex);case 93:return createToken(CLOSE_SQUARE,beginIndex);case 46:switch(currentCharCode){case 46:if(46===input.charCodeAt(index+1))return next(),next(),createToken(DOT_DOT_DOT,beginIndex);break;default:if(isDecimalDigit(currentCharCode))return scanNumberPostPeriod(beginIndex)}return createToken(PERIOD,beginIndex);case 59:return createToken(SEMI_COLON,beginIndex);case 44:return createToken(COMMA,beginIndex);case 126:return createToken(TILDE,beginIndex);case 63:return createToken(QUESTION,beginIndex);case 58:return createToken(COLON,beginIndex);case 60:switch(currentCharCode){case 60:return next(),61===currentCharCode?(next(),createToken(LEFT_SHIFT_EQUAL,beginIndex)):createToken(LEFT_SHIFT,beginIndex);case 61:return next(),createToken(LESS_EQUAL,beginIndex);default:return createToken(OPEN_ANGLE,beginIndex)}case 62:switch(currentCharCode){case 62:switch(next(),currentCharCode){case 61:return next(),createToken(RIGHT_SHIFT_EQUAL,beginIndex);case 62:return next(),61===currentCharCode?(next(),createToken(UNSIGNED_RIGHT_SHIFT_EQUAL,beginIndex)):createToken(UNSIGNED_RIGHT_SHIFT,beginIndex);default:return createToken(RIGHT_SHIFT,beginIndex)}case 61:return next(),createToken(GREATER_EQUAL,beginIndex);default:return createToken(CLOSE_ANGLE,beginIndex)}case 61:return 61===currentCharCode?(next(),61===currentCharCode?(next(),createToken(EQUAL_EQUAL_EQUAL,beginIndex)):createToken(EQUAL_EQUAL,beginIndex)):62===currentCharCode&&options.arrowFunctions?(next(),createToken(ARROW,beginIndex)):createToken(EQUAL,beginIndex);case 33:return 61===currentCharCode?(next(),61===currentCharCode?(next(),createToken(NOT_EQUAL_EQUAL,beginIndex)):createToken(NOT_EQUAL,beginIndex)):createToken(BANG,beginIndex);case 42:return 61===currentCharCode?(next(),createToken(STAR_EQUAL,beginIndex)):42===currentCharCode&&options.exponentiation?(next(),61===currentCharCode?(next(),createToken(STAR_STAR_EQUAL,beginIndex)):createToken(STAR_STAR,beginIndex)):createToken(STAR,beginIndex);case 37:return 61===currentCharCode?(next(),createToken(PERCENT_EQUAL,beginIndex)):createToken(PERCENT,beginIndex);case 94:return 61===currentCharCode?(next(),createToken(CARET_EQUAL,beginIndex)):createToken(CARET,beginIndex);case 47:return 61===currentCharCode?(next(),createToken(SLASH_EQUAL,beginIndex)):createToken(SLASH,beginIndex);case 43:switch(currentCharCode){case 43:return next(),createToken(PLUS_PLUS,beginIndex);case 61:return next(),createToken(PLUS_EQUAL,beginIndex);default:return createToken(PLUS,beginIndex)}case 45:switch(currentCharCode){case 45:return next(),createToken(MINUS_MINUS,beginIndex);case 61:return next(),createToken(MINUS_EQUAL,beginIndex);default:return createToken(MINUS,beginIndex)}case 38:switch(currentCharCode){case 38:return next(),createToken(AND,beginIndex);case 61:return next(),createToken(AMPERSAND_EQUAL,beginIndex);
default:return createToken(AMPERSAND,beginIndex)}case 124:switch(currentCharCode){case 124:return next(),createToken(OR,beginIndex);case 61:return next(),createToken(BAR_EQUAL,beginIndex);default:return createToken(BAR,beginIndex)}case 96:return scanTemplateStart(beginIndex);case 64:return createToken(AT,beginIndex);case 48:return scanPostZero(beginIndex);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return scanPostDigit(beginIndex);case 34:case 39:return scanStringLiteral(beginIndex,code);default:return scanIdentifierOrKeyword(beginIndex,code)}}function scanNumberPostPeriod(beginIndex){return skipDecimalDigits(),scanExponentOfNumericLiteral(beginIndex)}function scanPostDigit(beginIndex){return skipDecimalDigits(),scanFractionalNumericLiteral(beginIndex)}function scanPostZero(beginIndex){switch(currentCharCode){case 46:return scanFractionalNumericLiteral(beginIndex);case 88:case 120:return next(),isHexDigit(currentCharCode)||reportError("Hex Integer Literal must contain at least one digit",beginIndex),skipHexDigits(),new LiteralToken(NUMBER,getTokenString(beginIndex),getTokenRange(beginIndex));case 66:case 98:if(!options.numericLiterals)break;return next(),isBinaryDigit(currentCharCode)||reportError("Binary Integer Literal must contain at least one digit",beginIndex),skipBinaryDigits(),new LiteralToken(NUMBER,getTokenString(beginIndex),getTokenRange(beginIndex));case 79:case 111:if(!options.numericLiterals)break;return next(),isOctalDigit(currentCharCode)||reportError("Octal Integer Literal must contain at least one digit",beginIndex),skipOctalDigits(),new LiteralToken(NUMBER,getTokenString(beginIndex),getTokenRange(beginIndex));case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return scanPostDigit(beginIndex)}return new LiteralToken(NUMBER,getTokenString(beginIndex),getTokenRange(beginIndex))}function createToken(type,beginIndex){return new Token(type,getTokenRange(beginIndex))}function readUnicodeEscapeSequence(){var beginIndex=index;return 117===currentCharCode&&(next(),skipHexDigit()&&skipHexDigit()&&skipHexDigit()&&skipHexDigit())?parseInt(getTokenString(beginIndex+1),16):(reportError("Invalid unicode escape sequence in identifier",beginIndex-1),0)}function scanIdentifierOrKeyword(beginIndex,code){var escapedCharCodes;if(92===code&&(code=readUnicodeEscapeSequence(),escapedCharCodes=[code]),!isIdentifierStart(code))return reportError("Character code '"+code+"' is not a valid identifier start char",beginIndex),createToken(ERROR,beginIndex);for(;;)if(code=currentCharCode,isIdentifierPart(code))next();else{if(92!==code)break;if(next(),code=readUnicodeEscapeSequence(),escapedCharCodes||(escapedCharCodes=[]),escapedCharCodes.push(code),!isIdentifierPart(code))return createToken(ERROR,beginIndex)}var value=input.slice(beginIndex,index),keywordType=getKeywordType(value);if(keywordType)return new KeywordToken(value,keywordType,getTokenRange(beginIndex));if(escapedCharCodes){var i=0;value=value.replace(/\\u..../g,function(s){return String.fromCharCode(escapedCharCodes[i++])})}return new IdentifierToken(getTokenRange(beginIndex),value)}function scanStringLiteral(beginIndex,terminator){for(;peekStringLiteralChar(terminator);)if(!skipStringLiteralChar())return new LiteralToken(STRING,getTokenString(beginIndex),getTokenRange(beginIndex));return currentCharCode!==terminator?reportError("Unterminated String Literal",beginIndex):next(),new LiteralToken(STRING,getTokenString(beginIndex),getTokenRange(beginIndex))}function getTokenString(beginIndex){return input.substring(beginIndex,index)}function peekStringLiteralChar(terminator){return!isAtEnd()&&currentCharCode!==terminator&&!isLineTerminator(currentCharCode)}function skipStringLiteralChar(){return 92===currentCharCode?skipStringLiteralEscapeSequence():(next(),!0)}function skipStringLiteralEscapeSequence(){if(next(),isAtEnd())return reportError("Unterminated string literal escape sequence"),!1;if(isLineTerminator(currentCharCode))return skipLineTerminator(),!0;var code=currentCharCode;switch(next(),code){case 39:case 34:case 92:case 98:case 102:case 110:case 114:case 116:case 118:case 48:return!0;case 120:return skipHexDigit()&&skipHexDigit();case 117:return skipUnicodeEscapeSequence();default:return!0}}function skipUnicodeEscapeSequence(){if(123===currentCharCode&&options.unicodeEscapeSequences){next();var beginIndex=index;if(!isHexDigit(currentCharCode))return reportError("Hex digit expected",beginIndex),!1;if(skipHexDigits(),125!==currentCharCode)return reportError("Hex digit expected",beginIndex),!1;var codePoint=getTokenString(beginIndex,index);return parseInt(codePoint,16)>1114111?(reportError("The code point in a Unicode escape sequence cannot exceed 10FFFF",beginIndex),!1):(next(),!0)}return skipHexDigit()&&skipHexDigit()&&skipHexDigit()&&skipHexDigit()}function skipHexDigit(){return isHexDigit(currentCharCode)?(next(),!0):(reportError("Hex digit expected"),!1)}function skipLineTerminator(){var first=currentCharCode;next(),13===first&&10===currentCharCode&&next()}function scanFractionalNumericLiteral(beginIndex){return 46===currentCharCode&&(next(),skipDecimalDigits()),scanExponentOfNumericLiteral(beginIndex)}function scanExponentOfNumericLiteral(beginIndex){switch(currentCharCode){case 101:case 69:switch(next(),currentCharCode){case 43:case 45:next()}isDecimalDigit(currentCharCode)||reportError("Exponent part must contain at least one digit",beginIndex),skipDecimalDigits()}return new LiteralToken(NUMBER,getTokenString(beginIndex),getTokenRange(beginIndex))}function skipDecimalDigits(){for(;isDecimalDigit(currentCharCode);)next()}function skipHexDigits(){for(;isHexDigit(currentCharCode);)next()}function skipBinaryDigits(){for(;isBinaryDigit(currentCharCode);)next()}function skipOctalDigits(){for(;isOctalDigit(currentCharCode);)next()}function isAtEnd(){return index===length}function next(){index++,updateCurrentCharCode()}function updateCurrentCharCode(){currentCharCode=input.charCodeAt(index)}function reportError(message){var startIndex=void 0!==arguments[1]?arguments[1]:index,endIndex=void 0!==arguments[2]?arguments[2]:index,start=getPositionByOffset(startIndex),end=getPositionByOffset(endIndex),location=new SourceRange(start,end);errorReporter.reportError(location,message)}for(var IdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./IdentifierToken.js","traceur@0.0.107/src/syntax/Scanner.js")).IdentifierToken,JsxIdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./JsxIdentifierToken.js","traceur@0.0.107/src/syntax/Scanner.js")).JsxIdentifierToken,KeywordToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./KeywordToken.js","traceur@0.0.107/src/syntax/Scanner.js")).KeywordToken,LiteralToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./LiteralToken.js","traceur@0.0.107/src/syntax/Scanner.js")).LiteralToken,SourceRange=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/SourceRange.js","traceur@0.0.107/src/syntax/Scanner.js")).SourceRange,Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Token.js","traceur@0.0.107/src/syntax/Scanner.js")).Token,getKeywordType=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Keywords.js","traceur@0.0.107/src/syntax/Scanner.js")).getKeywordType,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./unicode-tables.js","traceur@0.0.107/src/syntax/Scanner.js")),idContinueTable=$__10.idContinueTable,idStartTable=$__10.idStartTable,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TokenType.js","traceur@0.0.107/src/syntax/Scanner.js")),AMPERSAND=$__11.AMPERSAND,AMPERSAND_EQUAL=$__11.AMPERSAND_EQUAL,AND=$__11.AND,ARROW=$__11.ARROW,AT=$__11.AT,BANG=$__11.BANG,BAR=$__11.BAR,BAR_EQUAL=$__11.BAR_EQUAL,CARET=$__11.CARET,CARET_EQUAL=$__11.CARET_EQUAL,CLOSE_ANGLE=$__11.CLOSE_ANGLE,CLOSE_CURLY=$__11.CLOSE_CURLY,CLOSE_PAREN=$__11.CLOSE_PAREN,CLOSE_SQUARE=$__11.CLOSE_SQUARE,COLON=$__11.COLON,COMMA=$__11.COMMA,DOT_DOT_DOT=$__11.DOT_DOT_DOT,END_OF_FILE=$__11.END_OF_FILE,EQUAL=$__11.EQUAL,EQUAL_EQUAL=$__11.EQUAL_EQUAL,EQUAL_EQUAL_EQUAL=$__11.EQUAL_EQUAL_EQUAL,ERROR=$__11.ERROR,GREATER_EQUAL=$__11.GREATER_EQUAL,LEFT_SHIFT=$__11.LEFT_SHIFT,LEFT_SHIFT_EQUAL=$__11.LEFT_SHIFT_EQUAL,LESS_EQUAL=$__11.LESS_EQUAL,MINUS=$__11.MINUS,MINUS_EQUAL=$__11.MINUS_EQUAL,MINUS_MINUS=$__11.MINUS_MINUS,NO_SUBSTITUTION_TEMPLATE=$__11.NO_SUBSTITUTION_TEMPLATE,NOT_EQUAL=$__11.NOT_EQUAL,NOT_EQUAL_EQUAL=$__11.NOT_EQUAL_EQUAL,NUMBER=$__11.NUMBER,OPEN_ANGLE=$__11.OPEN_ANGLE,OPEN_CURLY=$__11.OPEN_CURLY,OPEN_PAREN=$__11.OPEN_PAREN,OPEN_SQUARE=$__11.OPEN_SQUARE,OR=$__11.OR,PERCENT=$__11.PERCENT,PERCENT_EQUAL=$__11.PERCENT_EQUAL,PERIOD=$__11.PERIOD,PLUS=$__11.PLUS,PLUS_EQUAL=$__11.PLUS_EQUAL,PLUS_PLUS=$__11.PLUS_PLUS,QUESTION=$__11.QUESTION,REGULAR_EXPRESSION=$__11.REGULAR_EXPRESSION,RIGHT_SHIFT=$__11.RIGHT_SHIFT,RIGHT_SHIFT_EQUAL=$__11.RIGHT_SHIFT_EQUAL,SEMI_COLON=$__11.SEMI_COLON,SLASH=$__11.SLASH,SLASH_EQUAL=$__11.SLASH_EQUAL,STAR=$__11.STAR,STAR_EQUAL=$__11.STAR_EQUAL,STAR_STAR=$__11.STAR_STAR,STAR_STAR_EQUAL=$__11.STAR_STAR_EQUAL,STRING=$__11.STRING,TEMPLATE_HEAD=$__11.TEMPLATE_HEAD,TEMPLATE_MIDDLE=$__11.TEMPLATE_MIDDLE,TEMPLATE_TAIL=$__11.TEMPLATE_TAIL,TILDE=$__11.TILDE,UNSIGNED_RIGHT_SHIFT=$__11.UNSIGNED_RIGHT_SHIFT,UNSIGNED_RIGHT_SHIFT_EQUAL=$__11.UNSIGNED_RIGHT_SHIFT_EQUAL,isWhitespaceArray=[],i=0;i<128;i++)isWhitespaceArray[i]=i>=9&&i<=13||32===i;for(var isHexDigitArray=[],i$__0=0;i$__0<128;i$__0++)isHexDigitArray[i$__0]=i$__0>=48&&i$__0<=57||i$__0>=65&&i$__0<=70||i$__0>=97&&i$__0<=102;for(var isIdentifierStartArray=[],i$__1=0;i$__1<128;i$__1++)isIdentifierStartArray[i$__1]=36===i$__1||i$__1>=65&&i$__1<=90||95===i$__1||i$__1>=97&&i$__1<=122;for(var isIdentifierPartArray=[],i$__2=0;i$__2<128;i$__2++)isIdentifierPartArray[i$__2]=isIdentifierStart(i$__2)||isDecimalDigit(i$__2);var index,input,length,token,lastToken,lookaheadToken,currentCharCode,lineNumberTable,errorReporter,currentParser,options;return{get isWhitespace(){return isWhitespace},get isLineTerminator(){return isLineTerminator},get isIdentifierPart(){return isIdentifierPart},get init(){return init},get getLastToken(){return getLastToken},get nextRegularExpressionLiteralToken(){return nextRegularExpressionLiteralToken},get nextTemplateLiteralToken(){return nextTemplateLiteralToken},get setIndex(){return setIndex},get getPosition(){return getPosition},get nextCloseAngle(){return nextCloseAngle},get peekJsxToken(){return peekJsxToken},get nextJsxToken(){return nextJsxToken},get nextJsxTextToken(){return nextJsxTextToken},get nextToken(){return nextToken},get peekTokenNoLineTerminator(){return peekTokenNoLineTerminator},get peek(){return peek},get peekLookahead(){return peekLookahead},get peekToken(){return peekToken},get peekType(){return peekType},get peekLocation(){return peekLocation},get peekTokenLookahead(){return peekTokenLookahead},get isAtEnd(){return isAtEnd}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/ConstructorValidator.js",[],function(){"use strict";function validateConstructor(tree,reporter){var visitor=new ConstructorValidator(reporter);return visitor.visitAny(tree),!visitor.hasError&&(!!visitor.found||(reporter.reportError(tree.location,"Derived constructor must call super()"),!1))}var SUPER_EXPRESSION=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/semantics/ConstructorValidator.js")).SUPER_EXPRESSION,FindVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../codegeneration/FindVisitor.js","traceur@0.0.107/src/semantics/ConstructorValidator.js")).FindVisitor,ConstructorValidator=function($__super){function ConstructorValidator(reporter){$traceurRuntime.superConstructor(ConstructorValidator).call(this),this.reporter_=reporter,this.hasError=!1}return $traceurRuntime.createClass(ConstructorValidator,{visitClassExpression:function(tree){this.visitAny(tree.superClass)},visitClassDeclaration:function(tree){this.visitAny(tree.superClass)},visitThisExpression:function(tree){this.reportError_(tree.location,"this")},visitCallExpression:function(tree){return tree.operand.type===SUPER_EXPRESSION?(this.visitAny(tree.args),void(this.found=!0)):void $traceurRuntime.superGet(this,ConstructorValidator.prototype,"visitCallExpression").call(this,tree)},visitSuperExpression:function(tree){this.reportError_(tree.location,"super property")},reportError_:function(location,kind){this.reporter_.reportError(location,"'"+kind+"' is not allowed before super()"),this.hasError=!0,this.found=!0}},{},$__super)}(FindVisitor);return{get validateConstructor(){return validateConstructor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/staticsemantics/validateParameters.js",[],function(){"use strict";var ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/staticsemantics/validateParameters.js")).ParseTreeVisitor,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/staticsemantics/validateParameters.js")).StringSet,isStrictKeyword=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/Keywords.js","traceur@0.0.107/src/staticsemantics/validateParameters.js")).isStrictKeyword,ParameterValidationVisitor=function($__super){function ParameterValidationVisitor(isStrict,reporter){$traceurRuntime.superConstructor(ParameterValidationVisitor).call(this),this.reporter_=reporter,this.names_=new StringSet,this.errors_=[],this.reportStrictKeywords_=isStrict,this.reportDuplicates_=isStrict}return $traceurRuntime.createClass(ParameterValidationVisitor,{visitBindingIdentifier:function(tree){var name=""+tree.identifierToken;this.reportStrictKeywords_&&(isStrictKeyword(name)||"eval"===name||"arguments"===name)&&this.reporter_.reportError(tree.location,name+" is a reserved identifier"),this.names_.has(name)&&this.maybeReportDuplicateError_(name,tree.location),this.names_.add(name)},visitBindingElement:function(tree){null!==tree.initializer&&this.reportEarlierErrors_(),this.visitAny(tree.binding)},visitRestParameter:function(tree){this.reportEarlierErrors_(),this.visitAny(tree.identifier)},visitFormalParameter:function(tree){this.visitAny(tree.parameter)},visitArrayPattern:function(tree){this.reportEarlierErrors_(),$traceurRuntime.superGet(this,ParameterValidationVisitor.prototype,"visitArrayPattern").call(this,tree)},visitObjectPattern:function(tree){this.reportEarlierErrors_(),$traceurRuntime.superGet(this,ParameterValidationVisitor.prototype,"visitObjectPattern").call(this,tree)},reportDuplicateError_:function(name,location){this.reporter_.reportError(location,"Duplicate parameter name "+name)},maybeReportDuplicateError_:function(name,location){this.reportDuplicates_?this.reportDuplicateError_(name,location):this.errors_.push(name,location)},reportEarlierErrors_:function(){if(!this.reportDuplicates_){this.reportDuplicates_=!0;for(var i=0;i<this.errors_.length;i+=2){var name=this.errors_[i],location=this.errors_[i+1];this.reportDuplicateError_(name,location)}}}},{},$__super)}(ParseTreeVisitor),$__default=function(tree,isStrict,reporter){new ParameterValidationVisitor(isStrict,reporter).visitAny(tree)};return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/staticsemantics/isValidSimpleAssignmentTarget.js",[],function(){"use strict";function isValidSimpleAssignmentTarget(tree,isStrict){switch(tree.type){case IDENTIFIER_EXPRESSION:if(!isStrict)return!0;var value=tree.identifierToken.value;return"arguments"!==value&&"eval"!==value;case PAREN_EXPRESSION:return isValidSimpleAssignmentTarget(tree.expression,isStrict);case MEMBER_EXPRESSION:case MEMBER_LOOKUP_EXPRESSION:return!0;default:return!1}}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/staticsemantics/isValidSimpleAssignmentTarget.js")),IDENTIFIER_EXPRESSION=$__1.IDENTIFIER_EXPRESSION,MEMBER_EXPRESSION=$__1.MEMBER_EXPRESSION,MEMBER_LOOKUP_EXPRESSION=$__1.MEMBER_LOOKUP_EXPRESSION,PAREN_EXPRESSION=$__1.PAREN_EXPRESSION,$__default=isValidSimpleAssignmentTarget;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/Parser.js",[],function(){"use strict";function containsInitializer(declarations){return declarations.some(function(v){return v.initializer})}function jsxNamesEqual(name,other){if(name.names.length!==other.names.length)return!1;for(var i=0;i<name.names.length;i++)if(name.names[i].value!==other.names[i].value)return!1;return!0}function jsxNameToString(name){return name.names.join(".")}var FindVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../codegeneration/FindVisitor.js","traceur@0.0.107/src/syntax/Parser.js")).FindVisitor,IdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./IdentifierToken.js","traceur@0.0.107/src/syntax/Parser.js")).IdentifierToken,$__25=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./trees/ParseTreeType.js","traceur@0.0.107/src/syntax/Parser.js")),ARRAY_LITERAL=$__25.ARRAY_LITERAL,BINDING_IDENTIFIER=$__25.BINDING_IDENTIFIER,CALL_EXPRESSION=$__25.CALL_EXPRESSION,COMPUTED_PROPERTY_NAME=$__25.COMPUTED_PROPERTY_NAME,COVER_FORMALS=$__25.COVER_FORMALS,FORMAL_PARAMETER_LIST=$__25.FORMAL_PARAMETER_LIST,IDENTIFIER_EXPRESSION=$__25.IDENTIFIER_EXPRESSION,LITERAL_PROPERTY_NAME=$__25.LITERAL_PROPERTY_NAME,OBJECT_LITERAL=$__25.OBJECT_LITERAL,REST_PARAMETER=$__25.REST_PARAMETER,SYNTAX_ERROR_TREE=$__25.SYNTAX_ERROR_TREE,Options=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../Options.js","traceur@0.0.107/src/syntax/Parser.js")).Options,$__27=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PredefinedName.js","traceur@0.0.107/src/syntax/Parser.js")),AS=$__27.AS,ASYNC=$__27.ASYNC,ASYNC_STAR=$__27.ASYNC_STAR,AWAIT=$__27.AWAIT,CONSTRUCTOR=$__27.CONSTRUCTOR,FROM=$__27.FROM,GET=$__27.GET,OF=$__27.OF,ON=$__27.ON,SET=$__27.SET,TYPE=$__27.TYPE,SyntaxErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/SyntaxErrorReporter.js","traceur@0.0.107/src/syntax/Parser.js")).SyntaxErrorReporter,$__29=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Scanner.js","traceur@0.0.107/src/syntax/Parser.js")),getLastToken=$__29.getLastToken,initScanner=($__29.getPosition,$__29.init),isAtEnd=$__29.isAtEnd,nextCloseAngle=$__29.nextCloseAngle,nextJsxTextToken=$__29.nextJsxTextToken,nextJsxToken=$__29.nextJsxToken,nextRegularExpressionLiteralToken=$__29.nextRegularExpressionLiteralToken,nextTemplateLiteralToken=$__29.nextTemplateLiteralToken,nextToken=$__29.nextToken,peek=$__29.peek,peekJsxToken=$__29.peekJsxToken,peekLocation=$__29.peekLocation,peekLookahead=$__29.peekLookahead,peekToken=$__29.peekToken,peekTokenLookahead=$__29.peekTokenLookahead,peekTokenNoLineTerminator=$__29.peekTokenNoLineTerminator,peekType=$__29.peekType,resetScanner=$__29.setIndex,SourceRange=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/SourceRange.js","traceur@0.0.107/src/syntax/Parser.js")).SourceRange,$__31=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Token.js","traceur@0.0.107/src/syntax/Parser.js")),Token=$__31.Token,isAssignmentOperator=$__31.isAssignmentOperator,getKeywordType=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Keywords.js","traceur@0.0.107/src/syntax/Parser.js")).getKeywordType,validateConstructor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/ConstructorValidator.js","traceur@0.0.107/src/syntax/Parser.js")).validateConstructor,validateParameters=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../staticsemantics/validateParameters.js","traceur@0.0.107/src/syntax/Parser.js"))["default"],isValidSimpleAssignmentTarget=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../staticsemantics/isValidSimpleAssignmentTarget.js","traceur@0.0.107/src/syntax/Parser.js"))["default"],$__36=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TokenType.js","traceur@0.0.107/src/syntax/Parser.js")),AMPERSAND=$__36.AMPERSAND,AND=$__36.AND,ARROW=$__36.ARROW,AT=$__36.AT,BANG=$__36.BANG,BAR=$__36.BAR,BREAK=$__36.BREAK,CARET=$__36.CARET,CASE=$__36.CASE,CATCH=$__36.CATCH,CLASS=$__36.CLASS,CLOSE_ANGLE=$__36.CLOSE_ANGLE,CLOSE_CURLY=$__36.CLOSE_CURLY,CLOSE_PAREN=$__36.CLOSE_PAREN,CLOSE_SQUARE=$__36.CLOSE_SQUARE,COLON=$__36.COLON,COMMA=$__36.COMMA,CONST=$__36.CONST,CONTINUE=$__36.CONTINUE,DEBUGGER=$__36.DEBUGGER,DEFAULT=$__36.DEFAULT,DELETE=$__36.DELETE,DO=$__36.DO,DOT_DOT_DOT=$__36.DOT_DOT_DOT,ELSE=$__36.ELSE,END_OF_FILE=$__36.END_OF_FILE,EQUAL=$__36.EQUAL,EQUAL_EQUAL=$__36.EQUAL_EQUAL,EQUAL_EQUAL_EQUAL=$__36.EQUAL_EQUAL_EQUAL,ERROR=$__36.ERROR,EXPORT=$__36.EXPORT,EXTENDS=$__36.EXTENDS,FALSE=$__36.FALSE,FINALLY=$__36.FINALLY,FOR=$__36.FOR,FUNCTION=$__36.FUNCTION,GREATER_EQUAL=$__36.GREATER_EQUAL,IDENTIFIER=$__36.IDENTIFIER,IF=$__36.IF,IMPLEMENTS=$__36.IMPLEMENTS,IMPORT=$__36.IMPORT,IN=$__36.IN,INSTANCEOF=$__36.INSTANCEOF,INTERFACE=$__36.INTERFACE,JSX_IDENTIFIER=$__36.JSX_IDENTIFIER,LEFT_SHIFT=$__36.LEFT_SHIFT,LESS_EQUAL=$__36.LESS_EQUAL,LET=$__36.LET,MINUS=$__36.MINUS,MINUS_MINUS=$__36.MINUS_MINUS,NEW=$__36.NEW,NO_SUBSTITUTION_TEMPLATE=$__36.NO_SUBSTITUTION_TEMPLATE,NOT_EQUAL=$__36.NOT_EQUAL,NOT_EQUAL_EQUAL=$__36.NOT_EQUAL_EQUAL,NULL=$__36.NULL,NUMBER=$__36.NUMBER,OPEN_ANGLE=$__36.OPEN_ANGLE,OPEN_CURLY=$__36.OPEN_CURLY,OPEN_PAREN=$__36.OPEN_PAREN,OPEN_SQUARE=$__36.OPEN_SQUARE,OR=$__36.OR,PACKAGE=$__36.PACKAGE,PERCENT=$__36.PERCENT,PERIOD=$__36.PERIOD,PLUS=$__36.PLUS,PLUS_PLUS=$__36.PLUS_PLUS,PRIVATE=$__36.PRIVATE,PROTECTED=$__36.PROTECTED,PUBLIC=$__36.PUBLIC,QUESTION=$__36.QUESTION,RETURN=$__36.RETURN,RIGHT_SHIFT=$__36.RIGHT_SHIFT,SEMI_COLON=$__36.SEMI_COLON,SLASH=$__36.SLASH,SLASH_EQUAL=$__36.SLASH_EQUAL,STAR=$__36.STAR,STAR_STAR=$__36.STAR_STAR,STATIC=$__36.STATIC,STRING=$__36.STRING,SUPER=$__36.SUPER,SWITCH=$__36.SWITCH,TEMPLATE_HEAD=$__36.TEMPLATE_HEAD,TEMPLATE_TAIL=$__36.TEMPLATE_TAIL,THIS=$__36.THIS,THROW=$__36.THROW,TILDE=$__36.TILDE,TRUE=$__36.TRUE,TRY=$__36.TRY,TYPEOF=$__36.TYPEOF,UNSIGNED_RIGHT_SHIFT=$__36.UNSIGNED_RIGHT_SHIFT,VAR=$__36.VAR,VOID=$__36.VOID,WHILE=$__36.WHILE,WITH=$__36.WITH,YIELD=$__36.YIELD,$__37=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./trees/ParseTrees.js","traceur@0.0.107/src/syntax/Parser.js")),ArgumentList=$__37.ArgumentList,ArrayComprehension=$__37.ArrayComprehension,ArrayLiteral=$__37.ArrayLiteral,ArrayPattern=$__37.ArrayPattern,ArrayType=$__37.ArrayType,ArrowFunction=$__37.ArrowFunction,AssignmentElement=$__37.AssignmentElement,AwaitExpression=$__37.AwaitExpression,BinaryExpression=$__37.BinaryExpression,BindingElement=$__37.BindingElement,BindingIdentifier=$__37.BindingIdentifier,Block=$__37.Block,BreakStatement=$__37.BreakStatement,CallExpression=$__37.CallExpression,CallSignature=$__37.CallSignature,CaseClause=$__37.CaseClause,Catch=$__37.Catch,ClassDeclaration=$__37.ClassDeclaration,ClassExpression=$__37.ClassExpression,CommaExpression=$__37.CommaExpression,ComprehensionFor=$__37.ComprehensionFor,ComprehensionIf=$__37.ComprehensionIf,ComputedPropertyName=$__37.ComputedPropertyName,ConditionalExpression=$__37.ConditionalExpression,ConstructSignature=$__37.ConstructSignature,ConstructorType=$__37.ConstructorType,ContinueStatement=$__37.ContinueStatement,CoverFormals=$__37.CoverFormals,CoverInitializedName=$__37.CoverInitializedName,DebuggerStatement=$__37.DebuggerStatement,Annotation=$__37.Annotation,DefaultClause=$__37.DefaultClause,DoWhileStatement=$__37.DoWhileStatement,EmptyStatement=$__37.EmptyStatement,ExportDeclaration=$__37.ExportDeclaration,ExportDefault=$__37.ExportDefault,ExportSpecifier=$__37.ExportSpecifier,ExportSpecifierSet=$__37.ExportSpecifierSet,ExportStar=$__37.ExportStar,ExpressionStatement=$__37.ExpressionStatement,Finally=$__37.Finally,ForInStatement=$__37.ForInStatement,ForOfStatement=$__37.ForOfStatement,ForOnStatement=$__37.ForOnStatement,ForStatement=$__37.ForStatement,FormalParameter=$__37.FormalParameter,FormalParameterList=$__37.FormalParameterList,ForwardDefaultExport=$__37.ForwardDefaultExport,FunctionBody=$__37.FunctionBody,FunctionDeclaration=$__37.FunctionDeclaration,FunctionExpression=$__37.FunctionExpression,FunctionType=$__37.FunctionType,GeneratorComprehension=$__37.GeneratorComprehension,GetAccessor=$__37.GetAccessor,IdentifierExpression=$__37.IdentifierExpression,IfStatement=$__37.IfStatement,ImportClausePair=$__37.ImportClausePair,ImportDeclaration=$__37.ImportDeclaration,ImportSpecifier=$__37.ImportSpecifier,ImportSpecifierSet=$__37.ImportSpecifierSet,ImportedBinding=$__37.ImportedBinding,ImportTypeClause=$__37.ImportTypeClause,IndexSignature=$__37.IndexSignature,InterfaceDeclaration=$__37.InterfaceDeclaration,JsxAttribute=$__37.JsxAttribute,JsxElement=$__37.JsxElement,JsxElementName=$__37.JsxElementName,JsxPlaceholder=$__37.JsxPlaceholder,JsxSpreadAttribute=$__37.JsxSpreadAttribute,JsxText=$__37.JsxText,LabelledStatement=$__37.LabelledStatement,LiteralExpression=$__37.LiteralExpression,LiteralPropertyName=$__37.LiteralPropertyName,MemberExpression=$__37.MemberExpression,MemberLookupExpression=$__37.MemberLookupExpression,Method=$__37.Method,MethodSignature=$__37.MethodSignature,Module=$__37.Module,ModuleSpecifier=$__37.ModuleSpecifier,NameSpaceExport=$__37.NameSpaceExport,NameSpaceImport=$__37.NameSpaceImport,NamedExport=$__37.NamedExport,NewExpression=$__37.NewExpression,ObjectLiteral=$__37.ObjectLiteral,ObjectPattern=$__37.ObjectPattern,ObjectPatternField=$__37.ObjectPatternField,ObjectType=$__37.ObjectType,ParenExpression=$__37.ParenExpression,PostfixExpression=$__37.PostfixExpression,PredefinedType=$__37.PredefinedType,PropertyNameAssignment=$__37.PropertyNameAssignment,PropertyNameShorthand=$__37.PropertyNameShorthand,PropertySignature=$__37.PropertySignature,PropertyVariableDeclaration=$__37.PropertyVariableDeclaration,RestParameter=$__37.RestParameter,ReturnStatement=$__37.ReturnStatement,Script=$__37.Script,SetAccessor=$__37.SetAccessor,SpreadExpression=$__37.SpreadExpression,SpreadPatternElement=$__37.SpreadPatternElement,SuperExpression=$__37.SuperExpression,SwitchStatement=$__37.SwitchStatement,SyntaxErrorTree=$__37.SyntaxErrorTree,TemplateLiteralExpression=$__37.TemplateLiteralExpression,TemplateLiteralPortion=$__37.TemplateLiteralPortion,TemplateSubstitution=$__37.TemplateSubstitution,ThisExpression=$__37.ThisExpression,ThrowStatement=$__37.ThrowStatement,TryStatement=$__37.TryStatement,TypeAliasDeclaration=$__37.TypeAliasDeclaration,TypeArguments=$__37.TypeArguments,TypeName=$__37.TypeName,TypeParameter=$__37.TypeParameter,TypeParameters=$__37.TypeParameters,TypeReference=$__37.TypeReference,UnaryExpression=$__37.UnaryExpression,UnionType=$__37.UnionType,VariableDeclaration=$__37.VariableDeclaration,VariableDeclarationList=$__37.VariableDeclarationList,VariableStatement=$__37.VariableStatement,WhileStatement=$__37.WhileStatement,WithStatement=$__37.WithStatement,YieldExpression=$__37.YieldExpression,ALLOW_IN=!0,NO_IN=!1,INITIALIZER_REQUIRED=!0,INITIALIZER_OPTIONAL=!1,ValidateObjectLiteral=function($__super){function ValidateObjectLiteral(){$traceurRuntime.superConstructor(ValidateObjectLiteral).call(this),this.errorToken=null}return $traceurRuntime.createClass(ValidateObjectLiteral,{visitCoverInitializedName:function(tree){this.errorToken=tree.equalToken,this.found=!0}},{},$__super)}(FindVisitor),FUNCTION_STATE_SCRIPT=1,FUNCTION_STATE_MODULE=2,FUNCTION_STATE_FUNCTION=4,FUNCTION_STATE_ARROW=8,FUNCTION_STATE_METHOD=16,FUNCTION_STATE_DERIVED_CONSTRUCTOR=32,FUNCTION_STATE_GENERATOR=64,FUNCTION_STATE_ASYNC=128,FUNCTION_STATE_LENIENT=FUNCTION_STATE_METHOD|FUNCTION_STATE_GENERATOR|FUNCTION_STATE_ASYNC|FUNCTION_STATE_DERIVED_CONSTRUCTOR,FunctionState=function(){function FunctionState(outer,kind){this.outer=outer,this.kind=kind}return $traceurRuntime.createClass(FunctionState,{isTopMost:function(){return this.kind&(FUNCTION_STATE_SCRIPT|FUNCTION_STATE_MODULE)},isMethod:function(){return this.kind&FUNCTION_STATE_METHOD},isDerivedConstructor:function(){return this.kind&FUNCTION_STATE_DERIVED_CONSTRUCTOR},isArrowFunction:function(){return this.kind&FUNCTION_STATE_ARROW},isGenerator:function(){return this.kind&FUNCTION_STATE_GENERATOR},isAsyncFunction:function(){return this.kind&FUNCTION_STATE_ASYNC},isAsyncGenerator:function(){return this.isGenerator()&&this.isAsyncFunction()}},{})}(),Parser=function(){function Parser(file){var errorReporter=void 0!==arguments[1]?arguments[1]:new SyntaxErrorReporter,options=void 0!==arguments[2]?arguments[2]:new Options;this.errorReporter_=errorReporter,initScanner(errorReporter,file,this,options),this.options_=options,this.coverInitializedNameCount_=0,this.strictMode_=!1,this.annotations_=[],this.functionState_=null}return $traceurRuntime.createClass(Parser,{get allowYield_(){return this.functionState_.isGenerator()},get allowAwait_(){return this.functionState_.isAsyncFunction()},get allowForOn_(){return this.functionState_.isAsyncFunction()},parseScript:function(){this.strictMode_=!1;var start=this.getTreeStartLocation_(),fs=this.pushFunctionState_(FUNCTION_STATE_SCRIPT),scriptItemList=this.parseStatementList_(!0);return this.eat_(END_OF_FILE),this.popFunctionState_(fs),new Script(this.getTreeLocation_(start),scriptItemList,null)},pushFunctionState_:function(kind){return this.functionState_=new FunctionState(this.functionState_,kind)},popFunctionState_:function(fs){if(fs!=this.functionState_)throw Error("Internal error");this.functionState_=this.functionState_.outer},parseStatementList_:function(checkUseStrictDirective){for(var type,result=[];(type=peekType())!==CLOSE_CURLY&&type!==END_OF_FILE;){var statement=this.parseStatementListItem_(type);checkUseStrictDirective&&(statement.isDirectivePrologue()?statement.isUseStrictDirective()&&(this.strictMode_=!0,checkUseStrictDirective=!1):checkUseStrictDirective=!1),result.push(statement)}return result},parseStatementListItem_:function(type){switch(type){case LET:case CONST:if(this.options_.blockBinding)return this.parseVariableStatement_();break;case CLASS:if(this.options_.classes)return this.parseClassDeclaration_();break;case FUNCTION:return this.parseFunctionDeclaration_();case IDENTIFIER:if(this.options_.types&&this.peekPredefinedString_(TYPE)&&peekLookahead(IDENTIFIER))return this.parseTypeAliasDeclaration_()}return this.parseStatementWithType_(type)},parseModule:function(){var start=this.getTreeStartLocation_(),fs=this.pushFunctionState_(FUNCTION_STATE_MODULE),scriptItemList=this.parseModuleItemList_();return this.eat_(END_OF_FILE),this.popFunctionState_(fs),new Module(this.getTreeLocation_(start),scriptItemList,null)},parseModuleItemList_:function(){this.strictMode_=!0;for(var type,result=[];(type=peekType())!==END_OF_FILE;){var statement=this.parseModuleItem_(type);result.push(statement)}return result},parseModuleItem_:function(type){switch(type){case IMPORT:return this.parseImportDeclaration_();case EXPORT:return this.parseExportDeclaration_();case AT:if(this.options_.annotations)return this.parseAnnotatedDeclarations_(!0)}return this.parseStatementListItem_(type)},parseModuleSpecifier_:function(){var start=this.getTreeStartLocation_(),token=this.eat_(STRING);return new ModuleSpecifier(this.getTreeLocation_(start),token)},parseNameSpaceImport_:function(){var start=this.getTreeStartLocation_();this.eat_(STAR),this.eatId_(AS);var binding=this.parseImportedBinding_();return new NameSpaceImport(this.getTreeLocation_(start),binding)},parseImportDeclaration_:function(){var start=this.getTreeStartLocation_();this.eat_(IMPORT);var importClause=null;peek(STRING)||(importClause=this.parseImportClause_(!0,this.options_.types),this.eatId_(FROM));var moduleSpecifier=this.parseModuleSpecifier_();return this.eatPossibleImplicitSemiColon_(),
new ImportDeclaration(this.getTreeLocation_(start),importClause,moduleSpecifier)},parseImportClause_:function(allowImportedDefaultBinding,allowType){switch(peekType()){case STAR:return this.parseNameSpaceImport_();case OPEN_CURLY:return this.parseImportSpecifierSet_();case IDENTIFIER:if(allowType&&this.peekPredefinedString_(TYPE)){var start=this.getTreeStartLocation_(),t=peekTokenLookahead();if(t.type===OPEN_CURLY||t.type===IDENTIFIER&&t.value!==FROM){this.eatId_(TYPE);var clause=this.parseImportClause_(allowImportedDefaultBinding,!1);return new ImportTypeClause(this.getTreeLocation_(start),clause)}}if(allowImportedDefaultBinding){var start$__4=this.getTreeStartLocation_(),importedBinding=this.parseImportedBinding_();if(this.eatIf_(COMMA)){var second=this.parseImportClause_(!1,!1);return new ImportClausePair(this.getTreeLocation_(start$__4),importedBinding,second)}return importedBinding}}return this.parseUnexpectedToken_()},parseImportSpecifierSet_:function(){var start=this.getTreeStartLocation_(),specifiers=[];for(this.eat_(OPEN_CURLY);!peek(CLOSE_CURLY)&&!isAtEnd()&&(specifiers.push(this.parseImportSpecifier_()),this.eatIf_(COMMA)););return this.eat_(CLOSE_CURLY),new ImportSpecifierSet(this.getTreeLocation_(start),specifiers)},parseImportedBinding_:function(){var start=this.getTreeStartLocation_(),binding=this.parseBindingIdentifier_();return new ImportedBinding(this.getTreeLocation_(start),binding)},parseImportSpecifier_:function(){var binding,start=this.getTreeStartLocation_(),token=peekToken(),isKeyword=token.isKeyword(),name=this.eatIdName_();return isKeyword||this.peekPredefinedString_(AS)?(this.eatId_(AS),binding=this.parseImportedBinding_()):(binding=new ImportedBinding(name.location,new BindingIdentifier(name.location,name)),name=null),new ImportSpecifier(this.getTreeLocation_(start),binding,name)},parseExportDeclaration_:function(){var start=this.getTreeStartLocation_();this.eat_(EXPORT);var exportTree,annotations=this.popAnnotations_(),type=peekType();switch(type){case CONST:case LET:if(this.options_.blockBinding){exportTree=this.parseVariableStatement_();break}return this.parseUnexpectedToken_();case VAR:exportTree=this.parseVariableStatement_();break;case FUNCTION:exportTree=this.parseFunctionDeclaration_();break;case CLASS:exportTree=this.parseClassDeclaration_();break;case DEFAULT:exportTree=this.parseExportDefault_();break;case OPEN_CURLY:case STAR:exportTree=this.parseNamedExport_();break;case IDENTIFIER:if(this.options_.asyncFunctions&&this.peekPredefinedString_(ASYNC)){var asyncToken=this.eatId_();exportTree=this.parseAsyncFunctionDeclaration_(asyncToken)}else if(this.options_.types&&this.peekPredefinedString_(TYPE)&&peekLookahead(IDENTIFIER))exportTree=this.parseTypeAliasDeclaration_();else{if(!this.options_.exportFromExtended)return this.parseUnexpectedToken_();exportTree=this.parseNamedExport_()}break;default:var token=peekToken();if(!token.isKeyword())return this.parseUnexpectedToken_();exportTree=this.parseNamedExport_()}return new ExportDeclaration(this.getTreeLocation_(start),exportTree,annotations)},parseExportDefault_:function(){var start=this.getTreeStartLocation_(),defaultToken=this.eat_(DEFAULT);if(this.options_.exportFromExtended&&this.peekPredefinedString_(FROM)){var idName=new IdentifierToken(defaultToken.location,DEFAULT),namedExport=new ForwardDefaultExport(this.getTreeLocation_(start),idName);this.eatId_(FROM);var moduleSpecifier=this.parseModuleSpecifier_();return new NamedExport(this.getTreeLocation_(start),namedExport,moduleSpecifier)}var exportValue;switch(peekType()){case FUNCTION:var tree=this.parseFunctionExpression_();tree.name&&(tree=new FunctionDeclaration(tree.location,tree.name,tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body)),exportValue=tree;break;case CLASS:if(!this.options_.classes)return this.parseSyntaxError_("Unexpected reserved word");var tree$__5=this.parseClassExpression_();tree$__5.name&&(tree$__5=new ClassDeclaration(tree$__5.location,tree$__5.name,tree$__5.superClass,tree$__5.elements,tree$__5.annotations,tree$__5.typeParameters)),exportValue=tree$__5;break;default:exportValue=this.parseAssignmentExpression_(ALLOW_IN),this.eatPossibleImplicitSemiColon_()}return new ExportDefault(this.getTreeLocation_(start),exportValue)},parseNamedExport_:function(){var exportClause,start=this.getTreeStartLocation_(),moduleSpecifier=null;switch(peekType()){case OPEN_CURLY:exportClause=this.parseExportSpecifierSet_(),this.peekPredefinedString_(FROM)?(this.eatId_(FROM),moduleSpecifier=this.parseModuleSpecifier_()):this.validateExportSpecifierSet_(exportClause);break;case STAR:exportClause=this.parseExportStar_(),this.eatId_(FROM),moduleSpecifier=this.parseModuleSpecifier_();break;default:exportClause=this.parseForwardDefaultExport_(),this.eatId_(FROM),moduleSpecifier=this.parseModuleSpecifier_()}return this.eatPossibleImplicitSemiColon_(),new NamedExport(this.getTreeLocation_(start),exportClause,moduleSpecifier)},parseExportStar_:function(){var start=this.getTreeStartLocation_();if(this.eat_(STAR),this.peekPredefinedString_(AS)){this.eatId_(AS);var name=this.eatIdName_();return new NameSpaceExport(this.getTreeLocation_(start),name)}return new ExportStar(this.getTreeLocation_(start))},parseExportSpecifierSet_:function(){var start=this.getTreeStartLocation_();this.eat_(OPEN_CURLY);for(var specifiers=[this.parseExportSpecifier_()];this.eatIf_(COMMA)&&!peek(CLOSE_CURLY);)specifiers.push(this.parseExportSpecifier_());return this.eat_(CLOSE_CURLY),new ExportSpecifierSet(this.getTreeLocation_(start),specifiers)},parseExportSpecifier_:function(){var start=this.getTreeStartLocation_(),lhs=this.eatIdName_(),rhs=null;return this.peekPredefinedString_(AS)&&(this.eatId_(),rhs=this.eatIdName_()),new ExportSpecifier(this.getTreeLocation_(start),lhs,rhs)},parseForwardDefaultExport_:function(){var start=this.getTreeStartLocation_(),idName=this.eatIdName_();return new ForwardDefaultExport(this.getTreeLocation_(start),idName)},validateExportSpecifierSet_:function(tree){for(var i=0;i<tree.specifiers.length;i++){var specifier=tree.specifiers[i];getKeywordType(specifier.lhs.value)&&this.reportError_(specifier.lhs.location,"Unexpected token "+specifier.lhs.value)}},peekId_:function(type){return type===IDENTIFIER||!this.strictMode_&&peekToken().isStrictKeyword()},peekIdName_:function(token){return token.type===IDENTIFIER||token.isKeyword()},parseClassShared_:function(constr){var start=this.getTreeStartLocation_(),strictMode=this.strictMode_;this.strictMode_=!0,this.eat_(CLASS);var name=null,typeParameters=null,annotations=[];constr!==ClassDeclaration&&(peek(EXTENDS)||peek(OPEN_CURLY))||(name=this.parseBindingIdentifier_(),this.options_.types&&(typeParameters=this.parseTypeParametersOpt_()),annotations=this.popAnnotations_());var superClass=null;this.eatIf_(EXTENDS)&&(superClass=this.parseLeftHandSideExpression_(),superClass=this.coverFormalsToParenExpression_(superClass)),this.eat_(OPEN_CURLY);var elements=this.parseClassElements_(superClass);return this.eat_(CLOSE_CURLY),this.strictMode_=strictMode,new constr(this.getTreeLocation_(start),name,superClass,elements,annotations,typeParameters)},parseClassDeclaration_:function(){return this.parseClassShared_(ClassDeclaration)},parseClassExpression_:function(){return this.parseClassShared_(ClassExpression)},parseClassElements_:function(derivedClass){for(var result=[];;){var type=peekType();if(type===SEMI_COLON)nextToken();else{if(!this.peekClassElement_(peekType()))break;result.push(this.parseClassElement_(derivedClass))}}return result},peekClassElement_:function(type){return this.peekPropertyName_(type)||type===STAR&&this.options_.generators||type===AT&&this.options_.annotations},parsePropertyName_:function(){return peek(OPEN_SQUARE)?this.parseComputedPropertyName_():this.parseLiteralPropertyName_()},parseLiteralPropertyName_:function(){var start=this.getTreeStartLocation_(),token=nextToken();return new LiteralPropertyName(this.getTreeLocation_(start),token)},parseComputedPropertyName_:function(){var start=this.getTreeStartLocation_();this.eat_(OPEN_SQUARE);var expression=this.parseAssignmentExpression_(ALLOW_IN);return this.eat_(CLOSE_SQUARE),new ComputedPropertyName(this.getTreeLocation_(start),expression)},parseStatement:function(){var fs=this.pushFunctionState_(FUNCTION_STATE_LENIENT),result=this.parseModuleItem_(peekType());return this.popFunctionState_(fs),result},parseStatements:function(){var fs=this.pushFunctionState_(FUNCTION_STATE_LENIENT),result=this.parseModuleItemList_();return this.popFunctionState_(fs),result},parseStatement_:function(){return this.parseStatementWithType_(peekType())},parseStatementWithType_:function(type){switch(type){case RETURN:return this.parseReturnStatement_();case VAR:return this.parseVariableStatement_();case IF:return this.parseIfStatement_();case FOR:return this.parseForStatement_();case BREAK:return this.parseBreakStatement_();case SWITCH:return this.parseSwitchStatement_();case THROW:return this.parseThrowStatement_();case WHILE:return this.parseWhileStatement_();case AT:if(this.options_.annotations)return this.parseAnnotatedDeclarations_(!1);break;case CONTINUE:return this.parseContinueStatement_();case DEBUGGER:return this.parseDebuggerStatement_();case DO:return this.parseDoWhileStatement_();case OPEN_CURLY:return this.parseBlock_();case SEMI_COLON:return this.parseEmptyStatement_();case TRY:return this.parseTryStatement_();case WITH:return this.parseWithStatement_();case INTERFACE:if(this.options_.types)return this.parseInterfaceDeclaration_()}return this.parseFallThroughStatement_()},parseFunctionDeclaration_:function(){return this.parseFunction_(FunctionDeclaration)},parseFunctionExpression_:function(){return this.parseFunction_(FunctionExpression)},parseAsyncFunctionDeclaration_:function(asyncToken){return this.parseAsyncFunction_(asyncToken,FunctionDeclaration)},parseAsyncFunctionExpression_:function(asyncToken){return this.parseAsyncFunction_(asyncToken,FunctionExpression)},peekAsyncStar_:function(){return this.options_.asyncGenerators&&peek(STAR)},parseAsyncFunction_:function(asyncToken,ctor){var start=asyncToken.location.start;this.eat_(FUNCTION);var kind=FUNCTION_STATE_FUNCTION|FUNCTION_STATE_ASYNC;this.peekAsyncStar_()&&(kind|=FUNCTION_STATE_GENERATOR,this.eat_(STAR),asyncToken=new IdentifierToken(asyncToken.location,ASYNC_STAR));var fs=this.pushFunctionState_(kind),f=this.parseFunction2_(start,asyncToken,ctor);return this.popFunctionState_(fs),f},parseFunction_:function(ctor){var start=this.getTreeStartLocation_();this.eat_(FUNCTION);var functionKind=null,kind=FUNCTION_STATE_FUNCTION;this.options_.generators&&peek(STAR)&&(functionKind=this.eat_(STAR),kind|=FUNCTION_STATE_GENERATOR);var fs=this.pushFunctionState_(kind),f=this.parseFunction2_(start,functionKind,ctor);return this.popFunctionState_(fs),f},parseFunction2_:function(start,functionKind,ctor){var name=null,annotations=[];(ctor===FunctionDeclaration||this.peekBindingIdentifier_(peekType()))&&(name=this.parseBindingIdentifier_(),annotations=this.popAnnotations_()),this.eat_(OPEN_PAREN);var parameters=this.parseFormalParameters_();this.eat_(CLOSE_PAREN);var typeAnnotation=this.parseTypeAnnotationOpt_(),body=this.parseFunctionBody_(parameters);return new ctor(this.getTreeLocation_(start),name,functionKind,parameters,typeAnnotation,annotations,body)},peekRest_:function(type){return type===DOT_DOT_DOT&&this.options_.restParameters},parseFormalParameters_:function(){var start=this.getTreeStartLocation_(),formals=[];this.pushAnnotations_();var type=peekType();if(this.peekRest_(type))formals.push(this.parseFormalRestParameter_());else for(this.peekFormalParameter_(peekType())&&formals.push(this.parseFormalParameter_(INITIALIZER_OPTIONAL));this.eatIf_(COMMA);){if(this.pushAnnotations_(),this.peekRest_(peekType())){formals.push(this.parseFormalRestParameter_());break}formals.push(this.parseFormalParameter_(INITIALIZER_OPTIONAL))}return new FormalParameterList(this.getTreeLocation_(start),formals)},peekFormalParameter_:function(type){return this.peekBindingElement_(type)},parseFormalParameter_:function(initializerAllowed){var start=this.getTreeStartLocation_(),binding=this.parseBindingElementBinding_(),typeAnnotation=this.parseTypeAnnotationOpt_(),initializer=this.parseBindingElementInitializer_(initializerAllowed);return new FormalParameter(this.getTreeLocation_(start),new BindingElement(this.getTreeLocation_(start),binding,initializer),typeAnnotation,this.popAnnotations_())},parseFormalRestParameter_:function(){var start=this.getTreeStartLocation_(),restParameter=this.parseRestParameter_(),typeAnnotation=this.parseTypeAnnotationOpt_();return new FormalParameter(this.getTreeLocation_(start),restParameter,typeAnnotation,this.popAnnotations_())},parseRestParameter_:function(){var start=this.getTreeStartLocation_();this.eat_(DOT_DOT_DOT);var id=this.parseBindingIdentifier_(),typeAnnotation=this.parseTypeAnnotationOpt_();return new RestParameter(this.getTreeLocation_(start),id,typeAnnotation)},parseFunctionBody_:function(params){var start=this.getTreeStartLocation_();this.eat_(OPEN_CURLY);var strictMode=this.strictMode_,result=this.parseStatementList_(!strictMode);return validateParameters(params,this.strictMode_,this.errorReporter_),this.strictMode_=strictMode,this.eat_(CLOSE_CURLY),new FunctionBody(this.getTreeLocation_(start),result)},parseSpreadExpression_:function(){var start=this.getTreeStartLocation_();this.eat_(DOT_DOT_DOT);var operand=this.parseAssignmentExpression_(ALLOW_IN);return new SpreadExpression(this.getTreeLocation_(start),operand)},parseBlock_:function(){var start=this.getTreeStartLocation_();this.eat_(OPEN_CURLY);var result=this.parseStatementList_(!1);return this.eat_(CLOSE_CURLY),new Block(this.getTreeLocation_(start),result)},parseVariableStatement_:function(){var start=this.getTreeStartLocation_(),declarations=this.parseVariableDeclarationList_(ALLOW_IN,INITIALIZER_REQUIRED);return this.checkInitializers_(declarations),this.eatPossibleImplicitSemiColon_(),new VariableStatement(this.getTreeLocation_(start),declarations)},parseVariableDeclarationList_:function(allowIn,initializerRequired){var type=peekType();switch(type){case CONST:case LET:case VAR:nextToken();break;default:throw Error("unreachable")}var start=this.getTreeStartLocation_(),declarations=[];for(declarations.push(this.parseVariableDeclaration_(type,allowIn,initializerRequired));this.eatIf_(COMMA);)declarations.push(this.parseVariableDeclaration_(type,allowIn,initializerRequired));return new VariableDeclarationList(this.getTreeLocation_(start),type,declarations)},parseVariableDeclaration_:function(binding,noIn,initializerRequired){var lvalue,typeAnnotation,initRequired=initializerRequired!==INITIALIZER_OPTIONAL,start=this.getTreeStartLocation_();this.peekPattern_(peekType())?(lvalue=this.parseBindingPattern_(),typeAnnotation=null):(lvalue=this.parseBindingIdentifier_(),typeAnnotation=this.parseTypeAnnotationOpt_());var init=null;return peek(EQUAL)?init=this.parseInitializer_(noIn):lvalue.isPattern()&&initRequired&&this.reportError_(lvalue.location,"destructuring must have an initializer"),new VariableDeclaration(this.getTreeLocation_(start),lvalue,typeAnnotation,init)},parseInitializer_:function(allowIn){return this.eat_(EQUAL),this.parseAssignmentExpression_(allowIn)},parseInitializerOpt_:function(allowIn){return this.eatIf_(EQUAL)?this.parseAssignmentExpression_(allowIn):null},parseEmptyStatement_:function(){var start=this.getTreeStartLocation_();return this.eat_(SEMI_COLON),new EmptyStatement(this.getTreeLocation_(start))},parseFallThroughStatement_:function(){var expression,start=this.getTreeStartLocation_();switch(peekType()){case OPEN_CURLY:return this.parseUnexpectedToken_();case FUNCTION:case CLASS:return this.parseUnexpectedReservedWord_(peekToken());case LET:var token=peekLookahead(OPEN_SQUARE);if(token)return this.parseSyntaxError_("A statement cannot start with 'let ['")}if(this.options_.asyncFunctions&&this.peekPredefinedString_(ASYNC)&&peekLookahead(FUNCTION)){var asyncToken=this.eatId_(),functionToken=peekTokenNoLineTerminator();if(null!==functionToken)return this.parseAsyncFunctionDeclaration_(asyncToken);expression=new IdentifierExpression(this.getTreeLocation_(start),asyncToken)}else expression=this.parseExpression_(ALLOW_IN);if(expression.type===IDENTIFIER_EXPRESSION&&this.eatIf_(COLON)){var nameToken=expression.identifierToken,statement=this.parseStatement_();return new LabelledStatement(this.getTreeLocation_(start),nameToken,statement)}return this.eatPossibleImplicitSemiColon_(),new ExpressionStatement(this.getTreeLocation_(start),expression)},parseIfStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(IF),this.eat_(OPEN_PAREN);var condition=this.parseExpression_(ALLOW_IN);this.eat_(CLOSE_PAREN);var ifClause=this.parseStatement_(),elseClause=null;return this.eatIf_(ELSE)&&(elseClause=this.parseStatement_()),new IfStatement(this.getTreeLocation_(start),condition,ifClause,elseClause)},parseDoWhileStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(DO);var body=this.parseStatement_();this.eat_(WHILE),this.eat_(OPEN_PAREN);var condition=this.parseExpression_(ALLOW_IN);return this.eat_(CLOSE_PAREN),this.eatPossibleImplicitSemiColon_(),new DoWhileStatement(this.getTreeLocation_(start),body,condition)},parseWhileStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(WHILE),this.eat_(OPEN_PAREN);var condition=this.parseExpression_(ALLOW_IN);this.eat_(CLOSE_PAREN);var body=this.parseStatement_();return new WhileStatement(this.getTreeLocation_(start),condition,body)},parseForStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(FOR),this.eat_(OPEN_PAREN);var type=peekType();if(this.peekVariableDeclarationList_(type)){var variables=this.parseVariableDeclarationList_(NO_IN,INITIALIZER_OPTIONAL),declarations=variables.declarations;return declarations.length>1||containsInitializer(declarations)?this.parseForStatement2_(start,variables):(type=peekType(),type===IN?this.parseForInStatement_(start,variables):this.peekOf_()?this.parseForOfStatement_(start,variables):this.allowForOn_&&this.peekOn_()?this.parseForOnStatement_(start,variables):(this.checkInitializers_(variables),this.parseForStatement2_(start,variables)))}if(type===SEMI_COLON)return this.parseForStatement2_(start,null);var coverInitializedNameCount=this.coverInitializedNameCount_,initializer=this.parseExpressionAllowPattern_(NO_IN);return type=peekType(),type===IN||this.peekOf_()||this.allowForOn_&&this.peekOn_()?(initializer=this.transformLeftHandSideExpression_(initializer),this.validateAssignmentTarget_(initializer,"assignment"),this.peekOf_()?this.parseForOfStatement_(start,initializer):this.allowForOn_&&this.peekOn_()?this.parseForOnStatement_(start,initializer):this.parseForInStatement_(start,initializer)):(this.ensureNoCoverInitializedNames_(initializer,coverInitializedNameCount),this.parseForStatement2_(start,initializer))},peekOf_:function(){return this.options_.forOf&&this.peekPredefinedString_(OF)},peekOn_:function(){return this.options_.forOn&&this.peekPredefinedString_(ON)},parseForOfStatement_:function(start,initializer){this.eatId_();var collection=this.parseExpression_(ALLOW_IN);this.eat_(CLOSE_PAREN);var body=this.parseStatement_();return new ForOfStatement(this.getTreeLocation_(start),initializer,collection,body)},parseForOnStatement_:function(start,initializer){this.eatId_();var observable=this.parseExpression_(ALLOW_IN);this.eat_(CLOSE_PAREN);var body=this.parseStatement_();return new ForOnStatement(this.getTreeLocation_(start),initializer,observable,body)},checkInitializers_:function(variables){if(this.options_.blockBinding&&variables.declarationType===CONST)for(var type=variables.declarationType,i=0;i<variables.declarations.length&&this.checkInitializer_(type,variables.declarations[i]);i++);},checkInitializer_:function(type,declaration){return!this.options_.blockBinding||type!==CONST||null!==declaration.initializer||(this.reportError_(declaration.location,"const variables must have an initializer"),!1)},peekVariableDeclarationList_:function(type){switch(type){case VAR:return!0;case CONST:case LET:return this.options_.blockBinding;default:return!1}},parseForStatement2_:function(start,initializer){this.eat_(SEMI_COLON);var condition=null;peek(SEMI_COLON)||(condition=this.parseExpression_(ALLOW_IN)),this.eat_(SEMI_COLON);var increment=null;peek(CLOSE_PAREN)||(increment=this.parseExpression_(ALLOW_IN)),this.eat_(CLOSE_PAREN);var body=this.parseStatement_();return new ForStatement(this.getTreeLocation_(start),initializer,condition,increment,body)},parseForInStatement_:function(start,initializer){this.eat_(IN);var collection=this.parseExpression_(ALLOW_IN);this.eat_(CLOSE_PAREN);var body=this.parseStatement_();return new ForInStatement(this.getTreeLocation_(start),initializer,collection,body)},parseContinueStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(CONTINUE);var name=null;return this.peekImplicitSemiColon_()||(name=this.eatIdOpt_()),this.eatPossibleImplicitSemiColon_(),new ContinueStatement(this.getTreeLocation_(start),name)},parseBreakStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(BREAK);var name=null;return this.peekImplicitSemiColon_()||(name=this.eatIdOpt_()),this.eatPossibleImplicitSemiColon_(),new BreakStatement(this.getTreeLocation_(start),name)},parseReturnStatement_:function(){var start=this.getTreeStartLocation_(),returnToken=this.eat_(RETURN);this.functionState_.isTopMost()&&this.reportError_(returnToken.location,"Illegal return statement");var expression=null;return this.peekImplicitSemiColon_()||(expression=this.parseExpression_(ALLOW_IN)),this.eatPossibleImplicitSemiColon_(),new ReturnStatement(this.getTreeLocation_(start),expression)},parseYieldExpression_:function(allowIn){var start=this.getTreeStartLocation_();this.eat_(YIELD);var expression=null,isYieldFor=!1,token=peekTokenNoLineTerminator();if(null!==token)switch(token.type){case CLOSE_CURLY:case CLOSE_PAREN:case CLOSE_SQUARE:case COLON:case COMMA:case END_OF_FILE:case SEMI_COLON:break;default:isYieldFor=this.eatIf_(STAR),expression=this.parseAssignmentExpression_(allowIn)}return new YieldExpression(this.getTreeLocation_(start),expression,isYieldFor)},parseWithStatement_:function(){var start=this.getTreeStartLocation_(),withToken=this.eat_(WITH);this.strictMode_&&this.reportError_(withToken.location,"Strict mode code may not include a with statement"),this.eat_(OPEN_PAREN);var expression=this.parseExpression_(ALLOW_IN);this.eat_(CLOSE_PAREN);var body=this.parseStatement_();return new WithStatement(this.getTreeLocation_(start),expression,body)},parseSwitchStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(SWITCH),this.eat_(OPEN_PAREN);var expression=this.parseExpression_(ALLOW_IN);this.eat_(CLOSE_PAREN),this.eat_(OPEN_CURLY);var caseClauses=this.parseCaseClauses_();return this.eat_(CLOSE_CURLY),new SwitchStatement(this.getTreeLocation_(start),expression,caseClauses)},parseCaseClauses_:function(){for(var foundDefaultClause=!1,result=[];;){var start=this.getTreeStartLocation_();switch(peekType()){case CASE:nextToken();var expression=this.parseExpression_(ALLOW_IN);this.eat_(COLON);var statements=this.parseCaseStatementsOpt_();result.push(new CaseClause(this.getTreeLocation_(start),expression,statements));break;case DEFAULT:var defaultToken=nextToken();foundDefaultClause?this.reportError_(defaultToken.location,"Switch statements may have at most one 'default' clause"):foundDefaultClause=!0,this.eat_(COLON),result.push(new DefaultClause(this.getTreeLocation_(start),this.parseCaseStatementsOpt_()));break;default:return result}}},parseCaseStatementsOpt_:function(){for(var type,result=[];;){switch(type=peekType()){case CASE:case DEFAULT:case CLOSE_CURLY:case END_OF_FILE:return result}result.push(this.parseStatementListItem_(type))}},parseThrowStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(THROW);var value=null;return this.peekImplicitSemiColon_()||(value=this.parseExpression_(ALLOW_IN)),this.eatPossibleImplicitSemiColon_(),new ThrowStatement(this.getTreeLocation_(start),value)},parseTryStatement_:function(){var start=this.getTreeStartLocation_();this.eat_(TRY);var body=this.parseBlock_(),catchBlock=null;peek(CATCH)&&(catchBlock=this.parseCatch_());var finallyBlock=null;if(peek(FINALLY)&&(finallyBlock=this.parseFinallyBlock_()),null===catchBlock&&null===finallyBlock){var token=peekToken();this.reportError_(token.location,"'catch' or 'finally' expected.")}return new TryStatement(this.getTreeLocation_(start),body,catchBlock,finallyBlock)},parseCatch_:function(){var catchBlock,start=this.getTreeStartLocation_();this.eat_(CATCH),this.eat_(OPEN_PAREN);var binding;binding=this.peekPattern_(peekType())?this.parseBindingPattern_():this.parseBindingIdentifier_(),this.eat_(CLOSE_PAREN);var catchBody=this.parseBlock_();return catchBlock=new Catch(this.getTreeLocation_(start),binding,catchBody)},parseFinallyBlock_:function(){var start=this.getTreeStartLocation_();this.eat_(FINALLY);var finallyBlock=this.parseBlock_();return new Finally(this.getTreeLocation_(start),finallyBlock)},parseDebuggerStatement_:function(){var start=this.getTreeStartLocation_();return this.eat_(DEBUGGER),this.eatPossibleImplicitSemiColon_(),new DebuggerStatement(this.getTreeLocation_(start))},parsePrimaryExpression_:function(){switch(peekType()){case CLASS:return this.options_.classes?this.parseClassExpression_():this.parseUnexpectedReservedWord_(peekToken());case THIS:return this.parseThisExpression_();case IDENTIFIER:var identifier=this.parseIdentifierExpression_();if(this.options_.asyncFunctions&&identifier.identifierToken.value===ASYNC){var token$__6=peekTokenNoLineTerminator();if(token$__6&&token$__6.type===FUNCTION){var asyncToken=identifier.identifierToken;return this.parseAsyncFunctionExpression_(asyncToken)}}return identifier;case NUMBER:case STRING:case TRUE:case FALSE:case NULL:return this.parseLiteralExpression_();case OPEN_SQUARE:return this.parseArrayLiteral_();case OPEN_CURLY:return this.parseObjectLiteral_();case OPEN_PAREN:return this.parsePrimaryExpressionStartingWithParen_();case SLASH:case SLASH_EQUAL:return this.parseRegularExpressionLiteral_();case NO_SUBSTITUTION_TEMPLATE:case TEMPLATE_HEAD:if(this.options_.templateLiterals)return this.parseTemplateLiteral_(null);break;case IMPLEMENTS:case INTERFACE:case PACKAGE:case PRIVATE:case PROTECTED:case PUBLIC:case STATIC:case YIELD:return this.strictMode_&&this.reportReservedIdentifier_(nextToken()),this.parseIdentifierExpression_();case OPEN_ANGLE:if(this.options_.jsx)return this.parseJsxElement_();break;case END_OF_FILE:return this.parseSyntaxError_("Unexpected end of input")}var token=peekToken();return token.isKeyword()?this.parseUnexpectedReservedWord_(token):this.parseUnexpectedToken_(token)},parseSuperExpression_:function(isNew){for(var start=this.getTreeStartLocation_(),fs=this.functionState_;fs&&fs.isArrowFunction();)fs=fs.outer;var superToken=this.eat_(SUPER);fs&&fs.isMethod()||this.reportError_(superToken.location,"super is only allowed in methods");var operand=new SuperExpression(this.getTreeLocation_(start)),type=peekType();if(isNew)return type===OPEN_SQUARE?this.parseMemberLookupExpression_(start,operand):this.parseMemberExpression_(start,operand);switch(type){case OPEN_SQUARE:return this.parseMemberLookupExpression_(start,operand);case PERIOD:return this.parseMemberExpression_(start,operand);case OPEN_PAREN:var superCall=this.parseCallExpression_(start,operand);return fs.isDerivedConstructor()||this.reportError_(superToken.location,"super call is only allowed in derived constructor"),superCall}return this.parseUnexpectedToken_()},parseThisExpression_:function(){var start=this.getTreeStartLocation_();return this.eat_(THIS),new ThisExpression(this.getTreeLocation_(start))},peekBindingIdentifier_:function(type){return this.peekId_(type)},parseBindingIdentifier_:function(){var start=this.getTreeStartLocation_(),identifier=this.eatId_();return new BindingIdentifier(this.getTreeLocation_(start),identifier)},parseIdentifierExpression_:function(){var start=this.getTreeStartLocation_(),identifier=this.eatId_();return new IdentifierExpression(this.getTreeLocation_(start),identifier)},parseIdentifierNameExpression_:function(){var start=this.getTreeStartLocation_(),identifier=this.eatIdName_();return new IdentifierExpression(this.getTreeLocation_(start),identifier)},parseLiteralExpression_:function(){var start=this.getTreeStartLocation_(),literal=this.nextLiteralToken_();return new LiteralExpression(this.getTreeLocation_(start),literal)},nextLiteralToken_:function(){return nextToken()},parseRegularExpressionLiteral_:function(){var start=this.getTreeStartLocation_(),literal=nextRegularExpressionLiteralToken();return new LiteralExpression(this.getTreeLocation_(start),literal)},peekSpread_:function(type){return type===DOT_DOT_DOT&&this.options_.spread},parseArrayLiteral_:function(){var expression,start=this.getTreeStartLocation_(),elements=[];this.eat_(OPEN_SQUARE);var type=peekType();if(type===FOR&&this.options_.arrayComprehension)return this.parseArrayComprehension_(start);for(;;){if(type=peekType(),type===COMMA)expression=null;else if(this.peekSpread_(type))expression=this.parseSpreadExpression_();else{if(type===CLOSE_SQUARE||type===END_OF_FILE)break;expression=this.parseAssignmentExpression_(ALLOW_IN)}elements.push(expression),type=peekType(),type!==CLOSE_SQUARE&&this.eat_(COMMA)}return this.eat_(CLOSE_SQUARE),new ArrayLiteral(this.getTreeLocation_(start),elements)},parseArrayComprehension_:function(start){var list=this.parseComprehensionList_(),expression=this.parseAssignmentExpression_(ALLOW_IN);return this.eat_(CLOSE_SQUARE),new ArrayComprehension(this.getTreeLocation_(start),list,expression)},parseComprehensionList_:function(){for(var list=[this.parseComprehensionFor_()];;){var type=peekType();switch(type){case FOR:list.push(this.parseComprehensionFor_());break;case IF:list.push(this.parseComprehensionIf_());break;default:return list}}},parseComprehensionFor_:function(){var start=this.getTreeStartLocation_();this.eat_(FOR),this.eat_(OPEN_PAREN);var left=this.parseForBinding_();this.eatId_(OF);var iterator=this.parseExpression_(ALLOW_IN);return this.eat_(CLOSE_PAREN),new ComprehensionFor(this.getTreeLocation_(start),left,iterator)},parseComprehensionIf_:function(){var start=this.getTreeStartLocation_();this.eat_(IF),this.eat_(OPEN_PAREN);var expression=this.parseExpression_(ALLOW_IN);return this.eat_(CLOSE_PAREN),new ComprehensionIf(this.getTreeLocation_(start),expression)},parseObjectLiteral_:function(){var start=this.getTreeStartLocation_(),result=[];for(this.eat_(OPEN_CURLY);this.peekPropertyDefinition_(peekType());){var propertyDefinition=this.parsePropertyDefinition_();if(result.push(propertyDefinition),!this.eatIf_(COMMA))break}return this.eat_(CLOSE_CURLY),new ObjectLiteral(this.getTreeLocation_(start),result)},parsePropertyDefinition:function(){var fs=this.pushFunctionState_(FUNCTION_STATE_SCRIPT),result=this.parsePropertyDefinition_();return this.popFunctionState_(fs),result},parsePropertyDefinition_:function(){var start=this.getTreeStartLocation_(),functionKind=null,isStatic=!1;if(this.options_.generators&&this.options_.propertyMethods&&peek(STAR)){var fs=this.pushFunctionState_(FUNCTION_STATE_METHOD|FUNCTION_STATE_GENERATOR),m=this.parseGeneratorMethod_(start,isStatic,[]);return this.popFunctionState_(fs),m}if(this.options_.spreadProperties&&peek(DOT_DOT_DOT))return this.parseSpreadExpression_();var token=peekToken(),name=this.parsePropertyName_();if(this.options_.propertyMethods&&peek(OPEN_PAREN)){var fs$__7=this.pushFunctionState_(FUNCTION_STATE_METHOD),m$__8=this.parseMethod_(start,isStatic,functionKind,name,[]);return this.popFunctionState_(fs$__7),m$__8}if(this.eatIf_(COLON)){var value=this.parseAssignmentExpression_(ALLOW_IN);return new PropertyNameAssignment(this.getTreeLocation_(start),name,value);
}var type=peekType();if(name.type===LITERAL_PROPERTY_NAME){var nameLiteral=name.literalToken;if(nameLiteral.value===GET&&this.peekPropertyName_(type))return this.parseGetAccessor_(start,isStatic,[]);if(nameLiteral.value===SET&&this.peekPropertyName_(type))return this.parseSetAccessor_(start,isStatic,[]);if(this.options_.asyncFunctions&&nameLiteral.value===ASYNC&&(this.peekPropertyName_(type)||this.peekAsyncStar_())){var async=nameLiteral,kind=FUNCTION_STATE_METHOD|FUNCTION_STATE_ASYNC;this.peekAsyncStar_()&&(kind|=FUNCTION_STATE_GENERATOR,this.eat_(STAR),async=new IdentifierToken(async.location,ASYNC_STAR));var name$__9=this.parsePropertyName_(),fs$__10=this.pushFunctionState_(kind),m$__11=this.parseMethod_(start,isStatic,async,name$__9,[]);return this.popFunctionState_(fs$__10),m$__11}if(this.options_.propertyNameShorthand&&(nameLiteral.type===IDENTIFIER||nameLiteral.isStrictKeyword()&&!this.strictMode_||nameLiteral.type===YIELD&&this.allowYield_)){if(peek(EQUAL)){token=nextToken();var coverInitializedNameCount=this.coverInitializedNameCount_,expr=this.parseAssignmentExpression_(ALLOW_IN);return this.ensureNoCoverInitializedNames_(expr,coverInitializedNameCount),this.coverInitializedNameCount_++,new CoverInitializedName(this.getTreeLocation_(start),nameLiteral,token,expr)}return new PropertyNameShorthand(this.getTreeLocation_(start),nameLiteral)}this.strictMode_&&nameLiteral.isStrictKeyword()&&this.reportReservedIdentifier_(nameLiteral)}return name.type===COMPUTED_PROPERTY_NAME&&(token=peekToken()),this.parseUnexpectedToken_(token)},parseClassElement_:function(derivedClass){var start=this.getTreeStartLocation_(),annotations=this.parseAnnotations_(),type=peekType(),isStatic=!1,functionKind=null;switch(type){case STATIC:var staticToken=nextToken();switch(type=peekType()){case OPEN_PAREN:var location=this.getTreeLocation_(start),name=new LiteralPropertyName(location,staticToken),fs=this.pushFunctionState_(FUNCTION_STATE_METHOD),m=this.parseMethod_(start,isStatic,functionKind,name,annotations);return this.popFunctionState_(fs),m;default:return isStatic=!0,type===STAR&&this.options_.generators?this.parseGeneratorMethod_(start,!0,annotations):this.parseClassElement2_(start,isStatic,annotations,derivedClass)}break;case STAR:return this.parseGeneratorMethod_(start,isStatic,annotations);default:return this.parseClassElement2_(start,isStatic,annotations,derivedClass)}},parseGeneratorMethod_:function(start,isStatic,annotations){var functionKind=this.eat_(STAR),name=this.parsePropertyName_(),fs=this.pushFunctionState_(FUNCTION_STATE_METHOD|FUNCTION_STATE_GENERATOR),m=this.parseMethod_(start,isStatic,functionKind,name,annotations);return this.popFunctionState_(fs),m},parseMethod_:function(start,isStatic,functionKind,name,annotations){this.eat_(OPEN_PAREN);var parameterList=this.parseFormalParameters_();this.eat_(CLOSE_PAREN);var typeAnnotation=this.parseTypeAnnotationOpt_(),body=this.parseFunctionBody_(parameterList);return new Method(this.getTreeLocation_(start),isStatic,functionKind,name,parameterList,typeAnnotation,annotations,body,null)},parsePropertyVariableDeclaration_:function(start,isStatic,name,annotations){var typeAnnotation=this.parseTypeAnnotationOpt_(),initializer=this.parseInitializerOpt_(ALLOW_IN);return this.eat_(SEMI_COLON),new PropertyVariableDeclaration(this.getTreeLocation_(start),isStatic,name,typeAnnotation,annotations,initializer)},parseClassElement2_:function(start,isStatic,annotations,derivedClass){var functionKind=null,name=this.parsePropertyName_(),type=peekType();if(name.type===LITERAL_PROPERTY_NAME&&name.literalToken.value===GET&&this.peekPropertyName_(type))return this.parseGetAccessor_(start,isStatic,annotations);if(name.type===LITERAL_PROPERTY_NAME&&name.literalToken.value===SET&&this.peekPropertyName_(type))return this.parseSetAccessor_(start,isStatic,annotations);if(this.options_.asyncFunctions&&name.type===LITERAL_PROPERTY_NAME&&name.literalToken.value===ASYNC&&(this.peekPropertyName_(type)||this.peekAsyncStar_())){var async=name.literalToken,kind=FUNCTION_STATE_METHOD|FUNCTION_STATE_ASYNC;this.peekAsyncStar_()&&(kind|=FUNCTION_STATE_GENERATOR,this.eat_(STAR),async=new IdentifierToken(async.location,ASYNC_STAR)),name=this.parsePropertyName_();var fs=this.pushFunctionState_(kind),m=this.parseMethod_(start,isStatic,async,name,annotations);return this.popFunctionState_(fs),m}if(!this.options_.memberVariables||type===OPEN_PAREN){var kind$__12=FUNCTION_STATE_METHOD,isDerivedConstructor=derivedClass&&!isStatic&&null===functionKind&&name.type===LITERAL_PROPERTY_NAME&&name.literalToken.value===CONSTRUCTOR;isDerivedConstructor&&(kind$__12|=FUNCTION_STATE_DERIVED_CONSTRUCTOR);var fs$__13=this.pushFunctionState_(kind$__12),m$__14=this.parseMethod_(start,isStatic,functionKind,name,annotations);return this.popFunctionState_(fs$__13),isDerivedConstructor&&validateConstructor(m$__14,this.errorReporter_),m$__14}return this.parsePropertyVariableDeclaration_(start,isStatic,name,annotations)},parseGetAccessor_:function(start,isStatic,annotations){var name=this.parsePropertyName_(),fs=this.pushFunctionState_(FUNCTION_STATE_METHOD);this.eat_(OPEN_PAREN),this.eat_(CLOSE_PAREN);var typeAnnotation=this.parseTypeAnnotationOpt_(),body=this.parseFunctionBody_(null);return this.popFunctionState_(fs),new GetAccessor(this.getTreeLocation_(start),isStatic,name,typeAnnotation,annotations,body)},parseSetAccessor_:function(start,isStatic,annotations){var name=this.parsePropertyName_(),fs=this.pushFunctionState_(FUNCTION_STATE_METHOD);this.eat_(OPEN_PAREN);var parameterList=this.parsePropertySetParameterList_();this.eat_(CLOSE_PAREN);var body=this.parseFunctionBody_(parameterList);return this.popFunctionState_(fs),new SetAccessor(this.getTreeLocation_(start),isStatic,name,parameterList,annotations,body)},peekPropertyDefinition_:function(type){return this.peekPropertyName_(type)||type===STAR&&this.options_.propertyMethods&&this.options_.generators||type===DOT_DOT_DOT&&this.options_.spreadProperties},peekPropertyName_:function(type){switch(type){case IDENTIFIER:case STRING:case NUMBER:return!0;case OPEN_SQUARE:return this.options_.computedPropertyNames;default:return peekToken().isKeyword()}},peekPredefinedString_:function(string){var token=peekToken();return token.type===IDENTIFIER&&token.value===string},parsePropertySetParameterList_:function(){var binding,start=this.getTreeStartLocation_();this.pushAnnotations_(),binding=this.peekPattern_(peekType())?this.parseBindingPattern_():this.parseBindingIdentifier_();var typeAnnotation=this.parseTypeAnnotationOpt_(),parameter=new FormalParameter(this.getTreeLocation_(start),new BindingElement(this.getTreeLocation_(start),binding,null),typeAnnotation,this.popAnnotations_());return new FormalParameterList(parameter.location,[parameter])},parsePrimaryExpressionStartingWithParen_:function(){var start=this.getTreeStartLocation_();return this.eat_(OPEN_PAREN),peek(FOR)&&this.options_.generatorComprehension?this.parseGeneratorComprehension_(start):this.parseCoverFormals_(start)},parseSyntaxError_:function(message){var token=nextToken();return this.reportError_(token.location,message),new SyntaxErrorTree(token.location,token,message)},parseUnexpectedToken_:function(){var token=void 0!==arguments[0]?arguments[0]:peekToken();return token.type===NO_SUBSTITUTION_TEMPLATE?this.parseSyntaxError_("Unexpected token `"):this.parseSyntaxError_("Unexpected token "+token)},parseUnexpectedReservedWord_:function(token){return this.parseSyntaxError_("Unexpected reserved word "+token)},parseExpression_:function(allowIn){var coverInitializedNameCount=this.coverInitializedNameCount_,expression=this.parseExpressionAllowPattern_(allowIn);return this.ensureNoCoverInitializedNames_(expression,coverInitializedNameCount),expression},parseExpression:function(){var fs=this.pushFunctionState_(FUNCTION_STATE_LENIENT),expression=this.parseExpression_(ALLOW_IN);return this.popFunctionState_(fs),expression},parseExpressionAllowPattern_:function(allowIn){var start=this.getTreeStartLocation_(),expression=this.parseAssignmentExpression_(allowIn);if(peek(COMMA)){for(var expressions=[expression];this.eatIf_(COMMA);)expressions.push(this.parseAssignmentExpression_(allowIn));return new CommaExpression(this.getTreeLocation_(start),expressions)}return expression},parseAssignmentExpression_:function(allowIn){if(this.allowYield_&&peek(YIELD))return this.parseYieldExpression_(allowIn);var start=this.getTreeStartLocation_(),validAsyncParen=!1;if(this.options_.asyncFunctions&&this.peekPredefinedString_(ASYNC)){var asyncToken=peekToken(),maybeOpenParenToken=peekTokenLookahead();validAsyncParen=maybeOpenParenToken.type===OPEN_PAREN&&asyncToken.location.end.line===maybeOpenParenToken.location.start.line}var left=this.parseConditional_(allowIn),type=peekType();if(this.options_.asyncFunctions&&left.type===IDENTIFIER_EXPRESSION&&left.identifierToken.value===ASYNC&&type===IDENTIFIER&&null!==peekTokenNoLineTerminator()){var bindingIdentifier=this.parseBindingIdentifier_(),asyncToken$__15=left.identifierToken;return this.parseArrowFunction_(start,bindingIdentifier,asyncToken$__15)}if(type===ARROW&&null!==peekTokenNoLineTerminator()){if(left.type===COVER_FORMALS||left.type===IDENTIFIER_EXPRESSION)return this.parseArrowFunction_(start,left,null);if(validAsyncParen&&left.type===CALL_EXPRESSION){var asyncToken$__16=left.operand.identifierToken;return this.parseArrowFunction_(start,left.args,asyncToken$__16)}}if(left=this.coverFormalsToParenExpression_(left),this.peekAssignmentOperator_(type)){type===EQUAL&&(left=this.transformLeftHandSideExpression_(left)),this.validateAssignmentTarget_(left,"assignment");var operator=nextToken(),right=this.parseAssignmentExpression_(allowIn);return new BinaryExpression(this.getTreeLocation_(start),left,operator,right)}return left},transformLeftHandSideExpression_:function(tree){switch(tree.type){case ARRAY_LITERAL:case OBJECT_LITERAL:return resetScanner(tree.location.start.offset),this.parseAssignmentPattern_()}return tree},peekAssignmentOperator_:function(type){return isAssignmentOperator(type)},parseConditional_:function(allowIn){var start=this.getTreeStartLocation_(),condition=this.parseBinaryExpression_(allowIn);if(this.eatIf_(QUESTION)){condition=this.toPrimaryExpression_(condition);var left=this.parseAssignmentExpression_(ALLOW_IN);this.eat_(COLON);var right=this.parseAssignmentExpression_(allowIn);return new ConditionalExpression(this.getTreeLocation_(start),condition,left,right)}return condition},getPrecedence_:function(type,allowIn){switch(type){case OR:return 1;case AND:return 2;case BAR:return 3;case CARET:return 4;case AMPERSAND:return 5;case EQUAL_EQUAL:case EQUAL_EQUAL_EQUAL:case NOT_EQUAL:case NOT_EQUAL_EQUAL:return 6;case CLOSE_ANGLE:case GREATER_EQUAL:case INSTANCEOF:case LESS_EQUAL:case OPEN_ANGLE:return 7;case IN:return allowIn?7:0;case LEFT_SHIFT:case RIGHT_SHIFT:case UNSIGNED_RIGHT_SHIFT:return 8;case MINUS:case PLUS:return 9;case SLASH:case STAR:case PERCENT:return 10;case STAR_STAR:return this.options_.exponentiation?11:0;default:return 0}},parseBinaryExpression_:function(allowIn){var start=this.getTreeStartLocation_(),left=this.parseUnaryExpression_();return this.parseBinaryExpressionHelper_(start,left,-1,allowIn)},parseBinaryExpressionHelper_:function(start,left,minPrec,allowIn){var type=peekType(),prec=this.getPrecedence_(type,allowIn);if(0===prec)return left;var leftToRight=type!==STAR_STAR;if(leftToRight?prec>minPrec:prec>=minPrec){var token=nextToken(),rightStart=this.getTreeStartLocation_(),rightUnary=this.parseUnaryExpression_(),right=this.parseBinaryExpressionHelper_(rightStart,rightUnary,prec,allowIn);left=this.toPrimaryExpression_(left),right=this.toPrimaryExpression_(right);var node=new BinaryExpression(this.getTreeLocation_(start),left,token,right);return this.parseBinaryExpressionHelper_(start,node,minPrec,allowIn)}return left},parseUnaryExpression_:function(){var start=this.getTreeStartLocation_();if(this.allowAwait_&&this.peekPredefinedString_(AWAIT)){this.eatId_();var operand;return this.allowYield_&&peek(YIELD)?operand=this.parseYieldExpression_(ALLOW_IN):(operand=this.parseUnaryExpression_(),operand=this.toPrimaryExpression_(operand)),new AwaitExpression(this.getTreeLocation_(start),operand)}if(this.peekUnaryOperator_(peekType())){var operator=nextToken(),operand$__17=this.parseUnaryExpression_();if(operand$__17=this.toPrimaryExpression_(operand$__17),operand$__17.type!==SYNTAX_ERROR_TREE)switch(operator.type){case PLUS_PLUS:case MINUS_MINUS:this.validateAssignmentTarget_(operand$__17,"prefix operation")}return new UnaryExpression(this.getTreeLocation_(start),operator,operand$__17)}return this.parsePostfixExpression_()},peekUnaryOperator_:function(type){switch(type){case DELETE:case VOID:case TYPEOF:case PLUS_PLUS:case MINUS_MINUS:case PLUS:case MINUS:case TILDE:case BANG:return!0;default:return!1}},parsePostfixExpression_:function(){for(var start=this.getTreeStartLocation_(),operand=this.parseLeftHandSideExpression_();this.peekPostfixOperator_(peekType());){operand=this.toPrimaryExpression_(operand);var operator=nextToken();this.validateAssignmentTarget_(operand,"postfix operation"),operand=new PostfixExpression(this.getTreeLocation_(start),operand,operator)}return operand},peekPostfixOperator_:function(type){switch(type){case PLUS_PLUS:case MINUS_MINUS:var token=peekTokenNoLineTerminator();return null!==token}return!1},parseLeftHandSideExpression_:function(){var start=this.getTreeStartLocation_(),operand=this.parseNewExpression_();if(!(operand instanceof NewExpression)||null!==operand.args)loop:for(;;)switch(peekType()){case OPEN_PAREN:operand=this.toPrimaryExpression_(operand),operand=this.parseCallExpression_(start,operand);break;case OPEN_SQUARE:operand=this.toPrimaryExpression_(operand),operand=this.parseMemberLookupExpression_(start,operand);break;case PERIOD:operand=this.toPrimaryExpression_(operand),operand=this.parseMemberExpression_(start,operand);break;case NO_SUBSTITUTION_TEMPLATE:case TEMPLATE_HEAD:if(!this.options_.templateLiterals)break loop;operand=this.toPrimaryExpression_(operand),this.options_.templateLiterals&&(operand=this.parseTemplateLiteral_(operand));break;default:break loop}return operand},parseMemberExpressionNoNew_:function(){var operand,start=this.getTreeStartLocation_();operand=peekType()===FUNCTION?this.parseFunctionExpression_():this.parsePrimaryExpression_();loop:for(;;)switch(peekType()){case OPEN_SQUARE:operand=this.toPrimaryExpression_(operand),operand=this.parseMemberLookupExpression_(start,operand);break;case PERIOD:operand=this.toPrimaryExpression_(operand),operand=this.parseMemberExpression_(start,operand);break;case NO_SUBSTITUTION_TEMPLATE:case TEMPLATE_HEAD:if(!this.options_.templateLiterals)break loop;operand=this.toPrimaryExpression_(operand),operand=this.parseTemplateLiteral_(operand);break;default:break loop}return operand},parseMemberExpression_:function(start,operand){this.eat_(PERIOD);var name=this.eatIdName_();return new MemberExpression(this.getTreeLocation_(start),operand,name)},parseMemberLookupExpression_:function(start,operand){this.eat_(OPEN_SQUARE);var member=this.parseExpression_(ALLOW_IN);return this.eat_(CLOSE_SQUARE),new MemberLookupExpression(this.getTreeLocation_(start),operand,member)},parseCallExpression_:function(start,operand){var args=this.parseArguments_();return new CallExpression(this.getTreeLocation_(start),operand,args)},parseNewExpression_:function(){var operand,start;switch(peekType()){case NEW:start=this.getTreeStartLocation_(),this.eat_(NEW),operand=peek(SUPER)?this.parseSuperExpression_(!0):this.toPrimaryExpression_(this.parseNewExpression_());var args=null;return peek(OPEN_PAREN)&&(args=this.parseArguments_()),new NewExpression(this.getTreeLocation_(start),operand,args);case SUPER:return this.parseSuperExpression_(!1);default:return this.parseMemberExpressionNoNew_()}},parseArguments_:function(){var start=this.getTreeStartLocation_(),args=[];if(this.eat_(OPEN_PAREN),!peek(CLOSE_PAREN))for(args.push(this.parseArgument_());this.eatIf_(COMMA);)args.push(this.parseArgument_());return this.eat_(CLOSE_PAREN),new ArgumentList(this.getTreeLocation_(start),args)},parseArgument_:function(){return this.peekSpread_(peekType())?this.parseSpreadExpression_():this.parseAssignmentExpression_(ALLOW_IN)},parseArrowFunction_:function(start,tree,asyncToken){var formals,$__3=this,kind=FUNCTION_STATE_ARROW;asyncToken&&asyncToken.value===ASYNC&&(kind|=FUNCTION_STATE_ASYNC);var fs=this.pushFunctionState_(kind),makeFormals=function(tree){return new FormalParameterList($__3.getTreeLocation_(start),[new FormalParameter(tree.location,new BindingElement(tree.location,tree,null),null,[])])};switch(tree.type){case IDENTIFIER_EXPRESSION:formals=makeFormals(new BindingIdentifier(tree.location,tree.identifierToken));break;case BINDING_IDENTIFIER:formals=makeFormals(tree);break;case FORMAL_PARAMETER_LIST:formals=tree;break;default:formals=this.toFormalParameters_(start,tree,asyncToken)}this.eat_(ARROW);var body=this.parseConciseBody_(formals);return this.popFunctionState_(fs),new ArrowFunction(this.getTreeLocation_(start),asyncToken,formals,body)},parseCoverFormals_:function(start){var expressions=[];if(!peek(CLOSE_PAREN))do{var type=peekType();if(this.peekRest_(type)){expressions.push(this.parseRestParameter_());break}expressions.push(this.parseAssignmentExpression_(ALLOW_IN)),!this.eatIf_(COMMA)}while(!peek(CLOSE_PAREN)&&!isAtEnd());return this.eat_(CLOSE_PAREN),new CoverFormals(this.getTreeLocation_(start),expressions)},ensureNoCoverInitializedNames_:function(tree,coverInitializedNameCount){if(coverInitializedNameCount!==this.coverInitializedNameCount_){var finder=new ValidateObjectLiteral;if(finder.visitAny(tree),finder.found){var token=finder.errorToken;this.reportError_(token.location,"Unexpected token "+token)}}},toPrimaryExpression_:function(tree){return tree.type===COVER_FORMALS?this.coverFormalsToParenExpression_(tree):tree},validateCoverFormalsAsParenExpression_:function(tree){for(var i=0;i<tree.expressions.length;i++)if(tree.expressions[i].type===REST_PARAMETER){var token=new Token(DOT_DOT_DOT,tree.expressions[i].location);return void this.reportError_(token.location,"Unexpected token "+token)}},coverFormalsToParenExpression_:function(tree){if(tree.type===COVER_FORMALS){var expressions=tree.expressions;if(0!==expressions.length){this.validateCoverFormalsAsParenExpression_(tree);var expression;return expression=expressions.length>1?new CommaExpression(expressions[0].location,expressions):expressions[0],new ParenExpression(tree.location,expression)}var message="Unexpected token )";this.reportError_(tree.location,message)}return tree},toFormalParameters_:function(start,tree,asyncToken){return resetScanner(start.offset),this.parseArrowFormalParameters_(asyncToken)},parseArrowFormalParameters_:function(asyncToken){asyncToken&&this.eat_(IDENTIFIER),this.eat_(OPEN_PAREN);var parameters=this.parseFormalParameters_();return this.eat_(CLOSE_PAREN),parameters},peekArrow_:function(type){return type===ARROW&&this.options_.arrowFunctions},parseConciseBody_:function(params){return peek(OPEN_CURLY)?this.parseFunctionBody_(params):(validateParameters(params,this.strictMode_,this.errorReporter_),this.parseAssignmentExpression_(ALLOW_IN))},parseGeneratorComprehension_:function(start){var comprehensionList=this.parseComprehensionList_(),expression=this.parseAssignmentExpression_(ALLOW_IN);return this.eat_(CLOSE_PAREN),new GeneratorComprehension(this.getTreeLocation_(start),comprehensionList,expression)},parseForBinding_:function(){return this.peekPattern_(peekType())?this.parseBindingPattern_():this.parseBindingIdentifier_()},peekPattern_:function(type){return this.options_.destructuring&&(this.peekObjectPattern_(type)||this.peekArrayPattern_(type))},peekArrayPattern_:function(type){return type===OPEN_SQUARE},peekObjectPattern_:function(type){return type===OPEN_CURLY},parseBindingPattern_:function(){return this.parsePattern_(!0)},parsePattern_:function(useBinding){return this.peekArrayPattern_(peekType())?this.parseArrayPattern_(useBinding):this.parseObjectPattern_(useBinding)},parseArrayBindingPattern_:function(){return this.parseArrayPattern_(!0)},parsePatternElement_:function(useBinding){return useBinding?this.parseBindingElement_():this.parseAssignmentElement_()},parsePatternRestElement_:function(useBinding){return useBinding?this.parseBindingRestElement_():this.parseAssignmentRestElement_()},parseArrayPattern_:function(useBinding){var start=this.getTreeStartLocation_(),elements=[];for(this.eat_(OPEN_SQUARE);;){var type=peekType();if(type===COMMA)elements.push(null);else{if(this.peekSpread_(type)){elements.push(this.parsePatternRestElement_(useBinding));break}if(type===CLOSE_SQUARE||type===END_OF_FILE)break;elements.push(this.parsePatternElement_(useBinding))}type=peekType(),type!==CLOSE_SQUARE&&this.eat_(COMMA)}return this.eat_(CLOSE_SQUARE),new ArrayPattern(this.getTreeLocation_(start),elements)},parseBindingElementList_:function(elements){for(this.parseElisionOpt_(elements),elements.push(this.parseBindingElement_());this.eatIf_(COMMA);)this.parseElisionOpt_(elements),elements.push(this.parseBindingElement_())},parseElisionOpt_:function(elements){for(;this.eatIf_(COMMA);)elements.push(null)},peekBindingElement_:function(type){return this.peekBindingIdentifier_(type)||this.peekPattern_(type)},parseBindingElement_:function(){var start=this.getTreeStartLocation_(),binding=this.parseBindingElementBinding_(),initializer=this.parseBindingElementInitializer_(INITIALIZER_OPTIONAL);return new BindingElement(this.getTreeLocation_(start),binding,initializer)},parseBindingElementBinding_:function(){return this.peekPattern_(peekType())?this.parseBindingPattern_():this.parseBindingIdentifier_()},parseBindingElementInitializer_:function(initializerRequired){return peek(EQUAL)||initializerRequired?this.parseInitializer_(ALLOW_IN):null},parseBindingRestElement_:function(){var start=this.getTreeStartLocation_();this.eat_(DOT_DOT_DOT);var identifier=this.parseBindingIdentifier_();return new SpreadPatternElement(this.getTreeLocation_(start),identifier)},parseObjectPattern_:function(useBinding){var start=this.getTreeStartLocation_(),elements=[];this.eat_(OPEN_CURLY);for(var type;(type=peekType())!==CLOSE_CURLY&&type!==END_OF_FILE&&(elements.push(this.parsePatternProperty_(useBinding)),this.eatIf_(COMMA)););return this.eat_(CLOSE_CURLY),new ObjectPattern(this.getTreeLocation_(start),elements)},parsePatternProperty_:function(useBinding){var start=this.getTreeStartLocation_(),name=this.parsePropertyName_(),requireColon=name.type!==LITERAL_PROPERTY_NAME||!name.literalToken.isStrictKeyword()&&name.literalToken.type!==IDENTIFIER;if(requireColon||peek(COLON)){this.eat_(COLON);var element=this.parsePatternElement_(useBinding);return new ObjectPatternField(this.getTreeLocation_(start),name,element)}var token=name.literalToken;if(this.strictMode_&&token.isStrictKeyword()&&this.reportReservedIdentifier_(token),useBinding){var binding=new BindingIdentifier(name.location,token),initializer$__18=this.parseInitializerOpt_(ALLOW_IN);return new BindingElement(this.getTreeLocation_(start),binding,initializer$__18)}var assignment=new IdentifierExpression(name.location,token),initializer=this.parseInitializerOpt_(ALLOW_IN);return new AssignmentElement(this.getTreeLocation_(start),assignment,initializer)},parseAssignmentPattern_:function(){return this.parsePattern_(!1)},parseArrayAssignmentPattern_:function(){return this.parseArrayPattern_(!1)},parseAssignmentElement_:function(){var start=this.getTreeStartLocation_(),assignment=this.parseDestructuringAssignmentTarget_(),initializer=this.parseInitializerOpt_(ALLOW_IN);return new AssignmentElement(this.getTreeLocation_(start),assignment,initializer)},parseDestructuringAssignmentTarget_:function(){switch(peekType()){case OPEN_SQUARE:return this.parseArrayAssignmentPattern_();case OPEN_CURLY:return this.parseObjectAssignmentPattern_()}var expression=this.parseLeftHandSideExpression_();return expression=this.coverFormalsToParenExpression_(expression),this.validateAssignmentTarget_(expression,"assignment"),expression},parseAssignmentRestElement_:function(){var start=this.getTreeStartLocation_();this.eat_(DOT_DOT_DOT);var id=this.parseDestructuringAssignmentTarget_();return new SpreadPatternElement(this.getTreeLocation_(start),id)},parseObjectAssignmentPattern_:function(){return this.parseObjectPattern_(!1)},parseAssignmentProperty_:function(){return this.parsePatternProperty_(!1)},parseTemplateLiteral_:function(operand){var start=operand?operand.location.start:this.getTreeStartLocation_(),token=nextToken(),elements=[new TemplateLiteralPortion(token.location,token)];if(token.type===NO_SUBSTITUTION_TEMPLATE)return new TemplateLiteralExpression(this.getTreeLocation_(start),operand,elements);var expression=this.parseExpression_(ALLOW_IN);for(elements.push(new TemplateSubstitution(expression.location,expression));expression.type!==SYNTAX_ERROR_TREE&&(token=nextTemplateLiteralToken(),token.type!==ERROR&&token.type!==END_OF_FILE)&&(elements.push(new TemplateLiteralPortion(token.location,token)),token.type!==TEMPLATE_TAIL);)expression=this.parseExpression_(ALLOW_IN),elements.push(new TemplateSubstitution(expression.location,expression));return new TemplateLiteralExpression(this.getTreeLocation_(start),operand,elements)},parseTypeAnnotationOpt_:function(){return this.options_.types&&this.eatOpt_(COLON)?this.parseType_():null},parseType_:function(){switch(peekType()){case NEW:return this.parseConstructorType_();case OPEN_PAREN:case OPEN_ANGLE:return this.parseFunctionType_()}var start=this.getTreeStartLocation_(),elementType=this.parsePrimaryType_();return this.parseUnionTypeSuffix_(start,elementType)},parsePrimaryType_:function(){var elementType,token,start=this.getTreeStartLocation_();switch(peekType()){case VOID:token=nextToken(),elementType=new PredefinedType(this.getTreeLocation_(start),token);break;case IDENTIFIER:switch(peekToken().value){case"any":case"boolean":case"number":case"string":case"symbol":token=nextToken(),elementType=new PredefinedType(this.getTreeLocation_(start),token);break;default:elementType=this.parseTypeReference_()}break;case TYPEOF:elementType=this.parseTypeQuery_(start);break;case OPEN_CURLY:elementType=this.parseObjectType_();break;default:return this.parseUnexpectedToken_()}return this.parseArrayTypeSuffix_(start,elementType)},parseTypeReference_:function(){var start=this.getTreeStartLocation_(),typeName=this.parseTypeName_();if(peek(OPEN_ANGLE)){var args$__19=this.parseTypeArguments_();return new TypeReference(this.getTreeLocation_(start),typeName,args$__19)}return typeName},parseUnionTypeSuffix_:function(start,elementType){if(peek(BAR)){var types=[elementType];for(this.eat_(BAR);;)if(types.push(this.parsePrimaryType_()),!this.eatIf_(BAR))break;return new UnionType(this.getTreeLocation_(start),types)}return elementType},parseArrayTypeSuffix_:function(start,elementType){var token=peekTokenNoLineTerminator();return token&&token.type===OPEN_SQUARE?(this.eat_(OPEN_SQUARE),this.eat_(CLOSE_SQUARE),elementType=new ArrayType(this.getTreeLocation_(start),elementType),this.parseArrayTypeSuffix_(start,elementType)):elementType},parseTypeArguments_:function(){var start=this.getTreeStartLocation_();this.eat_(OPEN_ANGLE);for(var args=[this.parseType_()];peek(COMMA);)this.eat_(COMMA),args.push(this.parseType_());var token=nextCloseAngle();return token.type!==CLOSE_ANGLE?this.parseUnexpectedToken_(token):new TypeArguments(this.getTreeLocation_(start),args)},parseConstructorType_:function(){var start=this.getTreeStartLocation_();this.eat_(NEW);var typeParameters=this.parseTypeParametersOpt_();this.eat_(OPEN_PAREN);var parameterList=this.parseFormalParameters_();this.eat_(CLOSE_PAREN),this.eat_(ARROW);var returnType=this.parseType_();return new ConstructorType(this.getTreeLocation_(start),typeParameters,parameterList,returnType)},parseObjectType_:function(){var start=this.getTreeStartLocation_(),typeMembers=[];this.eat_(OPEN_CURLY);for(var type;this.peekTypeMember_(type=peekType())&&(typeMembers.push(this.parseTypeMember_(type)),this.eatIf_(SEMI_COLON)););return this.eat_(CLOSE_CURLY),new ObjectType(this.getTreeLocation_(start),typeMembers)},peekTypeMember_:function(type){switch(type){case NEW:case OPEN_PAREN:case OPEN_ANGLE:case OPEN_SQUARE:case IDENTIFIER:case STRING:case NUMBER:return!0;default:return peekToken().isKeyword()}},parseTypeMember_:function(type){switch(type){case NEW:return this.parseConstructSignature_();case OPEN_PAREN:case OPEN_ANGLE:return this.parseCallSignature_();case OPEN_SQUARE:return this.parseIndexSignature_()}var start=this.getTreeStartLocation_(),propertyName=this.parseLiteralPropertyName_(),isOpt=this.eatIf_(QUESTION);if(type=peekType(),type===OPEN_ANGLE||type===OPEN_PAREN){var callSignature=this.parseCallSignature_();return new MethodSignature(this.getTreeLocation_(start),propertyName,isOpt,callSignature)}var typeAnnotation=this.parseTypeAnnotationOpt_();return new PropertySignature(this.getTreeLocation_(start),propertyName,isOpt,typeAnnotation)},parseCallSignature_:function(){var start=this.getTreeStartLocation_(),typeParameters=this.parseTypeParametersOpt_();this.eat_(OPEN_PAREN);var parameterList=this.parseFormalParameters_();this.eat_(CLOSE_PAREN);var returnType=this.parseTypeAnnotationOpt_();return new CallSignature(this.getTreeLocation_(start),typeParameters,parameterList,returnType)},parseConstructSignature_:function(){var start=this.getTreeStartLocation_();this.eat_(NEW);var typeParameters=this.parseTypeParametersOpt_();this.eat_(OPEN_PAREN);var parameterList=this.parseFormalParameters_();this.eat_(CLOSE_PAREN);var returnType=this.parseTypeAnnotationOpt_();return new ConstructSignature(this.getTreeLocation_(start),typeParameters,parameterList,returnType)},parseIndexSignature_:function(){var start=this.getTreeStartLocation_();this.eat_(OPEN_SQUARE);var id=this.eatId_();this.eat_(COLON);var typeName,typeStart=this.getTreeStartLocation_();typeName=this.peekPredefinedString_("string")?this.eatId_("string"):this.eatId_("number");var indexType=new PredefinedType(this.getTreeLocation_(typeStart),typeName);this.eat_(CLOSE_SQUARE),this.eat_(COLON);var typeAnnotation=this.parseType_();return new IndexSignature(this.getTreeLocation_(start),id,indexType,typeAnnotation)},parseFunctionType_:function(){var start=this.getTreeStartLocation_(),typeParameters=this.parseTypeParametersOpt_();this.eat_(OPEN_PAREN);var parameterList=this.parseFormalParameters_();this.eat_(CLOSE_PAREN),this.eat_(ARROW);var returnType=this.parseType_();return new FunctionType(this.getTreeLocation_(start),typeParameters,parameterList,returnType)},parseTypeQuery_:function(start){throw"NYI"},peekTypeParameters_:function(){return peek(OPEN_ANGLE)},parseTypeParametersOpt_:function(){return peek(OPEN_ANGLE)?this.parseTypeParameters_():null},parseTypeParameters_:function(){var start=this.getTreeStartLocation_();this.eat_(OPEN_ANGLE);for(var parameters=[this.parseTypeParameter_()];peek(COMMA);)this.eat_(COMMA),parameters.push(this.parseTypeParameter_());return this.eat_(CLOSE_ANGLE),new TypeParameters(this.getTreeLocation_(start),parameters)},parseTypeParameter_:function(){var start=this.getTreeStartLocation_(),id=this.eatId_(),extendsType=null;return this.eatIf_(EXTENDS)&&(extendsType=this.parseType_()),new TypeParameter(this.getTreeLocation_(start),id,extendsType)},parseNamedOrPredefinedType_:function(){var start=this.getTreeStartLocation_();switch(peekToken().value){case"any":case"number":case"boolean":case"string":var token=nextToken();return new PredefinedType(this.getTreeLocation_(start),token);default:return this.parseTypeName_()}},parseTypeName_:function(){for(var start=this.getTreeStartLocation_(),id=this.eatId_(),typeName=new TypeName(this.getTreeLocation_(start),null,id);this.eatIf_(PERIOD);){var memberName=this.eatIdName_();typeName=new TypeName(this.getTreeLocation_(start),typeName,memberName);
}return typeName},parseInterfaceDeclaration_:function(){var start=this.getTreeStartLocation_();this.eat_(INTERFACE);var extendsClause,name=this.eatId_(),typeParameters=this.parseTypeParametersOpt_();extendsClause=this.eatIf_(EXTENDS)?this.parseInterfaceExtendsClause_():[];var objectType=this.parseObjectType_();return new InterfaceDeclaration(this.getTreeLocation_(start),name,typeParameters,extendsClause,objectType)},parseInterfaceExtendsClause_:function(){for(var result=[this.parseTypeReference_()];this.eatIf_(COMMA);)result.push(this.parseTypeReference_());return result},parseAnnotatedDeclarations_:function(parsingModuleItem){this.pushAnnotations_();var declaration,type=peekType();return declaration=parsingModuleItem?this.parseModuleItem_(type):this.parseStatementListItem_(type),this.annotations_.length>0&&this.reportError_(this.annotations_[0].location,"Unsupported annotated expression"),declaration},parseAnnotations_:function(){for(var annotations=[];this.eatIf_(AT);)annotations.push(this.parseAnnotation_());return annotations},pushAnnotations_:function(){this.annotations_=this.parseAnnotations_()},popAnnotations_:function(){var annotations=this.annotations_;return this.annotations_=[],annotations},parseAnnotation_:function(){var start=this.getTreeStartLocation_(),expression=this.parseMemberExpressionNoNew_(),args=null;return peek(OPEN_PAREN)&&(args=this.parseArguments_()),new Annotation(this.getTreeLocation_(start),expression,args)},parseTypeAliasDeclaration_:function(){var start=this.getTreeStartLocation_();this.eatId_(TYPE);var name=this.eatId_();this.eat_(EQUAL);var type=this.parseType_();return this.eatPossibleImplicitSemiColon_(),new TypeAliasDeclaration(this.getTreeLocation_(start),name,type)},parseJsxElement_:function(){var token=this.eatJsx_(OPEN_ANGLE);return this.parseJsxElementContinuation_(token.location.start)},parseJsxElementContinuation_:function(start){var name=this.parseJsxElementName_(),attrs=this.parseJsxAttributes_(),children=[];switch(peekJsxToken().type){case SLASH:nextJsxToken(),this.eat_(CLOSE_ANGLE);break;case CLOSE_ANGLE:nextJsxTextToken();loop:for(;;){var token=nextJsxTextToken();switch(token.type){case STRING:children.push(new JsxText(token.location,token));continue;case OPEN_CURLY:var start$__20=token.location.start,expression=null;peek(CLOSE_CURLY)||(expression=this.parseAssignmentExpression_(ALLOW_IN)),this.eatJsx_(CLOSE_CURLY);var placeHolder=new JsxPlaceholder(this.getTreeLocation_(start$__20),expression);children.push(placeHolder);continue;case OPEN_ANGLE:var start$__21=token.location.start;if(peekJsxToken().type===SLASH){nextJsxToken();break loop}var subElement=this.parseJsxElementContinuation_(start$__21);children.push(subElement),resetScanner(subElement.location.end.offset);continue;default:return this.parseSyntaxError_("Unexpected token")}}var closeName=this.parseJsxElementName_();jsxNamesEqual(name,closeName)||this.reportError_(closeName.location,"Non matching JSX closing tag. Expected "+jsxNameToString(name)+", found "+jsxNameToString(closeName)),this.eat_(CLOSE_ANGLE);break;default:return this.parseSyntaxError_("Unexpected token")}var element=new JsxElement(this.getTreeLocation_(start),name,attrs,children);return element},parseJsxElementName_:function(){var tokens=[],id=this.eatJsx_(JSX_IDENTIFIER),start=id.location.start;for(tokens.push(id);peekJsxToken().type===PERIOD;){nextJsxToken();var id$__22=this.eatJsx_(JSX_IDENTIFIER);tokens.push(id$__22)}return new JsxElementName(this.getTreeLocation_(start),tokens)},parseJsxAttributes_:function(){var attributes=[];loop:for(;;)switch(peekJsxToken().type){case JSX_IDENTIFIER:attributes.push(this.parseJsxAttribute_());break;case OPEN_CURLY:attributes.push(this.parseJsxSpreadAttribute_());break;default:break loop}return attributes},parseJsxAttribute_:function(){var name=this.eatJsx_(JSX_IDENTIFIER),start=name.location.start,value=null;return peekJsxToken().type===EQUAL&&(this.eatJsx_(EQUAL),value=this.parseJsxAttributeValue_()),new JsxAttribute(this.getTreeLocation_(start),name,value)},parseJsxAttributeValue_:function(){var token=peekJsxToken(),start=token.location.start;switch(token.type){case STRING:return nextJsxToken(),new LiteralExpression(this.getTreeLocation_(start),token);case OPEN_CURLY:nextJsxToken();var expr=this.parseAssignmentExpression_(ALLOW_IN);return this.eatJsx_(CLOSE_CURLY),new JsxPlaceholder(this.getTreeLocation_(start),expr);case OPEN_ANGLE:return this.parseJsxElement_()}return this.parseSyntaxError_("Unexpected token")},parseJsxSpreadAttribute_:function(){var token=peekJsxToken(),start=token.location.start;nextJsxToken(),this.eatJsx_(DOT_DOT_DOT);var expr=this.parseAssignmentExpression_(ALLOW_IN);return this.eatJsx_(CLOSE_CURLY),new JsxSpreadAttribute(this.getTreeLocation_(start),expr)},eatPossibleImplicitSemiColon_:function(){var token=peekTokenNoLineTerminator();if(token){switch(token.type){case SEMI_COLON:return void nextToken();case END_OF_FILE:case CLOSE_CURLY:return}this.reportError_(token.location,"Semi-colon expected")}},peekImplicitSemiColon_:function(){switch(peekType()){case SEMI_COLON:case CLOSE_CURLY:case END_OF_FILE:return!0}var token=peekTokenNoLineTerminator();return null===token},eatOpt_:function(expectedTokenType){return peek(expectedTokenType)?nextToken():null},eatIdOpt_:function(){return peek(IDENTIFIER)?this.eatId_():null},eatId_:function(){var expected=arguments[0],token=nextToken();if(token.type===IDENTIFIER)return expected&&token.value!==expected&&this.reportExpectedError_(token,expected),token;if(token.isStrictKeyword()){if(!this.strictMode_)return new IdentifierToken(token.location,token.type);this.reportReservedIdentifier_(token)}else this.reportExpectedError_(token,expected||"identifier");return token},eatIdName_:function(){var t=nextToken();return t.type!==IDENTIFIER?t.isKeyword()?new IdentifierToken(t.location,t.type):(this.reportExpectedError_(t,"identifier"),null):t},eat_:function(expectedTokenType){return this.isExpectedToken_(nextToken(),expectedTokenType)},eatIf_:function(expectedTokenType){return!!peek(expectedTokenType)&&(nextToken(),!0)},eatJsx_:function(expectedTokenType){return this.isExpectedToken_(nextJsxToken(),expectedTokenType)},isExpectedToken_:function(token,expectedTokenType){return token.type!==expectedTokenType&&this.reportExpectedError_(token,expectedTokenType),token},reportExpectedError_:function(token,expected){this.reportError_(token.location,"Unexpected token "+token)},getTreeStartLocation_:function(){return peekLocation().start},getTreeEndLocation_:function(){return getLastToken().location.end},getTreeLocation_:function(start){return new SourceRange(start,this.getTreeEndLocation_())},handleComment:function(range){},isAtEnd:function(){return isAtEnd()},reportError_:function(location,message){this.errorReporter_.reportError(location,message)},reportReservedIdentifier_:function(token){this.reportError_(token.location,token.type+" is a reserved identifier")},validateAssignmentTarget_:function(tree,operation){tree.isPattern()||isValidSimpleAssignmentTarget(tree,this.strictMode_)||this.reportError_(tree.location,"Invalid left-hand side expression in "+operation)}},{})}();return{get Parser(){return Parser}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/SourcePosition.js",[],function(){"use strict";var SourcePosition=function(){function SourcePosition(source,offset){this.source=source,this.offset=offset,this.line_=-1,this.column_=-1}return $traceurRuntime.createClass(SourcePosition,{get line(){return this.line_===-1&&(this.line_=this.source.lineNumberTable.getLine(this.offset)),this.line_},get column(){return this.column_===-1&&(this.column_=this.source.lineNumberTable.getColumn(this.offset)),this.column_},toString:function(){var name=this.source?this.source.name:"";return name+":"+(this.line+1)+":"+(this.column+1)}},{})}();return{get SourcePosition(){return SourcePosition}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/LineNumberTable.js",[],function(){"use strict";function computeLineStartOffsets(source){for(var lineStartOffsets=[0],k=1,index=0;index<source.length;index++){var code=source.charCodeAt(index);isLineTerminator(code)&&(13===code&&10===source.charCodeAt(index+1)&&index++,lineStartOffsets[k++]=index+1)}return lineStartOffsets[k++]=MAX_INT_REPRESENTATION,lineStartOffsets}var SourcePosition=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/SourcePosition.js","traceur@0.0.107/src/syntax/LineNumberTable.js")).SourcePosition,SourceRange=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/SourceRange.js","traceur@0.0.107/src/syntax/LineNumberTable.js")).SourceRange,isLineTerminator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Scanner.js","traceur@0.0.107/src/syntax/LineNumberTable.js")).isLineTerminator,MAX_INT_REPRESENTATION=9007199254740992,LineNumberTable=function(){function LineNumberTable(sourceFile){this.sourceFile_=sourceFile,this.lineStartOffsets_=null,this.lastLine_=0,this.lastOffset_=-1}return $traceurRuntime.createClass(LineNumberTable,{ensureLineStartOffsets_:function(){this.lineStartOffsets_||(this.lineStartOffsets_=computeLineStartOffsets(this.sourceFile_.contents))},getSourcePosition:function(offset){return new SourcePosition(this.sourceFile_,offset)},getLine:function(offset){if(offset===this.lastOffset_)return this.lastLine_;if(this.ensureLineStartOffsets_(),offset<0)return 0;var line;if(offset<this.lastOffset_){for(var i=this.lastLine_;i>=0;i--)if(this.lineStartOffsets_[i]<=offset){line=i;break}}else for(var i$__1=this.lastLine_;!0;i$__1++)if(this.lineStartOffsets_[i$__1]>offset){line=i$__1-1;break}return this.lastLine_=line,this.lastOffset_=offset,line},offsetOfLine:function(line){return this.ensureLineStartOffsets_(),this.lineStartOffsets_[line]},getColumn:function(offset){var line=this.getLine(offset);return offset-this.lineStartOffsets_[line]},getSourceRange:function(startOffset,endOffset){return new SourceRange(this.getSourcePosition(startOffset),this.getSourcePosition(endOffset))}},{})}();return{get LineNumberTable(){return LineNumberTable}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/SourceFile.js",[],function(){"use strict";var LineNumberTable=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./LineNumberTable.js","traceur@0.0.107/src/syntax/SourceFile.js")).LineNumberTable,SourceFile=function(){function SourceFile(name,contents){this.name=name,this.contents=contents,this.lineNumberTable=new LineNumberTable(this)}return $traceurRuntime.createClass(SourceFile,{},{})}();return{get SourceFile(){return SourceFile}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/PlaceholderParser.js",[],function(){"use strict";function makeParseFunction(doParse){var cache=new Map;return function(sourceLiterals){for(var values=[],$__1=1;$__1<arguments.length;$__1++)values[$__1-1]=arguments[$__1];return parse(sourceLiterals,values,doParse,cache)}}function parse(sourceLiterals,values,doParse,cache){var tree=cache.get(sourceLiterals);if(!tree){var source=insertPlaceholderIdentifiers(sourceLiterals),errorReporter=new CollectingErrorReporter,parser=getParser(source,errorReporter);if(tree=doParse(parser),errorReporter.hadError()||!tree||!parser.isAtEnd())throw Error("Internal error trying to parse:\n\n"+source+"\n\n"+errorReporter.errorsAsString());cache.set(sourceLiterals,tree)}return values.length?tree instanceof ParseTree?new PlaceholderTransformer(values).transformAny(tree):new PlaceholderTransformer(values).transformList(tree):tree}function insertPlaceholderIdentifiers(sourceLiterals){for(var source=sourceLiterals[0],i=1;i<sourceLiterals.length;i++)source+=PREFIX+(i-1+"")+sourceLiterals[i];return source}function getParser(source,errorReporter){var file=new SourceFile(null,source),options=new Options;return options.experimental=!0,new Parser(file,errorReporter,options)}function convertValueToExpression(value){if(value instanceof ParseTree)return value;if(value instanceof IdentifierToken)return createIdentifierExpression(value);if(value instanceof LiteralToken)return new LiteralExpression(value.location,value);if(Array.isArray(value))return value[0]instanceof ParseTree?1===value.length?value[0]:value[0].isStatement()?createBlock(value):createParenExpression(createCommaExpression(value)):createArrayLiteral(value.map(convertValueToExpression));if(null===value)return createNullLiteral();if(void 0===value)return createVoid0();switch(typeof value){case"string":return createStringLiteral(value);case"boolean":return createBooleanLiteral(value);case"number":return createNumberLiteral(value)}throw Error("Not implemented")}function convertValueToIdentifierToken(value){return value instanceof IdentifierToken?value:createIdentifierToken(value)}function convertValueToType(value){if(null===value)return null;if(value instanceof ParseTree)return value;if("string"==typeof value)return new TypeName(null,null,convertValueToIdentifierToken(value));if(value instanceof IdentifierToken)return new TypeName(null,null,value);throw Error("Not implemented")}var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")),ARGUMENT_LIST=$__2.ARGUMENT_LIST,BLOCK=$__2.BLOCK,EXPRESSION_STATEMENT=$__2.EXPRESSION_STATEMENT,FUNCTION_BODY=$__2.FUNCTION_BODY,IDENTIFIER_EXPRESSION=$__2.IDENTIFIER_EXPRESSION,IdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/IdentifierToken.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).IdentifierToken,LiteralToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/LiteralToken.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).LiteralToken,CollectingErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/CollectingErrorReporter.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).CollectingErrorReporter,Options=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../Options.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).Options,ParseTree=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTree.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).ParseTree,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).ParseTreeTransformer,Parser=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/Parser.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).Parser,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")),LiteralExpression=$__10.LiteralExpression,LiteralPropertyName=$__10.LiteralPropertyName,TypeName=$__10.TypeName,SourceFile=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/SourceFile.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).SourceFile,IDENTIFIER=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")).IDENTIFIER,$__13=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/PlaceholderParser.js")),createArrayLiteral=$__13.createArrayLiteral,createBindingIdentifier=$__13.createBindingIdentifier,createBlock=$__13.createBlock,createBooleanLiteral=$__13.createBooleanLiteral,createCommaExpression=$__13.createCommaExpression,createExpressionStatement=$__13.createExpressionStatement,createFunctionBody=$__13.createFunctionBody,createIdentifierExpression=$__13.createIdentifierExpression,createIdentifierToken=$__13.createIdentifierToken,createMemberExpression=$__13.createMemberExpression,createNullLiteral=$__13.createNullLiteral,createNumberLiteral=$__13.createNumberLiteral,createParenExpression=$__13.createParenExpression,createStringLiteral=$__13.createStringLiteral,createVoid0=$__13.createVoid0,NOT_FOUND={},parseExpression=makeParseFunction(function(p){return p.parseExpression()}),parseStatement=makeParseFunction(function(p){return p.parseStatement()}),parseModule=makeParseFunction(function(p){return p.parseModule()}),parseScript=makeParseFunction(function(p){return p.parseScript()}),parseStatements=makeParseFunction(function(p){return p.parseStatements()}),parsePropertyDefinition=makeParseFunction(function(p){return p.parsePropertyDefinition()}),PREFIX="$__placeholder__",PlaceholderTransformer=function($__super){function PlaceholderTransformer(values){$traceurRuntime.superConstructor(PlaceholderTransformer).call(this),this.values=values}return $traceurRuntime.createClass(PlaceholderTransformer,{getValueAt:function(index){return this.values[index]},getValue_:function(str){return 0!==str.indexOf(PREFIX)?NOT_FOUND:this.getValueAt(+str.slice(PREFIX.length))},transformIdentifierExpression:function(tree){var value=this.getValue_(tree.identifierToken.value);return value===NOT_FOUND?tree:convertValueToExpression(value)},transformBindingIdentifier:function(tree){var value=this.getValue_(tree.identifierToken.value);return value===NOT_FOUND?tree:createBindingIdentifier(value)},transformExpressionStatement:function(tree){if(tree.expression.type===IDENTIFIER_EXPRESSION){var transformedExpression=this.transformIdentifierExpression(tree.expression);return transformedExpression===tree.expression?tree:transformedExpression.isStatementListItem()||transformedExpression.type===FUNCTION_BODY?transformedExpression:createExpressionStatement(transformedExpression)}return $traceurRuntime.superGet(this,PlaceholderTransformer.prototype,"transformExpressionStatement").call(this,tree)},transformBlock:function(tree){if(1===tree.statements.length&&tree.statements[0].type===EXPRESSION_STATEMENT){var transformedStatement=this.transformExpressionStatement(tree.statements[0]);if(transformedStatement===tree.statements[0])return tree;if(transformedStatement.type===BLOCK)return transformedStatement}return $traceurRuntime.superGet(this,PlaceholderTransformer.prototype,"transformBlock").call(this,tree)},transformFunctionBody:function(tree){if(1===tree.statements.length&&tree.statements[0].type===EXPRESSION_STATEMENT){var transformedStatement=this.transformExpressionStatement(tree.statements[0]);if(transformedStatement.type===FUNCTION_BODY)return transformedStatement;if(transformedStatement===tree.statements[0])return tree;if(transformedStatement.type===BLOCK)return createFunctionBody(transformedStatement.statements)}return $traceurRuntime.superGet(this,PlaceholderTransformer.prototype,"transformFunctionBody").call(this,tree)},transformMemberExpression:function(tree){var value=this.getValue_(tree.memberName.value);if(value===NOT_FOUND)return $traceurRuntime.superGet(this,PlaceholderTransformer.prototype,"transformMemberExpression").call(this,tree);var operand=this.transformAny(tree.operand);return createMemberExpression(operand,value)},transformLiteralPropertyName:function(tree){if(tree.literalToken.type===IDENTIFIER){var value=this.getValue_(tree.literalToken.value);if(value!==NOT_FOUND)return new LiteralPropertyName(null,convertValueToIdentifierToken(value))}return $traceurRuntime.superGet(this,PlaceholderTransformer.prototype,"transformLiteralPropertyName").call(this,tree)},transformArgumentList:function(tree){if(1===tree.args.length&&tree.args[0].type===IDENTIFIER_EXPRESSION){var arg0=this.transformAny(tree.args[0]);if(arg0===tree.args[0])return tree;if(arg0.type===ARGUMENT_LIST)return arg0}return $traceurRuntime.superGet(this,PlaceholderTransformer.prototype,"transformArgumentList").call(this,tree)},transformTypeName:function(tree){var value=this.getValue_(tree.name.value);if(value===NOT_FOUND)return $traceurRuntime.superGet(this,PlaceholderTransformer.prototype,"transformTypeName").call(this,tree);var moduleName=this.transformAny(tree.moduleName);return null!==moduleName?new TypeName(null,moduleName,convertValueToIdentifierToken(value)):convertValueToType(value)}},{},$__super)}(ParseTreeTransformer);return{get parseExpression(){return parseExpression},get parseStatement(){return parseStatement},get parseModule(){return parseModule},get parseScript(){return parseScript},get parseStatements(){return parseStatements},get parsePropertyDefinition(){return parsePropertyDefinition},get PlaceholderTransformer(){return PlaceholderTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/DestructuringTransformer.js",[],function(){"use strict";function hasDestructuring(tree){return tree.declarations.some(function(declaration){return declaration.lvalue.isPattern()})}var $__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js")),ARRAY_LITERAL=$__8.ARRAY_LITERAL,ARRAY_PATTERN=$__8.ARRAY_PATTERN,ASSIGNMENT_ELEMENT=$__8.ASSIGNMENT_ELEMENT,BINDING_ELEMENT=$__8.BINDING_ELEMENT,BINDING_IDENTIFIER=$__8.BINDING_IDENTIFIER,BLOCK=$__8.BLOCK,CALL_EXPRESSION=$__8.CALL_EXPRESSION,COMPUTED_PROPERTY_NAME=$__8.COMPUTED_PROPERTY_NAME,IDENTIFIER_EXPRESSION=$__8.IDENTIFIER_EXPRESSION,LITERAL_EXPRESSION=$__8.LITERAL_EXPRESSION,MEMBER_EXPRESSION=$__8.MEMBER_EXPRESSION,MEMBER_LOOKUP_EXPRESSION=$__8.MEMBER_LOOKUP_EXPRESSION,OBJECT_LITERAL=$__8.OBJECT_LITERAL,OBJECT_PATTERN_FIELD=$__8.OBJECT_PATTERN_FIELD,OBJECT_PATTERN=$__8.OBJECT_PATTERN,PAREN_EXPRESSION=$__8.PAREN_EXPRESSION,VARIABLE_DECLARATION_LIST=$__8.VARIABLE_DECLARATION_LIST,VARIABLE_STATEMENT=$__8.VARIABLE_STATEMENT,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js")),AnonBlock=$__9.AnonBlock,AssignmentElement=$__9.AssignmentElement,BindingElement=$__9.BindingElement,Catch=$__9.Catch,ExportDeclaration=$__9.ExportDeclaration,ForInStatement=$__9.ForInStatement,ForOfStatement=$__9.ForOfStatement,ForOnStatement=$__9.ForOnStatement,VariableDeclarationList=$__9.VariableDeclarationList,VariableStatement=$__9.VariableStatement,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js")).TempVarTransformer,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js")),EQUAL=$__11.EQUAL,LET=$__11.LET,VAR=$__11.VAR,bindingsInDestructuringPattern=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/bindingsInDestructuringPattern.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js"))["default"],$__13=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js")),createAssignmentExpression=$__13.createAssignmentExpression,createBindingIdentifier=$__13.createBindingIdentifier,createBlock=$__13.createBlock,createCommaExpression=$__13.createCommaExpression,createExpressionStatement=$__13.createExpressionStatement,createFunctionBody=$__13.createFunctionBody,createIdentifierExpression=$__13.createIdentifierExpression,createMemberExpression=$__13.createMemberExpression,createMemberLookupExpression=$__13.createMemberLookupExpression,createParenExpression=$__13.createParenExpression,createVariableDeclaration=$__13.createVariableDeclaration,createVariableDeclarationList=$__13.createVariableDeclarationList,createVariableStatement=$__13.createVariableStatement,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js")).parseExpression,prependStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/DestructuringTransformer.js")).prependStatements,Desugaring=function(){function Desugaring(rvalue){this.rvalue=rvalue,this.expressions=[],this.pendingExpressions=[]}return $traceurRuntime.createClass(Desugaring,{createIterator:function(iterId){this.pendingExpressions.push(parseExpression($traceurRuntime.getTemplateObject([""," = ","[Symbol.iterator]()"]),iterId,this.rvalue))},createInitializer:function(expression){if(0===this.pendingExpressions.length)return expression;var expressions=this.pendingExpressions;return this.pendingExpressions=[],expressions.push(expression),createParenExpression(createCommaExpression(expressions))},skipHole:function(iterId){this.pendingExpressions.push(parseExpression($traceurRuntime.getTemplateObject(["",".next()"]),iterId))}},{})}(),AssignmentExpressionDesugaring=function($__super){function AssignmentExpressionDesugaring(rvalue){$traceurRuntime.superConstructor(AssignmentExpressionDesugaring).call(this,rvalue)}return $traceurRuntime.createClass(AssignmentExpressionDesugaring,{assign:function(lvalue,rvalue){lvalue=lvalue instanceof AssignmentElement?lvalue.assignment:lvalue,rvalue=this.createInitializer(rvalue),this.expressions.push(createAssignmentExpression(lvalue,rvalue))},createAssignmentExpression:function(tempId,rvalue){var $__6,expressions=this.expressions;return expressions.unshift(createAssignmentExpression(tempId,rvalue)),($__6=expressions).push.apply($__6,$traceurRuntime.spread(this.pendingExpressions,[tempId])),createParenExpression(createCommaExpression(expressions))}},{},$__super)}(Desugaring),VariableDeclarationDesugaring=function($__super){function VariableDeclarationDesugaring(rvalue){$traceurRuntime.superConstructor(VariableDeclarationDesugaring).call(this,rvalue)}return $traceurRuntime.createClass(VariableDeclarationDesugaring,{assign:function(lvalue,rvalue){var binding=lvalue instanceof BindingElement?lvalue.binding:createBindingIdentifier(lvalue);rvalue=this.createInitializer(rvalue),this.expressions.push(createVariableDeclaration(binding,rvalue))},get declarations(){return this.expressions}},{},$__super)}(Desugaring),DestructuringTransformer=function($__super){function DestructuringTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(DestructuringTransformer).call(this,identifierGenerator,reporter,options),this.parameterDeclarations=null}return $traceurRuntime.createClass(DestructuringTransformer,{transformArrayPattern:function(tree){throw Error("unreachable")},transformObjectPattern:function(tree){throw Error("unreachable")},transformBinaryExpression:function(tree){this.pushTempScope();var rv;return rv=tree.operator.type===EQUAL&&tree.left.isPattern()?this.transformAny(this.desugarAssignment_(tree.left,tree.right)):$traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformBinaryExpression").call(this,tree),this.popTempScope(),rv},desugarAssignment_:function(lvalue,rvalue){var tempId=createIdentifierExpression(this.addTempVar()),desugaring=new AssignmentExpressionDesugaring(tempId);return this.desugarPattern_(desugaring,lvalue),desugaring.createAssignmentExpression(tempId,rvalue)},transformVariableDeclarationList:function(tree){var $__4=this;if(!hasDestructuring(tree))return $traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformVariableDeclarationList").call(this,tree);var desugaredDeclarations=[];tree.declarations.forEach(function(declaration){var $__6;declaration.lvalue.isPattern()?($__6=desugaredDeclarations).push.apply($__6,$traceurRuntime.spread($__4.desugarVariableDeclaration_(declaration))):desugaredDeclarations.push(declaration)});var transformedTree=this.transformVariableDeclarationList(createVariableDeclarationList(tree.declarationType,desugaredDeclarations));return transformedTree},transformForInStatement:function(tree){return this.transformForInOrOfOrOn_(tree,$traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformForInStatement"),ForInStatement)},transformForOfStatement:function(tree){return this.transformForInOrOfOrOn_(tree,$traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformForOfStatement"),ForOfStatement)},transformForOnStatement:function(tree){return this.transformForInOrOfOrOn_(tree,$traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformForOnStatement"),ForOnStatement)},transformForInOrOfOrOn_:function(tree,superMethod,constr){var $__6;if(!(tree.initializer.isPattern()||tree.initializer.type===VARIABLE_DECLARATION_LIST&&hasDestructuring(tree.initializer)))return superMethod.call(this,tree);this.pushTempScope();var declarationType,lvalue;tree.initializer.isPattern()?(declarationType=null,lvalue=tree.initializer):(declarationType=tree.initializer.declarationType,lvalue=tree.initializer.declarations[0].lvalue);var statements=[],binding=this.desugarBinding_(lvalue,statements,declarationType),initializer=createVariableDeclarationList(VAR,binding,null),collection=this.transformAny(tree.collection),body=this.transformAny(tree.body);return body.type===BLOCK?($__6=statements).push.apply($__6,$traceurRuntime.spread(body.statements)):statements.push(body),body=createBlock(statements),this.popTempScope(),new constr(tree.location,initializer,collection,body)},transformAssignmentElement:function(tree){throw Error("unreachable")},transformBindingElement:function(tree){if(!tree.binding.isPattern()||tree.initializer)return tree;null===this.parameterDeclarations&&(this.parameterDeclarations=[],this.pushTempScope());var varName=this.getTempIdentifier(),binding=createBindingIdentifier(varName),initializer=createIdentifierExpression(varName),decl=createVariableDeclaration(tree.binding,initializer);return this.parameterDeclarations.push(decl),new BindingElement(null,binding,null)},transformFunctionBody:function(tree){if(null===this.parameterDeclarations)return $traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformFunctionBody").call(this,tree);var list=createVariableDeclarationList(VAR,this.parameterDeclarations),statement=createVariableStatement(list),statements=prependStatements(tree.statements,statement),newBody=createFunctionBody(statements);this.parameterDeclarations=null;var result=$traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformFunctionBody").call(this,newBody);return this.popTempScope(),result},transformCatch:function(tree){var $__6;if(!tree.binding.isPattern())return $traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformCatch").call(this,tree);var body=this.transformAny(tree.catchBody),statements=[],kind=this.options.blockBinding?LET:VAR,binding=this.desugarBinding_(tree.binding,statements,kind);return($__6=statements).push.apply($__6,$traceurRuntime.spread(body.statements)),new Catch(tree.location,binding,createBlock(statements))},transformExportDeclaration:function(tree){if(tree.declaration.type===VARIABLE_STATEMENT&&hasDestructuring(tree.declaration.declarations)){for(var names=bindingsInDestructuringPattern(tree.declaration.declarations),declaration=this.transformAny(tree.declaration),statements=[],$__5=declaration.declarations,declarations=$__5.declarations,declarationType=$__5.declarationType,i=0;i<declarations.length;i++){var declaration$__7=declarations[i],statement=new VariableStatement(declaration$__7.location,new VariableDeclarationList(declaration$__7.location,declarationType,[declaration$__7]));names.has(declarations[i].lvalue.getStringValue())&&(statement=new ExportDeclaration(statement.location,statement,[])),statements.push(statement)}return new AnonBlock(null,statements)}return $traceurRuntime.superGet(this,DestructuringTransformer.prototype,"transformExportDeclaration").call(this,tree)},desugarBinding_:function(bindingTree,statements,declarationType){var desugaring,varName=this.getTempIdentifier(),binding=createBindingIdentifier(varName),idExpr=createIdentifierExpression(varName);return desugaring=null===declarationType?new AssignmentExpressionDesugaring(idExpr):new VariableDeclarationDesugaring(idExpr),
this.desugarPattern_(desugaring,bindingTree),null===declarationType?statements.push(createExpressionStatement(createCommaExpression(desugaring.expressions))):statements.push(createVariableStatement(this.transformVariableDeclarationList(createVariableDeclarationList(declarationType,desugaring.declarations)))),binding},desugarVariableDeclaration_:function(tree){var desugaring,initializer,tempRValueName=this.getTempIdentifier(),tempRValueIdent=createIdentifierExpression(tempRValueName);switch(tree.initializer.type){case ARRAY_LITERAL:case CALL_EXPRESSION:case IDENTIFIER_EXPRESSION:case LITERAL_EXPRESSION:case MEMBER_EXPRESSION:case MEMBER_LOOKUP_EXPRESSION:case OBJECT_LITERAL:case PAREN_EXPRESSION:initializer=tree.initializer}desugaring=new VariableDeclarationDesugaring(tempRValueIdent),desugaring.assign(desugaring.rvalue,tree.initializer);var initializerFound=this.desugarPattern_(desugaring,tree.lvalue);return initializerFound||desugaring.declarations.length>2?desugaring.declarations:(initializer||(initializer=createParenExpression(tree.initializer)),desugaring=new VariableDeclarationDesugaring(initializer),this.desugarPattern_(desugaring,tree.lvalue),desugaring.declarations)},desugarPattern_:function(desugaring,tree){var pattern,$__4=this,initializerFound=!1;switch(tree.type){case ARRAY_PATTERN:pattern=tree,this.pushTempScope();var iterId=createIdentifierExpression(this.addTempVar()),iterObjectId=createIdentifierExpression(this.addTempVar());desugaring.createIterator(iterId);for(var i=0;i<pattern.elements.length;i++){var lvalue=pattern.elements[i];null!==lvalue?lvalue.isSpreadPatternElement()?desugaring.assign(lvalue.lvalue,parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.iteratorToArray(",")"]),iterId)):(lvalue.initializer&&(initializerFound=!0),desugaring.assign(lvalue,this.createConditionalIterExpression(iterObjectId,iterId,lvalue.initializer))):desugaring.skipHole(iterId)}this.popTempScope();break;case OBJECT_PATTERN:pattern=tree;var elementHelper=function(lvalue,initializer){initializer&&(initializerFound=!0);var lookup=$__4.createConditionalMemberExpression(desugaring.rvalue,lvalue,initializer);desugaring.assign(lvalue,lookup)};pattern.fields.forEach(function(field){var lookup;switch(field.type){case ASSIGNMENT_ELEMENT:elementHelper(field.assignment,field.initializer);break;case BINDING_ELEMENT:elementHelper(field.binding,field.initializer);break;case OBJECT_PATTERN_FIELD:field.element.initializer&&(initializerFound=!0);var name=field.name;lookup=$__4.createConditionalMemberExpression(desugaring.rvalue,name,field.element.initializer),desugaring.assign(field.element,lookup);break;default:throw Error("unreachable")}});break;case PAREN_EXPRESSION:return this.desugarPattern_(desugaring,tree.expression);default:throw Error("unreachable")}return desugaring instanceof VariableDeclarationDesugaring&&0===desugaring.declarations.length&&desugaring.assign(createBindingIdentifier(this.getTempIdentifier()),desugaring.rvalue),initializerFound},createConditionalMemberExpression:function(rvalue,name,initializer){if(name.type===COMPUTED_PROPERTY_NAME)return this.createConditionalMemberLookupExpression(rvalue,name.expression,initializer);var token;switch(name.type){case BINDING_IDENTIFIER:case IDENTIFIER_EXPRESSION:token=name.identifierToken;break;default:token=name.literalToken}if(!initializer)return createMemberExpression(rvalue,token);var tempIdent=createIdentifierExpression(this.addTempVar());return parseExpression($traceurRuntime.getTemplateObject(["("," = ",".",") === void 0 ?\n        "," : ",""]),tempIdent,rvalue,token,initializer,tempIdent)},createConditionalMemberLookupExpression:function(rvalue,index,initializer){if(!initializer)return createMemberLookupExpression(rvalue,index);var tempIdent=createIdentifierExpression(this.addTempVar());return parseExpression($traceurRuntime.getTemplateObject(["("," = ","[","]) === void 0 ?\n        "," : ",""]),tempIdent,rvalue,index,initializer,tempIdent)},createConditionalIterExpression:function(iterObjectId,iterId,initializer){var expr=parseExpression($traceurRuntime.getTemplateObject(["("," =\n        ",".next()).done ? void 0 : ",".value"]),iterObjectId,iterId,iterObjectId);if(!initializer)return expr;var tempIdent=createIdentifierExpression(this.addTempVar());return parseExpression($traceurRuntime.getTemplateObject(["("," = ",") === void 0 ?\n        "," : ",""]),tempIdent,expr,initializer,tempIdent)}},{},$__super)}(TempVarTransformer);return{get DestructuringTransformer(){return DestructuringTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/ModuleSymbol.js",[],function(){"use strict";var StringMap=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../util/StringMap.js","traceur@0.0.107/src/codegeneration/module/ModuleSymbol.js")).StringMap,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../util/assert.js","traceur@0.0.107/src/codegeneration/module/ModuleSymbol.js")).assert,ExportsList=function(){function ExportsList(normalizedName){this.exports_=new StringMap,null!==normalizedName?this.normalizedName=normalizedName.replace(/\\/g,"/"):this.normalizedName=null}return $traceurRuntime.createClass(ExportsList,{addExport:function(name,tree){assert(!this.exports_.has(name)),this.exports_.set(name,tree)},getExport:function(name){return this.exports_.get(name)},getExports:function(){return this.exports_.keysAsArray()},addExportsFromModule:function(module){var $__2=this;Object.getOwnPropertyNames(module).forEach(function(name){$__2.addExport(name,!0)})}},{})}(),ModuleSymbol=function($__super){function ModuleSymbol(tree,normalizedName){$traceurRuntime.superConstructor(ModuleSymbol).call(this,normalizedName),this.tree=tree,this.imports_=new StringMap}return $traceurRuntime.createClass(ModuleSymbol,{addImport:function(name,tree){assert(!this.imports_.has(name)),this.imports_.set(name,tree)},getImport:function(name){return this.imports_.get(name)}},{},$__super)}(ExportsList);return{get ExportsList(){return ExportsList},get ModuleSymbol(){return ModuleSymbol}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/ModuleVisitor.js",[],function(){"use strict";var ParseTreeVisitor=($traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleSymbol.js","traceur@0.0.107/src/codegeneration/module/ModuleVisitor.js")).ExportsList,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/codegeneration/module/ModuleVisitor.js")).ParseTreeVisitor),$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/module/ModuleVisitor.js")),EXPORT_DECLARATION=$__3.EXPORT_DECLARATION,IMPORT_DECLARATION=$__3.IMPORT_DECLARATION,ModuleVisitor=function($__super){function ModuleVisitor(reporter,loader,moduleSymbol){$traceurRuntime.superConstructor(ModuleVisitor).call(this),this.reporter=reporter,this.loader_=loader,this.moduleSymbol=moduleSymbol}return $traceurRuntime.createClass(ModuleVisitor,{getExportsListForModuleSpecifier:function(name){var referrer=this.moduleSymbol.normalizedName;return this.loader_.getExportsListForModuleSpecifier(name,referrer)},visitFunctionDeclaration:function(tree){},visitFunctionExpression:function(tree){},visitFunctionBody:function(tree){},visitBlock:function(tree){},visitClassDeclaration:function(tree){},visitClassExpression:function(tree){},visitModuleElement_:function(element){switch(element.type){case EXPORT_DECLARATION:case IMPORT_DECLARATION:this.visitAny(element)}},visitScript:function(tree){tree.scriptItemList.forEach(this.visitModuleElement_,this)},visitModule:function(tree){tree.scriptItemList.forEach(this.visitModuleElement_,this)},reportError:function(tree,message){this.reporter.reportError(tree.location,message)}},{},$__super)}(ParseTreeVisitor);return{get ModuleVisitor(){return ModuleVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/ExportVisitor.js",[],function(){"use strict";var ModuleVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleVisitor.js","traceur@0.0.107/src/codegeneration/module/ExportVisitor.js")).ModuleVisitor,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../util/assert.js","traceur@0.0.107/src/codegeneration/module/ExportVisitor.js")).assert,ExportVisitor=function($__super){function ExportVisitor(reporter,loader,moduleSymbol){$traceurRuntime.superConstructor(ExportVisitor).call(this,reporter,loader,moduleSymbol),this.inExport_=!1,this.moduleSpecifier=null}return $traceurRuntime.createClass(ExportVisitor,{addExport_:function(name,tree){assert("string"==typeof name),this.inExport_&&this.addExport(name,tree)},addExport:function(name,tree){var moduleSymbol=this.moduleSymbol,existingExport=moduleSymbol.getExport(name);existingExport?this.reportError(tree,"Duplicate export. '"+name+"' was previously exported at "+existingExport.location.start):moduleSymbol.addExport(name,tree)},visitClassDeclaration:function(tree){this.addExport_(tree.name.identifierToken.value,tree)},visitExportDeclaration:function(tree){this.inExport_=!0,this.visitAny(tree.declaration),this.inExport_=!1},visitNamedExport:function(tree){this.moduleSpecifier=tree.moduleSpecifier,this.visitAny(tree.exportClause),this.moduleSpecifier=null},visitExportDefault:function(tree){this.addExport_("default",tree)},visitExportSpecifier:function(tree){this.addExport_((tree.rhs||tree.lhs).value,tree)},visitExportStar:function(tree){var $__1=this,name=this.moduleSpecifier.token.processedValue,exportList=this.getExportsListForModuleSpecifier(name);exportList&&exportList.getExports().forEach(function(name){return $__1.addExport(name,tree)})},visitNameSpaceExport:function(tree){this.addExport_(tree.name.value,tree)},visitForwardDefaultExport:function(tree){this.addExport_(tree.name.value,tree)},visitFunctionDeclaration:function(tree){this.addExport_(tree.name.getStringValue(),tree)},visitVariableDeclaration:function(tree){this.visitAny(tree.lvalue)},visitBindingIdentifier:function(tree){this.addExport_(tree.getStringValue(),tree)},visitBindingElement:function(tree){this.visitAny(tree.binding)},visitTypeAliasDeclaration:function(tree){this.addExport(tree.name.value,tree)}},{},$__super)}(ModuleVisitor);return{get ExportVisitor(){return ExportVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/DirectExportVisitor.js",[],function(){"use strict";var ExportVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ExportVisitor.js","traceur@0.0.107/src/codegeneration/module/DirectExportVisitor.js")).ExportVisitor,DirectExportVisitor=function($__super){function DirectExportVisitor(){$traceurRuntime.superConstructor(DirectExportVisitor).call(this,null,null,null),this.namedExports=[],this.starExports=[]}return $traceurRuntime.createClass(DirectExportVisitor,{addExport:function(name,tree){this.namedExports.push({name:name,tree:tree,moduleSpecifier:this.moduleSpecifier})},visitExportStar:function(tree){this.starExports.push(this.moduleSpecifier)},hasExports:function(){return 0!==this.namedExports.length||0!==this.starExports.length}},{},$__super)}(ExportVisitor);return{get DirectExportVisitor(){return DirectExportVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ImportSimplifyingTransformer.js",[],function(){"use strict";var $__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ImportSimplifyingTransformer.js")),AnonBlock=$__5.AnonBlock,ImportDeclaration=$__5.ImportDeclaration,ImportSpecifier=$__5.ImportSpecifier,ImportSpecifierSet=$__5.ImportSpecifierSet,Module=$__5.Module,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/ImportSimplifyingTransformer.js")).ParseTreeTransformer,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ImportSimplifyingTransformer.js")),ANON_BLOCK=$__7.ANON_BLOCK,IMPORT_CLAUSE_PAIR=$__7.IMPORT_CLAUSE_PAIR,IMPORT_DECLARATION=$__7.IMPORT_DECLARATION,IMPORT_SPECIFIER_SET=$__7.IMPORT_SPECIFIER_SET,IMPORTED_BINDING=$__7.IMPORTED_BINDING,NAME_SPACE_IMPORT=$__7.NAME_SPACE_IMPORT,createIdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ImportSimplifyingTransformer.js")).createIdentifierToken,ImportSimplifyingTransformer=function($__super){function ImportSimplifyingTransformer(){$traceurRuntime.superConstructor(ImportSimplifyingTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ImportSimplifyingTransformer,{transformModule:function(tree){for(var $__2,statements=[],i=0;i<tree.scriptItemList.length;i++){var item=tree.scriptItemList[i];switch(item.type){case IMPORT_DECLARATION:var transformed=this.transformAny(item);transformed.type===ANON_BLOCK?($__2=statements).push.apply($__2,$traceurRuntime.spread(transformed.statements)):statements.push(transformed);break;default:statements.push(item)}}return new Module(tree.location,statements,tree.moduleName)},transformImportDeclaration:function(tree){var importClause=tree.importClause;if(null===importClause){var set=new ImportSpecifierSet(null,[]);return new ImportDeclaration(tree.location,set,tree.moduleSpecifier)}if(importClause.type===NAME_SPACE_IMPORT)return tree;if(importClause.type===IMPORTED_BINDING){var specifier=this.transformAny(importClause),set$__3=new ImportSpecifierSet(null,[specifier]);return new ImportDeclaration(tree.location,set$__3,tree.moduleSpecifier)}if(importClause.type===IMPORT_CLAUSE_PAIR){var $__1=importClause,first=$__1.first,second=$__1.second;if(second.type===IMPORT_SPECIFIER_SET){var defaultSpecifier=this.transformAny(first),specifiers=$traceurRuntime.spread([defaultSpecifier],second.specifiers),set$__4=new ImportSpecifierSet(first.location,specifiers);return new ImportDeclaration(tree.location,set$__4,tree.moduleSpecifier)}var firstImport=new ImportDeclaration(tree.location,first,tree.moduleSpecifier);firstImport=this.transformAny(firstImport);var secondImport=new ImportDeclaration(tree.location,second,tree.moduleSpecifier);return new AnonBlock(null,[firstImport,secondImport])}return $traceurRuntime.superGet(this,ImportSimplifyingTransformer.prototype,"transformImportDeclaration").call(this,tree)},transformImportSpecifier:function(tree){return tree},transformImportedBinding:function(tree){var name=createIdentifierToken("default");return new ImportSpecifier(tree.location,tree,name)}},{},$__super)}(ParseTreeTransformer);return{get ImportSimplifyingTransformer(){return ImportSimplifyingTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/util/url.js",[],function(){"use strict";var canonicalizeUrl=$traceurRuntime.canonicalizeUrl,isAbsolute=$traceurRuntime.isAbsolute,removeDotSegments=$traceurRuntime.removeDotSegments,resolveUrl=$traceurRuntime.resolveUrl;return{get canonicalizeUrl(){return canonicalizeUrl},get isAbsolute(){return isAbsolute},get removeDotSegments(){return removeDotSegments},get resolveUrl(){return resolveUrl}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ModuleTransformer.js",[],function(){"use strict";function removeUseStrictDirectives(tree){var result=tree.scriptItemList.filter(function(tree){return!tree.isUseStrictDirective()});return new Module(tree.location,result,tree.moduleName)}var $__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")),AnonBlock=$__7.AnonBlock,BindingElement=$__7.BindingElement,LiteralPropertyName=($__7.EmptyStatement,$__7.LiteralPropertyName),Module=$__7.Module,ObjectPattern=$__7.ObjectPattern,ObjectPatternField=$__7.ObjectPatternField,Script=$__7.Script,DestructuringTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./DestructuringTransformer.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")).DestructuringTransformer,DirectExportVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./module/DirectExportVisitor.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")).DirectExportVisitor,ImportSimplifyingTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ImportSimplifyingTransformer.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")).ImportSimplifyingTransformer,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")).TempVarTransformer,$__12=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")),CLASS_DECLARATION=$__12.CLASS_DECLARATION,EXPORT_DEFAULT=$__12.EXPORT_DEFAULT,EXPORT_SPECIFIER=$__12.EXPORT_SPECIFIER,FORWARD_DEFAULT_EXPORT=$__12.FORWARD_DEFAULT_EXPORT,FUNCTION_DECLARATION=$__12.FUNCTION_DECLARATION,IMPORT_SPECIFIER_SET=$__12.IMPORT_SPECIFIER_SET,IMPORT_TYPE_CLAUSE=$__12.IMPORT_TYPE_CLAUSE,NAME_SPACE_EXPORT=$__12.NAME_SPACE_EXPORT,TYPE_ALIAS_DECLARATION=$__12.TYPE_ALIAS_DECLARATION,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")).VAR,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/assert.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")).assert,$__15=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/url.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")),resolveUrl=$__15.resolveUrl,canonicalizeUrl=$__15.canonicalizeUrl,$__16=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")),createArgumentList=$__16.createArgumentList,createExpressionStatement=$__16.createExpressionStatement,createIdentifierExpression=$__16.createIdentifierExpression,createMemberExpression=($__16.createIdentifierToken,$__16.createMemberExpression),createObjectLiteral=$__16.createObjectLiteral,createUseStrictDirective=$__16.createUseStrictDirective,createVariableStatement=$__16.createVariableStatement,$__17=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/ModuleTransformer.js")),parseExpression=$__17.parseExpression,parsePropertyDefinition=$__17.parsePropertyDefinition,parseStatement=$__17.parseStatement,parseStatements=$__17.parseStatements,DestructImportVarStatement=function($__super){function DestructImportVarStatement(){$traceurRuntime.superConstructor(DestructImportVarStatement).apply(this,arguments)}return $traceurRuntime.createClass(DestructImportVarStatement,{createGuardedExpression:function(tree){return tree}},{},$__super)}(DestructuringTransformer),ModuleTransformer=function($__super){function ModuleTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(ModuleTransformer).call(this,identifierGenerator,reporter,options),this.exportVisitor_=new DirectExportVisitor,this.importSimplifier_=new ImportSimplifyingTransformer,this.moduleName=null}return $traceurRuntime.createClass(ModuleTransformer,{getTempVarNameForModuleName:function(moduleName){return"$__"+moduleName.replace(/[^a-zA-Z0-9$]/g,function(c){return"_"+(c.charCodeAt(0)+"")+"_"})+"__"},getModuleName:function(tree){return tree.moduleName},getTempVarNameForModuleSpecifier:function(moduleSpecifier){var name=moduleSpecifier.token.processedValue;return name="."===name[0]&&this.moduleName?resolveUrl(this.moduleName,name):canonicalizeUrl(name),this.getTempVarNameForModuleName(name)},transformScript:function(tree){return this.moduleName=tree.moduleName,$traceurRuntime.superGet(this,ModuleTransformer.prototype,"transformScript").call(this,tree)},transformModule:function(tree){tree=removeUseStrictDirectives(tree),tree=this.importSimplifier_.transformModule(tree),this.moduleName=this.getModuleName(tree),this.pushTempScope();var statements=this.transformList(tree.scriptItemList);return statements=this.appendExportStatement(statements),this.popTempScope(),statements=this.wrapModule(this.moduleProlog().concat(statements)),new Script(tree.location,statements,null)},moduleProlog:function(){var statements=[createUseStrictDirective()];return this.moduleName&&statements.push(parseStatement($traceurRuntime.getTemplateObject(["var __moduleName = ",";"]),this.moduleName)),statements},wrapModule:function(statements){var functionExpression;return functionExpression=this.options.transformOptions.require?parseExpression($traceurRuntime.getTemplateObject(["function(require) {\n        ","\n      }"]),statements):parseExpression($traceurRuntime.getTemplateObject(["function() {\n        ","\n      }"]),statements),null===this.moduleName?parseStatements($traceurRuntime.getTemplateObject(["$traceurRuntime.ModuleStore.getAnonymousModule(\n              ",");"]),functionExpression):parseStatements($traceurRuntime.getTemplateObject(["$traceurRuntime.registerModule(",", [], ",");"]),this.moduleName,functionExpression)},getGetterExport:function($__3){var returnExpression,$__4=$__3,name=$__4.name,tree=$__4.tree,moduleSpecifier=$__4.moduleSpecifier;switch(tree.type){case EXPORT_DEFAULT:returnExpression=createIdentifierExpression("$__default");break;case EXPORT_SPECIFIER:if(moduleSpecifier){var idName=this.getTempVarNameForModuleSpecifier(moduleSpecifier);returnExpression=createMemberExpression(idName,tree.lhs)}else returnExpression=createIdentifierExpression(tree.lhs);break;case NAME_SPACE_EXPORT:var idName$__5=this.getTempVarNameForModuleSpecifier(moduleSpecifier);returnExpression=createIdentifierExpression(idName$__5);break;case FORWARD_DEFAULT_EXPORT:var idName$__6=this.getTempVarNameForModuleSpecifier(moduleSpecifier);returnExpression=createMemberExpression(idName$__6,"default");break;default:returnExpression=createIdentifierExpression(name)}return parsePropertyDefinition($traceurRuntime.getTemplateObject(["get ","() { return ","; }"]),name,returnExpression)},getExportProperties:function(){var $__2=this;return this.exportVisitor_.namedExports.filter(function(exp){return exp.tree.type!==TYPE_ALIAS_DECLARATION}).map(function(exp){return $__2.getGetterExport(exp)}).concat(this.exportVisitor_.namedExports.map(function(exp){return $__2.getSetterExport(exp)})).filter(function(e){return e})},getSetterExport:function($__3){var $__4=$__3;$__4.name,$__4.tree,$__4.moduleSpecifier;return null},getExportObject:function(){var $__2=this,exportObject=createObjectLiteral(this.getExportProperties());if(this.exportVisitor_.starExports.length){var starExports=this.exportVisitor_.starExports,starIdents=starExports.map(function(moduleSpecifier){return createIdentifierExpression($__2.getTempVarNameForModuleSpecifier(moduleSpecifier))}),args=createArgumentList($traceurRuntime.spread([exportObject],starIdents));return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.exportStar(",")"]),args)}return exportObject},appendExportStatement:function(statements){var exportObject=this.getExportObject();return statements.push(parseStatement($traceurRuntime.getTemplateObject(["return ",""]),exportObject)),statements},hasExports:function(){return this.exportVisitor_.hasExports()},hasStarExports:function(){return this.exportVisitor_.starExports.length>0},transformExportDeclaration:function(tree){return this.exportVisitor_.visitAny(tree),this.transformAny(tree.declaration)},transformExportDefault:function(tree){switch(tree.expression.type){case CLASS_DECLARATION:case FUNCTION_DECLARATION:var nameBinding=tree.expression.name,name=createIdentifierExpression(nameBinding.identifierToken);return new AnonBlock(null,[tree.expression,parseStatement($traceurRuntime.getTemplateObject(["var $__default = ",""]),name)])}return parseStatement($traceurRuntime.getTemplateObject(["var $__default = ",""]),tree.expression)},transformNamedExport:function(tree){var moduleSpecifier=tree.moduleSpecifier;if(moduleSpecifier){var expression=this.transformAny(moduleSpecifier),idName=this.getTempVarNameForModuleSpecifier(moduleSpecifier);return createVariableStatement(VAR,idName,expression)}return new AnonBlock(null,[])},transformModuleSpecifier:function(tree){assert(this.moduleName);var name=tree.token.processedValue;return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.getModule(\n      $traceurRuntime.normalizeModuleName(",", ","));"]),name,this.moduleName)},transformImportDeclaration:function(tree){if(tree.importClause.type===IMPORT_TYPE_CLAUSE)return new AnonBlock(null,[]);if(tree.importClause.type===IMPORT_SPECIFIER_SET&&0===tree.importClause.specifiers.length)return createExpressionStatement(this.transformAny(tree.moduleSpecifier));var binding=this.transformAny(tree.importClause),initializer=this.transformAny(tree.moduleSpecifier),varStatement=createVariableStatement(VAR,binding,initializer);if(this.options.transformOptions.destructuring||!this.options.parseOptions.destructuring){var destructuringTransformer=new DestructImportVarStatement(this.identifierGenerator,this.reporter,this.options);varStatement=varStatement.transform(destructuringTransformer)}return varStatement},transformImportSpecifierSet:function(tree){var fields=this.transformList(tree.specifiers);return new ObjectPattern(null,fields)},transformNameSpaceImport:function(tree){return tree.binding.binding},transformImportSpecifier:function(tree){var binding=tree.binding.binding,bindingElement=new BindingElement(binding.location,binding,null);if(tree.name){var name=new LiteralPropertyName(tree.name.location,tree.name);return new ObjectPatternField(tree.location,name,bindingElement)}return bindingElement}},{},$__super)}(TempVarTransformer);return{get ModuleTransformer(){return ModuleTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/globalThis.js",[],function(){"use strict";function globalThis(){return expr||(expr=parseExpression($traceurRuntime.getTemplateObject(["Reflect.global"]))),expr}var expr,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/globalThis.js")).parseExpression,$__default=globalThis;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/FindInFunctionScope.js",[],function(){"use strict";var FindVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindVisitor.js","traceur@0.0.107/src/codegeneration/FindInFunctionScope.js")).FindVisitor,FindInFunctionScope=function($__super){function FindInFunctionScope(){$traceurRuntime.superConstructor(FindInFunctionScope).apply(this,arguments)}return $traceurRuntime.createClass(FindInFunctionScope,{visitFunctionDeclaration:function(tree){this.visitList(tree.annotations)},visitFunctionExpression:function(tree){this.visitList(tree.annotations)},visitSetAccessor:function(tree){this.visitAny(tree.name),this.visitList(tree.annotations)},visitGetAccessor:function(tree){this.visitAny(tree.name),this.visitList(tree.annotations)},visitMethod:function(tree){this.visitAny(tree.name),this.visitList(tree.annotations)}},{},$__super)}(FindVisitor);return{get FindInFunctionScope(){return FindInFunctionScope}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/scopeContainsThis.js",[],function(){"use strict";function scopeContainsThis(tree){var visitor=new FindThis;return visitor.visitAny(tree),visitor.found}var FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/scopeContainsThis.js")).FindInFunctionScope,FindThis=function($__super){function FindThis(){$traceurRuntime.superConstructor(FindThis).apply(this,arguments)}return $traceurRuntime.createClass(FindThis,{visitThisExpression:function(tree){this.found=!0}},{},$__super)}(FindInFunctionScope),$__default=scopeContainsThis;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/AmdTransformer.js",[],function(){"use strict";var ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleTransformer.js","traceur@0.0.107/src/codegeneration/AmdTransformer.js")).ModuleTransformer,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/AmdTransformer.js")),createIdentifierExpression=$__3.createIdentifierExpression,createFormalParameter=$__3.createFormalParameter,createStringLiteralToken=$__3.createStringLiteralToken,globalThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./globalThis.js","traceur@0.0.107/src/codegeneration/AmdTransformer.js"))["default"],$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/AmdTransformer.js")),parseExpression=$__5.parseExpression,parseStatement=$__5.parseStatement,parseStatements=$__5.parseStatements,parsePropertyDefinition=$__5.parsePropertyDefinition,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/AmdTransformer.js")),FormalParameterList=$__6.FormalParameterList,FunctionBody=$__6.FunctionBody,FunctionExpression=$__6.FunctionExpression,scopeContainsThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./scopeContainsThis.js","traceur@0.0.107/src/codegeneration/AmdTransformer.js"))["default"],AmdTransformer=function($__super){function AmdTransformer(identifierGenerator,reporter){var options=arguments[2];$traceurRuntime.superConstructor(AmdTransformer).call(this,identifierGenerator,reporter,options),this.dependencies=[],this.anonymousModule=options&&!options.bundle&&options.moduleName!==!0}return $traceurRuntime.createClass(AmdTransformer,{getModuleName:function(tree){return this.anonymousModule?null:tree.moduleName},getExportProperties:function(){var properties=$traceurRuntime.superGet(this,AmdTransformer.prototype,"getExportProperties").call(this);return this.exportVisitor_.hasExports()&&properties.push(parsePropertyDefinition($traceurRuntime.getTemplateObject(["__esModule: true"]))),properties},moduleProlog:function(){var locals=this.dependencies.map(function(dep){var local=createIdentifierExpression(dep.local);return parseStatement($traceurRuntime.getTemplateObject(["if (!"," || !",".__esModule)\n            "," = {default: ","}"]),local,local,local,local)});return $traceurRuntime.superGet(this,AmdTransformer.prototype,"moduleProlog").call(this).concat(locals)},wrapModule:function(statements){var depPaths=this.dependencies.map(function(dep){return dep.path}),formals=this.dependencies.map(function(dep){return createFormalParameter(dep.local)}),hasTopLevelThis=statements.some(scopeContainsThis),parameterList=new FormalParameterList(null,formals),body=new FunctionBody(null,statements),func=new FunctionExpression(null,null,null,parameterList,null,[],body);return hasTopLevelThis&&(func=parseExpression($traceurRuntime.getTemplateObject(["",".bind(",")"]),func,globalThis())),this.moduleName?parseStatements($traceurRuntime.getTemplateObject(["define(",", ",", ",");"]),this.moduleName,depPaths,func):parseStatements($traceurRuntime.getTemplateObject(["define(",", ",");"]),depPaths,func)},transformModuleSpecifier:function(tree){var localName=this.getTempIdentifier(),value=tree.token.processedValue,stringLiteral=createStringLiteralToken(value.replace(/\.js$/,""));return this.dependencies.push({path:stringLiteral,local:localName}),createIdentifierExpression(localName)}},{},$__super)}(ModuleTransformer);return{get AmdTransformer(){return AmdTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/staticsemantics/PropName.js",[],function(){
"use strict";function propName(tree){switch(tree.type){case LITERAL_PROPERTY_NAME:var token=tree.literalToken;return token.isKeyword()||token.type===IDENTIFIER?""+token:tree.literalToken.processedValue+"";case COMPUTED_PROPERTY_NAME:return"";case PROPERTY_NAME_SHORTHAND:return""+tree.name;case METHOD:case PROPERTY_NAME_ASSIGNMENT:case GET_ACCESSOR:case SET_ACCESSOR:return propName(tree.name)}}var $__0=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/staticsemantics/PropName.js")),COMPUTED_PROPERTY_NAME=$__0.COMPUTED_PROPERTY_NAME,GET_ACCESSOR=$__0.GET_ACCESSOR,LITERAL_PROPERTY_NAME=$__0.LITERAL_PROPERTY_NAME,METHOD=$__0.METHOD,PROPERTY_NAME_ASSIGNMENT=$__0.PROPERTY_NAME_ASSIGNMENT,PROPERTY_NAME_SHORTHAND=$__0.PROPERTY_NAME_SHORTHAND,SET_ACCESSOR=$__0.SET_ACCESSOR,IDENTIFIER=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/staticsemantics/PropName.js")).IDENTIFIER;return{get propName(){return propName}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js")).ParseTreeTransformer,CONSTRUCTOR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js")).CONSTRUCTOR,STRING=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js")).STRING,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js")),AnonBlock=$__8.AnonBlock,ClassDeclaration=$__8.ClassDeclaration,ExportDeclaration=$__8.ExportDeclaration,FormalParameter=$__8.FormalParameter,FunctionDeclaration=$__8.FunctionDeclaration,GetAccessor=$__8.GetAccessor,LiteralExpression=$__8.LiteralExpression,Method=$__8.Method,SetAccessor=$__8.SetAccessor,propName=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../staticsemantics/PropName.js","traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js")).propName,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js")),createArgumentList=$__10.createArgumentList,createArrayLiteral=$__10.createArrayLiteral,createIdentifierExpression=($__10.createAssignmentStatement,$__10.createIdentifierExpression),createMemberExpression=$__10.createMemberExpression,createNewExpression=$__10.createNewExpression,createStringLiteralToken=$__10.createStringLiteralToken,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/AnnotationsTransformer.js")),parseExpression=$__11.parseExpression,parseStatement=$__11.parseStatement,AnnotationsScope=function(){function AnnotationsScope(){this.className=null,this.isExport=!1,this.constructorParameters=[],this.annotations=[],this.metadata=[]}return $traceurRuntime.createClass(AnnotationsScope,{get inClassScope(){return null!==this.className}},{})}(),AnnotationsTransformer=function($__super){function AnnotationsTransformer(){$traceurRuntime.superConstructor(AnnotationsTransformer).call(this),this.stack_=[new AnnotationsScope]}return $traceurRuntime.createClass(AnnotationsTransformer,{transformExportDeclaration:function(tree){var $__3,scope=this.pushAnnotationScope_();scope.isExport=!0,($__3=scope.annotations).push.apply($__3,$traceurRuntime.spread(tree.annotations));var declaration=this.transformAny(tree.declaration);return(declaration!==tree.declaration||tree.annotations.length>0)&&(tree=new ExportDeclaration(tree.location,declaration,[])),this.appendMetadata_(tree)},transformClassDeclaration:function(tree){var $__3,$__4,exportAnnotations=this.scope.isExport?this.scope.annotations:[],scope=this.pushAnnotationScope_();return scope.className=tree.name,($__3=scope.annotations).push.apply($__3,$traceurRuntime.spread(exportAnnotations,tree.annotations)),tree=$traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformClassDeclaration").call(this,tree),($__4=scope.metadata).unshift.apply($__4,$traceurRuntime.spread(this.transformMetadata_(createIdentifierExpression(tree.name),scope.annotations,scope.constructorParameters))),tree.annotations.length>0&&(tree=new ClassDeclaration(tree.location,tree.name,tree.superClass,tree.elements,[],null)),this.appendMetadata_(tree)},transformFunctionDeclaration:function(tree){var $__3,$__4,exportAnnotations=this.scope.isExport?this.scope.annotations:[],scope=this.pushAnnotationScope_();return($__3=scope.annotations).push.apply($__3,$traceurRuntime.spread(exportAnnotations,tree.annotations)),($__4=scope.metadata).push.apply($__4,$traceurRuntime.spread(this.transformMetadata_(createIdentifierExpression(tree.name),scope.annotations,tree.parameterList.parameters))),tree=$traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformFunctionDeclaration").call(this,tree),tree.annotations.length>0&&(tree=new FunctionDeclaration(tree.location,tree.name,tree.functionKind,tree.parameterList,tree.typeAnnotation,[],tree.body)),this.appendMetadata_(tree)},transformFormalParameter:function(tree){return tree.annotations.length>0&&(tree=new FormalParameter(tree.location,tree.parameter,tree.typeAnnotation,[])),$traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformFormalParameter").call(this,tree)},transformGetAccessor:function(tree){var $__3;return this.scope.inClassScope?(($__3=this.scope.metadata).push.apply($__3,$traceurRuntime.spread(this.transformMetadata_(this.transformAccessor_(tree,this.scope.className,"get"),tree.annotations,[]))),tree.annotations.length>0&&(tree=new GetAccessor(tree.location,tree.isStatic,tree.name,tree.typeAnnotation,[],tree.body)),$traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformGetAccessor").call(this,tree)):$traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformGetAccessor").call(this,tree)},transformSetAccessor:function(tree){var $__3;if(!this.scope.inClassScope)return $traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformSetAccessor").call(this,tree);($__3=this.scope.metadata).push.apply($__3,$traceurRuntime.spread(this.transformMetadata_(this.transformAccessor_(tree,this.scope.className,"set"),tree.annotations,tree.parameterList.parameters)));var parameterList=this.transformAny(tree.parameterList);return(parameterList!==tree.parameterList||tree.annotations.length>0)&&(tree=new SetAccessor(tree.location,tree.isStatic,tree.name,parameterList,[],tree.body)),$traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformSetAccessor").call(this,tree)},transformMethod:function(tree){var $__3,$__4;if(!this.scope.inClassScope)return $traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformMethod").call(this,tree);tree.isStatic||propName(tree)!==CONSTRUCTOR?($__4=this.scope.metadata).push.apply($__4,$traceurRuntime.spread(this.transformMetadata_(this.transformPropertyMethod_(tree,this.scope.className),tree.annotations,tree.parameterList.parameters))):(($__3=this.scope.annotations).push.apply($__3,$traceurRuntime.spread(tree.annotations)),this.scope.constructorParameters=tree.parameterList.parameters);var parameterList=this.transformAny(tree.parameterList);return(parameterList!==tree.parameterList||tree.annotations.length>0)&&(tree=new Method(tree.location,tree.isStatic,tree.functionKind,tree.name,parameterList,tree.typeAnnotation,[],tree.body,tree.debugName)),$traceurRuntime.superGet(this,AnnotationsTransformer.prototype,"transformMethod").call(this,tree)},appendMetadata_:function(tree){var $__3,metadata=this.stack_.pop().metadata;return metadata.length>0&&(this.scope.isExport?($__3=this.scope.metadata).push.apply($__3,$traceurRuntime.spread(metadata)):tree=new AnonBlock(null,$traceurRuntime.spread([tree],metadata))),tree},transformClassReference_:function(tree,className){var parent=createIdentifierExpression(className);return tree.isStatic||(parent=createMemberExpression(parent,"prototype")),parent},transformPropertyMethod_:function(tree,className){return createMemberExpression(this.transformClassReference_(tree,className),tree.name.literalToken)},transformAccessor_:function(tree,className,accessor){var args=createArgumentList([this.transformClassReference_(tree,className),this.createLiteralStringExpression_(tree.name)]),descriptor=parseExpression($traceurRuntime.getTemplateObject(["Object.getOwnPropertyDescriptor(",")"]),args);return createMemberExpression(descriptor,accessor)},transformParameters_:function(parameters){var $__2=this,hasParameterMetadata=!1;return parameters=parameters.map(function(param){var $__3,metadata=[];return param.typeAnnotation&&metadata.push($__2.transformAny(param.typeAnnotation)),param.annotations&&param.annotations.length>0&&($__3=metadata).push.apply($__3,$traceurRuntime.spread($__2.transformAnnotations_(param.annotations))),metadata.length>0?(hasParameterMetadata=!0,createArrayLiteral(metadata)):createArrayLiteral([])}),hasParameterMetadata?parameters:[]},transformAnnotations_:function(annotations){return annotations.map(function(annotation){return createNewExpression(annotation.name,annotation.args)})},transformMetadata_:function(target,annotations,parameters){var metadataStatements=[];return null!==annotations&&(annotations=this.transformAnnotations_(annotations),annotations.length>0&&metadataStatements.push(this.createDefinePropertyStatement_(target,"annotations",createArrayLiteral(annotations)))),null!==parameters&&(parameters=this.transformParameters_(parameters),parameters.length>0&&metadataStatements.push(this.createDefinePropertyStatement_(target,"parameters",createArrayLiteral(parameters)))),metadataStatements},createDefinePropertyStatement_:function(target,property,value){return parseStatement($traceurRuntime.getTemplateObject(["Object.defineProperty(",", ",",\n        {get: function() {return ","}});"]),target,property,value)},createLiteralStringExpression_:function(tree){var token=tree.literalToken;return tree.literalToken.type!==STRING&&(token=createStringLiteralToken(tree.literalToken.value)),new LiteralExpression(null,token)},get scope(){return this.stack_[this.stack_.length-1]},pushAnnotationScope_:function(){var scope=new AnnotationsScope;return this.stack_.push(scope),scope}},{},$__super)}(ParseTreeTransformer);return{get AnnotationsTransformer(){return AnnotationsTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/util.js",[],function(){"use strict";function hasUseStrict(list){for(var i=0;i<list.length;i++){if(!list[i].isDirectivePrologue())return!1;if(list[i].isUseStrictDirective())return!0}return!1}function isUndefined(tree){return tree.type===PAREN_EXPRESSION?isUndefined(tree.expression):tree.type===IDENTIFIER_EXPRESSION&&tree.identifierToken.value===UNDEFINED}function isVoidExpression(tree){return tree.type===PAREN_EXPRESSION?isVoidExpression(tree.expression):tree.type===UNARY_EXPRESSION&&tree.operator.type===VOID&&isLiteralExpression(tree.operand)}function isLiteralExpression(tree){return tree.type===PAREN_EXPRESSION?isLiteralExpression(tree.expression):tree.type===LITERAL_EXPRESSION}var $__0=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/semantics/util.js")),IDENTIFIER_EXPRESSION=$__0.IDENTIFIER_EXPRESSION,LITERAL_EXPRESSION=$__0.LITERAL_EXPRESSION,PAREN_EXPRESSION=$__0.PAREN_EXPRESSION,UNARY_EXPRESSION=$__0.UNARY_EXPRESSION,UNDEFINED=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/semantics/util.js")).UNDEFINED,VOID=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/semantics/util.js")).VOID;return{get hasUseStrict(){return hasUseStrict},get isUndefined(){return isUndefined},get isVoidExpression(){return isVoidExpression},get isLiteralExpression(){return isLiteralExpression}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/isTreeStrict.js",[],function(){"use strict";function isTreeStrict(tree){switch(tree.type){case CLASS_DECLARATION:case CLASS_EXPRESSION:case MODULE:return!0;case FUNCTION_BODY:return hasUseStrict(tree.statements);case FUNCTION_EXPRESSION:case FUNCTION_DECLARATION:case METHOD:return isTreeStrict(tree.body);case ARROW_FUNCTION:return tree.body.type===FUNCTION_BODY&&isTreeStrict(tree.body);case GET_ACCESSOR:case SET_ACCESSOR:return isTreeStrict(tree.body);case SCRIPT:return hasUseStrict(tree.scriptItemList);default:return!1}}var $__0=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/semantics/isTreeStrict.js")),ARROW_FUNCTION=$__0.ARROW_FUNCTION,CLASS_DECLARATION=$__0.CLASS_DECLARATION,CLASS_EXPRESSION=$__0.CLASS_EXPRESSION,FUNCTION_BODY=$__0.FUNCTION_BODY,FUNCTION_DECLARATION=$__0.FUNCTION_DECLARATION,FUNCTION_EXPRESSION=$__0.FUNCTION_EXPRESSION,GET_ACCESSOR=$__0.GET_ACCESSOR,METHOD=$__0.METHOD,MODULE=$__0.MODULE,SCRIPT=$__0.SCRIPT,SET_ACCESSOR=$__0.SET_ACCESSOR,hasUseStrict=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util.js","traceur@0.0.107/src/semantics/isTreeStrict.js")).hasUseStrict;return{get isTreeStrict(){return isTreeStrict}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/Scope.js",[],function(){"use strict";function reportDuplicateVar(reporter,tree,name){reporter.reportError(tree.location,"Duplicate declaration, "+name)}var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/semantics/Scope.js")),BLOCK=$__2.BLOCK,CATCH=$__2.CATCH,FUNCTION_EXPRESSION=$__2.FUNCTION_EXPRESSION,StringMap=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringMap.js","traceur@0.0.107/src/semantics/Scope.js")).StringMap,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/semantics/Scope.js")).VAR,isTreeStrict=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./isTreeStrict.js","traceur@0.0.107/src/semantics/Scope.js")).isTreeStrict,Scope=function(){function Scope(parent,tree){this.parent=parent,this.tree=tree,this.variableDeclarations_=new StringMap,this.lexicalDeclarations_=new StringMap,this.strictMode=parent&&parent.strictMode||isTreeStrict(tree),this.inGenerator=!!parent&&(parent.inGenerator||!1)}return $traceurRuntime.createClass(Scope,{addBinding:function(tree,type,reporter){type===VAR?this.addVar(tree,reporter):this.addDeclaration(tree,type,reporter)},addVar:function(tree,reporter){var name=tree.getStringValue();return this.lexicalDeclarations_.has(name)&&!this.isFunctionExpressionName(name)?void reportDuplicateVar(reporter,tree,name):(this.variableDeclarations_.set(name,{type:VAR,tree:tree,scope:this}),void(!this.isVarScope&&this.parent&&this.parent.addVar(tree,reporter)))},addDeclaration:function(tree,type,reporter){var name=tree.getStringValue();return!this.lexicalDeclarations_.has(name)&&!this.variableDeclarations_.has(name)||this.isFunctionExpressionName(name)?void this.lexicalDeclarations_.set(name,{type:type,tree:tree,scope:this}):void reportDuplicateVar(reporter,tree,name)},renameBinding:function(oldName,newTree,newType,reporter){newTree.getStringValue();newType===VAR?this.lexicalDeclarations_.has(oldName)&&(this.lexicalDeclarations_["delete"](oldName),this.addVar(newTree,reporter)):this.variableDeclarations_.has(oldName)&&(this.variableDeclarations_["delete"](oldName),this.addDeclaration(newTree,newType,reporter),!this.isVarScope&&this.parent&&this.parent.renameBinding(oldName,newTree,newType))},get isVarScope(){switch(this.tree.type){case BLOCK:case CATCH:return!1}return!0},getVarScope:function(){return this.isVarScope?this:this.parent?this.parent.getVarScope():null},isFunctionExpressionName:function(name){var b=this.getBindingByName(name);return b&&b.scope.tree.type===FUNCTION_EXPRESSION&&b.scope.tree.name===b.tree},getBinding:function(tree){var name=tree.getStringValue();return this.getBindingByName(name)},getBindingByName:function(name){var b=this.variableDeclarations_.get(name);return b&&this.isVarScope?b:(b=this.lexicalDeclarations_.get(name),b?b:this.parent?this.parent.getBindingByName(name):null)},getAllBindingNames:function(){var names=this.variableDeclarations_.keysAsSet();return this.lexicalDeclarations_.forEach(function(name){return names.add(name)}),names},getVariableBindingNames:function(){return this.variableDeclarations_.keysAsSet()},getLexicalBindingNames:function(){return this.lexicalDeclarations_.keysAsSet()},hasBindingName:function(name){return this.lexicalDeclarations_.has(name)||this.variableDeclarations_.has(name)},hasLexicalBindingName:function(name){return this.lexicalDeclarations_.has(name)},hasVariableBindingName:function(name){return this.variableDeclarations_.has(name)}},{})}();return{get Scope(){return Scope}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/ScopeVisitor.js",[],function(){"use strict";var ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/semantics/ScopeVisitor.js")).ParseTreeVisitor,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/semantics/ScopeVisitor.js")).VAR,Scope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Scope.js","traceur@0.0.107/src/semantics/ScopeVisitor.js")).Scope,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/semantics/ScopeVisitor.js")),COMPREHENSION_FOR=$__6.COMPREHENSION_FOR,VARIABLE_DECLARATION_LIST=$__6.VARIABLE_DECLARATION_LIST,ScopeVisitor=function($__super){function ScopeVisitor(){$traceurRuntime.superConstructor(ScopeVisitor).call(this),this.map_=new Map,this.scope=null,this.withBlockCounter_=0}return $traceurRuntime.createClass(ScopeVisitor,{getScopeForTree:function(tree){return this.map_.get(tree)},createScope:function(tree){return new Scope(this.scope,tree)},pushScope:function(tree){var scope=this.createScope(tree);return this.map_.set(tree,scope),this.scope=scope},popScope:function(scope){if(this.scope!==scope)throw Error("ScopeVisitor scope mismatch");this.scope=scope.parent},visitScript:function(tree){var scope=this.pushScope(tree);$traceurRuntime.superGet(this,ScopeVisitor.prototype,"visitScript").call(this,tree),this.popScope(scope)},visitModule:function(tree){var scope=this.pushScope(tree);$traceurRuntime.superGet(this,ScopeVisitor.prototype,"visitModule").call(this,tree),this.popScope(scope)},visitBlock:function(tree){var scope=this.pushScope(tree);$traceurRuntime.superGet(this,ScopeVisitor.prototype,"visitBlock").call(this,tree),this.popScope(scope)},visitCatch:function(tree){var scope=this.pushScope(tree);this.visitAny(tree.binding),this.visitList(tree.catchBody.statements),this.popScope(scope)},visitFunctionBodyForScope:function(tree){var parameterList=void 0!==arguments[1]?arguments[1]:tree.parameterList,scope=this.pushScope(tree);this.visitAny(parameterList),scope.inGenerator=tree.functionKind&&tree.isGenerator(),this.visitAny(tree.body),this.popScope(scope)},visitFunctionExpression:function(tree){this.visitFunctionBodyForScope(tree)},visitFunctionDeclaration:function(tree){this.visitAny(tree.name),this.visitFunctionBodyForScope(tree)},visitArrowFunction:function(tree){this.visitFunctionBodyForScope(tree)},visitGetAccessor:function(tree){this.visitFunctionBodyForScope(tree,null)},visitSetAccessor:function(tree){this.visitFunctionBodyForScope(tree)},visitMethod:function(tree){this.visitFunctionBodyForScope(tree)},visitClassDeclaration:function(tree){this.visitAny(tree.superClass);var scope=this.pushScope(tree);this.visitAny(tree.name),this.visitList(tree.elements),this.popScope(scope)},visitClassExpression:function(tree){this.visitAny(tree.superClass);var scope;tree.name&&(scope=this.pushScope(tree),this.visitAny(tree.name)),this.visitList(tree.elements),tree.name&&this.popScope(scope)},visitWithStatement:function(tree){this.visitAny(tree.expression),this.withBlockCounter_++,this.visitAny(tree.body),this.withBlockCounter_--},get inWithBlock(){return this.withBlockCounter_>0},visitLoop_:function(tree,func){if(tree.initializer.type!==VARIABLE_DECLARATION_LIST||tree.initializer.declarationType===VAR)return void func();var scope=this.pushScope(tree);func(),this.popScope(scope)},visitForInStatement:function(tree){var $__1=this;this.visitLoop_(tree,function(){return $traceurRuntime.superGet($__1,ScopeVisitor.prototype,"visitForInStatement").call($__1,tree)})},visitForOfStatement:function(tree){var $__1=this;this.visitLoop_(tree,function(){return $traceurRuntime.superGet($__1,ScopeVisitor.prototype,"visitForOfStatement").call($__1,tree)})},visitForStatement:function(tree){var $__1=this;tree.initializer?this.visitLoop_(tree,function(){return $traceurRuntime.superGet($__1,ScopeVisitor.prototype,"visitForStatement").call($__1,tree)}):$traceurRuntime.superGet(this,ScopeVisitor.prototype,"visitForStatement").call(this,tree)},visitComprehension_:function(tree){for(var scopes=[],i=0;i<tree.comprehensionList.length;i++){var scope=null;tree.comprehensionList[i].type===COMPREHENSION_FOR&&(scope=this.pushScope(tree.comprehensionList[i])),scopes.push(scope),this.visitAny(tree.comprehensionList[i])}this.visitAny(tree.expression);for(var i$__2=scopes.length-1;i$__2>=0;i$__2--)scopes[i$__2]&&this.popScope(scopes[i$__2])},visitArrayComprehension:function(tree){this.visitComprehension_(tree)},visitGeneratorComprehension:function(tree){this.visitComprehension_(tree)},visitPredefinedType:function(tree){},visitTypeArguments:function(tree){},visitFunctionType:function(tree){}},{},$__super)}(ParseTreeVisitor);return{get ScopeVisitor(){return ScopeVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/ScopeChainBuilder.js",[],function(){"use strict";var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/semantics/ScopeChainBuilder.js")),CONST=$__1.CONST,LET=$__1.LET,VAR=$__1.VAR,ScopeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeVisitor.js","traceur@0.0.107/src/semantics/ScopeChainBuilder.js")).ScopeVisitor,ScopeChainBuilder=function($__super){function ScopeChainBuilder(reporter){$traceurRuntime.superConstructor(ScopeChainBuilder).call(this),this.reporter=reporter,this.declarationType_=null}return $traceurRuntime.createClass(ScopeChainBuilder,{visitCatch:function(tree){var scope=this.pushScope(tree);this.declarationType_=LET,this.visitAny(tree.binding),this.visitList(tree.catchBody.statements),this.popScope(scope)},visitImportedBinding:function(tree){this.declarationType_=CONST,$traceurRuntime.superGet(this,ScopeChainBuilder.prototype,"visitImportedBinding").call(this,tree)},visitVariableDeclarationList:function(tree){this.declarationType_=tree.declarationType,$traceurRuntime.superGet(this,ScopeChainBuilder.prototype,"visitVariableDeclarationList").call(this,tree)},visitBindingIdentifier:function(tree){this.declareVariable(tree)},visitFunctionExpression:function(tree){var scope=this.pushScope(tree);tree.name&&(this.declarationType_=CONST,this.visitAny(tree.name)),this.visitAny(tree.parameterList),scope.inGenerator=tree.isGenerator(),this.visitAny(tree.body),this.popScope(scope)},visitFormalParameter:function(tree){this.declarationType_=VAR,$traceurRuntime.superGet(this,ScopeChainBuilder.prototype,"visitFormalParameter").call(this,tree)},visitFunctionDeclaration:function(tree){if(this.scope)if(this.scope.isVarScope)this.declarationType_=VAR,this.visitAny(tree.name);else{if(!this.scope.strictMode){var varScope=this.scope.getVarScope();varScope&&varScope.addVar(tree.name,this.reporter)}this.declarationType_=LET,this.visitAny(tree.name)}this.visitFunctionBodyForScope(tree,tree.parameterList,tree.body)},visitClassDeclaration:function(tree){this.visitAny(tree.superClass),this.declarationType_=LET,this.visitAny(tree.name);var scope=this.pushScope(tree);this.declarationType_=CONST,this.visitAny(tree.name),this.visitList(tree.elements),this.popScope(scope)},visitClassExpression:function(tree){this.visitAny(tree.superClass);var scope;tree.name&&(scope=this.pushScope(tree),this.declarationType_=CONST,this.visitAny(tree.name)),this.visitList(tree.elements),tree.name&&this.popScope(scope)},visitComprehensionFor:function(tree){this.declarationType_=LET,$traceurRuntime.superGet(this,ScopeChainBuilder.prototype,"visitComprehensionFor").call(this,tree)},declareVariable:function(tree){this.scope.addBinding(tree,this.declarationType_,this.reporter)}},{},$__super)}(ScopeVisitor);return{get ScopeChainBuilder(){return ScopeChainBuilder}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/VariableBinder.js",[],function(){"use strict";function variablesInBlock(tree){var includeFunctionScope=arguments[1],builder=new ScopeChainBuilder(null);builder.visitAny(tree);var scope=builder.getScopeForTree(tree),names=scope.getLexicalBindingNames();if(!includeFunctionScope)return names;var variableBindingNames=scope.getVariableBindingNames();return variableBindingNames.forEach(function(name){return names.add(name)}),names}function variablesInFunction(tree){var builder=new ScopeChainBuilder(null);builder.visitAny(tree);var scope=builder.getScopeForTree(tree);return scope.getAllBindingNames()}var ScopeChainBuilder=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeChainBuilder.js","traceur@0.0.107/src/semantics/VariableBinder.js")).ScopeChainBuilder;return{get variablesInBlock(){return variablesInBlock},get variablesInFunction(){return variablesInFunction}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ScopeTransformer.js",[],function(){"use strict";function getLexicalBindingNames(tree){var names=new StringSet;if(null!==tree&&tree.type===VARIABLE_DECLARATION_LIST&&tree.declarationType!==VAR)for(var visitor=new FindNames(names),i=0;i<tree.declarations.length;i++)visitor.visitAny(tree.declarations[i].lvalue);return names}var $__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")),ARGUMENTS=$__4.ARGUMENTS,THIS=$__4.THIS,FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")).FindInFunctionScope,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")).ParseTreeTransformer,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")),FunctionDeclaration=$__7.FunctionDeclaration,FunctionExpression=$__7.FunctionExpression,GetAccessor=$__7.GetAccessor,Method=$__7.Method,SetAccessor=$__7.SetAccessor,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")).StringSet,VARIABLE_DECLARATION_LIST=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")).VARIABLE_DECLARATION_LIST,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")).VAR,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/VariableBinder.js","traceur@0.0.107/src/codegeneration/ScopeTransformer.js")),variablesInBlock=$__11.variablesInBlock,variablesInFunction=$__11.variablesInFunction,FindNames=function($__super){function FindNames(names){$traceurRuntime.superConstructor(FindNames).call(this),this.names=names}return $traceurRuntime.createClass(FindNames,{visitBindingIdentifier:function(tree){this.names.add(tree.getStringValue())}},{},$__super)}(FindInFunctionScope),ScopeTransformer=function($__super){function ScopeTransformer(varName){$traceurRuntime.superConstructor(ScopeTransformer).call(this),this.varName_=varName}return $traceurRuntime.createClass(ScopeTransformer,{transformBlock:function(tree){return variablesInBlock(tree).has(this.varName_)?tree:$traceurRuntime.superGet(this,ScopeTransformer.prototype,"transformBlock").call(this,tree)},sameTreeIfNameInLoopInitializer_:function(tree){var names=getLexicalBindingNames(tree.initializer);return names.has(this.varName_)?tree:null},transformForStatement:function(tree){return this.sameTreeIfNameInLoopInitializer_(tree)||$traceurRuntime.superGet(this,ScopeTransformer.prototype,"transformForStatement").call(this,tree)},transformForInStatement:function(tree){return this.sameTreeIfNameInLoopInitializer_(tree)||$traceurRuntime.superGet(this,ScopeTransformer.prototype,"transformForInStatement").call(this,tree)},transformForOfStatement:function(tree){return this.sameTreeIfNameInLoopInitializer_(tree)||$traceurRuntime.superGet(this,ScopeTransformer.prototype,"transformForOfStatement").call(this,tree)},transformForOnStatement:function(tree){return this.sameTreeIfNameInLoopInitializer_(tree)||$traceurRuntime.superGet(this,ScopeTransformer.prototype,"transformForOnStatement").call(this,tree)},transformThisExpression:function(tree){return this.varName_!==THIS?tree:$traceurRuntime.superGet(this,ScopeTransformer.prototype,"transformThisExpression").call(this,tree)},transformParameterListAndBody_:function(tree){return this.getDoNotRecurse(tree)?tree:{parameterList:this.transformAny(tree.parameterList),body:this.transformAny(tree.body)}},transformFunctionDeclaration:function(tree){var name=this.transformAny(tree.name),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),$__3=this.transformParameterListAndBody_(tree),parameterList=$__3.parameterList,body=$__3.body;return name===tree.name&&parameterList===tree.parameterList&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&body===tree.body?tree:new FunctionDeclaration(tree.location,name,tree.functionKind,parameterList,typeAnnotation,annotations,body)},transformFunctionExpression:function(tree){var name=this.transformAny(tree.name),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),$__3=this.transformParameterListAndBody_(tree),parameterList=$__3.parameterList,body=$__3.body;return name===tree.name&&parameterList===tree.parameterList&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&body===tree.body?tree:new FunctionExpression(tree.location,name,tree.functionKind,parameterList,typeAnnotation,annotations,body)},transformMethod:function(tree){var name=this.transformAny(tree.name),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),$__3=this.transformParameterListAndBody_(tree),parameterList=$__3.parameterList,body=$__3.body;return name===tree.name&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&parameterList===tree.parameterList&&body===tree.body?tree:new Method(tree.location,tree.isStatic,tree.functionKind,name,parameterList,typeAnnotation,annotations,body,tree.debugName)},transformGetAccessor:function(tree){var name=this.transformAny(tree.name),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),body=this.getDoNotRecurse(tree)?tree.body:this.transformAny(tree.body);return name===tree.name&&typeAnnotation===tree.typeAnnotation&&annotations===tree.annotations&&body===tree.body?tree:new GetAccessor(tree.location,tree.isStatic,name,typeAnnotation,annotations,body);
},transformSetAccessor:function(tree){var name=this.transformAny(tree.name),annotations=this.transformList(tree.annotations),$__3=this.transformParameterListAndBody_(tree),parameterList=$__3.parameterList,body=$__3.body;return name===tree.name&&annotations===tree.annotations&&parameterList===tree.parameterList&&body===tree.body?tree:new SetAccessor(tree.location,tree.isStatic,name,parameterList,annotations,body)},getDoNotRecurse:function(tree){return this.varName_===ARGUMENTS||this.varName_===THIS||variablesInFunction(tree).has(this.varName_)},transformCatch:function(tree){return tree.binding.isPattern()||this.varName_!==tree.binding.identifierToken.value?$traceurRuntime.superGet(this,ScopeTransformer.prototype,"transformCatch").call(this,tree):tree}},{},$__super)}(ParseTreeTransformer);return{get ScopeTransformer(){return ScopeTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/AlphaRenamer.js",[],function(){"use strict";var ScopeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeTransformer.js","traceur@0.0.107/src/codegeneration/AlphaRenamer.js")).ScopeTransformer,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/AlphaRenamer.js")),FunctionDeclaration=$__2.FunctionDeclaration,FunctionExpression=$__2.FunctionExpression,THIS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/AlphaRenamer.js")).THIS,createIdentifierExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/AlphaRenamer.js")).createIdentifierExpression,AlphaRenamer=function($__super){function AlphaRenamer(varName,newName){$traceurRuntime.superConstructor(AlphaRenamer).call(this,varName),this.newName_=newName}return $traceurRuntime.createClass(AlphaRenamer,{transformIdentifierExpression:function(tree){return this.varName_===tree.identifierToken.value?createIdentifierExpression(this.newName_):tree},transformThisExpression:function(tree){return this.varName_!==THIS?tree:createIdentifierExpression(this.newName_)},transformFunctionDeclaration:function(tree){return this.varName_===tree.name&&(tree=new FunctionDeclaration(tree.location,this.newName_,tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body)),$traceurRuntime.superGet(this,AlphaRenamer.prototype,"transformFunctionDeclaration").call(this,tree)},transformFunctionExpression:function(tree){return this.varName_===tree.name&&(tree=new FunctionExpression(tree.location,this.newName_,tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body)),$traceurRuntime.superGet(this,AlphaRenamer.prototype,"transformFunctionExpression").call(this,tree)}},{rename:function(tree,varName,newName){return new AlphaRenamer(varName,newName).transformAny(tree)}},$__super)}(ScopeTransformer);return{get AlphaRenamer(){return AlphaRenamer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/FindThisOrArguments.js",[],function(){"use strict";var ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/FindThisOrArguments.js")).ARGUMENTS,FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/FindThisOrArguments.js")).FindInFunctionScope,FindThisOrArguments=function($__super){function FindThisOrArguments(){$traceurRuntime.superConstructor(FindThisOrArguments).call(this),this.foundThis=!1,this.foundArguments=!1}return $traceurRuntime.createClass(FindThisOrArguments,{visitThisExpression:function(tree){this.foundThis=!0,this.found=this.foundArguments},visitIdentifierExpression:function(tree){tree.identifierToken.value===ARGUMENTS&&(this.foundArguments=!0,this.found=this.foundThis)}},{},$__super)}(FindInFunctionScope);return{get FindThisOrArguments(){return FindThisOrArguments}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/alphaRenameThisAndArguments.js",[],function(){"use strict";function alphaRenameThisAndArguments(tempVarTransformer,tree){var finder=new FindThisOrArguments;if(finder.visitAny(tree),finder.foundArguments){var argumentsTempName=tempVarTransformer.addTempVarForArguments();tree=AlphaRenamer.rename(tree,ARGUMENTS,argumentsTempName)}if(finder.foundThis){var thisTempName=tempVarTransformer.addTempVarForThis();tree=AlphaRenamer.rename(tree,THIS,thisTempName)}return tree}var $__0=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/alphaRenameThisAndArguments.js")),ARGUMENTS=$__0.ARGUMENTS,THIS=$__0.THIS,AlphaRenamer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AlphaRenamer.js","traceur@0.0.107/src/codegeneration/alphaRenameThisAndArguments.js")).AlphaRenamer,FindThisOrArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindThisOrArguments.js","traceur@0.0.107/src/codegeneration/alphaRenameThisAndArguments.js")).FindThisOrArguments,$__default=alphaRenameThisAndArguments;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js",[],function(){"use strict";var alphaRenameThisAndArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./alphaRenameThisAndArguments.js","traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js"))["default"],FunctionExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js")).FunctionExpression,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js")).TempVarTransformer,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js")),LET=$__4.LET,STAR=$__4.STAR,VAR=$__4.VAR,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js")),COMPREHENSION_FOR=$__5.COMPREHENSION_FOR,COMPREHENSION_IF=$__5.COMPREHENSION_IF,Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/Token.js","traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js")).Token,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ComprehensionTransformer.js")),createCallExpression=$__7.createCallExpression,createEmptyParameterList=$__7.createEmptyParameterList,createForOfStatement=$__7.createForOfStatement,createFunctionBody=$__7.createFunctionBody,createIfStatement=$__7.createIfStatement,createParenExpression=$__7.createParenExpression,createVariableDeclarationList=$__7.createVariableDeclarationList,ComprehensionTransformer=function($__super){function ComprehensionTransformer(){$traceurRuntime.superConstructor(ComprehensionTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ComprehensionTransformer,{transformComprehension:function(tree,statement,isGenerator){for(var prefix=arguments[3],suffix=arguments[4],bindingKind=isGenerator||!this.options.blockBinding?VAR:LET,statements=prefix?[prefix]:[],i=tree.comprehensionList.length-1;i>=0;i--){var item=tree.comprehensionList[i];switch(item.type){case COMPREHENSION_IF:var expression=this.transformAny(item.expression);statement=createIfStatement(expression,statement);break;case COMPREHENSION_FOR:var left=this.transformAny(item.left),iterator=this.transformAny(item.iterator),initializer=createVariableDeclarationList(bindingKind,left,null);statement=createForOfStatement(initializer,iterator,statement);break;default:throw Error("Unreachable.")}}statement=alphaRenameThisAndArguments(this,statement),statements.push(statement),suffix&&statements.push(suffix);var functionKind=isGenerator?new Token(STAR,null):null,func=new FunctionExpression(null,null,functionKind,createEmptyParameterList(),null,[],createFunctionBody(statements));return createParenExpression(createCallExpression(func))}},{},$__super)}(TempVarTransformer);return{get ComprehensionTransformer(){return ComprehensionTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ArrayComprehensionTransformer.js",[],function(){"use strict";var ComprehensionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ComprehensionTransformer.js","traceur@0.0.107/src/codegeneration/ArrayComprehensionTransformer.js")).ComprehensionTransformer,createIdentifierExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ArrayComprehensionTransformer.js")).createIdentifierExpression,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/ArrayComprehensionTransformer.js")).parseStatement,ArrayComprehensionTransformer=function($__super){function ArrayComprehensionTransformer(){$traceurRuntime.superConstructor(ArrayComprehensionTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ArrayComprehensionTransformer,{transformArrayComprehension:function(tree){this.pushTempScope();var expression=this.transformAny(tree.expression),index=createIdentifierExpression(this.getTempIdentifier()),result=createIdentifierExpression(this.getTempIdentifier()),tempVarsStatatement=parseStatement($traceurRuntime.getTemplateObject(["var "," = 0, "," = [];"]),index,result),statement=parseStatement($traceurRuntime.getTemplateObject(["","[","++] = ",";"]),result,index,expression),returnStatement=parseStatement($traceurRuntime.getTemplateObject(["return ",";"]),result),functionKind=null;return result=this.transformComprehension(tree,statement,functionKind,tempVarsStatatement,returnStatement),this.popTempScope(),result}},{},$__super)}(ComprehensionTransformer);return{get ArrayComprehensionTransformer(){return ArrayComprehensionTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ParenTrait.js",[],function(){"use strict";function wrap(tree){return new ParenExpression(tree.location,tree)}function ParenTrait(ParseTreeTransformerClass){return function($__super){function $__0(){$traceurRuntime.superConstructor($__0).apply(this,arguments)}return $traceurRuntime.createClass($__0,{transformVariableDeclaration:function(tree){var lvalue=this.transformAny(tree.lvalue),typeAnnotation=this.transformAny(tree.typeAnnotation),initializer=this.transformAny(tree.initializer);if(null!==initializer&&initializer.type===COMMA_EXPRESSION)initializer=wrap(initializer);else if(tree.lvalue===lvalue&&tree.typeAnnotation===typeAnnotation&&tree.initializer===initializer)return tree;return new VariableDeclaration(tree.location,lvalue,typeAnnotation,initializer)},transformExpressionStatement:function(tree){var expression=this.transformAny(tree.expression);switch(expression.type){case OBJECT_LITERAL:case OBJECT_PATTERN:case FUNCTION_EXPRESSION:expression=wrap(expression)}return tree.expression===expression?tree:new ExpressionStatement(tree.location,expression)},transformNewExpression:function(tree){var operand=this.transformAny(tree.operand),args=this.transformAny(tree.args);switch(operand.type){case CALL_EXPRESSION:case TEMPLATE_LITERAL_EXPRESSION:operand=wrap(operand)}return operand===tree.operand&&args===tree.args?tree:new NewExpression(tree.location,operand,args)},transformExpressionList_:function(list){for(var expressions=this.transformList(list),newList=null,i=0;i<list.length;i++){var expression=expressions[i];null!==expression&&expression.type===COMMA_EXPRESSION?(expression=wrap(expression),null===newList&&(newList=expressions.slice(0,i)),newList.push(expression)):null!==newList&&newList.push(expression)}return null!==newList?newList:expressions},transformArgumentList:function(tree){var args=this.transformExpressionList_(tree.args);return tree.args===args?tree:new ArgumentList(tree.location,args)},transformArrayLiteral:function(tree){var elements=this.transformExpressionList_(tree.elements);return tree.elements===elements?tree:new ArrayLiteral(tree.location,elements)},transformPropertyNameAssignment:function(tree){var name=this.transformAny(tree.name),value=this.transformAny(tree.value);if(value.type===COMMA_EXPRESSION)value=wrap(value);else if(name===tree.name&&value===tree.value)return tree;return new PropertyNameAssignment(tree.location,name,value)},transformBinaryExpression:function(tree){var left=this.transformAny(tree.left),right=this.transformAny(tree.right);return commaOrYield(left.type)&&(left=wrap(left)),commaOrYield(right.type)&&(right=wrap(right)),left===tree.left&&right===tree.right?tree:new BinaryExpression(tree.location,left,tree.operator,right)},transformConditionalExpression:function(tree){var condition=this.transformAny(tree.condition),left=this.transformAny(tree.left),right=this.transformAny(tree.right);return commaOrYield(condition.type)&&(condition=wrap(condition)),left.type==COMMA_EXPRESSION&&(left=wrap(left)),right.type==COMMA_EXPRESSION&&(right=wrap(right)),condition===tree.condition&&left===tree.left&&right===tree.right?tree:new ConditionalExpression(tree.location,condition,left,right)}},{},$__super)}(ParseTreeTransformerClass)}function commaOrYield(type){return type===COMMA_EXPRESSION||type==YIELD_EXPRESSION}var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ParenTrait.js")),ArgumentList=$__2.ArgumentList,ArrayLiteral=$__2.ArrayLiteral,BinaryExpression=$__2.BinaryExpression,ConditionalExpression=$__2.ConditionalExpression,ExpressionStatement=$__2.ExpressionStatement,NewExpression=$__2.NewExpression,ParenExpression=$__2.ParenExpression,PropertyNameAssignment=$__2.PropertyNameAssignment,VariableDeclaration=$__2.VariableDeclaration,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ParenTrait.js")),CALL_EXPRESSION=$__3.CALL_EXPRESSION,COMMA_EXPRESSION=$__3.COMMA_EXPRESSION,FUNCTION_EXPRESSION=$__3.FUNCTION_EXPRESSION,OBJECT_LITERAL=$__3.OBJECT_LITERAL,OBJECT_PATTERN=$__3.OBJECT_PATTERN,TEMPLATE_LITERAL_EXPRESSION=$__3.TEMPLATE_LITERAL_EXPRESSION,YIELD_EXPRESSION=$__3.YIELD_EXPRESSION;return{get ParenTrait(){return ParenTrait}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js",[],function(){"use strict";function convertConciseBody(tree){return tree.type!==FUNCTION_BODY?createFunctionBody([createReturnStatement(tree)]):tree}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")),ARGUMENTS=$__1.ARGUMENTS,CONSTRUCTOR=$__1.CONSTRUCTOR,THIS=$__1.THIS,AlphaRenamer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AlphaRenamer.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")).AlphaRenamer,FunctionExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")).FunctionExpression,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")).TempVarTransformer,ParenTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParenTrait.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")).ParenTrait,alphaRenameThisAndArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./alphaRenameThisAndArguments.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js"))["default"],$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")),FUNCTION_BODY=$__7.FUNCTION_BODY,LITERAL_PROPERTY_NAME=$__7.LITERAL_PROPERTY_NAME,FindThisOrArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindThisOrArguments.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")).FindThisOrArguments,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ArrowFunctionTransformer.js")),createAssignmentExpression=$__9.createAssignmentExpression,createCommaExpression=$__9.createCommaExpression,createFunctionBody=$__9.createFunctionBody,createIdentifierExpression=$__9.createIdentifierExpression,createReturnStatement=$__9.createReturnStatement,createThisExpression=$__9.createThisExpression,ArrowFunctionTransformer=function($__super){function ArrowFunctionTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(ArrowFunctionTransformer).call(this,identifierGenerator,reporter,options),this.inDerivedClass_=!1,this.inConstructor_=!1}return $traceurRuntime.createClass(ArrowFunctionTransformer,{transformArrowFunction:function(tree){return this.inDerivedClass_&&this.inConstructor_?this.transformUsingCommaExpression_(tree):this.transformUsingTempVar_(tree)},transformUsingCommaExpression_:function(tree){var argumentsTempName,thisTempName,finder=new FindThisOrArguments;finder.visitAny(tree),finder.foundArguments&&(argumentsTempName=this.addTempVar(),tree=AlphaRenamer.rename(tree,ARGUMENTS,argumentsTempName)),finder.foundThis&&(thisTempName=this.addTempVar(),tree=AlphaRenamer.rename(tree,THIS,thisTempName));var parameterList=this.transformAny(tree.parameterList),body=this.transformAny(tree.body);body=convertConciseBody(body);var functionExpression=new FunctionExpression(tree.location,null,tree.functionKind,parameterList,null,[],body),expressions=[];return argumentsTempName&&expressions.push(createAssignmentExpression(createIdentifierExpression(argumentsTempName),createIdentifierExpression(ARGUMENTS))),thisTempName&&expressions.push(createAssignmentExpression(createIdentifierExpression(thisTempName),createThisExpression())),0===expressions.length?functionExpression:(expressions.push(functionExpression),createCommaExpression(expressions))},transformUsingTempVar_:function(tree){var alphaRenamed=alphaRenameThisAndArguments(this,tree),parameterList=this.transformAny(alphaRenamed.parameterList),body=this.transformAny(alphaRenamed.body);body=convertConciseBody(body);var functionExpression=new FunctionExpression(tree.location,null,tree.functionKind,parameterList,null,[],body);return functionExpression},transformClassExpression:function(tree){var inDerivedClass=this.inDerivedClass_;this.inDerivedClass_=null!==tree.superClass;var result=$traceurRuntime.superGet(this,ArrowFunctionTransformer.prototype,"transformClassExpression").call(this,tree);return this.inDerivedClass_=inDerivedClass,result},transformClassDeclaration:function(tree){var inDerivedClass=this.inDerivedClass_;this.inDerivedClass_=null!==tree.superClass;var result=$traceurRuntime.superGet(this,ArrowFunctionTransformer.prototype,"transformClassDeclaration").call(this,tree);return this.inDerivedClass_=inDerivedClass,result},transformMethod:function(tree){var inConstructor=this.inConstructor_;this.inConstructor_=!tree.isStatic&&null===tree.functionKind&&tree.name.type===LITERAL_PROPERTY_NAME&&tree.name.literalToken.value===CONSTRUCTOR;var result=$traceurRuntime.superGet(this,ArrowFunctionTransformer.prototype,"transformMethod").call(this,tree);return this.inConstructor_=inConstructor,result}},{transform:function(tempVarTransformer,tree){tree=alphaRenameThisAndArguments(tempVarTransformer,tree);var body=convertConciseBody(tree.body);return new FunctionExpression(tree.location,null,tree.functionKind,tree.parameterList,null,[],body)}},$__super)}(ParenTrait(TempVarTransformer));return{get ArrowFunctionTransformer(){return ArrowFunctionTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/SkipFunctionsTransformerTrait.js",[],function(){"use strict";function SkipFunctionsTransformerTrait(ParseTreeTransformer){return function($__super){function SkipFunctionsTransformer(){$traceurRuntime.superConstructor(SkipFunctionsTransformer).apply(this,arguments)}return $traceurRuntime.createClass(SkipFunctionsTransformer,{transformFunctionDeclaration:function(tree){var annotations=this.transformList(tree.annotations);return annotations===tree.annotations?tree:new FunctionDeclaration(tree.location,tree.name,tree.functionKind,tree.parameterList,tree.typeAnnotation,annotations,tree.body)},transformFunctionExpression:function(tree){var annotations=this.transformList(tree.annotations);return annotations===tree.annotations?tree:new FunctionDeclaration(tree.location,tree.name,tree.functionKind,tree.parameterList,tree.typeAnnotation,annotations,tree.body)},transformSetAccessor:function(tree){var name=this.transformAny(tree.name),annotations=this.transformList(tree.annotations);return name===tree.name&&annotations===tree.annotations?tree:new SetAccessor(tree.location,tree.isStatic,name,tree.parameterList,annotations,tree.body)},transformGetAccessor:function(tree){var name=this.transformAny(tree.name),annotations=this.transformList(tree.annotations);return name===tree.name&&annotations===tree.annotations?tree:new GetAccessor(tree.location,tree.isStatic,name,annotations,tree.body)},transformMethod:function(tree){var name=this.transformAny(tree.name),annotations=this.transformList(tree.annotations);return name===tree.name&&annotations===tree.annotations?tree:new Method(tree.location,tree.isStatic,tree.functionKind,name,tree.parameterList,tree.typeAnnotation,annotations,tree.body,tree.debugName)},transformArrowFunction:function(tree){return tree}},{},$__super)}(ParseTreeTransformer)}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/SkipFunctionsTransformerTrait.js")),FunctionDeclaration=($__1.ArrowFunction,$__1.FunctionDeclaration),GetAccessor=($__1.FunctionExpression,$__1.GetAccessor),Method=$__1.Method,SetAccessor=$__1.SetAccessor,$__default=SkipFunctionsTransformerTrait;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js",[],function(){"use strict";var alphaRenameThisAndArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./alphaRenameThisAndArguments.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js"))["default"],$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js")),createArgumentList=$__2.createArgumentList,createBlock=$__2.createBlock,createFunctionBody=$__2.createFunctionBody,id=$__2.createIdentifierExpression,createMemberExpression=$__2.createMemberExpression,createThisExpression=$__2.createThisExpression,createVariableDeclaration=$__2.createVariableDeclaration,createVariableDeclarationList=$__2.createVariableDeclarationList,createVariableStatement=$__2.createVariableStatement,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js")).parseStatement,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js")).TempVarTransformer,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js")),AwaitExpression=$__5.AwaitExpression,Block=$__5.Block,CallExpression=$__5.CallExpression,Catch=$__5.Catch,SkipFunctionsTransformerTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SkipFunctionsTransformerTrait.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js"))["default"],ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js")).ARGUMENTS,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformer.js")).VAR,AsyncGeneratorTransformer=function($__super){function AsyncGeneratorTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(AsyncGeneratorTransformer).call(this,identifierGenerator,reporter,options),this.variableDeclarations_=[],this.ctx_=id(this.getTempIdentifier())}return $traceurRuntime.createClass(AsyncGeneratorTransformer,{transformYieldExpression:function(tree){var argList=createArgumentList([tree.expression]);return tree.isYieldFor?new AwaitExpression(tree.location,new CallExpression(null,createMemberExpression(this.ctx_,"yieldFor"),argList)):new CallExpression(tree.location,createMemberExpression(this.ctx_,"yield"),argList)},transformCatch:function(tree){var body=tree.catchBody;return body=new Block(body.location,$traceurRuntime.spread([parseStatement($traceurRuntime.getTemplateObject(["\n        if (",".inReturn) {\n          throw undefined;\n        }"]),this.ctx_)],body.statements)),new Catch(tree.location,tree.binding,body)},transformAsyncGeneratorBody_:function(tree,name){tree=this.transformAny(tree),tree=alphaRenameThisAndArguments(this,tree);var statements=[];this.variableDeclarations_.length>0&&statements.push(createVariableStatement(createVariableDeclarationList(VAR,this.variableDeclarations_)));var body=createBlock(tree.statements);return statements.push(parseStatement($traceurRuntime.getTemplateObject(["\n        return $traceurRuntime.createAsyncGeneratorInstance(\n            async function (",") {\n                ","\n            }, ",");"]),this.ctx_,body,name)),createFunctionBody(statements)},addTempVarForArguments:function(){var tmpVarName=this.getTempIdentifier();return this.variableDeclarations_.push(createVariableDeclaration(tmpVarName,id(ARGUMENTS))),tmpVarName},addTempVarForThis:function(){var tmpVarName=this.getTempIdentifier();return this.variableDeclarations_.push(createVariableDeclaration(tmpVarName,createThisExpression())),tmpVarName}},{transformAsyncGeneratorBody:function(identifierGenerator,reporter,options,body,name){return new AsyncGeneratorTransformer(identifierGenerator,reporter,options).transformAsyncGeneratorBody_(body,name)}},$__super)}(SkipFunctionsTransformerTrait(TempVarTransformer));return{get AsyncGeneratorTransformer(){return AsyncGeneratorTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformPass.js",[],function(){"use strict";var AsyncGeneratorTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AsyncGeneratorTransformer.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformPass.js")).AsyncGeneratorTransformer,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformPass.js")).TempVarTransformer,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformPass.js")),AnonBlock=$__3.AnonBlock,FunctionDeclaration=$__3.FunctionDeclaration,FunctionExpression=$__3.FunctionExpression,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformPass.js")),createBindingIdentifier=$__4.createBindingIdentifier,id=$__4.createIdentifierExpression,createIdentifierToken=$__4.createIdentifierToken,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/AsyncGeneratorTransformPass.js")),parseExpression=$__5.parseExpression,parseStatement=$__5.parseStatement,AsyncGeneratorTransformPass=function($__super){function AsyncGeneratorTransformPass(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(AsyncGeneratorTransformPass).call(this,identifierGenerator,reporter,options),this.transformOptions_=options.transformOptions,this.inBlock_=!1}return $traceurRuntime.createClass(AsyncGeneratorTransformPass,{needsTransform_:function(tree){return this.transformOptions_.asyncGenerators&&tree.isAsyncGenerator()},transformFunctionDeclaration:function(tree){if(!this.needsTransform_(tree))return $traceurRuntime.superGet(this,AsyncGeneratorTransformPass.prototype,"transformFunctionDeclaration").call(this,tree);var nameIdExpression=id(tree.name.identifierToken),setupPrototypeExpression=parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.initAsyncGeneratorFunction(",")"]),nameIdExpression),tmpVar=id(this.inBlock_?this.getTempIdentifier():this.addTempVar(setupPrototypeExpression)),funcDecl=this.transformFunction_(tree,FunctionDeclaration,tmpVar);return this.inBlock_?new AnonBlock(null,[funcDecl,parseStatement($traceurRuntime.getTemplateObject(["var "," = ",""]),tmpVar,setupPrototypeExpression)]):funcDecl},transformFunctionExpression:function(tree){if(!this.needsTransform_(tree))return $traceurRuntime.superGet(this,AsyncGeneratorTransformPass.prototype,"transformFunctionExpression").call(this,tree);var name;tree.name?name=tree.name.identifierToken:(name=createIdentifierToken(this.getTempIdentifier()),tree=new FunctionExpression(tree.location,createBindingIdentifier(name),tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body));var functionExpression=this.transformFunction_(tree,FunctionExpression,id(name));return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.initAsyncGeneratorFunction(",")"]),functionExpression)},transformFunction_:function(tree,constructor,nameExpression){var body=$traceurRuntime.superGet(this,AsyncGeneratorTransformPass.prototype,"transformAny").call(this,tree.body);body=AsyncGeneratorTransformer.transformAsyncGeneratorBody(this.identifierGenerator,this.reporter,this.options,body,nameExpression);var functionKind=null;return new constructor(tree.location,tree.name,functionKind,tree.parameterList,tree.typeAnnotation||null,tree.annotations||null,body)},transformBlock:function(tree){var inBlock=this.inBlock_;this.inBlock_=!0;var rv=$traceurRuntime.superGet(this,AsyncGeneratorTransformPass.prototype,"transformBlock").call(this,tree);return this.inBlock_=inBlock,rv}},{},$__super)}(TempVarTransformer);return{get AsyncGeneratorTransformPass(){return AsyncGeneratorTransformPass}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/FindArguments.js",[],function(){"use strict";var ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/FindArguments.js")).ARGUMENTS,FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/FindArguments.js")).FindInFunctionScope,FindArguments=function($__super){function FindArguments(){$traceurRuntime.superConstructor(FindArguments).apply(this,arguments)}return $traceurRuntime.createClass(FindArguments,{visitIdentifierExpression:function(tree){tree.identifierToken.value===ARGUMENTS&&(this.found=!0)}},{},$__super)}(FindInFunctionScope);return{get default(){return FindArguments}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js",[],function(){"use strict";function wrapBodyInSpawn(body){var visitor=new FindArguments;visitor.visitAny(body);var argExpr=visitor.found?createIdentifierExpression(ARGUMENTS):createNullLiteral(),statement=parseStatement($traceurRuntime.getTemplateObject(["return $traceurRuntime.spawn(this, ",", function*() { "," });"]),argExpr,body);
return new FunctionBody(body.location,[statement])}var ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js")).ARGUMENTS,FindArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindArguments.js","traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js"))["default"],$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js")),FunctionBody=$__3.FunctionBody,FunctionDeclaration=$__3.FunctionDeclaration,FunctionExpression=$__3.FunctionExpression,Method=$__3.Method,YieldExpression=$__3.YieldExpression,ParenTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParenTrait.js","traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js")).ParenTrait,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js")).parseStatement,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js")).TempVarTransformer,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/AsyncToGeneratorTransformer.js")),createIdentifierExpression=$__7.createIdentifierExpression,createNullLiteral=$__7.createNullLiteral,AsyncToGeneratorTransformer=function($__super){function AsyncToGeneratorTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(AsyncToGeneratorTransformer).call(this,identifierGenerator,reporter,options),this.inAsyncFunction_=!1}return $traceurRuntime.createClass(AsyncToGeneratorTransformer,{transformFunctionDeclaration:function(tree){return tree.isAsyncFunction()?this.transformFunctionShared_(tree,FunctionDeclaration):$traceurRuntime.superGet(this,AsyncToGeneratorTransformer.prototype,"transformFunctionDeclaration").call(this,tree)},transformFunctionExpression:function(tree){return tree.isAsyncFunction()?this.transformFunctionShared_(tree,FunctionExpression):$traceurRuntime.superGet(this,AsyncToGeneratorTransformer.prototype,"transformFunctionExpression").call(this,tree)},transformFunctionShared_:function(tree,ctor){var parameterList=this.transformAny(tree.parameterList),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),body=this.transformAsyncBody_(tree.body);return new ctor(tree.location,tree.name,null,parameterList,typeAnnotation,annotations,body)},transformAsyncBody_:function(body){var inAsyncFunction=this.inAsyncFunction_;return this.inAsyncFunction_=!0,body=this.transformFunctionBody(body),body=wrapBodyInSpawn(body),this.inAsyncFunction_=inAsyncFunction,body},transformMethod:function(tree){if(tree.isAsyncFunction()){var name=this.transformAny(tree.name),parameterList=this.transformAny(tree.parameterList),typeAnnotation=this.transformAny(tree.typeAnnotation),annotations=this.transformList(tree.annotations),body=this.transformAsyncBody_(tree.body);return new Method(tree.location,tree.isStatic,null,name,parameterList,typeAnnotation,annotations,body,tree.debugName)}return $traceurRuntime.superGet(this,AsyncToGeneratorTransformer.prototype,"transformMethod").call(this,tree)},transformAwaitExpression:function(tree){if(this.inAsyncFunction_){var expression=this.transformAny(tree.expression);return new YieldExpression(tree.location,expression,(!1))}return $traceurRuntime.superGet(this,AsyncToGeneratorTransformer.prototype,"transformAwaitExpression").call(this,tree)}},{},$__super)}(ParenTrait(TempVarTransformer));return{get AsyncToGeneratorTransformer(){return AsyncToGeneratorTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/FindIdentifiers.js",[],function(){"use strict";var ScopeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/ScopeVisitor.js","traceur@0.0.107/src/codegeneration/FindIdentifiers.js")).ScopeVisitor,FindIdentifiers=function($__super){function FindIdentifiers(tree,filterFunction){$traceurRuntime.superConstructor(FindIdentifiers).call(this),this.filterFunction_=filterFunction,this.found_=!1,this.visitAny(tree)}return $traceurRuntime.createClass(FindIdentifiers,{visitIdentifierExpression:function(tree){this.filterFunction_(tree.identifierToken.value,this.scope.tree)&&(this.found=!0)},get found(){return this.found_},set found(v){v&&(this.found_=!0)},visitAny:function(tree){!this.found_&&tree&&tree.visit(this)},visitList:function(list){if(list)for(var i=0;!this.found_&&i<list.length;i++)this.visitAny(list[i])}},{},$__super)}(ScopeVisitor);return{get FindIdentifiers(){return FindIdentifiers}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")).ParseTreeTransformer,alphaRenameThisAndArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./alphaRenameThisAndArguments.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js"))["default"],parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")).parseStatement,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")),AnonBlock=$__6.AnonBlock,BreakStatement=$__6.BreakStatement,ContinueStatement=$__6.ContinueStatement,FormalParameterList=$__6.FormalParameterList,FunctionExpression=$__6.FunctionExpression,ReturnStatement=$__6.ReturnStatement,YieldExpression=$__6.YieldExpression,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")),createArgumentList=$__7.createArgumentList,createAssignmentStatement=$__7.createAssignmentStatement,createAssignmentExpression=$__7.createAssignmentExpression,createBlock=$__7.createBlock,createCallExpression=$__7.createCallExpression,createCaseClause=$__7.createCaseClause,createDefaultClause=$__7.createDefaultClause,createExpressionStatement=$__7.createExpressionStatement,createFunctionBody=$__7.createFunctionBody,createIdentifierExpression=($__7.createFunctionExpression,$__7.createIdentifierExpression),createNumberLiteral=$__7.createNumberLiteral,createObjectLiteralForDescriptor=$__7.createObjectLiteralForDescriptor,createSwitchStatement=$__7.createSwitchStatement,createThisExpression=$__7.createThisExpression,createVariableDeclaration=$__7.createVariableDeclaration,createVariableDeclarationList=$__7.createVariableDeclarationList,createVariableStatement=$__7.createVariableStatement,createVoid0=$__7.createVoid0,ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")).ARGUMENTS,SkipFunctionsTransformerTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SkipFunctionsTransformerTrait.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js"))["default"],StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")).StringSet,Token=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/Token.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")).Token,$__12=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/FnExtractAbruptCompletions.js")),STAR=$__12.STAR,VAR=$__12.VAR,FnExtractAbruptCompletions=function($__super){function FnExtractAbruptCompletions(idGenerator,requestParentLabel){$traceurRuntime.superConstructor(FnExtractAbruptCompletions).call(this),this.idGenerator_=idGenerator,this.inLoop_=0,this.inBreakble_=0,this.variableDeclarations_=[],this.extractedStatements_=[],this.requestParentLabel_=requestParentLabel,this.labelledStatements_=new StringSet}return $traceurRuntime.createClass(FnExtractAbruptCompletions,{createIIFE:function(body,paramList,argsList,inGenerator){body=this.transformAny(body),body=alphaRenameThisAndArguments(this,body);var tmpFnName=this.idGenerator_.generateUniqueIdentifier(),functionKind=inGenerator?new Token(STAR,null):null,functionExpression=new FunctionExpression(null,null,functionKind,new FormalParameterList(null,paramList),null,[],createFunctionBody(body.statements||[body]));this.variableDeclarations_.push(createVariableDeclaration(tmpFnName,functionExpression));var functionCall=createCallExpression(createIdentifierExpression(tmpFnName),createArgumentList(argsList));inGenerator&&(functionCall=new YieldExpression(null,functionCall,(!0)));var loopBody=null;if(this.extractedStatements_.length||this.hasReturns){var tmpVarName=createIdentifierExpression(this.idGenerator_.generateUniqueIdentifier());this.variableDeclarations_.push(createVariableDeclaration(tmpVarName,null));var maybeReturn;if(this.hasReturns&&(maybeReturn=parseStatement($traceurRuntime.getTemplateObject(["if (typeof ",' === "object")\n            return ',".v;"]),tmpVarName,tmpVarName)),this.extractedStatements_.length){var caseClauses=this.extractedStatements_.map(function(statement,index){return createCaseClause(createNumberLiteral(index),[statement])});maybeReturn&&caseClauses.push(createDefaultClause([maybeReturn])),loopBody=createBlock([createExpressionStatement(createAssignmentExpression(tmpVarName,functionCall)),createSwitchStatement(tmpVarName,caseClauses)])}else loopBody=createBlock([createExpressionStatement(createAssignmentExpression(tmpVarName,functionCall)),maybeReturn])}else loopBody=createBlock([createExpressionStatement(functionCall)]);return{variableStatements:createVariableStatement(createVariableDeclarationList(VAR,this.variableDeclarations_)),loopBody:loopBody}},addTempVarForArguments:function(){var tmpVarName=this.idGenerator_.generateUniqueIdentifier();return this.variableDeclarations_.push(createVariableDeclaration(tmpVarName,createIdentifierExpression(ARGUMENTS))),tmpVarName},addTempVarForThis:function(){var tmpVarName=this.idGenerator_.generateUniqueIdentifier();return this.variableDeclarations_.push(createVariableDeclaration(tmpVarName,createThisExpression())),tmpVarName},transformAny:function(tree){return tree&&(tree.isBreakableStatement()&&this.inBreakble_++,tree.isIterationStatement()&&this.inLoop_++,tree=$traceurRuntime.superGet(this,FnExtractAbruptCompletions.prototype,"transformAny").call(this,tree),tree.isBreakableStatement()&&this.inBreakble_--,tree.isIterationStatement()&&this.inLoop_--),tree},transformReturnStatement:function(tree){return this.hasReturns=!0,new ReturnStatement(tree.location,createObjectLiteralForDescriptor({v:tree.expression||createVoid0()}))},transformAbruptCompletion_:function(tree){this.extractedStatements_.push(tree);var index=this.extractedStatements_.length-1;return parseStatement($traceurRuntime.getTemplateObject(["return ",";"]),index)},transformBreakStatement:function(tree){if(tree.name){if(this.labelledStatements_.has(tree.name.value))return $traceurRuntime.superGet(this,FnExtractAbruptCompletions.prototype,"transformBreakStatement").call(this,tree)}else{if(this.inBreakble_)return $traceurRuntime.superGet(this,FnExtractAbruptCompletions.prototype,"transformBreakStatement").call(this,tree);tree=new BreakStatement(tree.location,this.requestParentLabel_())}return this.transformAbruptCompletion_(tree)},transformContinueStatement:function(tree){if(tree.name){if(this.labelledStatements_.has(tree.name.value))return $traceurRuntime.superGet(this,FnExtractAbruptCompletions.prototype,"transformContinueStatement").call(this,tree)}else{if(this.inLoop_)return $traceurRuntime.superGet(this,FnExtractAbruptCompletions.prototype,"transformContinueStatement").call(this,tree);tree=new ContinueStatement(tree.location,this.requestParentLabel_())}return this.transformAbruptCompletion_(tree)},transformLabelledStatement:function(tree){return this.labelledStatements_.add(tree.name.value),$traceurRuntime.superGet(this,FnExtractAbruptCompletions.prototype,"transformLabelledStatement").call(this,tree)},transformVariableStatement:function(tree){var $__2=this;if(tree.declarations.declarationType===VAR){var assignments=[];return tree.declarations.declarations.forEach(function(variableDeclaration){var variableName=variableDeclaration.lvalue.getStringValue(),initializer=$traceurRuntime.superGet($__2,FnExtractAbruptCompletions.prototype,"transformAny").call($__2,variableDeclaration.initializer);$__2.variableDeclarations_.push(createVariableDeclaration(variableName,null)),assignments.push(createAssignmentStatement(createIdentifierExpression(variableName),initializer))}),new AnonBlock(null,assignments)}return $traceurRuntime.superGet(this,FnExtractAbruptCompletions.prototype,"transformVariableStatement").call(this,tree)}},{createIIFE:function(idGenerator,body,paramList,argsList,requestParentLabel,inGenerator){return new FnExtractAbruptCompletions(idGenerator,requestParentLabel).createIIFE(body,paramList,argsList,inGenerator)}},$__super)}(SkipFunctionsTransformerTrait(ParseTreeTransformer));return{get FnExtractAbruptCompletions(){return FnExtractAbruptCompletions}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/ScopeReferences.js",[],function(){"use strict";var Scope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Scope.js","traceur@0.0.107/src/semantics/ScopeReferences.js")).Scope,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/semantics/ScopeReferences.js")).StringSet,ScopeReferences=function($__super){function ScopeReferences(parent,tree){$traceurRuntime.superConstructor(ScopeReferences).call(this,parent,tree),this.freeVars_=new StringSet}return $traceurRuntime.createClass(ScopeReferences,{addReference:function(name){this.freeVars_.add(name)},hasFreeVariable:function(name){return this.freeVars_.has(name)}},{},$__super)}(Scope);return{get ScopeReferences(){return ScopeReferences}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/ScopeChainBuilderWithReferences.js",[],function(){"use strict";function hasArgumentsInScope(scope){for(;scope;scope=scope.parent)switch(scope.tree.type){case FUNCTION_DECLARATION:case FUNCTION_EXPRESSION:case GET_ACCESSOR:case METHOD:case SET_ACCESSOR:return!0}return!1}function inModuleScope(scope){for(;scope;scope=scope.parent)if(scope.tree.type===MODULE)return!0;return!1}var ScopeChainBuilder=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeChainBuilder.js","traceur@0.0.107/src/semantics/ScopeChainBuilderWithReferences.js")).ScopeChainBuilder,ScopeReferences=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeReferences.js","traceur@0.0.107/src/semantics/ScopeChainBuilderWithReferences.js")).ScopeReferences,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/semantics/ScopeChainBuilderWithReferences.js")),FUNCTION_DECLARATION=$__3.FUNCTION_DECLARATION,FUNCTION_EXPRESSION=$__3.FUNCTION_EXPRESSION,GET_ACCESSOR=$__3.GET_ACCESSOR,IDENTIFIER_EXPRESSION=$__3.IDENTIFIER_EXPRESSION,METHOD=$__3.METHOD,MODULE=$__3.MODULE,SET_ACCESSOR=$__3.SET_ACCESSOR,TYPEOF=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/semantics/ScopeChainBuilderWithReferences.js")).TYPEOF,ScopeChainBuilderWithReferences=function($__super){function ScopeChainBuilderWithReferences(){$traceurRuntime.superConstructor(ScopeChainBuilderWithReferences).apply(this,arguments)}return $traceurRuntime.createClass(ScopeChainBuilderWithReferences,{createScope:function(tree){return new ScopeReferences(this.scope,tree)},visitIdentifierExpression:function(tree){if(!this.inWithBlock){var scope=this.scope,name=tree.getStringValue();"arguments"===name&&hasArgumentsInScope(scope)||"__moduleName"===name&&inModuleScope(scope)||this.referenceFound(tree,name)}},visitUnaryExpression:function(tree){if(tree.operator.type===TYPEOF&&tree.operand.type===IDENTIFIER_EXPRESSION){var scope=this.scope,binding=scope.getBinding(tree.operand);binding||scope.addVar(tree.operand,this.reporter)}else $traceurRuntime.superGet(this,ScopeChainBuilderWithReferences.prototype,"visitUnaryExpression").call(this,tree)},referenceFound:function(tree,name){this.scope.addReference(name)}},{},$__super)}(ScopeChainBuilder);return{get ScopeChainBuilderWithReferences(){return ScopeChainBuilderWithReferences}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js",[],function(){"use strict";function varNeedsInitializer(tree,loopTree){if(null===loopTree)return!1;var type=loopTree.type;return type!==FOR_IN_STATEMENT&&type!==FOR_OF_STATEMENT||loopTree.initializer.declarations[0]!==tree}function renameAll(renames,tree){return renames.forEach(function(rename){tree=AlphaRenamer.rename(tree,rename.oldName,rename.newName)}),tree}var AlphaRenamer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AlphaRenamer.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).AlphaRenamer,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")),ANON_BLOCK=$__7.ANON_BLOCK,BINDING_IDENTIFIER=$__7.BINDING_IDENTIFIER,FOR_IN_STATEMENT=$__7.FOR_IN_STATEMENT,FOR_OF_STATEMENT=$__7.FOR_OF_STATEMENT,VARIABLE_DECLARATION_LIST=$__7.VARIABLE_DECLARATION_LIST,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")),AnonBlock=$__8.AnonBlock,BindingElement=$__8.BindingElement,BindingIdentifier=$__8.BindingIdentifier,Block=$__8.Block,Catch=$__8.Catch,DoWhileStatement=$__8.DoWhileStatement,ForInStatement=$__8.ForInStatement,ForStatement=$__8.ForStatement,FormalParameter=$__8.FormalParameter,FunctionBody=$__8.FunctionBody,FunctionExpression=$__8.FunctionExpression,LabelledStatement=$__8.LabelledStatement,LiteralPropertyName=$__8.LiteralPropertyName,Module=$__8.Module,ObjectPatternField=$__8.ObjectPatternField,Script=$__8.Script,VariableDeclaration=$__8.VariableDeclaration,VariableDeclarationList=$__8.VariableDeclarationList,VariableStatement=$__8.VariableStatement,WhileStatement=$__8.WhileStatement,IdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/IdentifierToken.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).IdentifierToken,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).ParseTreeTransformer,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).VAR,$__12=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")),createBindingIdentifier=$__12.createBindingIdentifier,createIdentifierExpression=$__12.createIdentifierExpression,createIdentifierToken=$__12.createIdentifierToken,FindIdentifiers=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindIdentifiers.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).FindIdentifiers,FindVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindVisitor.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).FindVisitor,FnExtractAbruptCompletions=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FnExtractAbruptCompletions.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).FnExtractAbruptCompletions,ScopeChainBuilderWithReferences=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/ScopeChainBuilderWithReferences.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).ScopeChainBuilderWithReferences,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).parseExpression,prependStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/BlockBindingTransformer.js")).prependStatements,BlockBindingTransformer=function($__super){function BlockBindingTransformer(idGenerator,reporter,tree){var scopeBuilder=arguments[3],latestScope=arguments[4];$traceurRuntime.superConstructor(BlockBindingTransformer).call(this),this.idGenerator_=idGenerator,this.reporter_=reporter,scopeBuilder||(scopeBuilder=new ScopeChainBuilderWithReferences(reporter),scopeBuilder.visitAny(tree)),this.scopeBuilder_=scopeBuilder,this.labelledLoops_=new Map,this.prependStatement_=[],this.prependBlockStatement_=[],this.blockRenames_=[],this.rootTree_=tree,latestScope?this.scope_=latestScope:this.pushScope(tree),this.usedVars_=this.scope_.getAllBindingNames(),this.maybeRename_=!1,this.inObjectPattern_=!1,this.currentLoopTree_=null}return $traceurRuntime.createClass(BlockBindingTransformer,{getVariableName_:function(variable){var lvalue=variable.lvalue;if(lvalue.type===BINDING_IDENTIFIER)return lvalue.getStringValue();throw Error("Unexpected destructuring declaration found.")},flushRenames:function(tree){return tree=renameAll(this.blockRenames_,tree),this.blockRenames_.length=0,tree},pushScope:function(tree){var scope=this.scopeBuilder_.getScopeForTree(tree);if(!scope)throw Error("BlockBindingTransformer tree with no scope");return this.scope_&&(this.scope_.blockBindingRenames=this.blockRenames_),this.scope_=scope,this.blockRenames_=[],scope},popScope:function(scope){if(this.scope_!==scope)throw Error("BlockBindingTransformer scope mismatch");this.scope_=scope.parent,this.blockRenames_=this.scope_&&this.scope_.blockBindingRenames||[]},revisitTreeForScopes:function(tree){this.scopeBuilder_.scope=this.scope_,this.scopeBuilder_.visitAny(tree),this.scopeBuilder_.scope=null},needsRename_:function(name){if(this.usedVars_.has(name))return!0;var scope=this.scope_,parent=scope.parent;if(!parent||scope.isVarScope)return!1;var varScope=scope.getVarScope();if(varScope&&varScope.hasFreeVariable(name))return!0;var parentBinding=parent.getBindingByName(name);if(!parentBinding)return!1;var currentBinding=scope.getBindingByName(name);return currentBinding.tree!==parentBinding.tree},newNameFromOrig:function(origName,renames){var newName;return this.needsRename_(origName)?(newName=origName+this.idGenerator_.generateUniqueIdentifier(),renames.push(new Rename(origName,newName))):(this.usedVars_.add(origName),newName=origName),newName},transformFunctionBody:function(tree){if(tree!==this.rootTree_&&this.rootTree_){var functionTransform=new BlockBindingTransformer(this.idGenerator_,this.reporter_,tree,this.scopeBuilder_,this.scope_),functionBodyTree=functionTransform.transformAny(tree);if(functionBodyTree===tree)return tree;tree=new FunctionBody(tree.location,functionBodyTree.statements)}else if(tree=$traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformFunctionBody").call(this,tree),this.prependStatement_.length||this.blockRenames_.length){var statements=prependStatements.apply(void 0,$traceurRuntime.spread([tree.statements],this.prependStatement_));tree=new FunctionBody(tree.location,statements),tree=this.flushRenames(tree)}return tree},transformScript:function(tree){if(tree!==this.rootTree_&&this.rootTree_){var functionTransform=new BlockBindingTransformer(this.idGenerator_,this.reporter_,tree,this.scopeBuilder_),newTree=functionTransform.transformAny(tree);if(newTree===tree)return tree;tree=new Script(tree.location,newTree.scriptItemList,tree.moduleName)}else if(tree=$traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformScript").call(this,tree),this.prependStatement_.length||this.blockRenames_.length){var scriptItemList=prependStatements.apply(void 0,$traceurRuntime.spread([tree.scriptItemList],this.prependStatement_));tree=new Script(tree.location,scriptItemList,tree.moduleName),tree=this.flushRenames(tree)}return tree},transformModule:function(tree){if(tree!==this.rootTree_&&this.rootTree_){var functionTransform=new BlockBindingTransformer(this.idGenerator_,this.reporter_,tree,this.scopeBuilder_),newTree=functionTransform.transformAny(tree);if(newTree===tree)return tree;tree=new Module(tree.location,newTree.scriptItemList,tree.moduleName)}else if(tree=$traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformModule").call(this,tree),this.prependStatement_.length||this.blockRenames_.length){var scriptItemList=prependStatements.apply(void 0,$traceurRuntime.spread([tree.scriptItemList],this.prependStatement_));tree=new Module(tree.location,scriptItemList,tree.moduleName),tree=this.flushRenames(tree)}return tree},transformVariableStatement:function(tree){var declarations=this.transformAny(tree.declarations);return declarations.type===ANON_BLOCK?declarations:declarations===tree.declarations?tree:new VariableStatement(tree.location,declarations)},transformVariableDeclarationList:function(tree){if(tree.declarationType===VAR)return $traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformVariableDeclarationList").call(this,tree);this.maybeRename_=!this.scope_.isVarScope;var declarations=this.transformList(tree.declarations);return this.maybeRename_=!1,new VariableDeclarationList(tree.location,VAR,declarations)},transformVariableDeclaration:function(tree){var maybeRename=this.maybeRename_,lvalue=this.transformAny(tree.lvalue);this.maybeRename_=!1;var initializer=null;return tree.initializer?initializer=this.transformAny(tree.initializer):varNeedsInitializer(tree,this.currentLoopTree_)&&(initializer=parseExpression($traceurRuntime.getTemplateObject(["void 0"]))),this.maybeRename_=maybeRename,tree.lvalue===lvalue&&tree.initializer===initializer?tree:new VariableDeclaration(tree.location,lvalue,tree.typeAnnotation,initializer)},transformBindingIdentifier:function(tree){if(this.maybeRename_){var origName=tree.getStringValue(),newName=this.newNameFromOrig(origName,this.blockRenames_);if(origName===newName)return tree;var newToken=new IdentifierToken(tree.location,newName),bindingIdentifier=new BindingIdentifier(tree.location,newToken);return this.scope_.renameBinding(origName,bindingIdentifier,VAR,this.reporter_),bindingIdentifier}return $traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformBindingIdentifier").call(this,tree)},transformBindingElement:function(tree){var maybeRename=this.maybeRename_,inObjectPattern=this.inObjectPattern_,binding=this.transformAny(tree.binding);this.maybeRename_=!1,this.inObjectPattern_=!1;var initializer=this.transformAny(tree.initializer);if(this.maybeRename_=maybeRename,this.inObjectPattern_=inObjectPattern,tree.binding===binding&&tree.initializer===initializer)return tree;var bindingElement=new BindingElement(tree.location,binding,initializer);return this.inObjectPattern_&&tree.binding!==binding&&tree.binding.type===BINDING_IDENTIFIER?new ObjectPatternField(tree.location,new LiteralPropertyName(tree.location,tree.binding.identifierToken),bindingElement):bindingElement},transformObjectPattern:function(tree){var inObjectPattern=this.inObjectPattern_;this.inObjectPattern_=!0;var transformed=$traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformObjectPattern").call(this,tree);return this.inObjectPattern_=inObjectPattern,transformed},transformObjectPatternField:function(tree){var name=this.transformAny(tree.name);this.inObjectPattern_=!1;var element=this.transformAny(tree.element);return this.inObjectPattern_=!0,tree.name===name&&tree.element===element?tree:new ObjectPatternField(tree.location,name,element)},transformBlock:function(tree){var scope=this.pushScope(tree),outerPrepends=this.prependBlockStatement_;return this.prependBlockStatement_=[],tree=$traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformBlock").call(this,tree),this.prependBlockStatement_.length&&(tree=new Block(tree.location,prependStatements.apply(void 0,$traceurRuntime.spread([tree.statements],this.prependBlockStatement_)))),this.prependBlockStatement_=outerPrepends,tree=this.flushRenames(tree),this.popScope(scope),tree},transformCatch:function(tree){var scope=this.pushScope(tree),binding=this.transformAny(tree.binding),statements=this.transformList(tree.catchBody.statements);return binding===tree.binding&&statements===tree.catchBody.statements||(tree=new Catch(tree.location,binding,new Block(tree.catchBody.location,statements))),tree=this.flushRenames(tree),this.popScope(scope),tree},transformFunctionForScope_:function(func,tree){var scope=this.pushScope(tree);return tree=func(),tree=this.flushRenames(tree),this.popScope(scope),tree},transformGetAccessor:function(tree){var $__3=this;return this.transformFunctionForScope_(function(){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformGetAccessor").call($__3,tree)},tree)},transformSetAccessor:function(tree){var $__3=this;return this.transformFunctionForScope_(function(){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformSetAccessor").call($__3,tree)},tree)},transformFunctionExpression:function(tree){var $__3=this;return this.transformFunctionForScope_(function(){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformFunctionExpression").call($__3,tree)},tree)},transformFunctionDeclaration:function(tree){var $__3=this;if(!this.scope_.isVarScope){var origName=tree.name.getStringValue(),newName=this.newNameFromOrig(origName,this.blockRenames_),functionExpression=new FunctionExpression(tree.location,null,tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body);this.revisitTreeForScopes(functionExpression),functionExpression=this.transformAny(functionExpression);var bindingIdentifier=createBindingIdentifier(newName),statement=new VariableStatement(tree.location,new VariableDeclarationList(tree.location,VAR,[new VariableDeclaration(tree.location,bindingIdentifier,null,functionExpression)]));return this.scope_.renameBinding(origName,bindingIdentifier,VAR,this.reporter_),this.prependBlockStatement_.push(statement),new AnonBlock(null,[])}return this.transformFunctionForScope_(function(){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformFunctionDeclaration").call($__3,tree)},tree)},transformLoop_:function(func,tree,loopFactory){var scope,initializerIsBlockBinding,$__3=this;tree.initializer&&tree.initializer.type===VARIABLE_DECLARATION_LIST&&tree.initializer.declarationType!==VAR&&(initializerIsBlockBinding=!0),initializerIsBlockBinding&&(scope=this.pushScope(tree));var finder=new FindBlockBindingInLoop(tree,this.scopeBuilder_);if(finder.visitAny(tree),finder.found){var iifeParameterList=[],iifeArgumentList=[],renames$__4=[],initializer$__5=null;tree.initializer&&(tree.initializer.type===VARIABLE_DECLARATION_LIST&&tree.initializer.declarationType!==VAR?(initializer$__5=new VariableDeclarationList(null,VAR,tree.initializer.declarations.map(function(declaration){var origName=$__3.getVariableName_(declaration),newName=$__3.newNameFromOrig(origName,renames$__4);iifeArgumentList.push(createIdentifierExpression(newName)),iifeParameterList.push(new FormalParameter(null,new BindingElement(null,createBindingIdentifier(origName),null),null,[]));
var bindingIdentifier=createBindingIdentifier(newName);return $__3.scope_.renameBinding(origName,bindingIdentifier,VAR,$__3.reporter_),new VariableDeclaration(null,bindingIdentifier,null,declaration.initializer)})),initializer$__5=renameAll(renames$__4,initializer$__5)):initializer$__5=this.transformAny(tree.initializer));var loopLabel=this.labelledLoops_.get(tree),iifeInfo=FnExtractAbruptCompletions.createIIFE(this.idGenerator_,tree.body,iifeParameterList,iifeArgumentList,function(){return loopLabel=loopLabel||createIdentifierToken($__3.idGenerator_.generateUniqueIdentifier())},this.scope_.inGenerator);tree=loopFactory(initializer$__5,renames$__4,iifeInfo.loopBody),loopLabel&&(tree=new LabelledStatement(tree.location,loopLabel,tree)),tree=new AnonBlock(tree.location,[iifeInfo.variableStatements,tree]),this.revisitTreeForScopes(tree),tree=this.transformAny(tree)}else{var callFunc=function(){var currentLoopTree=$__3.currentLoopTree_;$__3.currentLoopTree_=tree;var rv=func(tree);return $__3.currentLoopTree_=currentLoopTree,rv};if(!initializerIsBlockBinding)return callFunc();var renames=[],initializer=new VariableDeclarationList(null,VAR,tree.initializer.declarations.map(function(declaration){var origName=$__3.getVariableName_(declaration),newName=$__3.newNameFromOrig(origName,renames),bindingIdentifier=createBindingIdentifier(newName);return $__3.scope_.renameBinding(origName,bindingIdentifier,VAR,$__3.reporter_),new VariableDeclaration(null,bindingIdentifier,null,declaration.initializer)}));initializer=renameAll(renames,initializer),tree=loopFactory(initializer,renames,renameAll(renames,tree.body)),this.revisitTreeForScopes(tree),tree=callFunc()}return initializerIsBlockBinding&&(tree=this.flushRenames(tree),this.popScope(scope)),tree},transformForInStatement:function(tree){var $__3=this;return this.transformLoop_(function(t){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformForInStatement").call($__3,t)},tree,function(initializer,renames,body){return new ForInStatement(tree.location,initializer,renameAll(renames,tree.collection),body)})},transformForStatement:function(tree){var $__3=this;return this.transformLoop_(function(t){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformForStatement").call($__3,t)},tree,function(initializer,renames,body){return new ForStatement(tree.location,initializer,renameAll(renames,tree.condition),renameAll(renames,tree.increment),body)})},transformWhileStatement:function(tree){var $__3=this;return this.transformLoop_(function(t){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformWhileStatement").call($__3,t)},tree,function(initializer,renames,body){return new WhileStatement(tree.location,renameAll(renames,tree.condition),body)})},transformDoWhileStatement:function(tree){var $__3=this;return this.transformLoop_(function(t){return $traceurRuntime.superGet($__3,BlockBindingTransformer.prototype,"transformDoWhileStatement").call($__3,t)},tree,function(initializer,renames,body){return new DoWhileStatement(tree.location,body,renameAll(renames,tree.condition))})},transformLabelledStatement:function(tree){if(tree.statement.isIterationStatement()){this.labelledLoops_.set(tree.statement,tree.name.value);var statement=this.transformAny(tree.statement);return statement.isStatement()?statement===tree.statement?tree:new LabelledStatement(tree.location,tree.name,statement):statement}return $traceurRuntime.superGet(this,BlockBindingTransformer.prototype,"transformLabelledStatement").call(this,tree)}},{},$__super)}(ParseTreeTransformer),Rename=function(){function Rename(oldName,newName){this.oldName=oldName,this.newName=newName}return $traceurRuntime.createClass(Rename,{},{})}(),FindBlockBindingInLoop=function($__super){function FindBlockBindingInLoop(tree,scopeBuilder){$traceurRuntime.superConstructor(FindBlockBindingInLoop).call(this),this.scopeBuilder_=scopeBuilder,this.topScope_=scopeBuilder.getScopeForTree(tree)||scopeBuilder.getScopeForTree(tree.body),this.outOfScope_=null,this.acceptLoop_=tree.isIterationStatement()}return $traceurRuntime.createClass(FindBlockBindingInLoop,{visitForInStatement:function(tree){var $__3=this;this.visitLoop_(tree,function(){return $traceurRuntime.superGet($__3,FindBlockBindingInLoop.prototype,"visitForInStatement").call($__3,tree)})},visitForStatement:function(tree){var $__3=this;this.visitLoop_(tree,function(){return $traceurRuntime.superGet($__3,FindBlockBindingInLoop.prototype,"visitForStatement").call($__3,tree)})},visitWhileStatement:function(tree){var $__3=this;this.visitLoop_(tree,function(){return $traceurRuntime.superGet($__3,FindBlockBindingInLoop.prototype,"visitWhileStatement").call($__3,tree)})},visitDoWhileStatement:function(tree){var $__3=this;this.visitLoop_(tree,function(){return $traceurRuntime.superGet($__3,FindBlockBindingInLoop.prototype,"visitDoWhileStatement").call($__3,tree)})},visitLoop_:function(tree,func){this.acceptLoop_?this.acceptLoop_=!1:this.outOfScope_||(this.outOfScope_=this.scopeBuilder_.getScopeForTree(tree)||this.scopeBuilder_.getScopeForTree(tree.body)),func()},visitArrowFunction:function(tree){this.visitFunction_(tree)},visitFunctionDeclaration:function(tree){this.visitFunction_(tree)},visitFunctionExpression:function(tree){this.visitFunction_(tree)},visitGetAccessor:function(tree){this.visitFunction_(tree)},visitMethod:function(tree){this.visitFunction_(tree)},visitSetAccessor:function(tree){this.visitFunction_(tree)},visitFunction_:function(tree){var $__3=this;this.found=new FindIdentifiers(tree,function(identifierToken,identScope){identScope=$__3.scopeBuilder_.getScopeForTree(identScope);var fnScope=$__3.outOfScope_||$__3.scopeBuilder_.getScopeForTree(tree);if(identScope.hasLexicalBindingName(identifierToken))return!1;for(;identScope!==fnScope&&(identScope=identScope.parent);)if(identScope.hasLexicalBindingName(identifierToken))return!1;for(;fnScope=fnScope.parent;){if(fnScope.hasLexicalBindingName(identifierToken))return!0;if(fnScope.hasVariableBindingName(identifierToken))return!1;if(fnScope===$__3.topScope_)break}return!1}).found}},{},$__super)}(FindVisitor);return{get BlockBindingTransformer(){return BlockBindingTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/MakeStrictTransformer.js",[],function(){"use strict";function prepend(statements){return $traceurRuntime.spread([createUseStrictDirective()],statements)}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/MakeStrictTransformer.js")),FunctionBody=$__1.FunctionBody,Script=$__1.Script,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/MakeStrictTransformer.js")).ParseTreeTransformer,createUseStrictDirective=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/MakeStrictTransformer.js")).createUseStrictDirective,hasUseStrict=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/util.js","traceur@0.0.107/src/codegeneration/MakeStrictTransformer.js")).hasUseStrict,MakeStrictTransformer=function($__super){function MakeStrictTransformer(){$traceurRuntime.superConstructor(MakeStrictTransformer).apply(this,arguments)}return $traceurRuntime.createClass(MakeStrictTransformer,{transformScript:function(tree){return hasUseStrict(tree.scriptItemList)?tree:new Script(tree.location,prepend(tree.scriptItemList),tree.moduleName)},transformFunctionBody:function(tree){return hasUseStrict(tree.statements)?tree:new FunctionBody(tree.location,prepend(tree.statements))}},{transformTree:function(tree){return(new MakeStrictTransformer).transformAny(tree)}},$__super)}(ParseTreeTransformer);return{get MakeStrictTransformer(){return MakeStrictTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ClassTransformer.js",[],function(){"use strict";function classCall(func,object,staticObject,superClass){return superClass?parseExpression($traceurRuntime.getTemplateObject(["($traceurRuntime.createClass)(",", ",", ",",\n                                       ",")"]),func,object,staticObject,superClass):parseExpression($traceurRuntime.getTemplateObject(["($traceurRuntime.createClass)(",", ",", ",")"]),func,object,staticObject)}function functionExpressionToDeclaration(tree,name){return name=null===tree.name?createBindingIdentifier(name):tree.name,new FunctionDeclaration(tree.location,name,tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body)}function removeStaticModifier(tree){switch(tree.type){case GET_ACCESSOR:return new GetAccessor(tree.location,(!1),tree.name,tree.typeAnnotation,tree.annotations,tree.body);case SET_ACCESSOR:return new SetAccessor(tree.location,(!1),tree.name,tree.parameterList,tree.annotations,tree.body);case METHOD:return new Method(tree.location,(!1),tree.functionKind,tree.name,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body,tree.debugName);default:throw Error("unreachable")}}function isConstructor(tree){if(tree.type!==METHOD||tree.isStatic||null!==tree.functionKind)return!1;var name=tree.name;return name.type===LITERAL_PROPERTY_NAME&&name.literalToken.value===CONSTRUCTOR}var CONSTRUCTOR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")).CONSTRUCTOR,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")),AnonBlock=$__3.AnonBlock,ClassExpression=$__3.ClassExpression,ExportDeclaration=$__3.ExportDeclaration,ExportSpecifier=$__3.ExportSpecifier,ExportSpecifierSet=$__3.ExportSpecifierSet,FunctionDeclaration=$__3.FunctionDeclaration,FunctionExpression=$__3.FunctionExpression,GetAccessor=$__3.GetAccessor,Method=$__3.Method,NamedExport=$__3.NamedExport,SetAccessor=$__3.SetAccessor,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")),CLASS_DECLARATION=$__4.CLASS_DECLARATION,EXPORT_DEFAULT=($__4.COMPUTED_PROPERTY_NAME,$__4.EXPORT_DEFAULT),GET_ACCESSOR=$__4.GET_ACCESSOR,LITERAL_PROPERTY_NAME=$__4.LITERAL_PROPERTY_NAME,METHOD=$__4.METHOD,SET_ACCESSOR=$__4.SET_ACCESSOR,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")).TempVarTransformer,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")),CONST=$__6.CONST,LET=$__6.LET,VAR=$__6.VAR,MakeStrictTransformer=($__6.STRING,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./MakeStrictTransformer.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")).MakeStrictTransformer),ParenTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParenTrait.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")).ParenTrait,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")),createBindingIdentifier=$__9.createBindingIdentifier,id=$__9.createIdentifierExpression,createIdentifierToken=$__9.createIdentifierToken,createObjectLiteral=$__9.createObjectLiteral,createVariableStatement=$__9.createVariableStatement,hasUseStrict=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/util.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")).hasUseStrict,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/ClassTransformer.js")),parseExpression=$__11.parseExpression,parsePropertyDefinition=$__11.parsePropertyDefinition,$__default=($__11.parseStatement,isConstructor),ClassTransformer=function($__super){function ClassTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(ClassTransformer).call(this,identifierGenerator,reporter,options),this.strictCount_=0,this.state_=null}return $traceurRuntime.createClass(ClassTransformer,{transformModule:function(tree){return this.strictCount_=1,$traceurRuntime.superGet(this,ClassTransformer.prototype,"transformModule").call(this,tree)},transformScript:function(tree){return this.strictCount_=hasUseStrict(tree.scriptItemList)?1:0,$traceurRuntime.superGet(this,ClassTransformer.prototype,"transformScript").call(this,tree)},transformFunctionBody:function(tree){var useStrict=hasUseStrict(tree.statements)?1:0;this.strictCount_+=useStrict;var result=$traceurRuntime.superGet(this,ClassTransformer.prototype,"transformFunctionBody").call(this,tree);return this.strictCount_-=useStrict,result},makeStrict_:function(tree){return this.strictCount_?tree:MakeStrictTransformer.transformTree(tree)},transformClassDeclaration:function(tree){var classExpression=new ClassExpression(tree.location,tree.name,tree.superClass,tree.elements,tree.annotations,tree.typeParameters),transformed=this.transformClassExpression(classExpression),useLet=!this.options.transformOptions.blockBinding&&this.options.parseOptions.blockBinding;return createVariableStatement(useLet?LET:VAR,tree.name,transformed)},transformClassExpression:function(tree){var superClass=this.transformAny(tree.superClass),elements=this.transformList(tree.elements),annotations=this.transformList(tree.annotations),constructor=null,protoElements=elements.filter(function(tree){return!tree.isStatic&&(!isConstructor(tree)||(constructor=tree,!1))}),staticElements=elements.filter(function(tree){return tree.isStatic}).map(removeStaticModifier),protoObject=createObjectLiteral(protoElements),staticObject=createObjectLiteral(staticElements);constructor||(constructor=this.getDefaultConstructor_(tree));var expression,func=new FunctionExpression(tree.location,tree.name,null,constructor.parameterList,null,annotations,constructor.body);if(tree.name){var functionStatement,name=tree.name.identifierToken,nameId=id(""+name);functionStatement=!this.options.transformOptions.blockBinding&&this.options.parseOptions.blockBinding?createVariableStatement(CONST,tree.name,func):functionExpressionToDeclaration(func,name),expression=superClass?parseExpression($traceurRuntime.getTemplateObject(["function($__super) {\n          ",";\n          return ($traceurRuntime.createClass)(",", ",",\n                                               ",", $__super);\n        }(",")"]),functionStatement,nameId,protoObject,staticObject,superClass):parseExpression($traceurRuntime.getTemplateObject(["function() {\n          ",";\n          return ($traceurRuntime.createClass)(",", ",",\n                                               ",");\n        }()"]),functionStatement,nameId,protoObject,staticObject)}else expression=classCall(func,protoObject,staticObject,superClass);return this.makeStrict_(expression)},transformExportDeclaration:function(tree){return tree.declaration.type===EXPORT_DEFAULT&&tree.declaration.expression.type===CLASS_DECLARATION?this.transformExportDefaultClass_(tree.declaration):$traceurRuntime.superGet(this,ClassTransformer.prototype,"transformExportDeclaration").call(this,tree)},transformExportDefaultClass_:function(tree){var name=tree.expression.name.identifierToken,specifier=new ExportSpecifier(name.location,name,createIdentifierToken("default")),exportTree=new ExportSpecifierSet(name.location,[specifier]),named=new NamedExport(name.location,exportTree,null),exp=new ExportDeclaration(name.location,named,[]),classTree=this.transformAny(tree.expression);return new AnonBlock(null,[classTree,exp])},getDefaultConstructor_:function(tree){if(tree.superClass){var name=id(tree.name.identifierToken);return parsePropertyDefinition($traceurRuntime.getTemplateObject(["constructor() {\n        $traceurRuntime.superConstructor(",").apply(this, arguments)\n      }"]),name)}return parsePropertyDefinition($traceurRuntime.getTemplateObject(["constructor() {}"]))}},{},$__super)}(ParenTrait(TempVarTransformer));return{get default(){return $__default},get ClassTransformer(){return ClassTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ClosureModuleTransformer.js",[],function(){"use strict";var ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleTransformer.js","traceur@0.0.107/src/codegeneration/ClosureModuleTransformer.js")).ModuleTransformer,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ClosureModuleTransformer.js")),createIdentifierExpression=$__4.createIdentifierExpression,createMemberExpression=$__4.createMemberExpression,createPropertyNameAssignment=$__4.createPropertyNameAssignment,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ClosureModuleTransformer.js")),EXPORT_DEFAULT=$__5.EXPORT_DEFAULT,EXPORT_SPECIFIER=$__5.EXPORT_SPECIFIER,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/ClosureModuleTransformer.js")),parseExpression=$__6.parseExpression,parseStatement=$__6.parseStatement,parseStatements=$__6.parseStatements,ClosureModuleTransformer=($traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/ClosureModuleTransformer.js")).prependStatements,function($__super){function ClosureModuleTransformer(){$traceurRuntime.superConstructor(ClosureModuleTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ClosureModuleTransformer,{moduleProlog:function(){if(!this.moduleName)throw Error("Closure modules (goog.module) require a moduleName");return parseStatements($traceurRuntime.getTemplateObject(["goog.module(",");"]),this.moduleName)},wrapModule:function(statements){if(this.hasStarExports())throw Error('Closure modules (goog.module) do not support "export *"');return statements},appendExportStatement:function(statements){if(!this.hasExports())return statements;var exportObject=this.getExportObject();return statements.push(parseStatement($traceurRuntime.getTemplateObject(["exports = ",""]),exportObject)),statements},getGetterExport:function($__1){var expression,$__2=$__1,name=$__2.name,tree=$__2.tree,moduleSpecifier=$__2.moduleSpecifier;switch(tree.type){case EXPORT_DEFAULT:expression=createIdentifierExpression("$__default");break;case EXPORT_SPECIFIER:if(moduleSpecifier){var idName=this.getTempVarNameForModuleSpecifier(moduleSpecifier);expression=createMemberExpression(idName,tree.lhs)}else expression=createPropertyNameAssignment(name,tree.lhs);break;default:expression=createIdentifierExpression(name)}return createPropertyNameAssignment(name,expression)},transformModuleSpecifier:function(tree){var moduleName=tree.token.processedValue;return parseExpression($traceurRuntime.getTemplateObject(["goog.require(",")"]),moduleName)}},{},$__super)}(ModuleTransformer));return{get ClosureModuleTransformer(){return ClosureModuleTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js",[],function(){"use strict";var ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleTransformer.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js")).ModuleTransformer,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js")),CALL_EXPRESSION=$__3.CALL_EXPRESSION,GET_ACCESSOR=$__3.GET_ACCESSOR,OBJECT_LITERAL=$__3.OBJECT_LITERAL,PROPERTY_NAME_ASSIGNMENT=$__3.PROPERTY_NAME_ASSIGNMENT,RETURN_STATEMENT=$__3.RETURN_STATEMENT,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js")),ArgumentList=$__4.ArgumentList,CallExpression=$__4.CallExpression,ExpressionStatement=$__4.ExpressionStatement,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/assert.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js")).assert,globalThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./globalThis.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js"))["default"],$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js")),parseExpression=$__7.parseExpression,parsePropertyDefinition=$__7.parsePropertyDefinition,parseStatements=$__7.parseStatements,scopeContainsThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./scopeContainsThis.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js"))["default"],$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js")),createEmptyParameterList=$__9.createEmptyParameterList,createFunctionExpression=$__9.createFunctionExpression,createIdentifierExpression=$__9.createIdentifierExpression,createObjectLiteral=$__9.createObjectLiteral,createPropertyNameAssignment=$__9.createPropertyNameAssignment,createVariableStatement=$__9.createVariableStatement,createVariableDeclaration=$__9.createVariableDeclaration,createVariableDeclarationList=$__9.createVariableDeclarationList,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/CommonJsModuleTransformer.js")).VAR,CommonJsModuleTransformer=function($__super){function CommonJsModuleTransformer(identifierGenerator,reporter){var options=arguments[2];$traceurRuntime.superConstructor(CommonJsModuleTransformer).call(this,identifierGenerator,reporter,options),this.moduleVars_=[],this.anonymousModule=options&&!options.bundle&&options.moduleName!==!0}return $traceurRuntime.createClass(CommonJsModuleTransformer,{getModuleName:function(tree){return this.anonymousModule?null:tree.moduleName},moduleProlog:function(){var statements=$traceurRuntime.superGet(this,CommonJsModuleTransformer.prototype,"moduleProlog").call(this);if(this.moduleVars_.length){var tmpVarDeclarations=createVariableStatement(createVariableDeclarationList(VAR,this.moduleVars_.map(function(varName){return createVariableDeclaration(varName,null)})));statements.push(tmpVarDeclarations)}return statements},wrapModule:function(statements){var needsIife=statements.some(scopeContainsThis);if(needsIife)return parseStatements($traceurRuntime.getTemplateObject(["module.exports = function() {\n            ","\n          }.call(",");"]),statements,globalThis());var last=statements[statements.length-1];statements=statements.slice(0,-1),assert(last.type===RETURN_STATEMENT);var exportExpression=last.expression;if(this.hasExports()){var exportStatement=this.transformExportExpressionToModuleExport(exportExpression);statements=statements.concat(exportStatement)}return statements},transformExportExpressionToModuleExport:function(tree){var expression;if(tree.type===CALL_EXPRESSION){var descriptors=this.transformObjectLiteralToDescriptors(tree.args.args[0]),object=parseExpression($traceurRuntime.getTemplateObject(["Object.defineProperties(module.exports, ",")"]),descriptors),newArgs=new ArgumentList(tree.args.location,$traceurRuntime.spread([object],tree.args.args.slice(1)));expression=new CallExpression(tree.location,tree.operand,newArgs)}else{var descriptors$__1=this.transformObjectLiteralToDescriptors(tree);expression=parseExpression($traceurRuntime.getTemplateObject(["Object.defineProperties(module.exports, ",")"]),descriptors$__1)}return new ExpressionStatement(expression.location,expression)},transformObjectLiteralToDescriptors:function(literalTree){assert(literalTree.type===OBJECT_LITERAL);var props=literalTree.propertyNameAndValues.map(function(exp){var descriptor;switch(exp.type){case GET_ACCESSOR:var getterFunction=createFunctionExpression(createEmptyParameterList(),exp.body);descriptor=parseExpression($traceurRuntime.getTemplateObject(["{get: ","}"]),getterFunction);break;case PROPERTY_NAME_ASSIGNMENT:descriptor=parseExpression($traceurRuntime.getTemplateObject(["{value: ","}"]),exp.value);break;default:throw Error("Unexpected property type "+exp.type)}return createPropertyNameAssignment(exp.name,descriptor)});return createObjectLiteral(props)},transformModuleSpecifier:function(tree){var moduleName=tree.token.processedValue,tmpVar=this.getTempVarNameForModuleSpecifier(tree);this.moduleVars_.push(tmpVar);var tvId=createIdentifierExpression(tmpVar);return parseExpression($traceurRuntime.getTemplateObject(["("," = require(","),\n        "," && ",".__esModule && "," || {default: ","})"]),tvId,moduleName,tvId,tvId,tvId,tvId)},getExportProperties:function(){var properties=$traceurRuntime.superGet(this,CommonJsModuleTransformer.prototype,"getExportProperties").call(this);return this.exportVisitor_.hasExports()&&properties.push(parsePropertyDefinition($traceurRuntime.getTemplateObject(["__esModule: true"]))),properties}},{},$__super)}(ModuleTransformer);return{get CommonJsModuleTransformer(){return CommonJsModuleTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ParameterTransformer.js",[],function(){"use strict";var FunctionBody=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ParameterTransformer.js")).FunctionBody,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ParameterTransformer.js")).TempVarTransformer,prependStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/ParameterTransformer.js")).prependStatements,stack=[],ParameterTransformer=function($__super){function ParameterTransformer(){$traceurRuntime.superConstructor(ParameterTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ParameterTransformer,{transformArrowFunction:function(tree){return stack.push([]),$traceurRuntime.superGet(this,ParameterTransformer.prototype,"transformArrowFunction").call(this,tree)},transformFunctionDeclaration:function(tree){return stack.push([]),$traceurRuntime.superGet(this,ParameterTransformer.prototype,"transformFunctionDeclaration").call(this,tree)},transformFunctionExpression:function(tree){return stack.push([]),$traceurRuntime.superGet(this,ParameterTransformer.prototype,"transformFunctionExpression").call(this,tree)},transformGetAccessor:function(tree){return stack.push([]),$traceurRuntime.superGet(this,ParameterTransformer.prototype,"transformGetAccessor").call(this,tree)},transformSetAccessor:function(tree){return stack.push([]),$traceurRuntime.superGet(this,ParameterTransformer.prototype,"transformSetAccessor").call(this,tree)},transformMethod:function(tree){return stack.push([]),$traceurRuntime.superGet(this,ParameterTransformer.prototype,"transformMethod").call(this,tree)},transformFunctionBody:function(tree){var transformedTree=$traceurRuntime.superGet(this,ParameterTransformer.prototype,"transformFunctionBody").call(this,tree),statements=stack.pop();return statements.length?(statements=prependStatements.apply(void 0,$traceurRuntime.spread([transformedTree.statements],statements)),new FunctionBody(transformedTree.location,statements)):transformedTree},get parameterStatements(){return stack[stack.length-1]},transformConstructorType:function(tree){return tree},transformFunctionType:function(tree){return tree}},{},$__super)}(TempVarTransformer);return{get ParameterTransformer(){return ParameterTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/DefaultParametersTransformer.js",[],function(){"use strict";function createDefaultAssignment(index,binding,initializer){var assignmentExpression,argumentsExpression=createMemberLookupExpression(createIdentifierExpression(ARGUMENTS),createNumberLiteral(index));return assignmentExpression=null===initializer||isUndefined(initializer)||isVoidExpression(initializer)?argumentsExpression:createConditionalExpression(createBinaryExpression(argumentsExpression,createOperatorToken(NOT_EQUAL_EQUAL),createVoid0()),argumentsExpression,initializer),createVariableStatement(VAR,binding,assignmentExpression)}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/util.js","traceur@0.0.107/src/codegeneration/DefaultParametersTransformer.js")),isUndefined=$__1.isUndefined,isVoidExpression=$__1.isVoidExpression,FormalParameterList=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/DefaultParametersTransformer.js")).FormalParameterList,ParameterTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParameterTransformer.js","traceur@0.0.107/src/codegeneration/DefaultParametersTransformer.js")).ParameterTransformer,ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/DefaultParametersTransformer.js")).ARGUMENTS,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/DefaultParametersTransformer.js")),NOT_EQUAL_EQUAL=$__5.NOT_EQUAL_EQUAL,VAR=$__5.VAR,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/DefaultParametersTransformer.js")),createBinaryExpression=$__6.createBinaryExpression,createConditionalExpression=$__6.createConditionalExpression,createIdentifierExpression=$__6.createIdentifierExpression,createMemberLookupExpression=$__6.createMemberLookupExpression,createNumberLiteral=$__6.createNumberLiteral,createOperatorToken=$__6.createOperatorToken,createVariableStatement=$__6.createVariableStatement,createVoid0=$__6.createVoid0,DefaultParametersTransformer=function($__super){function DefaultParametersTransformer(){$traceurRuntime.superConstructor(DefaultParametersTransformer).apply(this,arguments)}return $traceurRuntime.createClass(DefaultParametersTransformer,{transformFormalParameterList:function(tree){for(var parameters=[],changed=!1,defaultToUndefined=!1,i=0;i<tree.parameters.length;i++){var param=this.transformAny(tree.parameters[i]);param!==tree.parameters[i]&&(changed=!0),param.isRestParameter()||!param.parameter.initializer&&!defaultToUndefined?parameters.push(param):(defaultToUndefined=!0,changed=!0,this.parameterStatements.push(createDefaultAssignment(i,param.parameter.binding,param.parameter.initializer)))}return changed?new FormalParameterList(tree.location,parameters):tree}},{},$__super)}(ParameterTransformer);return{get DefaultParametersTransformer(){return DefaultParametersTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/assignmentOperatorToBinaryOperator.js",[],function(){"use strict";function assignmentOperatorToBinaryOperator(type){switch(type){case STAR_EQUAL:return STAR;case STAR_STAR_EQUAL:return STAR_STAR;case SLASH_EQUAL:return SLASH;case PERCENT_EQUAL:return PERCENT;case PLUS_EQUAL:return PLUS;case MINUS_EQUAL:return MINUS;case LEFT_SHIFT_EQUAL:return LEFT_SHIFT;case RIGHT_SHIFT_EQUAL:return RIGHT_SHIFT;case UNSIGNED_RIGHT_SHIFT_EQUAL:return UNSIGNED_RIGHT_SHIFT;case AMPERSAND_EQUAL:return AMPERSAND;case CARET_EQUAL:return CARET;case BAR_EQUAL:return BAR;default:throw Error("unreachable")}}var $__0=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/assignmentOperatorToBinaryOperator.js")),AMPERSAND=$__0.AMPERSAND,AMPERSAND_EQUAL=$__0.AMPERSAND_EQUAL,BAR=$__0.BAR,BAR_EQUAL=$__0.BAR_EQUAL,CARET=$__0.CARET,CARET_EQUAL=$__0.CARET_EQUAL,LEFT_SHIFT=$__0.LEFT_SHIFT,LEFT_SHIFT_EQUAL=$__0.LEFT_SHIFT_EQUAL,MINUS=$__0.MINUS,MINUS_EQUAL=$__0.MINUS_EQUAL,PERCENT=$__0.PERCENT,PERCENT_EQUAL=$__0.PERCENT_EQUAL,PLUS=$__0.PLUS,PLUS_EQUAL=$__0.PLUS_EQUAL,RIGHT_SHIFT=$__0.RIGHT_SHIFT,RIGHT_SHIFT_EQUAL=$__0.RIGHT_SHIFT_EQUAL,SLASH=$__0.SLASH,SLASH_EQUAL=$__0.SLASH_EQUAL,STAR=$__0.STAR,STAR_EQUAL=$__0.STAR_EQUAL,STAR_STAR=$__0.STAR_STAR,STAR_STAR_EQUAL=$__0.STAR_STAR_EQUAL,UNSIGNED_RIGHT_SHIFT=$__0.UNSIGNED_RIGHT_SHIFT,UNSIGNED_RIGHT_SHIFT_EQUAL=$__0.UNSIGNED_RIGHT_SHIFT_EQUAL,$__default=assignmentOperatorToBinaryOperator;
return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js",[],function(){"use strict";function getResult(tree){return tree.type===COMMA_EXPRESSION?tree.expressions[tree.expressions.length-1]:tree}function getExpressions(tree){return tree.type===COMMA_EXPRESSION?tree.expressions.slice(0,-1):[]}var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js")).ParseTreeTransformer,$__13=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js")),createAssignmentExpression=$__13.createAssignmentExpression,createCommaExpression=$__13.createCommaExpression,id=$__13.createIdentifierExpression,createMemberExpression=$__13.createMemberExpression,createNumberLiteral=$__13.createNumberLiteral,createOperatorToken=$__13.createOperatorToken,createParenExpression=$__13.createParenExpression,$__14=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js")),AND=$__14.AND,EQUAL=$__14.EQUAL,MINUS=$__14.MINUS,MINUS_EQUAL=$__14.MINUS_EQUAL,MINUS_MINUS=$__14.MINUS_MINUS,OR=$__14.OR,PLUS=$__14.PLUS,PLUS_EQUAL=$__14.PLUS_EQUAL,PLUS_PLUS=$__14.PLUS_PLUS,$__15=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js")),COMMA_EXPRESSION=$__15.COMMA_EXPRESSION,IDENTIFIER_EXPRESSION=$__15.IDENTIFIER_EXPRESSION,MEMBER_EXPRESSION=$__15.MEMBER_EXPRESSION,MEMBER_LOOKUP_EXPRESSION=$__15.MEMBER_LOOKUP_EXPRESSION,PROPERTY_NAME_ASSIGNMENT=$__15.PROPERTY_NAME_ASSIGNMENT,SPREAD_EXPRESSION=$__15.SPREAD_EXPRESSION,TEMPLATE_LITERAL_PORTION=$__15.TEMPLATE_LITERAL_PORTION,$__16=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js")),ArgumentList=$__16.ArgumentList,ArrayLiteral=$__16.ArrayLiteral,AwaitExpression=$__16.AwaitExpression,BinaryExpression=$__16.BinaryExpression,CallExpression=$__16.CallExpression,ClassExpression=$__16.ClassExpression,ConditionalExpression=$__16.ConditionalExpression,MemberExpression=$__16.MemberExpression,MemberLookupExpression=$__16.MemberLookupExpression,NewExpression=$__16.NewExpression,ObjectLiteral=$__16.ObjectLiteral,PropertyNameAssignment=$__16.PropertyNameAssignment,SpreadExpression=$__16.SpreadExpression,TemplateLiteralExpression=$__16.TemplateLiteralExpression,TemplateSubstitution=$__16.TemplateSubstitution,UnaryExpression=$__16.UnaryExpression,YieldExpression=$__16.YieldExpression,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/assert.js","traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js")).assert,assignmentOperatorToBinaryOperator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./assignmentOperatorToBinaryOperator.js","traceur@0.0.107/src/codegeneration/ExplodeExpressionTransformer.js"))["default"],CommaExpressionBuilder=function(){function CommaExpressionBuilder(tempVar){this.tempVar=tempVar,this.expressions=[]}return $traceurRuntime.createClass(CommaExpressionBuilder,{add:function(tree){var $__2;return tree.type===COMMA_EXPRESSION&&($__2=this.expressions).push.apply($__2,$traceurRuntime.spread(getExpressions(tree))),this},build:function(tree){var tempVar=this.tempVar;return this.expressions.push(createAssignmentExpression(tempVar,tree),tempVar),createCommaExpression(this.expressions)}},{})}(),ExplodeExpressionTransformer=function($__super){function ExplodeExpressionTransformer(tempVarTransformer){$traceurRuntime.superConstructor(ExplodeExpressionTransformer).call(this),this.tempVarTransformer_=tempVarTransformer}return $traceurRuntime.createClass(ExplodeExpressionTransformer,{addTempVar:function(){var tmpId=this.tempVarTransformer_.addTempVar();return id(tmpId)},transformUnaryExpression:function(tree){if(tree.operator.type===PLUS_PLUS)return this.transformUnaryNumeric_(tree,PLUS_EQUAL);if(tree.operator.type===MINUS_MINUS)return this.transformUnaryNumeric_(tree,MINUS_EQUAL);var operand=this.transformAny(tree.operand);if(operand===tree.operand)return tree;var expressions=$traceurRuntime.spread(getExpressions(operand),[new UnaryExpression(tree.location,tree.operator,getResult(operand))]);return createCommaExpression(expressions)},transformUnaryNumeric_:function(tree,operator){return this.transformAny(new BinaryExpression(tree.location,tree.operand,createOperatorToken(operator),createNumberLiteral(1)))},transformPostfixExpression:function(tree){if(tree.operand.type===MEMBER_EXPRESSION)return this.transformPostfixMemberExpression_(tree);if(tree.operand.type===MEMBER_LOOKUP_EXPRESSION)return this.transformPostfixMemberLookupExpression_(tree);assert(tree.operand.type===IDENTIFIER_EXPRESSION);var operand=tree.operand,tmp=this.addTempVar(),operator=tree.operator.type===PLUS_PLUS?PLUS:MINUS,expressions=[createAssignmentExpression(tmp,operand),createAssignmentExpression(operand,new BinaryExpression(tree.location,tmp,createOperatorToken(operator),createNumberLiteral(1))),tmp];return createCommaExpression(expressions)},transformPostfixMemberExpression_:function(tree){var memberName=tree.operand.memberName,operand=this.transformAny(tree.operand.operand),tmp=this.addTempVar(),memberExpression=new MemberExpression(tree.operand.location,getResult(operand),memberName),operator=tree.operator.type===PLUS_PLUS?PLUS:MINUS,expressions=$traceurRuntime.spread(getExpressions(operand),[createAssignmentExpression(tmp,memberExpression),createAssignmentExpression(memberExpression,new BinaryExpression(tree.location,tmp,createOperatorToken(operator),createNumberLiteral(1))),tmp]);return createCommaExpression(expressions)},transformPostfixMemberLookupExpression_:function(tree){var memberExpression=this.transformAny(tree.operand.memberExpression),operand=this.transformAny(tree.operand.operand),tmp=this.addTempVar(),memberLookupExpression=new MemberLookupExpression(null,getResult(operand),getResult(memberExpression)),operator=tree.operator.type===PLUS_PLUS?PLUS:MINUS,expressions=$traceurRuntime.spread(getExpressions(operand),getExpressions(memberExpression),[createAssignmentExpression(tmp,memberLookupExpression),createAssignmentExpression(memberLookupExpression,new BinaryExpression(tree.location,tmp,createOperatorToken(operator),createNumberLiteral(1))),tmp]);return createCommaExpression(expressions)},transformYieldExpression:function(tree){if(null===tree.expression)return this.createCommaExpressionBuilder_().build(new YieldExpression(tree.location,null,(!1)));var expression=this.transformAny(tree.expression);return this.createCommaExpressionBuilder_().add(expression).build(new YieldExpression(tree.location,getResult(expression),tree.isYieldFor))},transformAwaitExpression:function(tree){var expression=this.transformAny(tree.expression);return this.createCommaExpressionBuilder_().add(expression).build(new AwaitExpression(tree.location,getResult(expression)))},transformParenExpression:function(tree){var expression=this.transformAny(tree.expression);if(expression===tree.expression)return tree;var result=getResult(expression);return result.type===IDENTIFIER_EXPRESSION?expression:this.createCommaExpressionBuilder_().add(expression).build(result)},transformCommaExpression:function(tree){var expressions=this.transformList(tree.expressions);if(expressions===tree.expressions)return tree;for(var builder=new CommaExpressionBuilder(null),i=0;i<expressions.length;i++)builder.add(expressions[i]);return createCommaExpression($traceurRuntime.spread(builder.expressions,[getResult(expressions[expressions.length-1])]))},transformMemberExpression:function(tree){var operand=this.transformAny(tree.operand);return this.createCommaExpressionBuilder_().add(operand).build(new MemberExpression(tree.location,getResult(operand),tree.memberName))},transformMemberLookupExpression:function(tree){var operand=this.transformAny(tree.operand),memberExpression=this.transformAny(tree.memberExpression);return this.createCommaExpressionBuilder_().add(operand).add(memberExpression).build(new MemberLookupExpression(tree.location,getResult(operand),getResult(memberExpression)))},transformBinaryExpression:function(tree){if(tree.operator.isAssignmentOperator())return this.transformAssignmentExpression_(tree);var left=this.transformAny(tree.left),right=this.transformAny(tree.right);if(left===tree.left&&right===tree.right)return tree;if(tree.operator.type===OR)return this.transformOr_(left,right);if(tree.operator.type===AND)return this.transformAnd_(left,right);var expressions=$traceurRuntime.spread(getExpressions(left),getExpressions(right),[new BinaryExpression(tree.location,getResult(left),tree.operator,getResult(right))]);return createCommaExpression(expressions)},transformAssignmentExpression_:function(tree){var left=tree.left;if(left.type===MEMBER_EXPRESSION)return this.transformAssignMemberExpression_(tree);if(left.type===MEMBER_LOOKUP_EXPRESSION)return this.transformAssignMemberLookupExpression_(tree);if(assert(tree.left.type===IDENTIFIER_EXPRESSION),tree.operator.type===EQUAL){left=this.transformAny(left);var right$__3=this.transformAny(tree.right),expressions$__4=$traceurRuntime.spread(getExpressions(right$__3),[createAssignmentExpression(left,getResult(right$__3)),getResult(right$__3)]);return createCommaExpression(expressions$__4)}var right=this.transformAny(tree.right),tmp=this.addTempVar(),binop=createOperatorToken(assignmentOperatorToBinaryOperator(tree.operator.type)),expressions=$traceurRuntime.spread(getExpressions(right),[createAssignmentExpression(tmp,new BinaryExpression(tree.location,left,binop,getResult(right))),createAssignmentExpression(left,tmp),tmp]);return createCommaExpression(expressions)},transformAssignMemberExpression_:function(tree){var left=tree.left;if(tree.operator.type===EQUAL){var operand$__5=this.transformAny(left.operand),right$__6=this.transformAny(tree.right),expressions$__7=$traceurRuntime.spread(getExpressions(operand$__5),getExpressions(right$__6),[new BinaryExpression(tree.location,new MemberExpression(left.location,getResult(operand$__5),left.memberName),tree.operator,getResult(right$__6)),getResult(right$__6)]);return createCommaExpression(expressions$__7)}var operand=this.transformAny(left.operand),right=this.transformAny(tree.right),tmp=this.addTempVar(),memberExpression=new MemberExpression(left.location,getResult(operand),left.memberName),tmp2=this.addTempVar(),binop=createOperatorToken(assignmentOperatorToBinaryOperator(tree.operator.type)),expressions=$traceurRuntime.spread(getExpressions(operand),getExpressions(right),[createAssignmentExpression(tmp,memberExpression),createAssignmentExpression(tmp2,new BinaryExpression(tree.location,tmp,binop,getResult(right))),createAssignmentExpression(memberExpression,tmp2),tmp2]);return createCommaExpression(expressions)},transformAssignMemberLookupExpression_:function(tree){var left=tree.left;if(tree.operator.type===EQUAL){var operand$__8=this.transformAny(left.operand),memberExpression$__9=this.transformAny(left.memberExpression),right$__10=this.transformAny(tree.right),expressions$__11=$traceurRuntime.spread(getExpressions(operand$__8),getExpressions(memberExpression$__9),getExpressions(right$__10),[new BinaryExpression(tree.location,new MemberLookupExpression(left.location,getResult(operand$__8),getResult(memberExpression$__9)),tree.operator,getResult(right$__10)),getResult(right$__10)]);return createCommaExpression(expressions$__11)}var operand=this.transformAny(left.operand),memberExpression=this.transformAny(left.memberExpression),right=this.transformAny(tree.right),tmp=this.addTempVar(),memberLookupExpression=new MemberLookupExpression(left.location,getResult(operand),getResult(memberExpression)),tmp2=this.addTempVar(),binop=createOperatorToken(assignmentOperatorToBinaryOperator(tree.operator.type)),expressions=$traceurRuntime.spread(getExpressions(operand),getExpressions(memberExpression),getExpressions(right),[createAssignmentExpression(tmp,memberLookupExpression),createAssignmentExpression(tmp2,new BinaryExpression(tree.location,tmp,binop,getResult(right))),createAssignmentExpression(memberLookupExpression,tmp2),tmp2]);return createCommaExpression(expressions)},transformArrayLiteral:function(tree){var elements=this.transformList(tree.elements);if(elements===tree.elements)return tree;for(var builder=this.createCommaExpressionBuilder_(),results=[],i=0;i<elements.length;i++)builder.add(elements[i]),results.push(getResult(elements[i]));return builder.build(new ArrayLiteral(tree.location,results))},transformObjectLiteral:function(tree){var propertyNameAndValues=this.transformList(tree.propertyNameAndValues);if(propertyNameAndValues===tree.propertyNameAndValues)return tree;for(var builder=this.createCommaExpressionBuilder_(),results=[],i=0;i<propertyNameAndValues.length;i++)propertyNameAndValues[i].type===PROPERTY_NAME_ASSIGNMENT?(builder.add(propertyNameAndValues[i].value),results.push(new PropertyNameAssignment(propertyNameAndValues[i].location,propertyNameAndValues[i].name,getResult(propertyNameAndValues[i].value)))):results.push(propertyNameAndValues[i]);return builder.build(new ObjectLiteral(tree.location,results))},transformTemplateLiteralExpression:function(tree){var operand=this.transformAny(tree.operand),elements=this.transformList(tree.elements);if(!operand&&operand===tree.operand&&elements===tree.elements)return tree;var builder=this.createCommaExpressionBuilder_();operand&&builder.add(operand);for(var results=[],i=0;i<elements.length;i++)if(elements[i].type===TEMPLATE_LITERAL_PORTION)results.push(elements[i]);else{var expression=elements[i].expression;builder.add(expression);var result=getResult(expression);results.push(new TemplateSubstitution(expression.location,result))}return builder.build(new TemplateLiteralExpression(tree.location,operand&&getResult(operand),results))},transformCallExpression:function(tree){return tree.operand.type===MEMBER_EXPRESSION?this.transformCallMemberExpression_(tree):tree.operand.type===MEMBER_LOOKUP_EXPRESSION?this.transformCallMemberLookupExpression_(tree):this.transformCallAndNew_(tree,CallExpression)},transformNewExpression:function(tree){return this.transformCallAndNew_(tree,NewExpression)},transformCallAndNew_:function(tree,ctor){var operand=this.transformAny(tree.operand),args=this.transformAny(tree.args),builder=this.createCommaExpressionBuilder_().add(operand),argResults=[];return args.args.forEach(function(arg){builder.add(arg),argResults.push(getResult(arg))}),builder.build(new ctor(tree.location,getResult(operand),new ArgumentList(args.location,argResults)))},transformCallMemberExpression_:function(tree){var memberName=tree.operand.memberName,operand=this.transformAny(tree.operand.operand),tmp=this.addTempVar(),memberExpresssion=new MemberExpression(tree.operand.location,getResult(operand),memberName),args=this.transformAny(tree.args),expressions=$traceurRuntime.spread(getExpressions(operand),[createAssignmentExpression(tmp,memberExpresssion)]),argResults=[getResult(operand)];args.args.forEach(function(arg){var $__2;($__2=expressions).push.apply($__2,$traceurRuntime.spread(getExpressions(arg))),argResults.push(getResult(arg))});var callExpression=new CallExpression(tree.location,createMemberExpression(tmp,"call"),new ArgumentList(args.location,argResults)),tmp2=this.addTempVar();return expressions.push(createAssignmentExpression(tmp2,callExpression),tmp2),createCommaExpression(expressions)},transformCallMemberLookupExpression_:function(tree){var operand=this.transformAny(tree.operand.operand),memberExpression=this.transformAny(tree.operand.memberExpression),tmp=this.addTempVar(),lookupExpresssion=new MemberLookupExpression(tree.operand.location,getResult(operand),getResult(memberExpression)),args=this.transformAny(tree.args),expressions=$traceurRuntime.spread(getExpressions(operand),getExpressions(memberExpression),[createAssignmentExpression(tmp,lookupExpresssion)]),argResults=[getResult(operand)];args.args.forEach(function(arg,i){var $__2;($__2=expressions).push.apply($__2,$traceurRuntime.spread(getExpressions(arg)));var result=getResult(arg);tree.args.args[i].type===SPREAD_EXPRESSION&&(result=new SpreadExpression(arg.location,result)),argResults.push(result)});var callExpression=new CallExpression(tree.location,createMemberExpression(tmp,"call"),new ArgumentList(args.location,argResults)),tmp2=this.addTempVar();return expressions.push(createAssignmentExpression(tmp2,callExpression),tmp2),createCommaExpression(expressions)},transformConditionalExpression:function(tree){var condition=this.transformAny(tree.condition),left=this.transformAny(tree.left),right=this.transformAny(tree.right);if(condition===tree.condition&&left===tree.left&&right===tree.right)return tree;var res=this.addTempVar(),leftTree=createCommaExpression($traceurRuntime.spread(getExpressions(left),[createAssignmentExpression(res,getResult(left))])),rightTree=createCommaExpression($traceurRuntime.spread(getExpressions(right),[createAssignmentExpression(res,getResult(right))])),expressions=$traceurRuntime.spread(getExpressions(condition),[new ConditionalExpression(tree.location,getResult(condition),createParenExpression(leftTree),createParenExpression(rightTree)),res]);return createCommaExpression(expressions)},transformOr_:function(left,right){var res=this.addTempVar(),leftTree=createCommaExpression([createAssignmentExpression(res,getResult(left))]),rightTree=createCommaExpression($traceurRuntime.spread(getExpressions(right),[createAssignmentExpression(res,getResult(right))])),expressions=$traceurRuntime.spread(getExpressions(left),[new ConditionalExpression(left.location,getResult(left),createParenExpression(leftTree),createParenExpression(rightTree)),res]);return createCommaExpression(expressions)},transformAnd_:function(left,right){var res=this.addTempVar(),leftTree=createCommaExpression($traceurRuntime.spread(getExpressions(right),[createAssignmentExpression(res,getResult(right))])),rightTree=createCommaExpression([createAssignmentExpression(res,getResult(left))]),expressions=$traceurRuntime.spread(getExpressions(left),[new ConditionalExpression(left.location,getResult(left),createParenExpression(leftTree),createParenExpression(rightTree)),res]);return createCommaExpression(expressions)},transformSpreadExpression:function(tree){var expression=this.transformAny(tree.expression);if(expression===tree.expression)return tree;var result=getResult(expression);result.type!==SPREAD_EXPRESSION&&(result=new SpreadExpression(result.location,result));var expressions=$traceurRuntime.spread(getExpressions(expression),[result]);return createCommaExpression(expressions)},transformFunctionExpression:function(tree){return this.createCommaExpressionBuilder_().build(tree)},transformArrowFunction:function(tree){return this.createCommaExpressionBuilder_().build(tree)},transformClassExpression:function(tree){var superClass=this.transformAny(tree.superClass);if(superClass===tree.superClass)return this.createCommaExpressionBuilder_().build(tree);var builder=this.createCommaExpressionBuilder_();return builder.add(superClass),builder.build(new ClassExpression(tree.location,tree.name,getResult(superClass),tree.elements,tree.annotations,tree.typeParameters))},transformFunctionBody:function(tree){return tree},createCommaExpressionBuilder_:function(){return new CommaExpressionBuilder(this.addTempVar())}},{},$__super)}(ParseTreeTransformer);return{get ExplodeExpressionTransformer(){return ExplodeExpressionTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ExponentiationTransformer.js",[],function(){"use strict";var ExplodeExpressionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ExplodeExpressionTransformer.js","traceur@0.0.107/src/codegeneration/ExponentiationTransformer.js")).ExplodeExpressionTransformer,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ExponentiationTransformer.js")).TempVarTransformer,ParenTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParenTrait.js","traceur@0.0.107/src/codegeneration/ExponentiationTransformer.js")).ParenTrait,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ExponentiationTransformer.js")),STAR_STAR=$__4.STAR_STAR,STAR_STAR_EQUAL=$__4.STAR_STAR_EQUAL,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/ExponentiationTransformer.js")).parseExpression,ExponentiationTransformer=function($__super){function ExponentiationTransformer(){$traceurRuntime.superConstructor(ExponentiationTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ExponentiationTransformer,{transformBinaryExpression:function(tree){switch(tree.operator.type){case STAR_STAR:var left=this.transformAny(tree.left),right=this.transformAny(tree.right);return parseExpression($traceurRuntime.getTemplateObject(["Math.pow(",", ",")"]),left,right);case STAR_STAR_EQUAL:var exploded=new ExplodeExpressionTransformer(this).transformAny(tree);return this.transformAny(exploded)}return $traceurRuntime.superGet(this,ExponentiationTransformer.prototype,"transformBinaryExpression").call(this,tree)}},{},$__super)}(ParenTrait(TempVarTransformer));return{get ExponentiationTransformer(){return ExponentiationTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ForOfTransformer.js",[],function(){"use strict";var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ForOfTransformer.js")),FOR_OF_STATEMENT=$__1.FOR_OF_STATEMENT,VARIABLE_DECLARATION_LIST=$__1.VARIABLE_DECLARATION_LIST,LABELLED_STATEMENT=$__1.LABELLED_STATEMENT,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ForOfTransformer.js")).TempVarTransformer,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ForOfTransformer.js")),id=$__3.createIdentifierExpression,createMemberExpression=$__3.createMemberExpression,createVariableStatement=$__3.createVariableStatement,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/ForOfTransformer.js")),parseStatement=$__4.parseStatement,parseStatements=$__4.parseStatements,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ForOfTransformer.js")),AnonBlock=$__5.AnonBlock,LabelledStatement=$__5.LabelledStatement,ForOfTransformer=function($__super){function ForOfTransformer(){$traceurRuntime.superConstructor(ForOfTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ForOfTransformer,{transformForOfStatement:function(original){return this.transformForOfStatement_(original,[])},transformForOfStatement_:function(original,labelSet){var labelledStatement,innerStatement,assignment,tree=$traceurRuntime.superGet(this,ForOfTransformer.prototype,"transformForOfStatement").call(this,original),iter=id(this.getTempIdentifier()),result=id(this.getTempIdentifier()),normalCompletion=(id(this.getTempIdentifier()),id(this.getTempIdentifier())),throwCompletion=id(this.getTempIdentifier()),exception=id(this.getTempIdentifier()),ex=id(this.getTempIdentifier());for(assignment=tree.initializer.type===VARIABLE_DECLARATION_LIST?createVariableStatement(tree.initializer.declarationType,tree.initializer.declarations[0].lvalue,createMemberExpression(result,"value")):parseStatement($traceurRuntime.getTemplateObject([""," = ",".value;"]),tree.initializer,result),innerStatement=parseStatement($traceurRuntime.getTemplateObject(["\n        for (var ",",\n                 "," = (",")[Symbol.iterator]();\n             !("," = ("," = ",".next()).done);\n             "," = true) {\n          ","\n          ","\n        }"]),result,iter,tree.collection,normalCompletion,result,iter,normalCompletion,assignment,tree.body);labelledStatement=labelSet.pop();)innerStatement=new LabelledStatement(labelledStatement.location,labelledStatement.name,innerStatement);return new AnonBlock(null,parseStatements($traceurRuntime.getTemplateObject(["\n        var "," = true;\n        var "," = false;\n        var "," = undefined;\n        try {\n          ","\n        } catch (",") {\n          "," = true;\n          "," = ",";\n        } finally {\n          try {\n            if (!"," && ",".return != null) {\n              ",".return();\n            }\n          } finally {\n            if (",") {\n              throw ",";\n            }\n          }\n        }"]),normalCompletion,throwCompletion,exception,innerStatement,ex,throwCompletion,exception,ex,normalCompletion,iter,iter,throwCompletion,exception))},transformLabelledStatement:function(tree){for(var labelSet=[tree],statement=tree.statement;statement.type===LABELLED_STATEMENT;)labelSet.push(statement),statement=statement.statement;return statement.type!==FOR_OF_STATEMENT?$traceurRuntime.superGet(this,ForOfTransformer.prototype,"transformLabelledStatement").call(this,tree):this.transformForOfStatement_(statement,labelSet)}},{},$__super)}(TempVarTransformer);return{get ForOfTransformer(){return ForOfTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")).ParseTreeTransformer,alphaRenameThisAndArguments=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./alphaRenameThisAndArguments.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js"))["default"],$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")),parseStatement=$__4.parseStatement,parseStatements=$__4.parseStatements,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")),AnonBlock=$__5.AnonBlock,Block=$__5.Block,ContinueStatement=$__5.ContinueStatement,LabelledStatement=$__5.LabelledStatement,ReturnStatement=$__5.ReturnStatement,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")).StringSet,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")),createAssignmentStatement=$__7.createAssignmentStatement,createCaseClause=$__7.createCaseClause,createDefaultClause=$__7.createDefaultClause,id=$__7.createIdentifierExpression,createNumberLiteral=$__7.createNumberLiteral,createSwitchStatement=$__7.createSwitchStatement,createThisExpression=$__7.createThisExpression,createVariableStatement=$__7.createVariableStatement,createVariableDeclaration=$__7.createVariableDeclaration,createVariableDeclarationList=$__7.createVariableDeclarationList,createVoid0=$__7.createVoid0,SkipFunctionsTransformerTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SkipFunctionsTransformerTrait.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js"))["default"],ARGUMENTS=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")).ARGUMENTS,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")).VAR,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/InnerForOnTransformer.js")),VARIABLE_DECLARATION_LIST=$__11.VARIABLE_DECLARATION_LIST,BLOCK=$__11.BLOCK,InnerForOnTransformer=function($__super){function InnerForOnTransformer(tempIdGenerator,labelSet){var $__1;$traceurRuntime.superConstructor(InnerForOnTransformer).call(this),this.idGenerator_=tempIdGenerator,this.inLoop_=0,this.inBreakble_=0,this.variableDeclarations_=[],this.extractedStatements_=[],this.labelSet_=labelSet,this.labelledStatements_=new StringSet,this.observer_=id(this.idGenerator_.getTempIdentifier()),this.result_=id(this.idGenerator_.getTempIdentifier()),this.parentLabels_=new StringSet,this.labelSet_.forEach(($__1=this,function(tree){$__1.parentLabels_.add(tree.name.value)}))}return $traceurRuntime.createClass(InnerForOnTransformer,{transform:function(tree){var assignment,value=id(this.idGenerator_.getTempIdentifier());assignment=tree.initializer.type===VARIABLE_DECLARATION_LIST?createVariableStatement(tree.initializer.declarationType,tree.initializer.declarations[0].lvalue,value):parseStatement($traceurRuntime.getTemplateObject(["\n          "," = ",";"]),tree.initializer,value);var body;body=tree.body.type===BLOCK?new Block(tree.body.location,$traceurRuntime.spread([assignment],tree.body.statements)):new Block(null,[assignment,tree.body]),body=this.transformAny(body),body=alphaRenameThisAndArguments(this,body),this.variableDeclarations_.push(createVariableDeclaration(this.result_,createVoid0()));var caseClauses=this.extractedStatements_.map(function(statement,index){return createCaseClause(createNumberLiteral(index),[statement])});caseClauses.push(createCaseClause(createVoid0(),[new ContinueStatement(null,null)])),caseClauses.push(createDefaultClause(parseStatements($traceurRuntime.getTemplateObject(["\n        return ",".v;"]),this.result_)));for(var labelledStatement,switchStatement=createSwitchStatement(this.result_,caseClauses),statement=parseStatement($traceurRuntime.getTemplateObject(["\n        do {\n          ","\n            await $traceurRuntime.observeForEach(\n              ","[Symbol.observer].bind(","),\n              async function (",") {\n                var "," = this;\n                try {\n                  ","\n                } catch (e) {\n                  ",".throw(e);\n                }\n              });\n          ","\n        } while (false);"]),createVariableStatement(createVariableDeclarationList(VAR,this.variableDeclarations_)),tree.observable,tree.observable,value,this.observer_,body,this.observer_,switchStatement);labelledStatement=this.labelSet_.pop();)statement=new LabelledStatement(labelledStatement.location,labelledStatement.name,statement);return statement},addTempVarForArguments:function(){var tmpVarName=this.idGenerator_.generateUniqueIdentifier();return this.variableDeclarations_.push(createVariableDeclaration(tmpVarName,id(ARGUMENTS))),tmpVarName},addTempVarForThis:function(){var tmpVarName=this.idGenerator_.generateUniqueIdentifier();return this.variableDeclarations_.push(createVariableDeclaration(tmpVarName,createThisExpression())),tmpVarName},transformAny:function(tree){return tree&&(tree.isBreakableStatement()&&this.inBreakble_++,tree.isIterationStatement()&&this.inLoop_++,tree=$traceurRuntime.superGet(this,InnerForOnTransformer.prototype,"transformAny").call(this,tree),tree.isBreakableStatement()&&this.inBreakble_--,tree.isIterationStatement()&&this.inLoop_--),tree},transformReturnStatement:function(tree){return new AnonBlock(tree.location,parseStatements($traceurRuntime.getTemplateObject(["\n        ",".return();\n        "," = {v: ","};\n        return;"]),this.observer_,this.result_,tree.expression||createVoid0()));
},transformAbruptCompletion_:function(tree){this.extractedStatements_.push(tree);var index=this.extractedStatements_.length-1;return new AnonBlock(null,parseStatements($traceurRuntime.getTemplateObject(["\n        ",".return();\n        "," = ",";\n        return;"]),this.observer_,this.result_,index))},transformBreakStatement:function(tree){return tree.name?this.labelledStatements_.has(tree.name.value)?$traceurRuntime.superGet(this,InnerForOnTransformer.prototype,"transformBreakStatement").call(this,tree):this.transformAbruptCompletion_(tree):this.inBreakble_?$traceurRuntime.superGet(this,InnerForOnTransformer.prototype,"transformBreakStatement").call(this,tree):this.transformAbruptCompletion_(new ContinueStatement(tree.location,null))},transformContinueStatement:function(tree){return tree.name?this.labelledStatements_.has(tree.name.value)?$traceurRuntime.superGet(this,InnerForOnTransformer.prototype,"transformContinueStatement").call(this,tree):this.parentLabels_.has(tree.name.value)?new ReturnStatement(tree.location,null):this.transformAbruptCompletion_(tree):this.inLoop_?$traceurRuntime.superGet(this,InnerForOnTransformer.prototype,"transformContinueStatement").call(this,tree):new ReturnStatement(tree.location,null)},transformLabelledStatement:function(tree){return this.labelledStatements_.add(tree.name.value),$traceurRuntime.superGet(this,InnerForOnTransformer.prototype,"transformLabelledStatement").call(this,tree)},transformVariableStatement:function(tree){var $__1=this;if(tree.declarations.declarationType===VAR){var assignments=[];return tree.declarations.declarations.forEach(function(variableDeclaration){var variableName=variableDeclaration.lvalue.getStringValue(),initializer=$traceurRuntime.superGet($__1,InnerForOnTransformer.prototype,"transformAny").call($__1,variableDeclaration.initializer);$__1.variableDeclarations_.push(createVariableDeclaration(variableName,null)),assignments.push(createAssignmentStatement(id(variableName),initializer))}),new AnonBlock(null,assignments)}return $traceurRuntime.superGet(this,InnerForOnTransformer.prototype,"transformVariableStatement").call(this,tree)}},{transform:function(tempIdGenerator,tree,labelSet){return new InnerForOnTransformer(tempIdGenerator,labelSet).transform(tree)}},$__super)}(SkipFunctionsTransformerTrait(ParseTreeTransformer));return{get InnerForOnTransformer(){return InnerForOnTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ForOnTransformer.js",[],function(){"use strict";var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ForOnTransformer.js")),FOR_ON_STATEMENT=$__1.FOR_ON_STATEMENT,LABELLED_STATEMENT=$__1.LABELLED_STATEMENT,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ForOnTransformer.js")).TempVarTransformer,InnerForOnTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./InnerForOnTransformer.js","traceur@0.0.107/src/codegeneration/ForOnTransformer.js")).InnerForOnTransformer,ForOnTransformer=function($__super){function ForOnTransformer(){$traceurRuntime.superConstructor(ForOnTransformer).apply(this,arguments)}return $traceurRuntime.createClass(ForOnTransformer,{transformForOnStatement:function(original){return this.transformForOnStatement_(original,[])},transformForOnStatement_:function(original,labelSet){return InnerForOnTransformer.transform(this,$traceurRuntime.superGet(this,ForOnTransformer.prototype,"transformForOnStatement").call(this,original),labelSet)},transformLabelledStatement:function(tree){var statement,labelSet=[tree];for(statement=tree.statement;statement.type===LABELLED_STATEMENT;statement=statement.statement)labelSet.push(statement);return statement.type!==FOR_ON_STATEMENT?$traceurRuntime.superGet(this,ForOnTransformer.prototype,"transformLabelledStatement").call(this,tree):this.transformForOnStatement_(statement,labelSet)}},{},$__super)}(TempVarTransformer);return{get ForOnTransformer(){return ForOnTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/GeneratorComprehensionTransformer.js",[],function(){"use strict";var ComprehensionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ComprehensionTransformer.js","traceur@0.0.107/src/codegeneration/GeneratorComprehensionTransformer.js")).ComprehensionTransformer,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/GeneratorComprehensionTransformer.js")).parseStatement,GeneratorComprehensionTransformer=function($__super){function GeneratorComprehensionTransformer(){$traceurRuntime.superConstructor(GeneratorComprehensionTransformer).apply(this,arguments)}return $traceurRuntime.createClass(GeneratorComprehensionTransformer,{transformGeneratorComprehension:function(tree){var expression=this.transformAny(tree.expression),statement=parseStatement($traceurRuntime.getTemplateObject(["yield ",""]),expression),isGenerator=!0;return this.transformComprehension(tree,statement,isGenerator)}},{},$__super)}(ComprehensionTransformer);return{get GeneratorComprehensionTransformer(){return GeneratorComprehensionTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/State.js",[],function(){"use strict";function generateAssignStateOutOfFinally(enclosingFinally,destination){var finallyState=enclosingFinally.finallyState;return[createAssignStateStatement(finallyState),parseStatement($traceurRuntime.getTemplateObject(["$ctx.finallyFallThrough = ",""]),destination)]}var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/State.js")),createAssignStateStatement=$__1.createAssignStateStatement,createBreakStatement=$__1.createBreakStatement,createCaseClause=$__1.createCaseClause,createNumberLiteral=$__1.createNumberLiteral,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/generator/State.js")).parseStatement,State=function(){function State(id){this.id=id}return $traceurRuntime.createClass(State,{transformMachineState:function(enclosingFinally,machineEndState,reporter){return createCaseClause(createNumberLiteral(this.id),this.transform(enclosingFinally,machineEndState,reporter))},transformBreak:function(labelSet,breakState){return this},transformBreakOrContinue:function(labelSet){arguments[1],arguments[2];return this}},{})}();return State.START_STATE=0,State.INVALID_STATE=-1,State.END_STATE=-2,State.RETHROW_STATE=-3,State.generateJump=function(enclosingFinally,fallThroughState){return $traceurRuntime.spread(State.generateAssignState(enclosingFinally,fallThroughState),[createBreakStatement()])},State.generateAssignState=function(enclosingFinally,fallThroughState){var assignState;return assignState=State.isFinallyExit(enclosingFinally,fallThroughState)?generateAssignStateOutOfFinally(enclosingFinally,fallThroughState):[createAssignStateStatement(fallThroughState)]},State.isFinallyExit=function(enclosingFinally,destination){return!!enclosingFinally&&enclosingFinally.tryStates.indexOf(destination)<0},State.replaceStateList=function(oldStates,oldState,newState){for(var states=[],i=0;i<oldStates.length;i++)states.push(State.replaceStateId(oldStates[i],oldState,newState));return states},State.replaceStateId=function(current,oldState,newState){return current===oldState?newState:current},State.replaceAllStates=function(exceptionBlocks,oldState,newState){for(var result=[],i=0;i<exceptionBlocks.length;i++)result.push(exceptionBlocks[i].replaceState(oldState,newState));return result},{get State(){return State}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/AwaitState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/AwaitState.js")).State,parseStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/generator/AwaitState.js")).parseStatements,AwaitState=function($__super){function AwaitState(id,callbackState,expression){$traceurRuntime.superConstructor(AwaitState).call(this,id),this.callbackState=callbackState,this.expression=expression}return $traceurRuntime.createClass(AwaitState,{replaceState:function(oldState,newState){return new AwaitState(State.replaceStateId(this.id,oldState,newState),State.replaceStateId(this.callbackState,oldState,newState),this.expression)},transform:function(enclosingFinally,machineEndState,reporter){var $__1,stateId,statements;return State.isFinallyExit(enclosingFinally,this.callbackState)?(stateId=enclosingFinally.finallyState,statements=parseStatements($traceurRuntime.getTemplateObject(["$ctx.finallyFallThrough = ",""]),this.callbackState)):(stateId=this.callbackState,statements=[]),($__1=statements).push.apply($__1,$traceurRuntime.spread(parseStatements($traceurRuntime.getTemplateObject(["Promise.resolve(",").then(\n          $ctx.createCallback(","), $ctx.errback);\n          return;"]),this.expression,stateId))),statements}},{},$__super)}(State);return{get AwaitState(){return AwaitState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/FallThroughState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/FallThroughState.js")).State,FallThroughState=function($__super){function FallThroughState(id,fallThroughState,statements){$traceurRuntime.superConstructor(FallThroughState).call(this,id),this.fallThroughState=fallThroughState,this.statements=statements}return $traceurRuntime.createClass(FallThroughState,{replaceState:function(oldState,newState){return new FallThroughState(State.replaceStateId(this.id,oldState,newState),State.replaceStateId(this.fallThroughState,oldState,newState),this.statements)},transform:function(enclosingFinally,machineEndState,reporter){return $traceurRuntime.spread(this.statements,State.generateJump(enclosingFinally,this.fallThroughState))}},{},$__super)}(State);return{get FallThroughState(){return FallThroughState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/BreakState.js",[],function(){"use strict";var FallThroughState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FallThroughState.js","traceur@0.0.107/src/codegeneration/generator/BreakState.js")).FallThroughState,State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/BreakState.js")).State,BreakState=function($__super){function BreakState(id,label){$traceurRuntime.superConstructor(BreakState).call(this,id),this.label=label}return $traceurRuntime.createClass(BreakState,{replaceState:function(oldState,newState){return new BreakState(State.replaceStateId(this.id,oldState,newState),this.label)},transform:function(enclosingFinally,machineEndState,reporter){throw Error("These should be removed before the transform step")},transformBreak:function(labelSet){var breakState=arguments[1];return null===this.label?new FallThroughState(this.id,breakState,[]):labelSet.has(this.label)?new FallThroughState(this.id,labelSet.get(this.label).fallThroughState,[]):this},transformBreakOrContinue:function(labelSet){var breakState=arguments[1];arguments[2];return this.transformBreak(labelSet,breakState)}},{},$__super)}(State);return{get BreakState(){return BreakState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/ContinueState.js",[],function(){"use strict";var FallThroughState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FallThroughState.js","traceur@0.0.107/src/codegeneration/generator/ContinueState.js")).FallThroughState,State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/ContinueState.js")).State,ContinueState=function($__super){function ContinueState(id,label){$traceurRuntime.superConstructor(ContinueState).call(this,id),this.label=label}return $traceurRuntime.createClass(ContinueState,{replaceState:function(oldState,newState){return new ContinueState(State.replaceStateId(this.id,oldState,newState),this.label)},transform:function(enclosingFinally,machineEndState,reporter){throw Error("These should be removed before the transform step")},transformBreakOrContinue:function(labelSet){var continueState=(arguments[1],arguments[2]);return null===this.label?new FallThroughState(this.id,continueState,[]):labelSet.has(this.label)?new FallThroughState(this.id,labelSet.get(this.label).continueState,[]):this}},{},$__super)}(State);return{get ContinueState(){return ContinueState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/TryState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/TryState.js")).State,Kind={CATCH:"catch",FINALLY:"finally"},TryState=function(){function TryState(kind,tryStates,nestedTrys){this.kind=kind,this.tryStates=tryStates,this.nestedTrys=nestedTrys}return $traceurRuntime.createClass(TryState,{replaceAllStates:function(oldState,newState){return State.replaceStateList(this.tryStates,oldState,newState)},replaceNestedTrys:function(oldState,newState){for(var states=[],i=0;i<this.nestedTrys.length;i++)states.push(this.nestedTrys[i].replaceState(oldState,newState));return states}},{})}();return TryState.Kind=Kind,{get TryState(){return TryState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/trees/StateMachine.js",[],function(){"use strict";function addCatchOrFinallyStates(kind,enclosingMap,tryStates){for(var i=0;i<tryStates.length;i++){var tryState=tryStates[i];if(tryState.kind===kind)for(var j=0;j<tryState.tryStates.length;j++){var id=tryState.tryStates[j];enclosingMap[id]=tryState}addCatchOrFinallyStates(kind,enclosingMap,tryState.nestedTrys)}}function addAllCatchStates(tryStates,catches){for(var i=0;i<tryStates.length;i++){var tryState=tryStates[i];tryState.kind===TryState.Kind.CATCH&&catches.push(tryState),addAllCatchStates(tryState.nestedTrys,catches)}}var ParseTree=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTree.js","traceur@0.0.107/src/syntax/trees/StateMachine.js")).ParseTree,STATE_MACHINE=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeType.js","traceur@0.0.107/src/syntax/trees/StateMachine.js")).STATE_MACHINE,State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../codegeneration/generator/State.js","traceur@0.0.107/src/syntax/trees/StateMachine.js")).State,TryState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../codegeneration/generator/TryState.js","traceur@0.0.107/src/syntax/trees/StateMachine.js")).TryState,StateMachine=function($__super){function StateMachine(startState,fallThroughState,states,exceptionBlocks){$traceurRuntime.superConstructor(StateMachine).call(this,null),this.startState=startState,this.fallThroughState=fallThroughState,this.states=states,this.exceptionBlocks=exceptionBlocks}return $traceurRuntime.createClass(StateMachine,{get type(){return STATE_MACHINE},transform:function(transformer){return transformer.transformStateMachine(this)},visit:function(visitor){visitor.visitStateMachine(this)},getAllStateIDs:function(){for(var result=[],i=0;i<this.states.length;i++)result.push(this.states[i].id);return result},getEnclosingFinallyMap:function(){var enclosingMap=Object.create(null);return addCatchOrFinallyStates(TryState.Kind.FINALLY,enclosingMap,this.exceptionBlocks),enclosingMap},allCatchStates:function(){var catches=[];return addAllCatchStates(this.exceptionBlocks,catches),catches},replaceStateId:function(oldState,newState){return new StateMachine(State.replaceStateId(this.startState,oldState,newState),State.replaceStateId(this.fallThroughState,oldState,newState),State.replaceAllStates(this.states,oldState,newState),State.replaceAllStates(this.exceptionBlocks,oldState,newState))},replaceStartState:function(newState){return this.replaceStateId(this.startState,newState)},replaceFallThroughState:function(newState){return this.replaceStateId(this.fallThroughState,newState)},append:function(nextMachine){for(var states=$traceurRuntime.spread(this.states),i=0;i<nextMachine.states.length;i++){var otherState=nextMachine.states[i];states.push(otherState.replaceState(nextMachine.startState,this.fallThroughState))}for(var exceptionBlocks=$traceurRuntime.spread(this.exceptionBlocks),i$__1=0;i$__1<nextMachine.exceptionBlocks.length;i$__1++){var tryState=nextMachine.exceptionBlocks[i$__1];exceptionBlocks.push(tryState.replaceState(nextMachine.startState,this.fallThroughState))}return new StateMachine(this.startState,nextMachine.fallThroughState,states,exceptionBlocks)}},{},$__super)}(ParseTree);return{get StateMachine(){return StateMachine}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/BreakContinueTransformer.js",[],function(){"use strict";function safeGetLabel(tree){return tree.name?tree.name.value:null}var BreakState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./BreakState.js","traceur@0.0.107/src/codegeneration/generator/BreakContinueTransformer.js")).BreakState,ContinueState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ContinueState.js","traceur@0.0.107/src/codegeneration/generator/BreakContinueTransformer.js")).ContinueState,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/generator/BreakContinueTransformer.js")).ParseTreeTransformer,StateMachine=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/StateMachine.js","traceur@0.0.107/src/codegeneration/generator/BreakContinueTransformer.js")).StateMachine,BreakContinueTransformer=function($__super){function BreakContinueTransformer(stateAllocator){$traceurRuntime.superConstructor(BreakContinueTransformer).call(this),this.transformBreaks_=!0,this.stateAllocator_=stateAllocator}return $traceurRuntime.createClass(BreakContinueTransformer,{allocateState_:function(){return this.stateAllocator_.allocateState()},stateToStateMachine_:function(newState){var fallThroughState=this.allocateState_();return new StateMachine(newState.id,fallThroughState,[newState],[])},transformBreakStatement:function(tree){return this.transformBreaks_||tree.name?this.stateToStateMachine_(new BreakState(this.allocateState_(),safeGetLabel(tree))):tree},transformContinueStatement:function(tree){return this.stateToStateMachine_(new ContinueState(this.allocateState_(),safeGetLabel(tree)))},transformDoWhileStatement:function(tree){return tree},transformForOfStatement:function(tree){return tree},transformForOnStatement:function(tree){return tree},transformForStatement:function(tree){return tree},transformFunctionDeclaration:function(tree){return tree},transformFunctionExpression:function(tree){return tree},transformStateMachine:function(tree){return tree},transformSwitchStatement:function(tree){var oldState=this.transformBreaks_;this.transformBreaks_=!1;var result=$traceurRuntime.superGet(this,BreakContinueTransformer.prototype,"transformSwitchStatement").call(this,tree);return this.transformBreaks_=oldState,result},transformWhileStatement:function(tree){return tree}},{},$__super)}(ParseTreeTransformer);return{get BreakContinueTransformer(){return BreakContinueTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/CatchState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/CatchState.js")).State,TryState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TryState.js","traceur@0.0.107/src/codegeneration/generator/CatchState.js")).TryState,CatchState=function($__super){function CatchState(identifier,catchState,fallThroughState,allStates,nestedTrys){$traceurRuntime.superConstructor(CatchState).call(this,TryState.Kind.CATCH,allStates,nestedTrys),this.identifier=identifier,this.catchState=catchState,this.fallThroughState=fallThroughState}return $traceurRuntime.createClass(CatchState,{replaceState:function(oldState,newState){return new CatchState(this.identifier,State.replaceStateId(this.catchState,oldState,newState),State.replaceStateId(this.fallThroughState,oldState,newState),this.replaceAllStates(oldState,newState),this.replaceNestedTrys(oldState,newState))}},{},$__super)}(TryState);return{get CatchState(){return CatchState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/ConditionalState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/ConditionalState.js")).State,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/ConditionalState.js")),createBlock=$__2.createBlock,createIfStatement=$__2.createIfStatement,parseStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/generator/ConditionalState.js")).parseStatements,ConditionalState=function($__super){function ConditionalState(id,ifState,elseState,condition){$traceurRuntime.superConstructor(ConditionalState).call(this,id),this.ifState=ifState,this.elseState=elseState,this.condition=condition}return $traceurRuntime.createClass(ConditionalState,{replaceState:function(oldState,newState){return new ConditionalState(State.replaceStateId(this.id,oldState,newState),State.replaceStateId(this.ifState,oldState,newState),State.replaceStateId(this.elseState,oldState,newState),this.condition)},transform:function(enclosingFinally,machineEndState,reporter){return State.isFinallyExit(enclosingFinally,this.ifState)||State.isFinallyExit(enclosingFinally,this.elseState)?[createIfStatement(this.condition,createBlock(State.generateJump(enclosingFinally,this.ifState)),createBlock(State.generateJump(enclosingFinally,this.elseState)))]:parseStatements($traceurRuntime.getTemplateObject(["$ctx.state = (",") ? "," : ",";\n        break"]),this.condition,this.ifState,this.elseState)}},{},$__super)}(State);return{get ConditionalState(){return ConditionalState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/FinallyFallThroughState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/FinallyFallThroughState.js")).State,FinallyFallThroughState=function($__super){function FinallyFallThroughState(){$traceurRuntime.superConstructor(FinallyFallThroughState).apply(this,arguments)}return $traceurRuntime.createClass(FinallyFallThroughState,{replaceState:function(oldState,newState){return new FinallyFallThroughState(State.replaceStateId(this.id,oldState,newState))},transformMachineState:function(enclosingFinally,machineEndState,reporter){return null},transform:function(enclosingFinally,machineEndState,reporter){throw Error("these are generated in addFinallyFallThroughDispatches")}},{},$__super)}(State);return{get FinallyFallThroughState(){return FinallyFallThroughState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/FinallyState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/FinallyState.js")).State,TryState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TryState.js","traceur@0.0.107/src/codegeneration/generator/FinallyState.js")).TryState,FinallyState=function($__super){function FinallyState(finallyState,fallThroughState,allStates,nestedTrys){$traceurRuntime.superConstructor(FinallyState).call(this,TryState.Kind.FINALLY,allStates,nestedTrys),this.finallyState=finallyState,this.fallThroughState=fallThroughState}return $traceurRuntime.createClass(FinallyState,{replaceState:function(oldState,newState){return new FinallyState(State.replaceStateId(this.finallyState,oldState,newState),State.replaceStateId(this.fallThroughState,oldState,newState),this.replaceAllStates(oldState,newState),this.replaceNestedTrys(oldState,newState))}},{},$__super)}(TryState);return{get FinallyState(){return FinallyState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/StateAllocator.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/StateAllocator.js")).State,StateAllocator=function(){function StateAllocator(){this.nextState_=State.START_STATE+1}return $traceurRuntime.createClass(StateAllocator,{allocateState:function(){return this.nextState_++}},{})}();return{get StateAllocator(){return StateAllocator}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/SwitchState.js",[],function(){"use strict";var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/generator/SwitchState.js")),CaseClause=$__2.CaseClause,DefaultClause=$__2.DefaultClause,SwitchStatement=$__2.SwitchStatement,State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/SwitchState.js")).State,createBreakStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/SwitchState.js")).createBreakStatement,SwitchClause=function(){function SwitchClause(first,second){this.first=first,this.second=second}return $traceurRuntime.createClass(SwitchClause,{},{})}(),SwitchState=function($__super){function SwitchState(id,expression,clauses){$traceurRuntime.superConstructor(SwitchState).call(this,id),this.expression=expression,this.clauses=clauses}return $traceurRuntime.createClass(SwitchState,{replaceState:function(oldState,newState){var clauses=this.clauses.map(function(clause){return new SwitchClause(clause.first,State.replaceStateId(clause.second,oldState,newState))});return new SwitchState(State.replaceStateId(this.id,oldState,newState),this.expression,clauses)},transform:function(enclosingFinally,machineEndState,reporter){for(var clauses=[],i=0;i<this.clauses.length;i++){var clause=this.clauses[i];null===clause.first?clauses.push(new DefaultClause(null,State.generateJump(enclosingFinally,clause.second))):clauses.push(new CaseClause(null,clause.first,State.generateJump(enclosingFinally,clause.second)))}return[new SwitchStatement(null,this.expression,clauses),createBreakStatement()]}},{},$__super)}(State);return{get SwitchClause(){return SwitchClause},get SwitchState(){return SwitchState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js",[],function(){"use strict";var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js")),AnonBlock=$__1.AnonBlock,Catch=$__1.Catch,FunctionBody=$__1.FunctionBody,ForInStatement=$__1.ForInStatement,ForOfStatement=$__1.ForOfStatement,ForStatement=$__1.ForStatement,VariableDeclarationList=$__1.VariableDeclarationList,VariableStatement=$__1.VariableStatement,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js")),OBJECT_PATTERN=$__2.OBJECT_PATTERN,VARIABLE_DECLARATION_LIST=$__2.VARIABLE_DECLARATION_LIST,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js")).ParseTreeTransformer,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js")).StringSet,VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js")).VAR,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js")),createAssignmentExpression=$__6.createAssignmentExpression,createCommaExpression=$__6.createCommaExpression,createExpressionStatement=$__6.createExpressionStatement,id=$__6.createIdentifierExpression,createParenExpression=$__6.createParenExpression,createVariableDeclaration=$__6.createVariableDeclaration,prependStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/HoistVariablesTransformer.js")).prependStatements,HoistVariablesTransformer=function($__super){function HoistVariablesTransformer(){var shouldHoistFunctions=void 0!==arguments[0]&&arguments[0];$traceurRuntime.superConstructor(HoistVariablesTransformer).call(this),this.hoistedFunctions_=[],this.hoistedVariables_=new StringSet,this.keepBindingIdentifiers_=!1,this.inBlockOrFor_=!1,this.shouldHoistFunctions_=shouldHoistFunctions}return $traceurRuntime.createClass(HoistVariablesTransformer,{transformFunctionBody:function(tree){var statements=this.transformList(tree.statements);return statements===tree.statements?tree:(statements=this.prependVariables(statements),statements=this.prependFunctions(statements),new FunctionBody(tree.location,statements))},addVariable:function(name){this.hoistedVariables_.add(name)},addFunctionDeclaration:function(tree){this.hoistedFunctions_.push(tree)},hasVariables:function(){return!this.hoistedVariables_.isEmpty()},hasFunctions:function(){return this.hoistedFunctions_.length>0},getVariableNames:function(){return this.hoistedVariables_.valuesAsArray()},getVariableStatement:function(){if(!this.hasVariables())return new AnonBlock(null,[]);var declarations=this.getVariableNames().map(function(name){return createVariableDeclaration(name,null)});return new VariableStatement(null,new VariableDeclarationList(null,VAR,declarations))},getFunctions:function(){return this.hoistedFunctions_},prependVariables:function(statements){return this.hasVariables()?prependStatements(statements,this.getVariableStatement()):statements},prependFunctions:function(statements){return this.hasFunctions()?prependStatements(statements,this.getFunctionDeclarations()):statements},transformVariableStatement:function(tree){var declarations=this.transformAny(tree.declarations);return declarations===tree.declarations?tree:null===declarations?new AnonBlock(null,[]):declarations.type===VARIABLE_DECLARATION_LIST?new VariableStatement(tree.location,declarations):createExpressionStatement(declarations)},transformVariableDeclaration:function(tree){var lvalue=this.transformAny(tree.lvalue),initializer=this.transformAny(tree.initializer);if(initializer){var expression=createAssignmentExpression(lvalue,initializer);return lvalue.type===OBJECT_PATTERN&&(expression=createParenExpression(expression)),expression}return null},transformObjectPattern:function(tree){var keepBindingIdentifiers=this.keepBindingIdentifiers_;this.keepBindingIdentifiers_=!0;var transformed=$traceurRuntime.superGet(this,HoistVariablesTransformer.prototype,"transformObjectPattern").call(this,tree);return this.keepBindingIdentifiers_=keepBindingIdentifiers,transformed},transformArrayPattern:function(tree){var keepBindingIdentifiers=this.keepBindingIdentifiers_;this.keepBindingIdentifiers_=!0;
var transformed=$traceurRuntime.superGet(this,HoistVariablesTransformer.prototype,"transformArrayPattern").call(this,tree);return this.keepBindingIdentifiers_=keepBindingIdentifiers,transformed},transformBindingIdentifier:function(tree){var idToken=tree.identifierToken;return this.addVariable(idToken.value),this.keepBindingIdentifiers_?tree:id(idToken)},transformVariableDeclarationList:function(tree){if(tree.declarationType===VAR||!this.inBlockOrFor_){var expressions=this.transformList(tree.declarations);return expressions=expressions.filter(function(tree){return tree}),0===expressions.length?null:1===expressions.length?expressions[0]:createCommaExpression(expressions)}return tree},transformCatch:function(tree){var catchBody=this.transformAny(tree.catchBody);return catchBody===tree.catchBody?tree:new Catch(tree.location,tree.binding,catchBody)},transformForInStatement:function(tree){return this.transformLoop_(tree,ForInStatement)},transformForOfStatement:function(tree){return this.transformLoop_(tree,ForOfStatement)},transformForOnStatement:function(tree){return this.transformLoop_(tree,ForOfStatement)},transformLoop_:function(tree,ctor){var initializer=this.transformLoopIninitaliser_(tree.initializer),collection=this.transformAny(tree.collection),body=this.transformAny(tree.body);return initializer===tree.initializer&&collection===tree.collection&&body===tree.body?tree:new ctor(tree.location,initializer,collection,body)},transformLoopIninitaliser_:function(tree){return tree.type!==VARIABLE_DECLARATION_LIST||tree.declarationType!==VAR?tree:this.transformAny(tree.declarations[0].lvalue)},transformForStatement:function(tree){var inBlockOrFor=this.inBlockOrFor_;this.inBlockOrFor_=!0;var initializer=this.transformAny(tree.initializer);this.inBlockOrFor_=inBlockOrFor;var condition=this.transformAny(tree.condition),increment=this.transformAny(tree.increment),body=this.transformAny(tree.body);return initializer===tree.initializer&&condition===tree.condition&&increment===tree.increment&&body===tree.body?tree:new ForStatement(tree.location,initializer,condition,increment,body)},transformBlock:function(tree){var inBlockOrFor=this.inBlockOrFor_;return this.inBlockOrFor_=!0,tree=$traceurRuntime.superGet(this,HoistVariablesTransformer.prototype,"transformBlock").call(this,tree),this.inBlockOrFor_=inBlockOrFor,tree},addMachineVariable:function(name){this.machineVariables_[name]=!0},transformClassDeclaration:function(tree){return tree},transformClassExpression:function(tree){return tree},transformFunctionDeclaration:function(tree){return this.shouldHoistFunctions_?(this.addFunctionDeclaration(tree),new AnonBlock(null,[])):tree},transformFunctionExpression:function(tree){return tree},transformGetAccessor:function(tree){return tree},transformSetAccessor:function(tree){return tree},transformMethod:function(tree){return tree},transformArrowFunction:function(tree){return tree},transformComprehensionFor:function(tree){return tree}},{},$__super)}(ParseTreeTransformer),$__default=HoistVariablesTransformer;return{get default(){return $__default}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js",[],function(){"use strict";function needsStateMachine(tree){var visitor=new NeedsStateMachine;return visitor.visitAny(tree),visitor.found}function anonBlockToBlock(tree){return tree.type===PAREN_EXPRESSION?anonBlockToBlock(tree.expression):new Block(tree.location,tree.statements)}var AlphaRenamer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../AlphaRenamer.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).AlphaRenamer,BreakContinueTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./BreakContinueTransformer.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).BreakContinueTransformer,$__19=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")),BLOCK=$__19.BLOCK,CASE_CLAUSE=$__19.CASE_CLAUSE,CONDITIONAL_EXPRESSION=$__19.CONDITIONAL_EXPRESSION,EXPRESSION_STATEMENT=$__19.EXPRESSION_STATEMENT,PAREN_EXPRESSION=$__19.PAREN_EXPRESSION,STATE_MACHINE=$__19.STATE_MACHINE,$__20=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")),AnonBlock=$__20.AnonBlock,Block=$__20.Block,CaseClause=$__20.CaseClause,IfStatement=$__20.IfStatement,SwitchStatement=$__20.SwitchStatement,CatchState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./CatchState.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).CatchState,ConditionalState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ConditionalState.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).ConditionalState,ExplodeExpressionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ExplodeExpressionTransformer.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).ExplodeExpressionTransformer,FallThroughState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FallThroughState.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).FallThroughState,FinallyFallThroughState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FinallyFallThroughState.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).FinallyFallThroughState,FinallyState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FinallyState.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).FinallyState,FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).FindInFunctionScope,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).ParseTreeTransformer,StringMap=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../util/StringMap.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).StringMap,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../TempVarTransformer.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).TempVarTransformer,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../util/assert.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).assert,$__32=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")),parseExpression=$__32.parseExpression,parseStatement=$__32.parseStatement,parseStatements=$__32.parseStatements,State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).State,StateAllocator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./StateAllocator.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).StateAllocator,StateMachine=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/StateMachine.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).StateMachine,$__36=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SwitchState.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")),SwitchClause=$__36.SwitchClause,SwitchState=$__36.SwitchState,TryState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TryState.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")).TryState,$__38=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js")),createAssignStateStatement=$__38.createAssignStateStatement,createBreakStatement=$__38.createBreakStatement,createCaseClause=$__38.createCaseClause,createDefaultClause=$__38.createDefaultClause,createExpressionStatement=$__38.createExpressionStatement,createFunctionBody=$__38.createFunctionBody,id=$__38.createIdentifierExpression,createMemberExpression=$__38.createMemberExpression,createNumberLiteral=$__38.createNumberLiteral,createSwitchStatement=$__38.createSwitchStatement,HoistVariablesTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../HoistVariablesTransformer.js","traceur@0.0.107/src/codegeneration/generator/CPSTransformer.js"))["default"],LabelState=function(){function LabelState(name,continueState,fallThroughState){this.name=name,this.continueState=continueState,this.fallThroughState=fallThroughState}return $traceurRuntime.createClass(LabelState,{},{})}(),NeedsStateMachine=function($__super){function NeedsStateMachine(){$traceurRuntime.superConstructor(NeedsStateMachine).apply(this,arguments)}return $traceurRuntime.createClass(NeedsStateMachine,{visitBreakStatement:function(tree){this.found=!0},visitContinueStatement:function(tree){this.found=!0},visitStateMachine:function(tree){this.found=!0},visitYieldExpression:function(tee){this.found=!0}},{},$__super)}(FindInFunctionScope),HoistVariables=function($__super){function HoistVariables(){$traceurRuntime.superConstructor(HoistVariables).call(this,!0)}return $traceurRuntime.createClass(HoistVariables,{prependVariables:function(statements){return statements},prependFunctions:function(statements){return statements}},{},$__super)}(HoistVariablesTransformer),CPSTransformer=function($__super){function CPSTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(CPSTransformer).call(this,identifierGenerator,reporter,options),this.stateAllocator_=new StateAllocator,this.labelSet_=new StringMap,this.currentLabel_=null,this.hoistVariablesTransformer_=new HoistVariables}return $traceurRuntime.createClass(CPSTransformer,{expressionNeedsStateMachine:function(tree){return!1},allocateState:function(){return this.stateAllocator_.allocateState()},transformBlock:function(tree){var labels=this.getLabels_(),label=this.clearCurrentLabel_(),transformedTree=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformBlock").call(this,tree),machine=this.transformStatementList_(transformedTree.statements);if(null===machine)return transformedTree;if(label){for(var states=[],i=0;i<machine.states.length;i++){var state=machine.states[i];states.push(state.transformBreakOrContinue(labels))}machine=new StateMachine(machine.startState,machine.fallThroughState,states,machine.exceptionBlocks)}return machine},transformFunctionBody:function(tree){this.pushTempScope();var oldLabels=this.clearLabels_(),transformedTree=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformFunctionBody").call(this,tree),machine=this.transformStatementList_(transformedTree.statements);return this.restoreLabels_(oldLabels),this.popTempScope(),null===machine?transformedTree:machine},transformStatementList_:function(trees){for(var newMachine,groups=[],i=0;i<trees.length;i++)if(trees[i].type===STATE_MACHINE)groups.push(trees[i]);else if(needsStateMachine(trees[i]))newMachine=this.ensureTransformed_(trees[i]),groups.push(newMachine);else{var last=groups[groups.length-1];last instanceof Array||groups.push(last=[]),last.push(trees[i])}if(1===groups.length&&groups[0]instanceof Array)return null;for(var machine=null,i$__11=0;i$__11<groups.length;i$__11++)newMachine=groups[i$__11]instanceof Array?this.statementsToStateMachine_(groups[i$__11]):groups[i$__11],machine=0===i$__11?newMachine:machine.append(newMachine);return machine},needsStateMachine_:function(statements){if(statements instanceof Array){for(var i=0;i<statements.length;i++)if(needsStateMachine(statements[i]))return!0;return!1}return assert(statements instanceof SwitchStatement),needsStateMachine(statements)},transformCaseClause:function(tree){var result=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformCaseClause").call(this,tree),machine=this.transformStatementList_(result.statements);return null===machine?result:new CaseClause(null,result.expression,[machine])},transformDoWhileStatement:function(tree){var $__8,$__6,$__7,machine,condition,body,labels=this.getLabels_(),label=this.clearCurrentLabel_();if(this.expressionNeedsStateMachine(tree.condition))$__6=this.expressionToStateMachine(tree.condition),machine=$__6.machine,condition=$__6.expression,$__6,body=this.transformAny(tree.body);else{var result=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformDoWhileStatement").call(this,tree);if($__7=result,condition=$__7.condition,body=$__7.body,$__7,body.type!==STATE_MACHINE)return result}var loopBodyMachine=this.ensureTransformed_(body),startState=loopBodyMachine.startState,conditionState=loopBodyMachine.fallThroughState,fallThroughState=this.allocateState(),states=[];return this.addLoopBodyStates_(loopBodyMachine,conditionState,fallThroughState,labels,states),machine&&(machine=machine.replaceStartState(conditionState),conditionState=machine.fallThroughState,($__8=states).push.apply($__8,$traceurRuntime.spread(machine.states))),states.push(new ConditionalState(conditionState,startState,fallThroughState,condition)),machine=new StateMachine(startState,fallThroughState,states,loopBodyMachine.exceptionBlocks),label&&(machine=machine.replaceStateId(conditionState,label.continueState)),machine},addLoopBodyStates_:function(loopBodyMachine,continueState,breakState,labels,states){for(var i=0;i<loopBodyMachine.states.length;i++){var state=loopBodyMachine.states[i];states.push(state.transformBreakOrContinue(labels,breakState,continueState))}},transformForStatement:function(tree){var $__8,$__9,$__10,tmp,initializerMachine,labels=this.getLabels_(),label=this.clearCurrentLabel_(),initializer=null;tree.initializer&&(this.expressionNeedsStateMachine(tree.initializer)?(tmp=this.expressionToStateMachine(tree.initializer),initializer=tmp.expression,initializerMachine=tmp.machine):initializer=this.transformAny(tree.initializer));var conditionMachine,condition=null;tree.condition&&(this.expressionNeedsStateMachine(tree.condition)?(tmp=this.expressionToStateMachine(tree.condition),condition=tmp.expression,conditionMachine=tmp.machine):condition=this.transformAny(tree.condition));var incrementMachine,increment=null;tree.increment&&(this.expressionNeedsStateMachine(tree.increment)?(tmp=this.expressionToStateMachine(tree.increment),increment=tmp.expression,incrementMachine=tmp.machine):increment=this.transformAny(tree.increment));var body=this.transformAny(tree.body);if(initializer===tree.initializer&&condition===tree.condition&&increment===tree.increment&&body===tree.body)return tree;if(!initializerMachine&&!conditionMachine&&!incrementMachine&&body.type!==STATE_MACHINE)return new ForStatement(tree.location,initializer,condition,increment,body);var startId,loopBodyMachine=this.ensureTransformed_(body),bodyFallThroughId=loopBodyMachine.fallThroughState,fallThroughId=this.allocateState(),initializerStartId=initializer?this.allocateState():State.INVALID_STATE,conditionStartId=increment?this.allocateState():bodyFallThroughId,loopStartId=loopBodyMachine.startState,incrementStartId=bodyFallThroughId,states=[];if(initializer){startId=initializerStartId;var initialiserFallThroughId;initialiserFallThroughId=condition?conditionStartId:loopStartId;var tmpId=initializerStartId;initializerMachine&&(initializerMachine=initializerMachine.replaceStartState(initializerStartId),tmpId=initializerMachine.fallThroughState,($__8=states).push.apply($__8,$traceurRuntime.spread(initializerMachine.states))),states.push(new FallThroughState(tmpId,initialiserFallThroughId,[createExpressionStatement(initializer)]))}if(condition){initializer||(startId=conditionStartId);var tmpId$__12=conditionStartId;conditionMachine&&(conditionMachine=conditionMachine.replaceStartState(conditionStartId),tmpId$__12=conditionMachine.fallThroughState,($__9=states).push.apply($__9,$traceurRuntime.spread(conditionMachine.states))),states.push(new ConditionalState(tmpId$__12,loopStartId,fallThroughId,condition))}if(increment){var incrementFallThroughId;incrementFallThroughId=condition?conditionStartId:loopStartId;var tmpId$__13=incrementStartId;incrementMachine&&(incrementMachine=incrementMachine.replaceStartState(incrementStartId),tmpId$__13=incrementMachine.fallThroughState,($__10=states).push.apply($__10,$traceurRuntime.spread(incrementMachine.states))),states.push(new FallThroughState(tmpId$__13,incrementFallThroughId,[createExpressionStatement(increment)]))}initializer||condition||(startId=loopStartId);var continueId;continueId=increment?incrementStartId:condition?conditionStartId:loopStartId,increment||condition||(loopBodyMachine=loopBodyMachine.replaceFallThroughState(loopBodyMachine.startState)),this.addLoopBodyStates_(loopBodyMachine,continueId,fallThroughId,labels,states);var machine=new StateMachine(startId,fallThroughId,states,loopBodyMachine.exceptionBlocks);return label&&(machine=machine.replaceStateId(continueId,label.continueState)),machine},transformForInStatement:function(tree){return tree},transformForOfStatement:function(tree){throw Error("for of statements should be transformed before this pass")},transformIfStatement:function(tree){var $__8,$__9,$__10,$__6,$__7,machine,condition,ifClause,elseClause;if(this.expressionNeedsStateMachine(tree.condition))$__6=this.expressionToStateMachine(tree.condition),machine=$__6.machine,condition=$__6.expression,$__6,ifClause=this.transformAny(tree.ifClause),elseClause=this.transformAny(tree.elseClause);else{var result=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformIfStatement").call(this,tree);if($__7=result,condition=$__7.condition,ifClause=$__7.ifClause,elseClause=$__7.elseClause,$__7,ifClause.type!==STATE_MACHINE&&(null===elseClause||elseClause.type!==STATE_MACHINE))return result}ifClause=this.ensureTransformed_(ifClause),elseClause=this.ensureTransformed_(elseClause);var startState=this.allocateState(),fallThroughState=ifClause.fallThroughState,ifState=ifClause.startState,elseState=null===elseClause?fallThroughState:elseClause.startState,states=[],exceptionBlocks=[];states.push(new ConditionalState(startState,ifState,elseState,condition)),($__8=states).push.apply($__8,$traceurRuntime.spread(ifClause.states)),($__9=exceptionBlocks).push.apply($__9,$traceurRuntime.spread(ifClause.exceptionBlocks)),null!==elseClause&&(this.replaceAndAddStates_(elseClause.states,elseClause.fallThroughState,fallThroughState,states),($__10=exceptionBlocks).push.apply($__10,$traceurRuntime.spread(State.replaceAllStates(elseClause.exceptionBlocks,elseClause.fallThroughState,fallThroughState))));var ifMachine=new StateMachine(startState,fallThroughState,states,exceptionBlocks);return machine&&(ifMachine=machine.append(ifMachine)),ifMachine},removeEmptyStates:function(oldStates){for(var emptyStates=[],newStates=[],i=0;i<oldStates.length;i++)oldStates[i]instanceof FallThroughState&&0===oldStates[i].statements.length?emptyStates.push(oldStates[i]):newStates.push(oldStates[i]);for(var i$__14=0;i$__14<newStates.length;i$__14++)newStates[i$__14]=emptyStates.reduce(function(state,$__6){var $__7=$__6,id=$__7.id,fallThroughState=$__7.fallThroughState;return state.replaceState(id,fallThroughState)},newStates[i$__14]);return newStates},replaceAndAddStates_:function(oldStates,oldState,newState,newStates){for(var i=0;i<oldStates.length;i++)newStates.push(oldStates[i].replaceState(oldState,newState))},transformLabelledStatement:function(tree){var startState=this.allocateState(),continueState=this.allocateState(),fallThroughState=this.allocateState(),label=new LabelState(tree.name.value,continueState,fallThroughState),oldLabels=this.addLabel_(label);this.currentLabel_=label;var result=this.transformAny(tree.statement);return result===tree.statement?result=tree:result.type===STATE_MACHINE&&(result=result.replaceStartState(startState),result=result.replaceFallThroughState(fallThroughState)),this.restoreLabels_(oldLabels),result},getLabels_:function(){return this.labelSet_},restoreLabels_:function(oldLabels){this.labelSet_=oldLabels},addLabel_:function(label){var $__5=this,oldLabels=this.labelSet_,labelSet=new StringMap;return this.labelSet_.forEach(function(k){return labelSet[k]=$__5.labelSet_[k]}),labelSet.set(label.name,label),this.labelSet_=labelSet,oldLabels},clearLabels_:function(){var result=this.labelSet_;return this.labelSet_=new StringMap,result},clearCurrentLabel_:function(){var result=this.currentLabel_;return this.currentLabel_=null,result},transformSwitchStatement:function(tree){var $__6,$__7,expression,machine,caseClauses,labels=this.getLabels_();if(this.expressionNeedsStateMachine(tree.expression))$__6=this.expressionToStateMachine(tree.expression),expression=$__6.expression,machine=$__6.machine,$__6,caseClauses=this.transformList(tree.caseClauses);else{var result=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformSwitchStatement").call(this,tree);if(!needsStateMachine(result))return result;$__7=result,expression=$__7.expression,caseClauses=$__7.caseClauses,$__7}for(var startState=this.allocateState(),fallThroughState=this.allocateState(),nextState=fallThroughState,states=[],clauses=[],tryStates=[],hasDefault=!1,index=caseClauses.length-1;index>=0;index--){var clause=caseClauses[index];if(clause.type===CASE_CLAUSE){var caseClause=clause;nextState=this.addSwitchClauseStates_(nextState,fallThroughState,labels,caseClause.statements,states,tryStates),clauses.push(new SwitchClause(caseClause.expression,nextState))}else{hasDefault=!0;var defaultClause=clause;nextState=this.addSwitchClauseStates_(nextState,fallThroughState,labels,defaultClause.statements,states,tryStates),clauses.push(new SwitchClause(null,nextState))}}hasDefault||clauses.push(new SwitchClause(null,fallThroughState)),states.push(new SwitchState(startState,expression,clauses.reverse()));var switchMachine=new StateMachine(startState,fallThroughState,states.reverse(),tryStates);return machine&&(switchMachine=machine.append(switchMachine)),switchMachine},addSwitchClauseStates_:function(nextState,fallThroughState,labels,statements,states,tryStates){for(var $__8,machine=this.ensureTransformedList_(statements),i=0;i<machine.states.length;i++){var state=machine.states[i],transformedState=state.transformBreak(labels,fallThroughState);states.push(transformedState.replaceState(machine.fallThroughState,nextState))}return($__8=tryStates).push.apply($__8,$traceurRuntime.spread(machine.exceptionBlocks)),machine.startState},transformTryStatement:function(tree){var result=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformTryStatement").call(this,tree),$__6=result,body=$__6.body,catchBlock=$__6.catchBlock,finallyBlock=$__6.finallyBlock;if(!(body.type===STATE_MACHINE||null!==catchBlock&&catchBlock.catchBody.type===STATE_MACHINE||null!==finallyBlock&&finallyBlock.block.type===STATE_MACHINE))return result;var outerCatchState=this.allocateState(),outerFinallyState=this.allocateState(),pushTryState=this.statementToStateMachine_(parseStatement($traceurRuntime.getTemplateObject(["$ctx.pushTry(\n            ",",\n            ",");"]),catchBlock&&outerCatchState,finallyBlock&&outerFinallyState)),tryMachine=this.ensureTransformed_(body);if(tryMachine=pushTryState.append(tryMachine),null!==catchBlock){var popTry=this.statementToStateMachine_(parseStatement($traceurRuntime.getTemplateObject(["$ctx.popTry();"])));tryMachine=tryMachine.append(popTry);var exceptionName=catchBlock.binding.identifierToken.value,catchMachine=this.ensureTransformed_(catchBlock.catchBody),catchStart=this.allocateState();this.addMachineVariable(exceptionName);var states=$traceurRuntime.spread(tryMachine.states,[new FallThroughState(catchStart,catchMachine.startState,parseStatements($traceurRuntime.getTemplateObject(["\n              $ctx.popTry();\n              $ctx.maybeUncatchable(); // see RETURN_SENTINEL in runtime\n              "," = $ctx.storedException;"]),id(exceptionName)))]);this.replaceAndAddStates_(catchMachine.states,catchMachine.fallThroughState,tryMachine.fallThroughState,states),tryMachine=new StateMachine(tryMachine.startState,tryMachine.fallThroughState,states,[new CatchState(exceptionName,catchStart,tryMachine.fallThroughState,tryMachine.getAllStateIDs(),tryMachine.exceptionBlocks)]),tryMachine=tryMachine.replaceStateId(catchStart,outerCatchState)}if(null!==finallyBlock){var finallyMachine=this.ensureTransformed_(finallyBlock.block),popTry$__15=this.statementToStateMachine_(parseStatement($traceurRuntime.getTemplateObject(["$ctx.popTry();"])));finallyMachine=popTry$__15.append(finallyMachine);var states$__16=$traceurRuntime.spread(tryMachine.states,finallyMachine.states,[new FinallyFallThroughState(finallyMachine.fallThroughState)]);tryMachine=new StateMachine(tryMachine.startState,tryMachine.fallThroughState,states$__16,[new FinallyState(finallyMachine.startState,finallyMachine.fallThroughState,tryMachine.getAllStateIDs(),tryMachine.exceptionBlocks)]),tryMachine=tryMachine.replaceStateId(finallyMachine.startState,outerFinallyState)}return tryMachine},transformWhileStatement:function(tree){var $__8,$__6,$__7,condition,machine,body,labels=this.getLabels_(),label=this.clearCurrentLabel_();if(this.expressionNeedsStateMachine(tree.condition))$__6=this.expressionToStateMachine(tree.condition),machine=$__6.machine,condition=$__6.expression,$__6,body=this.transformAny(tree.body);else{var result=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformWhileStatement").call(this,tree);if($__7=result,condition=$__7.condition,body=$__7.body,$__7,body.type!==STATE_MACHINE)return result}var loopBodyMachine=this.ensureTransformed_(body),startState=loopBodyMachine.fallThroughState,fallThroughState=this.allocateState(),states=[],conditionStart=startState;return machine&&(machine=machine.replaceStartState(startState),conditionStart=machine.fallThroughState,($__8=states).push.apply($__8,$traceurRuntime.spread(machine.states))),states.push(new ConditionalState(conditionStart,loopBodyMachine.startState,fallThroughState,condition)),this.addLoopBodyStates_(loopBodyMachine,startState,fallThroughState,labels,states),machine=new StateMachine(startState,fallThroughState,states,loopBodyMachine.exceptionBlocks),label&&(machine=machine.replaceStateId(startState,label.continueState)),machine},transformWithStatement:function(tree){var result=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformWithStatement").call(this,tree);if(result.body.type!==STATE_MACHINE)return result;throw Error("Unreachable - with statement not allowed in strict mode/harmony")},generateMachineInnerFunction:function(machine){var enclosingFinallyState=machine.getEnclosingFinallyMap(),SwitchStatement=createSwitchStatement(createMemberExpression("$ctx","state"),this.transformMachineStates(machine,State.END_STATE,State.RETHROW_STATE,enclosingFinallyState));return parseExpression($traceurRuntime.getTemplateObject(["function($ctx) {\n      while (true) ","\n    }"]),SwitchStatement)},addTempVar:function(){var name=this.getTempIdentifier();return this.addMachineVariable(name),name},addMachineVariable:function(name){this.hoistVariablesTransformer_.addVariable(name)},transformCpsFunctionBody:function(tree,runtimeMethod){var $__8,functionRef=arguments[2],alphaRenamedTree=AlphaRenamer.rename(tree,"arguments","$arguments"),hasArguments=alphaRenamedTree!==tree,hoistedTree=this.hoistVariablesTransformer_.transformAny(alphaRenamedTree),maybeMachine=this.transformAny(hoistedTree);if(this.reporter.hadError())return tree;var machine;machine=maybeMachine.type!==STATE_MACHINE?this.statementsToStateMachine_(maybeMachine.statements):new StateMachine(maybeMachine.startState,maybeMachine.fallThroughState,this.removeEmptyStates(maybeMachine.states),maybeMachine.exceptionBlocks),machine=machine.replaceFallThroughState(State.END_STATE).replaceStartState(State.START_STATE);var statements=[];return this.hoistVariablesTransformer_.hasFunctions()&&($__8=statements).push.apply($__8,$traceurRuntime.spread(this.hoistVariablesTransformer_.getFunctions())),this.hoistVariablesTransformer_.hasVariables()&&statements.push(this.hoistVariablesTransformer_.getVariableStatement()),hasArguments&&statements.push(parseStatement($traceurRuntime.getTemplateObject(["var $arguments = arguments;"]))),functionRef?statements.push(parseStatement($traceurRuntime.getTemplateObject(["return ","(\n              ",",\n              ",", this);"]),runtimeMethod,this.generateMachineInnerFunction(machine),functionRef)):statements.push(parseStatement($traceurRuntime.getTemplateObject(["return ","(\n              ",", this);"]),runtimeMethod,this.generateMachineInnerFunction(machine))),createFunctionBody(statements)},transformFunctionDeclaration:function(tree){return tree},transformFunctionExpression:function(tree){return tree},transformGetAccessor:function(tree){return tree},transformSetAccessor:function(tree){return tree},transformArrowFunction:function(tree){return tree},transformStateMachine:function(tree){return tree},statementToStateMachine_:function(statement){var statements;return statements=statement.type===BLOCK?statement.statements:[statement],this.statementsToStateMachine_(statements)},statementsToStateMachine_:function(statements){var startState=this.allocateState(),fallThroughState=this.allocateState();return this.stateToStateMachine_(new FallThroughState(startState,fallThroughState,statements),fallThroughState)},stateToStateMachine_:function(newState,fallThroughState){return new StateMachine(newState.id,fallThroughState,[newState],[])},transformMachineStates:function(machine,machineEndState,rethrowState,enclosingFinallyState){for(var cases=[],i=0;i<machine.states.length;i++){var state=machine.states[i],stateCase=state.transformMachineState(enclosingFinallyState[state.id],machineEndState,this.reporter);null!==stateCase&&cases.push(stateCase)}return this.addFinallyFallThroughDispatches(null,machine.exceptionBlocks,cases),cases.push(createDefaultClause(parseStatements($traceurRuntime.getTemplateObject(["return $ctx.end()"])))),cases},addFinallyFallThroughDispatches:function(enclosingFinallyState,tryStates,cases){for(var i=0;i<tryStates.length;i++){var tryState=tryStates[i];if(tryState.kind===TryState.Kind.FINALLY){var finallyState=tryState;if(null!==enclosingFinallyState){for(var caseClauses=[],index=0,j=0;j<enclosingFinallyState.tryStates.length;j++){var destination=enclosingFinallyState.tryStates[j];index++;var statements=void 0;statements=index<enclosingFinallyState.tryStates.length?[]:parseStatements($traceurRuntime.getTemplateObject(["\n                  $ctx.state = $ctx.finallyFallThrough;\n                  $ctx.finallyFallThrough = ",";\n                  break;"]),State.INVALID_STATE),caseClauses.push(createCaseClause(createNumberLiteral(destination),statements))}caseClauses.push(createDefaultClause([createAssignStateStatement(enclosingFinallyState.finallyState),createBreakStatement()])),cases.push(createCaseClause(createNumberLiteral(finallyState.fallThroughState),[createSwitchStatement(createMemberExpression("$ctx","finallyFallThrough"),caseClauses),createBreakStatement()]))}else cases.push(createCaseClause(createNumberLiteral(finallyState.fallThroughState),parseStatements($traceurRuntime.getTemplateObject(["\n                      $ctx.state = $ctx.finallyFallThrough;\n                      break;"]))));this.addFinallyFallThroughDispatches(finallyState,finallyState.nestedTrys,cases)}else this.addFinallyFallThroughDispatches(enclosingFinallyState,tryState.nestedTrys,cases)}},transformVariableDeclarationList:function(tree){return this.reporter.reportError(tree.location,"Traceur: const/let declarations in a block containing a yield are not yet implemented"),tree},maybeTransformStatement_:function(maybeTransformedStatement){var breakContinueTransformed=new BreakContinueTransformer(this.stateAllocator_).transformAny(maybeTransformedStatement);
return breakContinueTransformed!==maybeTransformedStatement&&(breakContinueTransformed=this.transformAny(breakContinueTransformed)),breakContinueTransformed},ensureTransformed_:function(statement){if(null===statement)return null;var maybeTransformed=this.maybeTransformStatement_(statement);return maybeTransformed.type===STATE_MACHINE?maybeTransformed:this.statementToStateMachine_(maybeTransformed)},ensureTransformedList_:function(statements){for(var maybeTransformedStatements=[],foundMachine=!1,i=0;i<statements.length;i++){var statement=statements[i],maybeTransformedStatement=this.maybeTransformStatement_(statement);maybeTransformedStatements.push(maybeTransformedStatement),maybeTransformedStatement.type===STATE_MACHINE&&(foundMachine=!0)}return foundMachine?this.transformStatementList_(maybeTransformedStatements):this.statementsToStateMachine_(statements)},expressionToStateMachine:function(tree){var commaExpression=new ExplodeExpressionTransformer(this).transformAny(tree),statements=(new NormalizeCommaExpressionToStatementTransformer).transformAny(commaExpression).statements,lastStatement=statements.pop();assert(lastStatement.type===EXPRESSION_STATEMENT);var expression=lastStatement.expression;statements=$traceurRuntime.superGet(this,CPSTransformer.prototype,"transformList").call(this,statements);var machine=this.transformStatementList_(statements);return{expression:expression,machine:machine}}},{},$__super)}(TempVarTransformer),NormalizeCommaExpressionToStatementTransformer=function($__super){function NormalizeCommaExpressionToStatementTransformer(){$traceurRuntime.superConstructor(NormalizeCommaExpressionToStatementTransformer).apply(this,arguments)}return $traceurRuntime.createClass(NormalizeCommaExpressionToStatementTransformer,{transformCommaExpression:function(tree){var $__5=this,statements=tree.expressions.map(function(expr){return expr.type===CONDITIONAL_EXPRESSION?$__5.transformAny(expr):createExpressionStatement(expr)});return new AnonBlock(tree.location,statements)},transformConditionalExpression:function(tree){var ifBlock=this.transformAny(tree.left),elseBlock=this.transformAny(tree.right);return new IfStatement(tree.location,tree.condition,anonBlockToBlock(ifBlock),anonBlockToBlock(elseBlock))}},{},$__super)}(ParseTreeTransformer);return{get CPSTransformer(){return CPSTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/EndState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/EndState.js")).State,EndState=function($__super){function EndState(){$traceurRuntime.superConstructor(EndState).apply(this,arguments)}return $traceurRuntime.createClass(EndState,{replaceState:function(oldState,newState){return new EndState(State.replaceStateId(this.id,oldState,newState))},transform:function(enclosingFinally,machineEndState,reporter){return State.generateJump(enclosingFinally,machineEndState)}},{},$__super)}(State);return{get EndState(){return EndState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js",[],function(){"use strict";function isAwaitAssign(tree){return tree.type===BINARY_EXPRESSION&&tree.operator.isAssignmentOperator()&&tree.right.type===AWAIT_EXPRESSION&&tree.left.isLeftHandSideExpression()}function scopeContainsAwait(tree){var visitor=new AwaitFinder;return visitor.visitAny(tree),visitor.found}var AwaitState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AwaitState.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")).AwaitState,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")),BinaryExpression=$__4.BinaryExpression,ExpressionStatement=$__4.ExpressionStatement,CPSTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./CPSTransformer.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")).CPSTransformer,EndState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./EndState.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")).EndState,FallThroughState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FallThroughState.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")).FallThroughState,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")),AWAIT_EXPRESSION=$__8.AWAIT_EXPRESSION,BINARY_EXPRESSION=$__8.BINARY_EXPRESSION,STATE_MACHINE=$__8.STATE_MACHINE,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")),parseExpression=$__9.parseExpression,parseStatement=$__9.parseStatement,parseStatements=$__9.parseStatements,StateMachine=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/StateMachine.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")).StateMachine,FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")).FindInFunctionScope,createUndefinedExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/AsyncTransformer.js")).createUndefinedExpression,AwaitFinder=function($__super){function AwaitFinder(){$traceurRuntime.superConstructor(AwaitFinder).apply(this,arguments)}return $traceurRuntime.createClass(AwaitFinder,{visitAwaitExpression:function(tree){this.found=!0}},{},$__super)}(FindInFunctionScope),AsyncTransformer=function($__super){function AsyncTransformer(){$traceurRuntime.superConstructor(AsyncTransformer).apply(this,arguments)}return $traceurRuntime.createClass(AsyncTransformer,{expressionNeedsStateMachine:function(tree){return null!==tree&&scopeContainsAwait(tree)},transformExpressionStatement:function(tree){var expression=tree.expression;return expression.type===AWAIT_EXPRESSION?this.transformAwaitExpression_(expression):isAwaitAssign(expression)?this.transformAwaitAssign_(expression):this.expressionNeedsStateMachine(expression)?this.expressionToStateMachine(expression).machine:$traceurRuntime.superGet(this,AsyncTransformer.prototype,"transformExpressionStatement").call(this,tree)},transformAwaitExpression:function(tree){throw Error("Internal error")},transformAwaitExpression_:function(tree){return this.transformAwait_(tree,tree.expression,null,null)},transformAwaitAssign_:function(tree){return this.transformAwait_(tree,tree.right.expression,tree.left,tree.operator)},transformAwait_:function(tree,inExpression,left,operator){var $__2,expression,machine;this.expressionNeedsStateMachine(inExpression)?($__2=this.expressionToStateMachine(inExpression),expression=$__2.expression,machine=$__2.machine,$__2):expression=this.transformAny(inExpression);var createTaskState=this.allocateState(),fallThroughState=this.allocateState(),callbackState=left?this.allocateState():fallThroughState,states=[];if(states.push(new AwaitState(createTaskState,callbackState,expression)),left){var statement=new ExpressionStatement(tree.location,new BinaryExpression(tree.location,left,operator,parseExpression($traceurRuntime.getTemplateObject(["$ctx.value"]))));states.push(new FallThroughState(callbackState,fallThroughState,[statement]))}var awaitMachine=new StateMachine(createTaskState,fallThroughState,states,[]);return machine&&(awaitMachine=machine.append(awaitMachine)),awaitMachine},transformFinally:function(tree){var result=$traceurRuntime.superGet(this,AsyncTransformer.prototype,"transformFinally").call(this,tree);return result.block.type!==STATE_MACHINE?result:(this.reporter.reportError(tree.location,"await not permitted within a finally block."),result)},transformReturnStatement:function(tree){var $__2,expression,machine;this.expressionNeedsStateMachine(tree.expression)?($__2=this.expressionToStateMachine(tree.expression),expression=$__2.expression,machine=$__2.machine,$__2):expression=tree.expression||createUndefinedExpression();var startState=this.allocateState(),endState=this.allocateState(),completeState=new FallThroughState(startState,endState,parseStatements($traceurRuntime.getTemplateObject(["$ctx.returnValue = ",""]),expression)),end=new EndState(endState),returnMachine=new StateMachine(startState,this.allocateState(),[completeState,end],[]);return machine&&(returnMachine=machine.append(returnMachine)),returnMachine},createCompleteTask_:function(result){return parseStatement($traceurRuntime.getTemplateObject(["$ctx.resolve(",")"]),result)},transformAsyncBody:function(tree){var runtimeFunction=parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.asyncWrap"]));return this.transformCpsFunctionBody(tree,runtimeFunction)}},{transformAsyncBody:function(identifierGenerator,reporter,options,body){return new AsyncTransformer(identifierGenerator,reporter,options).transformAsyncBody(body)}},$__super)}(CPSTransformer);return{get AsyncTransformer(){return AsyncTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/ForInTransformPass.js",[],function(){"use strict";var $__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/generator/ForInTransformPass.js")),BLOCK=$__3.BLOCK,VARIABLE_DECLARATION_LIST=$__3.VARIABLE_DECLARATION_LIST,IDENTIFIER_EXPRESSION=$__3.IDENTIFIER_EXPRESSION,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/generator/ForInTransformPass.js")),LENGTH=$__4.LENGTH,PUSH=$__4.PUSH,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../TempVarTransformer.js","traceur@0.0.107/src/codegeneration/generator/ForInTransformPass.js")).TempVarTransformer,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/generator/ForInTransformPass.js")),BANG=$__6.BANG,IN=$__6.IN,OPEN_ANGLE=$__6.OPEN_ANGLE,PLUS_PLUS=$__6.PLUS_PLUS,VAR=$__6.VAR,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/ForInTransformPass.js")),createArgumentList=$__7.createArgumentList,createAssignmentStatement=$__7.createAssignmentStatement,createBinaryExpression=$__7.createBinaryExpression,createBlock=$__7.createBlock,createCallStatement=$__7.createCallStatement,createContinueStatement=$__7.createContinueStatement,createEmptyArrayLiteral=$__7.createEmptyArrayLiteral,createForInStatement=$__7.createForInStatement,createForStatement=$__7.createForStatement,createIdentifierExpression=$__7.createIdentifierExpression,createIfStatement=$__7.createIfStatement,createMemberExpression=$__7.createMemberExpression,createMemberLookupExpression=$__7.createMemberLookupExpression,createNumberLiteral=$__7.createNumberLiteral,createOperatorToken=$__7.createOperatorToken,createParenExpression=$__7.createParenExpression,createPostfixExpression=$__7.createPostfixExpression,createUnaryExpression=$__7.createUnaryExpression,createVariableDeclarationList=$__7.createVariableDeclarationList,createVariableStatement=$__7.createVariableStatement,ForInTransformPass=function($__super){function ForInTransformPass(){$traceurRuntime.superConstructor(ForInTransformPass).apply(this,arguments)}return $traceurRuntime.createClass(ForInTransformPass,{transformForInStatement:function(tree){var $__1,$__2,bodyStatements=[],body=this.transformAny(tree.body);body.type===BLOCK?($__1=bodyStatements).push.apply($__1,$traceurRuntime.spread(body.statements)):bodyStatements.push(body);var elements=[],keys=this.getTempIdentifier();elements.push(createVariableStatement(VAR,keys,createEmptyArrayLiteral()));var collection=this.getTempIdentifier();elements.push(createVariableStatement(VAR,collection,tree.collection));var p=this.getTempIdentifier();elements.push(createForInStatement(createVariableDeclarationList(VAR,p,null),createIdentifierExpression(collection),createCallStatement(createMemberExpression(keys,PUSH),createArgumentList([createIdentifierExpression(p)]))));var originalKey,assignOriginalKey,i=this.getTempIdentifier(),lookup=createMemberLookupExpression(createIdentifierExpression(keys),createIdentifierExpression(i));if(tree.initializer.type===VARIABLE_DECLARATION_LIST){var decList=tree.initializer;originalKey=createIdentifierExpression(decList.declarations[0].lvalue),assignOriginalKey=createVariableStatement(decList.declarationType,originalKey.identifierToken,lookup)}else{if(tree.initializer.type!==IDENTIFIER_EXPRESSION)throw Error("Invalid left hand side of for in loop");originalKey=tree.initializer,assignOriginalKey=createAssignmentStatement(tree.initializer,lookup)}var innerBlock=[];return innerBlock.push(assignOriginalKey),innerBlock.push(createIfStatement(createUnaryExpression(createOperatorToken(BANG),createParenExpression(createBinaryExpression(originalKey,createOperatorToken(IN),createIdentifierExpression(collection)))),createContinueStatement(),null)),($__2=innerBlock).push.apply($__2,$traceurRuntime.spread(bodyStatements)),elements.push(createForStatement(createVariableDeclarationList(VAR,i,createNumberLiteral(0)),createBinaryExpression(createIdentifierExpression(i),createOperatorToken(OPEN_ANGLE),createMemberExpression(keys,LENGTH)),createPostfixExpression(createIdentifierExpression(i),createOperatorToken(PLUS_PLUS)),createBlock(innerBlock))),createBlock(elements)}},{},$__super)}(TempVarTransformer);return{get ForInTransformPass(){return ForInTransformPass}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/YieldState.js",[],function(){"use strict";var State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/YieldState.js")).State,createReturnStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/YieldState.js")).createReturnStatement,YieldState=function($__super){function YieldState(id,fallThroughState,expression){$traceurRuntime.superConstructor(YieldState).call(this,id),this.fallThroughState=fallThroughState,this.expression=expression}return $traceurRuntime.createClass(YieldState,{replaceState:function(oldState,newState){return new this.constructor(State.replaceStateId(this.id,oldState,newState),State.replaceStateId(this.fallThroughState,oldState,newState),this.expression)},transform:function(enclosingFinally,machineEndState,reporter){return $traceurRuntime.spread(State.generateAssignState(enclosingFinally,this.fallThroughState),[createReturnStatement(this.expression)])}},{},$__super)}(State);return{get YieldState(){return YieldState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/ReturnState.js",[],function(){"use strict";var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../semantics/util.js","traceur@0.0.107/src/codegeneration/generator/ReturnState.js")),isUndefined=$__2.isUndefined,isVoidExpression=$__2.isVoidExpression,YieldState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./YieldState.js","traceur@0.0.107/src/codegeneration/generator/ReturnState.js")).YieldState,State=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./State.js","traceur@0.0.107/src/codegeneration/generator/ReturnState.js")).State,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/generator/ReturnState.js")).parseStatement,ReturnState=function($__super){function ReturnState(){$traceurRuntime.superConstructor(ReturnState).apply(this,arguments)}return $traceurRuntime.createClass(ReturnState,{transform:function(enclosingFinally,machineEndState,reporter){var $__1,e=this.expression,statements=[];return!e||isUndefined(e)||isVoidExpression(e)||statements.push(parseStatement($traceurRuntime.getTemplateObject(["$ctx.returnValue = ",""]),this.expression)),($__1=statements).push.apply($__1,$traceurRuntime.spread(State.generateJump(enclosingFinally,machineEndState))),statements}},{},$__super)}(YieldState);return{get ReturnState(){return ReturnState}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js",[],function(){"use strict";function isYieldAssign(tree){return tree.type===BINARY_EXPRESSION&&tree.operator.isAssignmentOperator()&&tree.right.type===YIELD_EXPRESSION&&tree.left.isLeftHandSideExpression()}function scopeContainsYield(tree){var finder=new YieldFinder;return finder.visitAny(tree),finder.found}var CPSTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./CPSTransformer.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js")).CPSTransformer,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js")),BINARY_EXPRESSION=$__4.BINARY_EXPRESSION,YIELD_EXPRESSION=$__4.YIELD_EXPRESSION,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js")),BinaryExpression=$__5.BinaryExpression,ExpressionStatement=$__5.ExpressionStatement,FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js")).FindInFunctionScope,ReturnState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ReturnState.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js")).ReturnState,YieldState=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./YieldState.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js")).YieldState,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js")),id=$__9.createIdentifierExpression,$__10=($__9.createMemberExpression,$__9.createUndefinedExpression,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/generator/GeneratorTransformer.js"))),parseExpression=$__10.parseExpression,parseStatement=$__10.parseStatement,parseStatements=$__10.parseStatements,YieldFinder=function($__super){function YieldFinder(){$traceurRuntime.superConstructor(YieldFinder).apply(this,arguments)}return $traceurRuntime.createClass(YieldFinder,{visitYieldExpression:function(tree){this.found=!0}},{},$__super)}(FindInFunctionScope),GeneratorTransformer=function($__super){function GeneratorTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(GeneratorTransformer).call(this,identifierGenerator,reporter,options),this.shouldAppendThrowCloseState_=!0}return $traceurRuntime.createClass(GeneratorTransformer,{expressionNeedsStateMachine:function(tree){return null!==tree&&scopeContainsYield(tree)},transformYieldExpression_:function(tree){var $__2,expression,machine;if(this.expressionNeedsStateMachine(tree.expression)?($__2=this.expressionToStateMachine(tree.expression),expression=$__2.expression,machine=$__2.machine,$__2):expression=this.transformAny(tree.expression),tree.isYieldFor)return this.transformYieldForExpression_(expression,machine);var startState=this.allocateState(),fallThroughState=this.allocateState(),yieldMachine=this.stateToStateMachine_(new YieldState(startState,fallThroughState,expression),fallThroughState);return machine&&(yieldMachine=machine.append(yieldMachine)),this.shouldAppendThrowCloseState_&&(yieldMachine=yieldMachine.append(this.createThrowCloseState_())),yieldMachine},transformYieldForExpression_:function(expression){var machine=arguments[1],gName=this.getTempIdentifier();this.addMachineVariable(gName);var g=id(gName),nextName=this.getTempIdentifier();this.addMachineVariable(nextName);var next=id(nextName),statements=parseStatements($traceurRuntime.getTemplateObject(["\n        "," = $ctx.wrapYieldStar(","[Symbol.iterator]());\n        // received = void 0;\n        $ctx.sent = void 0;\n        // send = true; // roughly equivalent\n        $ctx.action = 'next';\n\n        for (;;) {\n          "," = ","[$ctx.action]($ctx.sentIgnoreThrow);\n          if (",".done) {\n            $ctx.sent = ",".value;\n            break;\n          }\n          yield ",".value;\n        }"]),g,expression,next,g,next,next,next),shouldAppendThrowCloseState=this.shouldAppendThrowCloseState_;this.shouldAppendThrowCloseState_=!1,statements=this.transformList(statements);var yieldMachine=this.transformStatementList_(statements);return this.shouldAppendThrowCloseState_=shouldAppendThrowCloseState,machine&&(yieldMachine=machine.append(yieldMachine)),yieldMachine},transformYieldExpression:function(tree){return this.reporter.reportError(tree.location,"Only 'a = yield b' and 'var a = yield b' currently supported."),tree},transformYieldAssign_:function(tree){var shouldAppendThrowCloseState=this.shouldAppendThrowCloseState_;this.shouldAppendThrowCloseState_=!1;var machine=this.transformYieldExpression_(tree.right),left=this.transformAny(tree.left),sentExpression=parseExpression(tree.right.isYieldFor?$traceurRuntime.getTemplateObject(["$ctx.sentIgnoreThrow"]):$traceurRuntime.getTemplateObject(["$ctx.sent"])),statement=new ExpressionStatement(tree.location,new BinaryExpression(tree.location,left,tree.operator,sentExpression)),assignMachine=this.statementToStateMachine_(statement);return this.shouldAppendThrowCloseState_=shouldAppendThrowCloseState,machine.append(assignMachine)},createThrowCloseState_:function(){return this.statementToStateMachine_(parseStatement($traceurRuntime.getTemplateObject(["$ctx.maybeThrow()"])))},transformExpressionStatement:function(tree){var expression=tree.expression;return expression.type===YIELD_EXPRESSION?this.transformYieldExpression_(expression):isYieldAssign(expression)?this.transformYieldAssign_(expression):this.expressionNeedsStateMachine(expression)?this.expressionToStateMachine(expression).machine:$traceurRuntime.superGet(this,GeneratorTransformer.prototype,"transformExpressionStatement").call(this,tree)},transformAwaitStatement:function(tree){return this.reporter.reportError(tree.location,"Generator function may not have an await statement."),tree},transformReturnStatement:function(tree){var $__2,expression,machine;this.expressionNeedsStateMachine(tree.expression)?($__2=this.expressionToStateMachine(tree.expression),expression=$__2.expression,machine=$__2.machine,$__2):expression=tree.expression;var startState=this.allocateState(),fallThroughState=this.allocateState(),returnMachine=this.stateToStateMachine_(new ReturnState(startState,fallThroughState,this.transformAny(expression)),fallThroughState);return machine?machine.append(returnMachine):returnMachine},transformGeneratorBody:function(tree,name){var runtimeFunction=parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.createGeneratorInstance"]));return this.transformCpsFunctionBody(tree,runtimeFunction,name)}},{transformGeneratorBody:function(identifierGenerator,reporter,options,body,name){return new GeneratorTransformer(identifierGenerator,reporter,options).transformGeneratorBody(body,name)}},$__super)}(CPSTransformer);return{get GeneratorTransformer(){return GeneratorTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js",[],function(){"use strict";function needsTransform(tree,transformOptions){return transformOptions.generators&&tree.isGenerator()||transformOptions.asyncFunctions&&tree.isAsyncFunction()}var ArrowFunctionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ArrowFunctionTransformer.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")).ArrowFunctionTransformer,AsyncTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./generator/AsyncTransformer.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")).AsyncTransformer,ForInTransformPass=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./generator/ForInTransformPass.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")).ForInTransformPass,GeneratorTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./generator/GeneratorTransformer.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")).GeneratorTransformer,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")),parseExpression=$__6.parseExpression,parseStatement=$__6.parseStatement,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")).TempVarTransformer,FindInFunctionScope=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindInFunctionScope.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")).FindInFunctionScope,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")),AnonBlock=$__9.AnonBlock,FunctionDeclaration=$__9.FunctionDeclaration,FunctionExpression=$__9.FunctionExpression,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/GeneratorTransformPass.js")),createBindingIdentifier=$__10.createBindingIdentifier,id=$__10.createIdentifierExpression,createIdentifierToken=$__10.createIdentifierToken,ForInFinder=function($__super){function ForInFinder(){$traceurRuntime.superConstructor(ForInFinder).apply(this,arguments)}return $traceurRuntime.createClass(ForInFinder,{visitForInStatement:function(tree){this.found=!0}},{},$__super)}(FindInFunctionScope),GeneratorTransformPass=function($__super){function GeneratorTransformPass(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(GeneratorTransformPass).call(this,identifierGenerator,reporter,options),this.tranformOptions_=options.transformOptions,this.inBlock_=!1}return $traceurRuntime.createClass(GeneratorTransformPass,{transformFunctionDeclaration:function(tree){return needsTransform(tree,this.tranformOptions_)?tree.isGenerator()?this.transformGeneratorDeclaration_(tree):this.transformFunction_(tree,FunctionDeclaration,null):$traceurRuntime.superGet(this,GeneratorTransformPass.prototype,"transformFunctionDeclaration").call(this,tree)},transformGeneratorDeclaration_:function(tree){var nameIdExpression=id(tree.name.identifierToken),setupPrototypeExpression=parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.initGeneratorFunction(",")"]),nameIdExpression),tmpVar=id(this.inBlock_?this.getTempIdentifier():this.addTempVar(setupPrototypeExpression)),funcDecl=this.transformFunction_(tree,FunctionDeclaration,tmpVar);return this.inBlock_?new AnonBlock(null,[funcDecl,parseStatement($traceurRuntime.getTemplateObject(["var "," = ",""]),tmpVar,setupPrototypeExpression)]):funcDecl},transformFunctionExpression:function(tree){return needsTransform(tree,this.tranformOptions_)?tree.isGenerator()?this.transformGeneratorExpression_(tree):this.transformFunction_(tree,FunctionExpression,null):$traceurRuntime.superGet(this,GeneratorTransformPass.prototype,"transformFunctionExpression").call(this,tree)},transformGeneratorExpression_:function(tree){var name;tree.name?name=tree.name.identifierToken:(name=createIdentifierToken(this.getTempIdentifier()),tree=new FunctionExpression(tree.location,createBindingIdentifier(name),tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,tree.body));var functionExpression=this.transformFunction_(tree,FunctionExpression,id(name));return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.initGeneratorFunction(",")"]),functionExpression)},transformFunction_:function(tree,constructor,nameExpression){var body=$traceurRuntime.superGet(this,GeneratorTransformPass.prototype,"transformAny").call(this,tree.body),finder=new ForInFinder;finder.visitAny(body),finder.found&&(body=new ForInTransformPass(this.identifierGenerator,this.reporter,this.options).transformAny(body)),this.tranformOptions_.generators&&tree.isGenerator()?body=GeneratorTransformer.transformGeneratorBody(this.identifierGenerator,this.reporter,this.options,body,nameExpression):this.tranformOptions_.asyncFunctions&&tree.isAsyncFunction()&&(body=AsyncTransformer.transformAsyncBody(this.identifierGenerator,this.reporter,this.options,body));var functionKind=null;return new constructor(tree.location,tree.name,functionKind,tree.parameterList,tree.typeAnnotation||null,tree.annotations||null,body)},transformArrowFunction:function(tree){return tree.isAsyncFunction()?this.transformAny(ArrowFunctionTransformer.transform(this,tree)):$traceurRuntime.superGet(this,GeneratorTransformPass.prototype,"transformArrowFunction").call(this,tree)},transformBlock:function(tree){var inBlock=this.inBlock_;this.inBlock_=!0;var rv=$traceurRuntime.superGet(this,GeneratorTransformPass.prototype,"transformBlock").call(this,tree);return this.inBlock_=inBlock,rv}},{},$__super)}(TempVarTransformer);return{get GeneratorTransformPass(){return GeneratorTransformPass}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/InlineModuleTransformer.js",[],function(){"use strict";var VAR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/InlineModuleTransformer.js")).VAR,ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleTransformer.js","traceur@0.0.107/src/codegeneration/InlineModuleTransformer.js")).ModuleTransformer,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/InlineModuleTransformer.js")),createBindingIdentifier=$__3.createBindingIdentifier,createEmptyStatement=$__3.createEmptyStatement,createFunctionBody=$__3.createFunctionBody,createImmediatelyInvokedFunctionExpression=$__3.createImmediatelyInvokedFunctionExpression,createScopedExpression=$__3.createScopedExpression,createVariableStatement=$__3.createVariableStatement,globalThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./globalThis.js","traceur@0.0.107/src/codegeneration/InlineModuleTransformer.js"))["default"],scopeContainsThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./scopeContainsThis.js","traceur@0.0.107/src/codegeneration/InlineModuleTransformer.js"))["default"],anonInlineModules=0,InlineModuleTransformer=function($__super){function InlineModuleTransformer(){$traceurRuntime.superConstructor(InlineModuleTransformer).apply(this,arguments)}return $traceurRuntime.createClass(InlineModuleTransformer,{wrapModule:function(statements){var moduleExpression,seed=this.moduleName||"anon_"+ ++anonInlineModules,idName=this.getTempVarNameForModuleName(seed),body=createFunctionBody(statements);return moduleExpression=statements.some(scopeContainsThis)?createScopedExpression(body,globalThis()):createImmediatelyInvokedFunctionExpression(body),[createVariableStatement(VAR,idName,moduleExpression)]},transformNamedExport:function(tree){return createEmptyStatement()},transformModuleSpecifier:function(tree){return createBindingIdentifier(this.getTempVarNameForModuleSpecifier(tree))}},{},$__super)}(ModuleTransformer);return{get InlineModuleTransformer(){return InlineModuleTransformer;
}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js",[],function(){"use strict";function flattenAnonBlocks(statements){for(var $__9,result=[],i=0;i<statements.length;i++){var statement=statements[i];statement.type===ANON_BLOCK?($__9=result).push.apply($__9,$traceurRuntime.spread(statement.statements)):result.push(statement)}return result}var $__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")),AnonBlock=$__10.AnonBlock,ArrayLiteral=$__10.ArrayLiteral,ClassExpression=$__10.ClassExpression,CommaExpression=$__10.CommaExpression,ExpressionStatement=$__10.ExpressionStatement,VariableDeclaration=$__10.VariableDeclaration,$__11=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")),ANON_BLOCK=$__11.ANON_BLOCK,CLASS_DECLARATION=$__11.CLASS_DECLARATION,FUNCTION_DECLARATION=$__11.FUNCTION_DECLARATION,IDENTIFIER_EXPRESSION=$__11.IDENTIFIER_EXPRESSION,IMPORT_SPECIFIER_SET=$__11.IMPORT_SPECIFIER_SET,NAME_SPACE_IMPORT=$__11.NAME_SPACE_IMPORT,ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")).ParseTreeVisitor,ScopeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeTransformer.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")).ScopeTransformer,$__14=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")),createEmptyParameterList=$__14.createEmptyParameterList,createFunctionBody=$__14.createFunctionBody,createFunctionExpression=$__14.createFunctionExpression,id=$__14.createIdentifierExpression,createObjectLiteralForDescriptor=$__14.createObjectLiteralForDescriptor,createUseStrictDirective=$__14.createUseStrictDirective,createVariableDeclarationList=$__14.createVariableDeclarationList,createVariableStatement=$__14.createVariableStatement,ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleTransformer.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")).ModuleTransformer,$__16=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")),MINUS_MINUS=$__16.MINUS_MINUS,PLUS_PLUS=$__16.PLUS_PLUS,VAR=$__16.VAR,$__17=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js")),parseExpression=$__17.parseExpression,parseStatement=$__17.parseStatement,parseStatements=$__17.parseStatements,HoistVariablesTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./HoistVariablesTransformer.js","traceur@0.0.107/src/codegeneration/InstantiateModuleTransformer.js"))["default"],ExportBindingsVisitor=function($__super){function ExportBindingsVisitor(){$traceurRuntime.superConstructor(ExportBindingsVisitor).call(this),this.bindings=[]}return $traceurRuntime.createClass(ExportBindingsVisitor,{visitVariableDeclaration:function(tree){this.visitAny(tree.lvalue)},visitBindingIdentifier:function(tree){this.bindings.push(tree)},visitBindingElement:function(tree){this.visitAny(tree.binding)}},{},$__super)}(ParseTreeVisitor),DeclarationExtractionTransformer=function($__super){function DeclarationExtractionTransformer(){$traceurRuntime.superConstructor(DeclarationExtractionTransformer).call(this),this.declarations_=[]}return $traceurRuntime.createClass(DeclarationExtractionTransformer,{getDeclarationStatements:function(){return flattenAnonBlocks($traceurRuntime.spread([this.getVariableStatement()],this.declarations_))},addDeclaration:function(tree){this.declarations_.push(tree)},transformFunctionDeclaration:function(tree){return this.addDeclaration(tree),new AnonBlock(null,[])},transformClassDeclaration:function(tree){return this.addVariable(tree.name.identifierToken.value),tree=new ClassExpression(tree.location,tree.name,tree.superClass,tree.elements,tree.annotations,tree.typeParameters),parseStatement($traceurRuntime.getTemplateObject([""," = ",""]),tree.name.identifierToken,tree)}},{},$__super)}(HoistVariablesTransformer),ModuleNameIdentifierTransformer=function($__super){function ModuleNameIdentifierTransformer(){$traceurRuntime.superConstructor(ModuleNameIdentifierTransformer).call(this,"__moduleName"),this.usesModuleName=!1}return $traceurRuntime.createClass(ModuleNameIdentifierTransformer,{transformIdentifierExpression:function(tree){return"__moduleName"===tree.identifierToken.value?(this.usesModuleName=!0,parseExpression($traceurRuntime.getTemplateObject(["$__moduleContext.id"]))):$traceurRuntime.superGet(this,ModuleNameIdentifierTransformer.prototype,"transformIdentifierExpression").call(this,tree)}},{},$__super)}(ScopeTransformer),InsertBindingAssignmentTransformer=function($__super){function InsertBindingAssignmentTransformer(exportName,bindingName){$traceurRuntime.superConstructor(InsertBindingAssignmentTransformer).call(this,bindingName),this.bindingName_=bindingName,this.exportName_=exportName}return $traceurRuntime.createClass(InsertBindingAssignmentTransformer,{matchesBindingName_:function(binding){return binding.type===IDENTIFIER_EXPRESSION&&binding.identifierToken.value===this.bindingName_},transformUnaryExpression:function(tree){if(!this.matchesBindingName_(tree.operand))return $traceurRuntime.superGet(this,InsertBindingAssignmentTransformer.prototype,"transformUnaryExpression").call(this,tree);var operatorType=tree.operator.type;if(operatorType!==PLUS_PLUS&&operatorType!==MINUS_MINUS)return $traceurRuntime.superGet(this,InsertBindingAssignmentTransformer.prototype,"transformUnaryExpression").call(this,tree);var operand=this.transformAny(tree.operand);return operand!==tree.operand&&(tree=new UnaryExpression(tree.location,tree.operator,operand)),parseExpression($traceurRuntime.getTemplateObject(["$__export(",", ",")"]),this.exportName_,tree)},transformPostfixExpression:function(tree){if(tree=$traceurRuntime.superGet(this,InsertBindingAssignmentTransformer.prototype,"transformPostfixExpression").call(this,tree),!this.matchesBindingName_(tree.operand))return tree;switch(tree.operator.type){case PLUS_PLUS:return parseExpression($traceurRuntime.getTemplateObject(["($__export(",", "," + 1), ",")"]),this.exportName_,tree.operand,tree);case MINUS_MINUS:return parseExpression($traceurRuntime.getTemplateObject(["($__export(",", "," - 1), ",")"]),this.exportName_,tree.operand,tree)}return tree},transformBinaryExpression:function(tree){return tree=$traceurRuntime.superGet(this,InsertBindingAssignmentTransformer.prototype,"transformBinaryExpression").call(this,tree),tree.operator.isAssignmentOperator()&&this.matchesBindingName_(tree.left)?parseExpression($traceurRuntime.getTemplateObject(["$__export(",", ",")}"]),this.exportName_,tree):tree}},{},$__super)}(ScopeTransformer),InstantiateModuleTransformer=function($__super){function InstantiateModuleTransformer(identifierGenerator,reporter){var options=arguments[2];$traceurRuntime.superConstructor(InstantiateModuleTransformer).call(this,identifierGenerator,reporter,options),this.anonymousModule=options&&!options.bundle&&options.moduleName!==!0,this.usesModuleName=!1,this.inExport_=!1,this.curDepIndex_=null,this.dependencies=[],this.externalExportBindings=[],this.importBindings=[],this.localExportBindings=[],this.functionDeclarations=[],this.moduleBindings=[],this.exportStarBindings=[]}return $traceurRuntime.createClass(InstantiateModuleTransformer,{getModuleName:function(tree){return this.anonymousModule?null:tree.moduleName},moduleProlog:function(){return[]},wrapModule:function(statements){var prolog=[createUseStrictDirective()];return statements=prolog.concat(statements),this.usesModuleName?this.moduleName?parseStatements($traceurRuntime.getTemplateObject(["System.register(",",\n            ",", function($__export, $__moduleContext) {\n              ","\n            });"]),this.moduleName,this.dependencies,statements):parseStatements($traceurRuntime.getTemplateObject(["System.register(",", function($__export, $__moduleContext) {\n            ","\n          });"]),this.dependencies,statements):this.moduleName?parseStatements($traceurRuntime.getTemplateObject(["System.register(",",\n          ",", function($__export) {\n            ","\n          });"]),this.moduleName,this.dependencies,statements):parseStatements($traceurRuntime.getTemplateObject(["System.register(",", function($__export) {\n          ","\n        });"]),this.dependencies,statements)},appendExportStatement:function(statements){var $__6=this,declarationExtractionTransformer=new DeclarationExtractionTransformer,moduleNameIdentifierTransformer=new ModuleNameIdentifierTransformer;statements=moduleNameIdentifierTransformer.transformList(statements),moduleNameIdentifierTransformer.usesModuleName&&(this.usesModuleName=!0),this.localExportBindings.forEach(function(binding){statements=new InsertBindingAssignmentTransformer(binding.exportName,binding.localName).transformList(statements)});var executionStatements=declarationExtractionTransformer.transformList(statements),executionFunction=createFunctionExpression(createEmptyParameterList(),createFunctionBody(executionStatements)),declarationStatements=declarationExtractionTransformer.getDeclarationStatements(),setterFunctions=this.dependencies.map(function(dep,index){var importBindings=$__6.importBindings[index],externalExportBindings=$__6.externalExportBindings[index],exportStarBinding=$__6.exportStarBindings[index],moduleBinding=$__6.moduleBindings[index],setterStatements=[];if(importBindings&&importBindings.forEach(function(binding){setterStatements.push(parseStatement($traceurRuntime.getTemplateObject([""," = $__m.",";"]),id(binding.variableName),binding.exportName))}),externalExportBindings){var reexports=Object.create(null);externalExportBindings.forEach(function($__7){var $__8=$__7,exportName=$__8.exportName,importName=$__8.importName;reexports[exportName]=null===importName?parseExpression($traceurRuntime.getTemplateObject(["$__m"])):parseExpression($traceurRuntime.getTemplateObject(["$__m.",""]),importName)}),setterStatements.push(parseStatement($traceurRuntime.getTemplateObject(["$__export(",")"]),createObjectLiteralForDescriptor(reexports)))}if(moduleBinding&&setterStatements.push(parseStatement($traceurRuntime.getTemplateObject([""," = $__m;"]),id(moduleBinding))),exportStarBinding){setterStatements=setterStatements.concat(parseStatements($traceurRuntime.getTemplateObject(["\n          var exportObj = Object.create(null);\n          Object.keys($__m).forEach(function(p) {\n            if (p !== 'default' && !$__exportNames[p])\n              exportObj[p] = $__m[p];\n          });\n          $__export(exportObj);\n        "])));var exportNames={};$__6.localExportBindings.concat($__6.externalExportBindings).forEach(function(binding){exportNames[binding.exportName]=!0}),declarationStatements.push(parseStatement($traceurRuntime.getTemplateObject(["\n          var $__exportNames = ",";\n        "]),createObjectLiteralForDescriptor(exportNames)))}return setterStatements.length?parseExpression($traceurRuntime.getTemplateObject(["function($__m) {\n          ","\n        }"]),setterStatements):parseExpression($traceurRuntime.getTemplateObject(["function($__m) {}"]))});return declarationStatements=declarationStatements.concat(this.functionDeclarations.map(function(binding){return parseStatement($traceurRuntime.getTemplateObject(["$__export(",", ",")"]),binding.exportName,id(binding.functionName))})),declarationStatements.push(parseStatement($traceurRuntime.getTemplateObject(["return {\n      setters: ",",\n      execute: ","\n    }"]),new ArrayLiteral(null,setterFunctions),executionFunction)),declarationStatements},addLocalExportBinding:function(exportName){var localName=void 0!==arguments[1]?arguments[1]:exportName;this.localExportBindings.push({exportName:exportName,localName:localName})},addImportBinding:function(depIndex,variableName,exportName){this.importBindings[depIndex]=this.importBindings[depIndex]||[],this.importBindings[depIndex].push({variableName:variableName,exportName:exportName})},addExternalExportBinding:function(depIndex,exportName,importName){this.externalExportBindings[depIndex]=this.externalExportBindings[depIndex]||[],this.externalExportBindings[depIndex].push({exportName:exportName,importName:importName})},addExportStarBinding:function(depIndex){this.exportStarBindings[depIndex]=!0},addModuleBinding:function(depIndex,variableName){this.moduleBindings[depIndex]=variableName},addExportFunction:function(exportName){var functionName=void 0!==arguments[1]?arguments[1]:exportName;this.functionDeclarations.push({exportName:exportName,functionName:functionName})},getOrCreateDependencyIndex:function(moduleSpecifier){var name=moduleSpecifier.token.processedValue,depIndex=this.dependencies.indexOf(name);return depIndex===-1&&(depIndex=this.dependencies.length,this.dependencies.push(name)),depIndex},transformExportDeclaration:function(tree){this.inExport_=!0,tree.declaration.moduleSpecifier?this.curDepIndex_=this.getOrCreateDependencyIndex(tree.declaration.moduleSpecifier):this.curDepIndex_=null;var transformed=this.transformAny(tree.declaration);return this.inExport_=!1,transformed},transformVariableStatement:function(tree){if(!this.inExport_)return $traceurRuntime.superGet(this,InstantiateModuleTransformer.prototype,"transformVariableStatement").call(this,tree);this.inExport_=!1;var bindingVisitor=new ExportBindingsVisitor;bindingVisitor.visitAny(tree);for(var statements=[],i=0;i<bindingVisitor.bindings.length;i++){var identifierToken=bindingVisitor.bindings[i].identifierToken,name=identifierToken.value;this.addLocalExportBinding(name),statements.push(parseStatement($traceurRuntime.getTemplateObject(["$__export(",", ",")"]),name,id(identifierToken)))}return statements.unshift($traceurRuntime.superGet(this,InstantiateModuleTransformer.prototype,"transformAny").call(this,tree)),new AnonBlock(null,statements)},transformExportStar:function(tree){return this.inExport_=!1,this.addExportStarBinding(this.curDepIndex_),new AnonBlock(null,[])},transformClassDeclaration:function(tree){if(!this.inExport_)return $traceurRuntime.superGet(this,InstantiateModuleTransformer.prototype,"transformClassDeclaration").call(this,tree);this.inExport_=!1;var identifierToken=tree.name.identifierToken,name=identifierToken.value;this.addLocalExportBinding(name);var statements=[$traceurRuntime.superGet(this,InstantiateModuleTransformer.prototype,"transformClassDeclaration").call(this,tree),parseStatement($traceurRuntime.getTemplateObject(["$__export(",", ",")"]),name,id(identifierToken))];return new AnonBlock(null,statements)},transformFunctionDeclaration:function(tree){if(this.inExport_){var name=tree.name.getStringValue();this.addLocalExportBinding(name),this.addExportFunction(name),this.inExport_=!1}return $traceurRuntime.superGet(this,InstantiateModuleTransformer.prototype,"transformFunctionDeclaration").call(this,tree)},transformNamedExport:function(tree){this.transformAny(tree.moduleSpecifier);var exportClause=this.transformAny(tree.exportClause);return null===this.curDepIndex_?exportClause:new AnonBlock(null,[])},transformImportDeclaration:function(tree){this.curDepIndex_=this.getOrCreateDependencyIndex(tree.moduleSpecifier);this.transformAny(tree.moduleSpecifier);if(!tree.importClause)return new AnonBlock(null,[]);var importClause=this.transformAny(tree.importClause);if(tree.importClause.type===NAME_SPACE_IMPORT){var bindingIdentifier=tree.importClause.binding.binding,name=bindingIdentifier.getStringValue();return this.addModuleBinding(this.curDepIndex_,name),parseStatement($traceurRuntime.getTemplateObject(["var ",";"]),bindingIdentifier)}if(tree.importClause.type===IMPORT_SPECIFIER_SET)return importClause;var bindingName=tree.importClause.binding.getStringValue();return this.addImportBinding(this.curDepIndex_,bindingName,"default"),parseStatement($traceurRuntime.getTemplateObject(["var ",";"]),bindingName)},transformImportSpecifierSet:function(tree){return createVariableStatement(createVariableDeclarationList(VAR,this.transformList(tree.specifiers)))},transformExportDefault:function(tree){this.inExport_=!1;var expression=this.transformAny(tree.expression);return this.addLocalExportBinding("default"),expression.type===CLASS_DECLARATION&&(expression=new ClassExpression(expression.location,expression.name,expression.superClass,expression.elements,expression.annotations,expression.typeParameters)),expression.type===FUNCTION_DECLARATION?(this.addExportFunction("default",expression.name.identifierToken.value),expression):parseStatement($traceurRuntime.getTemplateObject(["$__export('default', ",");"]),expression)},transformExportSpecifier:function(tree){var exportName,bindingName;return tree.rhs?(exportName=tree.rhs.value,bindingName=tree.lhs.value):(exportName=tree.lhs.value,bindingName=exportName),null===this.curDepIndex_?(this.addLocalExportBinding(exportName,bindingName),parseExpression($traceurRuntime.getTemplateObject(["$__export(",", ",");"]),exportName,id(bindingName))):void this.addExternalExportBinding(this.curDepIndex_,exportName,bindingName)},transformExportSpecifierSet:function(tree){var specifiers=this.transformList(tree.specifiers);return new ExpressionStatement(tree.location,new CommaExpression(tree.location,specifiers.filter(function(specifier){return specifier})))},transformNameSpaceExport:function(tree){return this.addExternalExportBinding(this.curDepIndex_,tree.name.value,null),tree},transformForwardDefaultExport:function(tree){return this.addExternalExportBinding(this.curDepIndex_,tree.name.value,"default"),tree},transformImportSpecifier:function(tree){var localBinding=tree.binding.binding,localBindingToken=localBinding.identifierToken,importName=(tree.name||localBindingToken).value;return this.addImportBinding(this.curDepIndex_,localBindingToken.value,importName),new VariableDeclaration(tree.location,localBinding,null,null)},transformModuleSpecifier:function(tree){return this.curDepIndex_=this.getOrCreateDependencyIndex(tree),tree}},{},$__super)}(ModuleTransformer);return{get InstantiateModuleTransformer(){return InstantiateModuleTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/SpreadPropertiesTransformer.js",[],function(){"use strict";function hasSpread(trees){return trees.some(function(tree){return tree&&tree.type===SPREAD_EXPRESSION})}function spreadProperties(properties){for(var args=[],accummulatedProps=null,i=0;i<properties.length;i++){var property=properties[i];property.type===SPREAD_EXPRESSION?(accummulatedProps&&(args.push(createObjectLiteral(accummulatedProps)),accummulatedProps=null),args.push(property.expression)):(accummulatedProps||(accummulatedProps=[]),accummulatedProps.push(property))}return accummulatedProps&&args.push(createObjectLiteral(accummulatedProps)),parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.spreadProperties(",")"]),createArgumentList(args))}var SPREAD_EXPRESSION=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/SpreadPropertiesTransformer.js")).SPREAD_EXPRESSION,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/SpreadPropertiesTransformer.js")),createObjectLiteral=$__2.createObjectLiteral,createArgumentList=$__2.createArgumentList,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/SpreadPropertiesTransformer.js")).parseExpression,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/SpreadPropertiesTransformer.js")).ParseTreeTransformer,SpreadPropertiesTransformer=function($__super){function SpreadPropertiesTransformer(){$traceurRuntime.superConstructor(SpreadPropertiesTransformer).apply(this,arguments)}return $traceurRuntime.createClass(SpreadPropertiesTransformer,{transformObjectLiteral:function(tree){if(!hasSpread(tree.propertyNameAndValues))return $traceurRuntime.superGet(this,SpreadPropertiesTransformer.prototype,"transformObjectLiteral").call(this,tree);var properties=this.transformList(tree.propertyNameAndValues);return spreadProperties(properties)}},{},$__super)}(ParseTreeTransformer);return{get SpreadPropertiesTransformer(){return SpreadPropertiesTransformer},get spreadProperties(){return spreadProperties}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/JsxTransformer.js",[],function(){"use strict";function jsxIdentifierToToken(token){var value=token.value;return value.indexOf("-")!==-1?createStringLiteralToken(value):createIdentifierToken(value)}function normalizeAttributeValue(s){return JSON.stringify(s.slice(1,-1).replace(/\n\s+/g," "))}var $__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")),JSX_ELEMENT=$__4.JSX_ELEMENT,JSX_PLACEHOLDER=$__4.JSX_PLACEHOLDER,JSX_SPREAD_ATTRIBUTE=$__4.JSX_SPREAD_ATTRIBUTE,JSX_TEXT=$__4.JSX_TEXT,LITERAL_EXPRESSION=$__4.LITERAL_EXPRESSION,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")),LiteralExpression=($__5.JsxText,$__5.LiteralExpression),LiteralPropertyName=$__5.LiteralPropertyName,SpreadExpression=$__5.SpreadExpression,LiteralToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/LiteralToken.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")).LiteralToken,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")).ParseTreeTransformer,STRING=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")).STRING,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")),createArgumentList=$__9.createArgumentList,createIdentifierExpression=$__9.createIdentifierExpression,createIdentifierToken=$__9.createIdentifierToken,createMemberExpression=$__9.createMemberExpression,createNullLiteral=$__9.createNullLiteral,createObjectLiteral=$__9.createObjectLiteral,createPropertyNameAssignment=$__9.createPropertyNameAssignment,createStringLiteral=$__9.createStringLiteral,createStringLiteralToken=$__9.createStringLiteralToken,createTrueLiteral=$__9.createTrueLiteral,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")).parseExpression,spreadProperties=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SpreadPropertiesTransformer.js","traceur@0.0.107/src/codegeneration/JsxTransformer.js")).spreadProperties,JsxTransformer=function($__super){function JsxTransformer(idGen,reporter,options){$traceurRuntime.superConstructor(JsxTransformer).call(this),this.options_=options,this.jsxFunction_=null}return $traceurRuntime.createClass(JsxTransformer,{getJsxFunction_:function(){if(!this.jsxFunction_){var jsx=this.options_.jsx;"string"==typeof jsx?this.jsxFunction_=parseExpression([jsx]):this.jsxFunction_=parseExpression($traceurRuntime.getTemplateObject(["React.createElement"]))}return this.jsxFunction_},transformJsxElement:function(tree){var name=this.transformAny(tree.name),props=this.transformJsxAttributes_(tree),children=this.transformJsxChildren_(tree.children),args=createArgumentList($traceurRuntime.spread([name,props],children));return parseExpression($traceurRuntime.getTemplateObject(["","(",")"]),this.getJsxFunction_(),args)},transformJsxAttributes_:function(tree){var attrs=this.transformList(tree.attributes);return 0===attrs.length?createNullLiteral():tree.attributes.some(function(a){return a.type===JSX_SPREAD_ATTRIBUTE})?this.createSpreadAttributeExpression_(attrs):createObjectLiteral(attrs)},createSpreadAttributeExpression_:function(attrs){return spreadProperties(attrs)},transformJsxElementName:function(tree){if(1===tree.names.length){var value=tree.names[0].value;return value[0]===value[0].toUpperCase()?createIdentifierExpression(value):createStringLiteral(value)}var names=tree.names.map(jsxIdentifierToToken),operand=names[0];return operand.type===STRING&&(names[0]=new LiteralExpression(operand.location,operand)),createMemberExpression.apply(void 0,$traceurRuntime.spread(names))},transformJsxAttribute:function(tree){var value,name=new LiteralPropertyName(tree.name.location,jsxIdentifierToToken(tree.name));if(null===tree.value)value=createTrueLiteral();else if(tree.value.type===LITERAL_EXPRESSION){var literalToken=tree.value.literalToken,v=literalToken.value,location=literalToken.location,lit=new LiteralToken(STRING,normalizeAttributeValue(v),location);value=new LiteralExpression(location,lit)}else value=this.transformAny(tree.value);return createPropertyNameAssignment(name,value)},transformJsxPlaceholder:function(tree){return this.transformAny(tree.expression)},transformJsxSpreadAttribute:function(tree){return new SpreadExpression(tree.location,this.transformAny(tree.expression))},transformJsxText:function(tree){return createStringLiteral(tree.value.value)},transformJsxChildren_:function(trees){var $__1=this,rv=[];return trees.forEach(function(tree){var newTree;switch(tree.type){case JSX_ELEMENT:newTree=$__1.transformAny(tree);break;case JSX_PLACEHOLDER:if(null===tree.expression)return;newTree=$__1.transformAny(tree);break;case JSX_TEXT:var s=tree.value.value;if(s=s.replace(/\t/g," "),/[\n\r]/.test(s)){if(s=s.replace(/^[ \t]*[\n\r]\s*/,""),s=s.replace(/[ \t]*[\n\r]\s*$/,""),""===s)return;newTree=createStringLiteral(s)}else newTree=createStringLiteral(s)}rv.push(newTree)}),rv}},{},$__super)}(ParseTreeTransformer);return{get JsxTransformer(){return JsxTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/MemberVariableConstructorTransformer.js",[],function(){"use strict";function transformConstructor(constructor,initExpression,superClass){if(superClass){var transformer=new SuperCallTransformer(initExpression);return transformer.transformAny(constructor)}var statements=constructor.body.statements,initStatement=createExpressionStatement(initExpression);return statements=prependStatements(statements,initStatement),new Method(constructor.location,(!1),constructor.functionKind,constructor.name,constructor.parameterList,constructor.typeAnnotation,constructor.annotations,createFunctionBody(statements),constructor.debugName)}var Method=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/MemberVariableConstructorTransformer.js")).Method,SUPER_EXPRESSION=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/MemberVariableConstructorTransformer.js")).SUPER_EXPRESSION,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/MemberVariableConstructorTransformer.js")).ParseTreeTransformer,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/MemberVariableConstructorTransformer.js")),createCommaExpression=$__4.createCommaExpression,createExpressionStatement=$__4.createExpressionStatement,createFunctionBody=$__4.createFunctionBody,createParenExpression=$__4.createParenExpression,createThisExpression=$__4.createThisExpression,prependStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/MemberVariableConstructorTransformer.js")).prependStatements,SuperCallTransformer=function($__super){function SuperCallTransformer(expression){$traceurRuntime.superConstructor(SuperCallTransformer).call(this),this.expression=expression}return $traceurRuntime.createClass(SuperCallTransformer,{transformCallExpression:function(tree){if(tree.operand.type===SUPER_EXPRESSION){var thisExpression=createThisExpression();return createParenExpression(createCommaExpression([tree,this.expression,thisExpression]))}return $traceurRuntime.superGet(this,SuperCallTransformer.prototype,"transformCallExpression").call(this,tree)},transformClassDeclaration:function(tree){return tree},transformClassExpression:function(tree){return tree}},{},$__super)}(ParseTreeTransformer);return{get transformConstructor(){return transformConstructor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js",[],function(){"use strict";function createStaticInitializerStatements(idToken,initStaticMemberVars){var className=new IdentifierExpression(idToken.location,idToken);return initStaticMemberVars.map(function(mv){var propName=mv.name.literalToken.value;return parseStatement($traceurRuntime.getTemplateObject(["Object.defineProperty(",", ",", {enumerable: true,\n        configurable: true, value: ",", writable: true})"]),className,propName,mv.initializer)})}function getInstanceInitExpression(initInstanceVars){var expressions=initInstanceVars.map(function(mv){var name=mv.name.literalToken;return parseExpression($traceurRuntime.getTemplateObject(["this."," = ",""]),name,mv.initializer)});return createCommaExpression(expressions)}var CONSTRUCTOR=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")).CONSTRUCTOR,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")),AnonBlock=$__5.AnonBlock,ClassDeclaration=$__5.ClassDeclaration,ClassExpression=$__5.ClassExpression,FormalParameterList=$__5.FormalParameterList,IdentifierExpression=$__5.IdentifierExpression,Method=$__5.Method,ReturnStatement=$__5.ReturnStatement,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")),GET_ACCESSOR=$__6.GET_ACCESSOR,METHOD=$__6.METHOD,PROPERTY_VARIABLE_DECLARATION=$__6.PROPERTY_VARIABLE_DECLARATION,SET_ACCESSOR=$__6.SET_ACCESSOR,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")).TempVarTransformer,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")),createCommaExpression=$__8.createCommaExpression,createFunctionBody=$__8.createFunctionBody,createIdentifierToken=$__8.createIdentifierToken,createImmediatelyInvokedFunctionExpression=$__8.createImmediatelyInvokedFunctionExpression,createLiteralPropertyName=$__8.createLiteralPropertyName,createRestParameter=$__8.createRestParameter,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")),parsePropertyDefinition=$__9.parsePropertyDefinition,parseStatement=$__9.parseStatement,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")).parseExpression,prependStatements=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PrependStatements.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")).prependStatements,propName=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../staticsemantics/PropName.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")).propName,transformConstructor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./MemberVariableConstructorTransformer.js","traceur@0.0.107/src/codegeneration/MemberVariableTransformer.js")).transformConstructor,MemberVariableTransformer=function($__super){
function MemberVariableTransformer(){$traceurRuntime.superConstructor(MemberVariableTransformer).apply(this,arguments)}return $traceurRuntime.createClass(MemberVariableTransformer,{transformClassElements_:function(tree){var constructor,$__2=this,elements=[],initInstanceVars=[],initStaticVars=[],constructorIndex=0;if(tree.elements.forEach(function(tree){var initVars;switch(initVars=tree.isStatic?initStaticVars:initInstanceVars,tree.type){case GET_ACCESSOR:case SET_ACCESSOR:elements.push($__2.transformAny(tree));break;case METHOD:tree.isStatic||propName(tree)!==CONSTRUCTOR?elements.push($__2.transformAny(tree)):(constructor=tree,constructorIndex=elements.length);break;case PROPERTY_VARIABLE_DECLARATION:tree=$__2.transformAny(tree),null!==tree.initializer&&initVars.push(tree);break;default:throw Error("Unexpected class element: "+tree.type)}}),initInstanceVars.length>0){var initExpression=getInstanceInitExpression(initInstanceVars);constructor||(constructor=this.getDefaultConstructor_(tree)),constructor=transformConstructor(constructor,initExpression,tree.superClass)}return constructor&&elements.splice(constructorIndex,0,constructor),{elements:elements,initStaticVars:initStaticVars}},transformClassDeclaration:function(tree){var $__3=this.transformClassElements_(tree),elements=$__3.elements,initStaticVars=$__3.initStaticVars,superClass=this.transformAny(tree.superClass),classDecl=new ClassDeclaration(tree.location,tree.name,superClass,elements,tree.annotations,tree.typeParameters);if(0===initStaticVars.length)return classDecl;var statements=createStaticInitializerStatements(tree.name.identifierToken,initStaticVars);return statements=prependStatements(statements,classDecl),new AnonBlock(null,statements)},transformClassExpression:function(tree){var $__3=this.transformClassElements_(tree),elements=$__3.elements,initStaticVars=$__3.initStaticVars,superClass=this.transformAny(tree.superClass),classExpression=new ClassExpression(tree.location,tree.name,superClass,elements,tree.annotations,tree.typeParameters);if(0===initStaticVars.length)return classExpression;this.pushTempScope();var id=this.getTempIdentifier(),idToken=createIdentifierToken(id),idExpression=new IdentifierExpression(idToken.location,idToken),statements=$traceurRuntime.spread([parseStatement($traceurRuntime.getTemplateObject(["let "," = ",""]),id,classExpression)],createStaticInitializerStatements(idToken,initStaticVars),[new ReturnStatement(null,idExpression)]),body=createFunctionBody(statements);return this.popTempScope(),createImmediatelyInvokedFunctionExpression(body)},getDefaultConstructor_:function(tree){if(tree.superClass){var param=createRestParameter(createIdentifierToken("args")),paramList=new FormalParameterList(null,[param]),body=createFunctionBody([parseStatement($traceurRuntime.getTemplateObject(["super(...args)"]))]),name=createLiteralPropertyName(CONSTRUCTOR);return new Method(tree.location,(!1),null,name,paramList,null,[],body,null)}return parsePropertyDefinition($traceurRuntime.getTemplateObject(["constructor() {}"]))}},{},$__super)}(TempVarTransformer);return{get MemberVariableTransformer(){return MemberVariableTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/outputgeneration/ParseTreeWriter.js",[],function(){"use strict";function requiresSpaceBetween(first,second){return!((first!==MINUS&&first!==MINUS_MINUS||second!==MINUS&&second!==MINUS_MINUS)&&(first!==PLUS&&first!==PLUS_PLUS||second!==PLUS&&second!==PLUS_PLUS))}var $__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/outputgeneration/ParseTreeWriter.js")),BLOCK=$__4.BLOCK,CLASS_DECLARATION=$__4.CLASS_DECLARATION,FUNCTION_DECLARATION=$__4.FUNCTION_DECLARATION,IF_STATEMENT=$__4.IF_STATEMENT,LITERAL_EXPRESSION=$__4.LITERAL_EXPRESSION,POSTFIX_EXPRESSION=$__4.POSTFIX_EXPRESSION,UNARY_EXPRESSION=$__4.UNARY_EXPRESSION,ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/outputgeneration/ParseTreeWriter.js")).ParseTreeVisitor,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/outputgeneration/ParseTreeWriter.js")),AS=$__6.AS,ASYNC=$__6.ASYNC,AWAIT=$__6.AWAIT,FROM=$__6.FROM,GET=$__6.GET,OF=$__6.OF,ON=$__6.ON,SET=$__6.SET,TYPE=$__6.TYPE,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/Scanner.js","traceur@0.0.107/src/outputgeneration/ParseTreeWriter.js")),isIdentifierPart=$__7.isIdentifierPart,isWhitespace=$__7.isWhitespace,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/outputgeneration/ParseTreeWriter.js")),ARROW=$__8.ARROW,AT=$__8.AT,BACK_QUOTE=$__8.BACK_QUOTE,BAR=$__8.BAR,BREAK=$__8.BREAK,CASE=$__8.CASE,CATCH=$__8.CATCH,CLASS=$__8.CLASS,CLOSE_ANGLE=$__8.CLOSE_ANGLE,CLOSE_CURLY=$__8.CLOSE_CURLY,CLOSE_PAREN=$__8.CLOSE_PAREN,CLOSE_SQUARE=$__8.CLOSE_SQUARE,COLON=$__8.COLON,COMMA=$__8.COMMA,CONTINUE=$__8.CONTINUE,DEBUGGER=$__8.DEBUGGER,DEFAULT=$__8.DEFAULT,DO=$__8.DO,DOT_DOT_DOT=$__8.DOT_DOT_DOT,ELSE=$__8.ELSE,EQUAL=$__8.EQUAL,EXPORT=$__8.EXPORT,EXTENDS=$__8.EXTENDS,FINALLY=$__8.FINALLY,FOR=$__8.FOR,FUNCTION=$__8.FUNCTION,IF=$__8.IF,IMPORT=$__8.IMPORT,IN=$__8.IN,INTERFACE=$__8.INTERFACE,MINUS=$__8.MINUS,MINUS_MINUS=$__8.MINUS_MINUS,NEW=$__8.NEW,NUMBER=$__8.NUMBER,OPEN_ANGLE=$__8.OPEN_ANGLE,OPEN_CURLY=$__8.OPEN_CURLY,OPEN_PAREN=$__8.OPEN_PAREN,OPEN_SQUARE=$__8.OPEN_SQUARE,PERIOD=$__8.PERIOD,PLUS=$__8.PLUS,PLUS_PLUS=$__8.PLUS_PLUS,QUESTION=$__8.QUESTION,RETURN=$__8.RETURN,SEMI_COLON=$__8.SEMI_COLON,SLASH=$__8.SLASH,STAR=$__8.STAR,STATIC=$__8.STATIC,SUPER=$__8.SUPER,SWITCH=$__8.SWITCH,THIS=$__8.THIS,THROW=$__8.THROW,TRY=$__8.TRY,WHILE=$__8.WHILE,WITH=$__8.WITH,YIELD=$__8.YIELD,NEW_LINE="\n",ParseTreeWriter=function($__super){function ParseTreeWriter(){var $__3,$__2=void 0!==arguments[0]?arguments[0]:{},prettyPrint=void 0===($__3=$__2.prettyPrint)||$__3;$traceurRuntime.superConstructor(ParseTreeWriter).call(this),this.prettyPrint_=prettyPrint,this.result_="",this.currentLine_="",this.lastCode_=-1,this.indentDepth_=0,this.currentParameterTypeAnnotation_=null}return $traceurRuntime.createClass(ParseTreeWriter,{toString:function(){return this.currentLine_.length>0&&(this.result_+=this.currentLine_,this.currentLine_="",this.lastCode_=-1),this.result_},visitAnnotation:function(tree){this.write_(AT),this.visitAny(tree.name),null!==tree.args&&(this.write_(OPEN_PAREN),this.writeList_(tree.args.args,COMMA,!1),this.write_(CLOSE_PAREN))},visitArgumentList:function(tree){this.write_(OPEN_PAREN),this.writeList_(tree.args,COMMA,!1),this.write_(CLOSE_PAREN)},visitArrayComprehension:function(tree){this.write_(OPEN_SQUARE),this.visitList(tree.comprehensionList),this.visitAny(tree.expression),this.write_(CLOSE_SQUARE)},visitArrayLiteral:function(tree){this.write_(OPEN_SQUARE),this.writeList_(tree.elements,COMMA,!1),null===tree.elements[tree.elements.length-1]&&(this.write_(COMMA),this.writeSpace_()),this.write_(CLOSE_SQUARE)},visitArrayPattern:function(tree){this.write_(OPEN_SQUARE),this.writeList_(tree.elements,COMMA,!1),null===tree.elements[tree.elements.length-1]&&(this.write_(COMMA),this.writeSpace_()),this.write_(CLOSE_SQUARE)},visitArrayType:function(tree){this.visitAny(tree.elementType),this.write_(OPEN_SQUARE),this.write_(CLOSE_SQUARE)},visitArrowFunction:function(tree){tree.functionKind&&(this.writeToken_(tree.functionKind),this.writeSpace_()),this.write_(OPEN_PAREN),this.visitAny(tree.parameterList),this.write_(CLOSE_PAREN),this.writeSpace_(),this.write_(ARROW),this.writeSpace_(),this.visitAny(tree.body)},visitAssignmentElement:function(tree){this.visitAny(tree.assignment),tree.initializer&&(this.writeSpace_(),this.write_(EQUAL),this.writeSpace_(),this.visitAny(tree.initializer))},visitAwaitExpression:function(tree){this.write_(AWAIT),this.writeSpace_(),this.visitAny(tree.expression)},visitBinaryExpression:function(tree){var left=tree.left;this.visitAny(left);var operator=tree.operator;left.type===POSTFIX_EXPRESSION&&requiresSpaceBetween(left.operator.type,operator.type)?this.writeRequiredSpace_():this.writeSpace_(),this.writeToken_(operator);var right=tree.right;right.type===UNARY_EXPRESSION&&requiresSpaceBetween(operator.type,right.operator.type)?this.writeRequiredSpace_():this.writeSpace_(),this.visitAny(right)},visitBindingElement:function(tree){var typeAnnotation=this.currentParameterTypeAnnotation_;this.currentParameterTypeAnnotation_=null,this.visitAny(tree.binding),this.writeTypeAnnotation_(typeAnnotation),tree.initializer&&(this.writeSpace_(),this.write_(EQUAL),this.writeSpace_(),this.visitAny(tree.initializer))},visitBindingIdentifier:function(tree){this.writeToken_(tree.identifierToken)},visitBlock:function(tree){this.writeOpenCurly_(),this.writelnList_(tree.statements,null),this.writeCloseCurly_()},visitBreakStatement:function(tree){this.write_(BREAK),null!==tree.name&&(this.writeSpace_(),this.writeToken_(tree.name)),this.write_(SEMI_COLON)},visitCallExpression:function(tree){this.visitAny(tree.operand),this.visitAny(tree.args)},visitCallSignature:function(tree){tree.typeParameters&&this.visitAny(tree.typeParameters),this.write_(OPEN_PAREN),this.visitAny(tree.parameterList),this.write_(CLOSE_PAREN),this.writeTypeAnnotation_(tree.returnType)},visitCaseClause:function(tree){this.write_(CASE),this.writeSpace_(),this.visitAny(tree.expression),this.write_(COLON),this.indentDepth_++,this.writelnList_(tree.statements,null),this.indentDepth_--},visitCatch:function(tree){this.write_(CATCH),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.binding),this.write_(CLOSE_PAREN),this.writeSpace_(),this.visitAny(tree.catchBody)},visitClassShared_:function(tree){this.writeAnnotations_(tree.annotations),this.write_(CLASS),this.writeSpace_(),this.visitAny(tree.name),null!==tree.typeParameters&&this.visitAny(tree.typeParameters),null!==tree.superClass&&(this.writeSpace_(),this.write_(EXTENDS),this.writeSpace_(),this.visitAny(tree.superClass)),this.writeSpace_(),this.writeOpenCurly_(),this.writelnList_(tree.elements,null),this.writeCloseCurly_()},visitClassDeclaration:function(tree){this.visitClassShared_(tree)},visitClassExpression:function(tree){this.visitClassShared_(tree)},visitCommaExpression:function(tree){this.writeList_(tree.expressions,COMMA,!1)},visitComprehensionFor:function(tree){this.write_(FOR),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.left),this.writeSpace_(),this.write_(OF),this.writeSpace_(),this.visitAny(tree.iterator),this.write_(CLOSE_PAREN),this.writeSpace_()},visitComprehensionIf:function(tree){this.write_(IF),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.expression),this.write_(CLOSE_PAREN),this.writeSpace_()},visitComputedPropertyName:function(tree){this.write_(OPEN_SQUARE),this.visitAny(tree.expression),this.write_(CLOSE_SQUARE)},visitConstructSignature:function(tree){this.write_(NEW),this.writeSpace_(),this.visitCallSignature(tree)},visitConstructorType:function(tree){this.write_(NEW),this.writeSpace_(),this.visitFunctionType(tree)},visitConditionalExpression:function(tree){this.visitAny(tree.condition),this.writeSpace_(),this.write_(QUESTION),this.writeSpace_(),this.visitAny(tree.left),this.writeSpace_(),this.write_(COLON),this.writeSpace_(),this.visitAny(tree.right)},visitContinueStatement:function(tree){this.write_(CONTINUE),null!==tree.name&&(this.writeSpace_(),this.writeToken_(tree.name)),this.write_(SEMI_COLON)},visitCoverInitializedName:function(tree){this.writeToken_(tree.name),this.writeSpace_(),this.writeToken_(tree.equalToken),this.writeSpace_(),this.visitAny(tree.initializer)},visitDebuggerStatement:function(tree){this.write_(DEBUGGER),this.write_(SEMI_COLON)},visitDefaultClause:function(tree){this.write_(DEFAULT),this.write_(COLON),this.indentDepth_++,this.writelnList_(tree.statements,null),this.indentDepth_--},visitDoWhileStatement:function(tree){this.write_(DO),this.visitAnyBlockOrIndent_(tree.body),this.writeSpace_(),this.write_(WHILE),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.condition),this.write_(CLOSE_PAREN),this.write_(SEMI_COLON)},visitEmptyStatement:function(tree){this.write_(SEMI_COLON)},visitExportDeclaration:function(tree){this.writeAnnotations_(tree.annotations),this.write_(EXPORT),this.writeSpace_(),this.visitAny(tree.declaration)},visitExportDefault:function(tree){switch(this.write_(DEFAULT),this.writeSpace_(),this.visitAny(tree.expression),tree.expression.type){case CLASS_DECLARATION:case FUNCTION_DECLARATION:break;default:this.write_(SEMI_COLON)}},visitNameSpaceExport:function(tree){this.write_(STAR),this.writeSpace_(),this.write_(AS),this.writeSpace_(),this.writeToken_(tree.name)},visitNameSpaceImport:function(tree){this.write_(STAR),this.writeSpace_(),this.write_(AS),this.writeSpace_(),this.visitAny(tree.binding)},visitNamedExport:function(tree){this.visitAny(tree.exportClause),tree.moduleSpecifier&&(this.writeSpace_(),this.write_(FROM),this.writeSpace_(),this.visitAny(tree.moduleSpecifier)),this.write_(SEMI_COLON)},visitExportSpecifier:function(tree){this.writeToken_(tree.lhs),tree.rhs&&(this.writeSpace_(),this.write_(AS),this.writeSpace_(),this.writeToken_(tree.rhs))},visitExportSpecifierSet:function(tree){this.writeOpenCurly_(),this.writeList_(tree.specifiers,COMMA,!1),this.writeCloseCurly_()},visitExportStar:function(tree){this.write_(STAR)},visitExpressionStatement:function(tree){this.visitAny(tree.expression),this.write_(SEMI_COLON)},visitFinally:function(tree){this.write_(FINALLY),this.writeSpace_(),this.visitAny(tree.block)},visitForOfStatement:function(tree){this.write_(FOR),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.initializer),this.writeSpace_(),this.write_(OF),this.writeSpace_(),this.visitAny(tree.collection),this.write_(CLOSE_PAREN),this.visitAnyBlockOrIndent_(tree.body)},visitForOnStatement:function(tree){this.write_(FOR),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.initializer),this.writeSpace_(),this.write_(ON),this.writeSpace_(),this.visitAny(tree.observable),this.write_(CLOSE_PAREN),this.visitAnyBlockOrIndent_(tree.body)},visitForInStatement:function(tree){this.write_(FOR),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.initializer),this.writeSpace_(),this.write_(IN),this.writeSpace_(),this.visitAny(tree.collection),this.write_(CLOSE_PAREN),this.visitAnyBlockOrIndent_(tree.body)},visitForStatement:function(tree){this.write_(FOR),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.initializer),this.write_(SEMI_COLON),this.writeSpace_(),this.visitAny(tree.condition),this.write_(SEMI_COLON),this.writeSpace_(),this.visitAny(tree.increment),this.write_(CLOSE_PAREN),this.visitAnyBlockOrIndent_(tree.body)},visitFormalParameterList:function(tree){for(var first=!0,i=0;i<tree.parameters.length;i++){var parameter=tree.parameters[i];first?first=!1:(this.write_(COMMA),this.writeSpace_()),this.visitAny(parameter)}},visitFormalParameter:function(tree){this.writeAnnotations_(tree.annotations,!1),this.currentParameterTypeAnnotation_=tree.typeAnnotation,this.visitAny(tree.parameter),this.currentParameterTypeAnnotation_=null},visitForwardDefaultExport:function(tree){this.writeToken_(tree.name)},visitFunctionBody:function(tree){this.writeOpenCurly_(),this.writelnList_(tree.statements,null),this.writeCloseCurly_()},visitFunctionDeclaration:function(tree){this.visitFunction_(tree)},visitFunctionExpression:function(tree){this.visitFunction_(tree)},visitFunction_:function(tree){this.writeAnnotations_(tree.annotations),tree.isAsyncGenerator()&&this.write_(ASYNC),tree.isAsyncFunction()&&this.writeToken_(tree.functionKind),this.write_(FUNCTION),tree.isAsyncGenerator()&&this.write_(STAR),tree.isGenerator()&&this.writeToken_(tree.functionKind),tree.name&&(this.writeSpace_(),this.visitAny(tree.name)),this.write_(OPEN_PAREN),this.visitAny(tree.parameterList),this.write_(CLOSE_PAREN),this.writeTypeAnnotation_(tree.typeAnnotation),this.writeSpace_(),this.visitAny(tree.body)},visitFunctionType:function(tree){null!==tree.typeParameters&&this.visitAny(tree.typeParameters),this.write_(OPEN_PAREN),this.visitAny(tree.parameterList),this.write_(CLOSE_PAREN),this.writeSpace_(),this.write_(ARROW),this.writeSpace_(),this.visitAny(tree.returnType)},visitGeneratorComprehension:function(tree){this.write_(OPEN_PAREN),this.visitList(tree.comprehensionList),this.visitAny(tree.expression),this.write_(CLOSE_PAREN)},visitGetAccessor:function(tree){this.writeAnnotations_(tree.annotations),tree.isStatic&&(this.write_(STATIC),this.writeSpace_()),this.write_(GET),this.writeSpace_(),this.visitAny(tree.name),this.write_(OPEN_PAREN),this.write_(CLOSE_PAREN),this.writeSpace_(),this.writeTypeAnnotation_(tree.typeAnnotation),this.visitAny(tree.body)},visitIdentifierExpression:function(tree){this.writeToken_(tree.identifierToken)},visitIfStatement:function(tree){this.write_(IF),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.condition),this.write_(CLOSE_PAREN),this.visitAnyBlockOrIndent_(tree.ifClause),tree.elseClause&&(tree.ifClause.type===BLOCK&&this.writeSpace_(),this.write_(ELSE),tree.elseClause.type===IF_STATEMENT?(this.writeSpace_(),this.visitAny(tree.elseClause)):this.visitAnyBlockOrIndent_(tree.elseClause))},visitIndexSignature:function(tree){this.write_(OPEN_SQUARE),this.writeToken_(tree.name),this.write_(COLON),this.writeSpace_(),this.visitAny(tree.indexType),this.write_(CLOSE_SQUARE),this.writeTypeAnnotation_(tree.typeAnnotation),this.write_(SEMI_COLON)},visitInterfaceDeclaration:function(tree){this.write_(INTERFACE),this.writeSpace_(),this.writeToken_(tree.name),tree.typeParameters&&this.visitAny(tree.typeParameters),tree.extendsClause.length>0&&(this.writeSpace_(),this.write_(EXTENDS),this.writeSpace_(),this.writeList_(tree.extendsClause,COMMA,!1)),this.writeSpace_(),this.visitAny(tree.objectType)},visitAnyBlockOrIndent_:function(tree){tree.type===BLOCK?(this.writeSpace_(),this.visitAny(tree)):this.visitAnyIndented_(tree)},visitAnyIndented_:function(tree){var indent=void 0!==arguments[1]?arguments[1]:1;this.prettyPrint_&&(this.indentDepth_+=indent,this.writeln_()),this.visitAny(tree),this.prettyPrint_&&(this.indentDepth_-=indent,this.writeln_())},visitImportClausePair:function(tree){this.visitAny(tree.first),this.write_(COMMA),this.writeSpace_(),this.visitAny(tree.second)},visitImportDeclaration:function(tree){this.write_(IMPORT),this.writeSpace_(),tree.importClause&&(this.visitAny(tree.importClause),this.writeSpace_(),this.write_(FROM),this.writeSpace_()),this.visitAny(tree.moduleSpecifier),this.write_(SEMI_COLON)},visitImportSpecifier:function(tree){tree.name&&(this.writeToken_(tree.name),this.writeSpace_(),this.write_(AS),this.writeSpace_()),this.visitAny(tree.binding)},visitImportSpecifierSet:function(tree){tree.specifiers.type===STAR?this.write_(STAR):(this.writeOpenCurly_(),this.writelnList_(tree.specifiers,COMMA),this.writeCloseCurly_())},visitImportTypeClause:function(tree){this.write_(TYPE),this.writeSpace_(),this.visitAny(tree.clause)},visitJsxAttribute:function(tree){this.writeToken_(tree.name),null!==tree.value&&(this.write_(EQUAL),this.visitAny(tree.value))},visitJsxElement:function(tree){this.write_(OPEN_ANGLE),this.visitAny(tree.name);for(var i=0;i<tree.attributes.length;i++)this.writeSpace_(),this.visitAny(tree.attributes[i]);0===tree.children.length?(this.write_(SLASH),this.write_(CLOSE_ANGLE)):(this.write_(CLOSE_ANGLE),this.visitList(tree.children),this.write_(OPEN_ANGLE),this.write_(SLASH),this.lastCode_=-1,this.visitAny(tree.name),this.write_(CLOSE_ANGLE))},visitJsxElementName:function(tree){for(var i=0;i<tree.names.length;i++)i>0&&this.write_(PERIOD),this.writeToken_(tree.names[i])},visitJsxPlaceholder:function(tree){this.write_(OPEN_CURLY),null!==tree.expression&&this.visitAny(tree.expression),this.write_(CLOSE_CURLY)},visitJsxSpreadAttribute:function(tree){this.write_(OPEN_CURLY),this.write_(DOT_DOT_DOT),this.visitAny(tree.expression),this.write_(CLOSE_CURLY)},visitJsxText:function(tree){this.writeToken_(tree.value)},visitLabelledStatement:function(tree){this.writeToken_(tree.name),this.write_(COLON),this.writeSpace_(),this.visitAny(tree.statement)},visitLiteralExpression:function(tree){this.writeToken_(tree.literalToken)},visitLiteralPropertyName:function(tree){this.writeToken_(tree.literalToken)},visitMemberExpression:function(tree){this.visitAny(tree.operand),tree.operand.type===LITERAL_EXPRESSION&&tree.operand.literalToken.type===NUMBER&&(/\.|e|E/.test(tree.operand.literalToken.value)||this.writeRequiredSpace_()),this.write_(PERIOD),this.writeToken_(tree.memberName)},visitMemberLookupExpression:function(tree){this.visitAny(tree.operand),this.write_(OPEN_SQUARE),this.visitAny(tree.memberExpression),this.write_(CLOSE_SQUARE)},visitMethodSignature:function(tree){this.visitAny(tree.name),tree.optional&&this.write_(QUESTION),this.visitAny(tree.callSignature),this.write_(SEMI_COLON)},visitSyntaxErrorTree:function(tree){this.write_("(function() {"+("throw SyntaxError("+JSON.stringify(tree.message)+");")+"})()")},visitModule:function(tree){this.writelnList_(tree.scriptItemList,null)},visitModuleSpecifier:function(tree){this.writeToken_(tree.token)},visitNewExpression:function(tree){this.write_(NEW),this.writeSpace_(),this.visitAny(tree.operand),this.visitAny(tree.args)},visitObjectLiteral:function(tree){this.writeOpenCurly_(),tree.propertyNameAndValues.length>1&&this.writeln_(),this.writelnList_(tree.propertyNameAndValues,COMMA),tree.propertyNameAndValues.length>1&&this.writeln_(),this.writeCloseCurly_()},visitObjectPattern:function(tree){this.writeOpenCurly_(),this.writelnList_(tree.fields,COMMA),this.writeCloseCurly_()},visitObjectPatternField:function(tree){this.visitAny(tree.name),null!==tree.element&&(this.write_(COLON),this.writeSpace_(),this.visitAny(tree.element))},visitObjectType:function(tree){this.writeOpenCurly_(),this.writelnList_(tree.typeMembers,null),this.writeCloseCurly_()},visitParenExpression:function(tree){this.write_(OPEN_PAREN),$traceurRuntime.superGet(this,ParseTreeWriter.prototype,"visitParenExpression").call(this,tree),this.write_(CLOSE_PAREN)},visitPostfixExpression:function(tree){this.visitAny(tree.operand),tree.operand.type===POSTFIX_EXPRESSION&&tree.operand.operator.type===tree.operator.type&&this.writeRequiredSpace_(),this.writeToken_(tree.operator)},visitPredefinedType:function(tree){this.writeToken_(tree.typeToken)},visitScript:function(tree){this.writelnList_(tree.scriptItemList,null)},visitMethod:function(tree){this.writeAnnotations_(tree.annotations),tree.isStatic&&(this.write_(STATIC),this.writeSpace_()),(tree.isAsyncFunction()||tree.isAsyncGenerator())&&this.write_(ASYNC),(tree.isGenerator()||tree.isAsyncGenerator())&&this.write_(STAR),tree.isAsyncGenerator()&&this.writeSpace_(),this.visitAny(tree.name),this.write_(OPEN_PAREN),this.visitAny(tree.parameterList),this.write_(CLOSE_PAREN),this.writeSpace_(),this.writeTypeAnnotation_(tree.typeAnnotation),this.visitAny(tree.body)},visitPropertyNameAssignment:function(tree){this.visitAny(tree.name),this.write_(COLON),this.writeSpace_(),this.visitAny(tree.value)},visitPropertyNameShorthand:function(tree){this.writeToken_(tree.name)},visitPropertyVariableDeclaration:function(tree){this.writeAnnotations_(tree.annotations),tree.isStatic&&(this.write_(STATIC),this.writeSpace_()),this.visitAny(tree.name),this.writeTypeAnnotation_(tree.typeAnnotation),tree.initalizer&&(this.writeSpace_(),this.write_(EQUAL),this.writeSpace_(),this.visitAny(tree.initializer)),this.write_(SEMI_COLON)},visitPropertySignature:function(tree){this.visitAny(tree.name),tree.optional&&this.write_(QUESTION),this.writeTypeAnnotation_(tree.typeAnnotation),this.write_(SEMI_COLON)},visitTemplateLiteralExpression:function(tree){tree.operand&&(this.visitAny(tree.operand),this.writeSpace_()),this.writeRaw_(BACK_QUOTE),this.visitList(tree.elements),this.writeRaw_(BACK_QUOTE)},visitTemplateLiteralPortion:function(tree){this.writeToken_(tree.value)},visitTemplateSubstitution:function(tree){this.writeRaw_("$"),this.writeRaw_(OPEN_CURLY),this.visitAny(tree.expression),this.writeRaw_(CLOSE_CURLY)},visitReturnStatement:function(tree){this.write_(RETURN),tree.expression&&(this.writeSpace_(tree.expression),this.visitAny(tree.expression)),this.write_(SEMI_COLON)},visitRestParameter:function(tree){this.write_(DOT_DOT_DOT),this.visitAny(tree.identifier)},visitSetAccessor:function(tree){this.writeAnnotations_(tree.annotations),tree.isStatic&&(this.write_(STATIC),this.writeSpace_()),this.write_(SET),this.writeSpace_(),this.visitAny(tree.name),this.write_(OPEN_PAREN),this.visitAny(tree.parameterList),this.write_(CLOSE_PAREN),this.writeSpace_(),this.visitAny(tree.body)},visitSpreadExpression:function(tree){this.write_(DOT_DOT_DOT),this.visitAny(tree.expression)},visitSpreadPatternElement:function(tree){this.write_(DOT_DOT_DOT),this.visitAny(tree.lvalue)},visitStateMachine:function(tree){throw Error("State machines cannot be converted to source")},visitSuperExpression:function(tree){this.write_(SUPER)},visitSwitchStatement:function(tree){this.write_(SWITCH),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.expression),this.write_(CLOSE_PAREN),this.writeSpace_(),this.writeOpenCurly_(),this.writelnList_(tree.caseClauses,null),this.writeCloseCurly_()},visitThisExpression:function(tree){this.write_(THIS)},visitThrowStatement:function(tree){this.write_(THROW),this.writeSpace_(),this.visitAny(tree.value),this.write_(SEMI_COLON)},visitTryStatement:function(tree){this.write_(TRY),this.writeSpace_(),this.visitAny(tree.body),tree.catchBlock&&(this.writeSpace_(),this.visitAny(tree.catchBlock)),tree.finallyBlock&&(this.writeSpace_(),this.visitAny(tree.finallyBlock))},visitTypeAliasDeclaration:function(tree){this.write_(TYPE),this.writeRequiredSpace_(),this.writeToken_(tree.name),this.writeSpace_(),this.write_(EQUAL),this.writeSpace_(),this.visitAny(tree.value),this.write_(SEMI_COLON)},visitTypeArguments:function(tree){this.write_(OPEN_ANGLE);var args=tree.args;this.visitAny(args[0]);for(var i=1;i<args.length;i++)this.write_(COMMA),this.writeSpace_(),this.visitAny(args[i]);this.write_(CLOSE_ANGLE)},visitTypeName:function(tree){tree.moduleName&&(this.visitAny(tree.moduleName),this.write_(PERIOD)),this.writeToken_(tree.name)},visitTypeParameter:function(tree){this.writeToken_(tree.identifierToken),tree.extendsType&&(this.writeSpace_(),this.write_(EXTENDS),this.writeSpace_(),this.visitAny(tree.extendsType))},visitTypeParameters:function(tree){this.write_(OPEN_ANGLE),this.writeList_(tree.parameters,COMMA,!1),this.write_(CLOSE_ANGLE)},visitUnaryExpression:function(tree){var op=tree.operator;this.writeToken_(op);var operand=tree.operand;operand.type===UNARY_EXPRESSION&&requiresSpaceBetween(op.type,operand.operator.type)&&this.writeRequiredSpace_(),this.visitAny(operand)},visitUnionType:function(tree){this.visitAny(tree.types[0]);for(var i=1;i<tree.types.length;i++)this.writeSpace_(),this.write_(BAR),this.writeSpace_(),this.visitAny(tree.types[i])},visitVariableDeclarationList:function(tree){this.write_(tree.declarationType),this.writeSpace_(),this.writeList_(tree.declarations,COMMA,!0,2)},visitVariableDeclaration:function(tree){this.visitAny(tree.lvalue),this.writeTypeAnnotation_(tree.typeAnnotation),null!==tree.initializer&&(this.writeSpace_(),this.write_(EQUAL),this.writeSpace_(),this.visitAny(tree.initializer))},visitVariableStatement:function(tree){$traceurRuntime.superGet(this,ParseTreeWriter.prototype,"visitVariableStatement").call(this,tree),this.write_(SEMI_COLON)},visitWhileStatement:function(tree){this.write_(WHILE),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.condition),this.write_(CLOSE_PAREN),this.visitAnyBlockOrIndent_(tree.body)},visitWithStatement:function(tree){this.write_(WITH),this.writeSpace_(),this.write_(OPEN_PAREN),this.visitAny(tree.expression),this.write_(CLOSE_PAREN),this.writeSpace_(),this.visitAny(tree.body)},visitYieldExpression:function(tree){this.write_(YIELD),tree.isYieldFor&&this.write_(STAR),tree.expression&&(this.writeSpace_(),this.visitAny(tree.expression))},writeCurrentln_:function(){this.result_+=this.currentLine_+NEW_LINE},writeln_:function(){this.currentLine_&&this.writeCurrentln_(),this.currentLine_="",this.lastCode_=-1},writelnList_:function(list,delimiter){null!==delimiter?this.writeList_(list,delimiter,!0):(list.length>0&&this.writeln_(),this.writeList_(list,"",!0),list.length>0&&this.writeln_())},writeList_:function(list,delimiter,writeNewLine){for(var indent=void 0!==arguments[3]?arguments[3]:0,first=!0,i=0;i<list.length;i++)first?first=!1:(""!==delimiter&&(this.write_(delimiter),writeNewLine||this.writeSpace_()),writeNewLine&&(1===i&&(this.indentDepth_+=indent),this.writeln_())),this.visitAny(list[i]);writeNewLine&&list.length>1&&(this.indentDepth_-=indent)},writeRaw_:function(value){this.currentLine_+=value,this.lastCode_=value.charCodeAt(value.length-1)},writeToken_:function(token){this.write_(""+token)},write_:function(value){if(this.prettyPrint_&&0===this.currentLine_.length)for(var i=0,indent=this.indentDepth_;i<indent;i++)this.writeRaw_("  ");this.needsSpace_(value)&&this.writeRaw_(" "),this.writeRaw_(value)},writeCloseCurly_:function(){this.indentDepth_--,this.write_(CLOSE_CURLY)},writeOpenCurly_:function(){this.write_(OPEN_CURLY),this.indentDepth_++},writeSpace_:function(){this.prettyPrint_&&!isWhitespace(this.lastCode_)&&this.writeRaw_(" ")},writeRequiredSpace_:function(){isWhitespace(this.lastCode_)||this.writeRaw_(" ")},writeTypeAnnotation_:function(typeAnnotation){null!==typeAnnotation&&(this.write_(COLON),this.writeSpace_(),this.visitAny(typeAnnotation))},writeAnnotations_:function(annotations){var writeNewLine=void 0!==arguments[1]?arguments[1]:this.prettyPrint_;annotations.length>0&&(this.writeList_(annotations,"",writeNewLine),writeNewLine&&this.writeln_())},needsSpace_:function(token){var lastCode=this.lastCode_;if(isWhitespace(lastCode))return!1;var firstCode=(""+token).charCodeAt(0);return isIdentifierPart(firstCode)&&(isIdentifierPart(lastCode)||47===lastCode)}},{},$__super)}(ParseTreeVisitor);return{get ParseTreeWriter(){return ParseTreeWriter}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/outputgeneration/ParseTreeMapWriter.js",[],function(){"use strict";function relativePath(name,sourceRoot){var $__3;if(!name||"@"===name[0])return name;if(!sourceRoot)return name;var nameSegments=name.split("/"),rootSegments=sourceRoot.split("/");if(rootSegments[rootSegments.length-1])throw Error("rootPath must end in /");var commonSegmentsLength=0,uniqueSegments=[],foundUnique=!1;if(nameSegments.forEach(function(segment,index){return foundUnique||segment!==rootSegments[index]?(foundUnique=!0,void uniqueSegments.push(segment)):void commonSegmentsLength++}),commonSegmentsLength<1||commonSegmentsLength===rootSegments.length)return name;for(var dotDotSegments=rootSegments.length-commonSegmentsLength-1,segments=[];dotDotSegments--;)segments.push("..");return($__3=segments).push.apply($__3,$traceurRuntime.spread(uniqueSegments)),segments.join("/")}var ParseTreeWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeWriter.js","traceur@0.0.107/src/outputgeneration/ParseTreeMapWriter.js")).ParseTreeWriter,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringSet.js","traceur@0.0.107/src/outputgeneration/ParseTreeMapWriter.js")).StringSet,ParseTreeMapWriter=function($__super){function ParseTreeMapWriter(sourceMapConfiguration){var options=arguments[1];$traceurRuntime.superConstructor(ParseTreeMapWriter).call(this,options),this.sourceMapGenerator_=sourceMapConfiguration.sourceMapGenerator,this.lowResolution_=sourceMapConfiguration.lowResolution,this.basepath_=sourceMapConfiguration.basepath,this.outputLineCount_=1,this.isFirstMapping_=!0,this.sourcesInMap_=new StringSet,this.relativeSourceName_="",this.generated_=null,this.original_=null,
this.previousMapping_=null}return $traceurRuntime.createClass(ParseTreeMapWriter,{visitAny:function(tree){null!==tree&&(null!==tree.location&&this.enterBranch(tree.location),$traceurRuntime.superGet(this,ParseTreeMapWriter.prototype,"visitAny").call(this,tree),null!==tree.location&&this.exitBranch(tree.location))},writeCurrentln_:function(){$traceurRuntime.superGet(this,ParseTreeMapWriter.prototype,"writeCurrentln_").call(this),this.flushMappings(),this.outputLineCount_++,this.generated_={line:this.outputLineCount_,column:0},this.flushMappings()},write_:function(value){this.generate(),$traceurRuntime.superGet(this,ParseTreeMapWriter.prototype,"write_").call(this,value),this.generate()},generate:function(){var length=this.currentLine_.length,column=length?length-1:0;this.generated_={line:this.outputLineCount_,column:column},this.flushMappings()},enterBranch:function(location){var $__2=location.start,line=$__2.line,column=$__2.column,source=$__2.source;this.originate(line,column,source)},exitBranch:function(location){var $__2=location.end,line=$__2.line,column=$__2.column,source=$__2.source;this.originate(line,column?column-1:0,source)},originate:function(line,column,source){line++,this.original_&&this.original_.line!==line&&this.flushMappings(),this.original_={line:line,column:column};var name=source.name;name&&!this.sourcesInMap_.has(name)&&(this.sourcesInMap_.add(name),this.relativeSourceName_=relativePath(name,this.basepath_),this.sourceMapGenerator_.setSourceContent(this.relativeSourceName_,source.contents)),this.flushMappings()},flushMappings:function(){this.original_&&this.generated_&&(this.addMapping(),this.original_=null,this.generated_=null)},isSame:function(lhs,rhs){return lhs.line===rhs.line&&lhs.column===rhs.column},skipMapping:function(){return!!this.previousMapping_&&(!(!this.lowResolution_||this.previousMapping_.generated.line!==this.generated_.line)||(!(!this.isSame(this.previousMapping_.generated,this.generated_)||!this.isSame(this.previousMapping_.original,this.original_))||void 0))},addMapping:function(){if(!this.skipMapping()){var mapping={generated:this.generated_,original:this.original_,source:this.relativeSourceName_};this.sourceMapGenerator_.addMapping(mapping),this.previousMapping_=mapping}}},{},$__super)}(ParseTreeWriter);return{get ParseTreeMapWriter(){return ParseTreeMapWriter},get relativePath(){return relativePath}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/outputgeneration/SourceMapIntegration.js",[],function(){"use strict";function makeDefine(mapping,id){var require=function(id){return mapping[id]},exports=mapping[id]={},module=null;return function(factory){factory(require,exports,module)}}var define,m={};if(define=makeDefine(m,"./util"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){function getArg(aArgs,aName,aDefaultValue){if(aName in aArgs)return aArgs[aName];if(3===arguments.length)return aDefaultValue;throw Error('"'+aName+'" is a required argument.')}function urlParse(aUrl){var match=aUrl.match(urlRegexp);return match?{scheme:match[1],auth:match[2],host:match[3],port:match[4],path:match[5]}:null}function urlGenerate(aParsedUrl){var url="";return aParsedUrl.scheme&&(url+=aParsedUrl.scheme+":"),url+="//",aParsedUrl.auth&&(url+=aParsedUrl.auth+"@"),aParsedUrl.host&&(url+=aParsedUrl.host),aParsedUrl.port&&(url+=":"+aParsedUrl.port),aParsedUrl.path&&(url+=aParsedUrl.path),url}function normalize(aPath){var path=aPath,url=urlParse(aPath);if(url){if(!url.path)return aPath;path=url.path}for(var isAbsolute="/"===path.charAt(0),parts=path.split(/\/+/),part=void 0,up=0,i=parts.length-1;i>=0;i--)part=parts[i],"."===part?parts.splice(i,1):".."===part?up++:up>0&&(""===part?(parts.splice(i+1,up),up=0):(parts.splice(i,2),up--));return path=parts.join("/"),""===path&&(path=isAbsolute?"/":"."),url?(url.path=path,urlGenerate(url)):path}function join(aRoot,aPath){""===aRoot&&(aRoot="."),""===aPath&&(aPath=".");var aPathUrl=urlParse(aPath),aRootUrl=urlParse(aRoot);if(aRootUrl&&(aRoot=aRootUrl.path||"/"),aPathUrl&&!aPathUrl.scheme)return aRootUrl&&(aPathUrl.scheme=aRootUrl.scheme),urlGenerate(aPathUrl);if(aPathUrl||aPath.match(dataUrlRegexp))return aPath;if(aRootUrl&&!aRootUrl.host&&!aRootUrl.path)return aRootUrl.host=aPath,urlGenerate(aRootUrl);var joined="/"===aPath.charAt(0)?aPath:normalize(aRoot.replace(/\/+$/,"")+"/"+aPath);return aRootUrl?(aRootUrl.path=joined,urlGenerate(aRootUrl)):joined}function relative(aRoot,aPath){""===aRoot&&(aRoot="."),aRoot=aRoot.replace(/\/$/,"");var url=urlParse(aRoot);return"/"==aPath.charAt(0)&&url&&"/"==url.path?aPath.slice(1):0===aPath.indexOf(aRoot+"/")?aPath.substr(aRoot.length+1):aPath}function toSetString(aStr){return"$"+aStr}function fromSetString(aStr){return aStr.substr(1)}function strcmp(aStr1,aStr2){var s1=aStr1||"",s2=aStr2||"";return(s1>s2)-(s1<s2)}function compareByOriginalPositions(mappingA,mappingB,onlyCompareOriginal){var cmp;return(cmp=strcmp(mappingA.source,mappingB.source))?cmp:(cmp=mappingA.originalLine-mappingB.originalLine)?cmp:(cmp=mappingA.originalColumn-mappingB.originalColumn,cmp||onlyCompareOriginal?cmp:(cmp=strcmp(mappingA.name,mappingB.name))?cmp:(cmp=mappingA.generatedLine-mappingB.generatedLine,cmp?cmp:mappingA.generatedColumn-mappingB.generatedColumn))}function compareByGeneratedPositions(mappingA,mappingB,onlyCompareGenerated){var cmp;return(cmp=mappingA.generatedLine-mappingB.generatedLine)?cmp:(cmp=mappingA.generatedColumn-mappingB.generatedColumn,cmp||onlyCompareGenerated?cmp:(cmp=strcmp(mappingA.source,mappingB.source))?cmp:(cmp=mappingA.originalLine-mappingB.originalLine)?cmp:(cmp=mappingA.originalColumn-mappingB.originalColumn,cmp?cmp:strcmp(mappingA.name,mappingB.name)))}exports.getArg=getArg;var urlRegexp=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,dataUrlRegexp=/^data:.+\,.+$/;exports.urlParse=urlParse,exports.urlGenerate=urlGenerate,exports.normalize=normalize,exports.join=join,exports.relative=relative,exports.toSetString=toSetString,exports.fromSetString=fromSetString,exports.compareByOriginalPositions=compareByOriginalPositions,exports.compareByGeneratedPositions=compareByGeneratedPositions}),define=makeDefine(m,"./array-set"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){function ArraySet(){this._array=[],this._set={}}var util=require("./util");ArraySet.fromArray=function(aArray,aAllowDuplicates){for(var set=new ArraySet,i=0,len=aArray.length;i<len;i++)set.add(aArray[i],aAllowDuplicates);return set},ArraySet.prototype.add=function(aStr,aAllowDuplicates){var isDuplicate=this.has(aStr),idx=this._array.length;isDuplicate&&!aAllowDuplicates||this._array.push(aStr),isDuplicate||(this._set[util.toSetString(aStr)]=idx)},ArraySet.prototype.has=function(aStr){return Object.prototype.hasOwnProperty.call(this._set,util.toSetString(aStr))},ArraySet.prototype.indexOf=function(aStr){if(this.has(aStr))return this._set[util.toSetString(aStr)];throw Error('"'+aStr+'" is not in the set.')},ArraySet.prototype.at=function(aIdx){if(aIdx>=0&&aIdx<this._array.length)return this._array[aIdx];throw Error("No element indexed by "+aIdx)},ArraySet.prototype.toArray=function(){return this._array.slice()},exports.ArraySet=ArraySet}),define=makeDefine(m,"./base64"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){var charToIntMap={},intToCharMap={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach(function(ch,index){charToIntMap[ch]=index,intToCharMap[index]=ch}),exports.encode=function(aNumber){if(aNumber in intToCharMap)return intToCharMap[aNumber];throw new TypeError("Must be between 0 and 63: "+aNumber)},exports.decode=function(aChar){if(aChar in charToIntMap)return charToIntMap[aChar];throw new TypeError("Not a valid base 64 digit: "+aChar)}}),define=makeDefine(m,"./base64-vlq"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){function toVLQSigned(aValue){return aValue<0?(-aValue<<1)+1:(aValue<<1)+0}function fromVLQSigned(aValue){var isNegative=1===(1&aValue),shifted=aValue>>1;return isNegative?-shifted:shifted}var base64=require("./base64"),VLQ_BASE_SHIFT=5,VLQ_BASE=1<<VLQ_BASE_SHIFT,VLQ_BASE_MASK=VLQ_BASE-1,VLQ_CONTINUATION_BIT=VLQ_BASE;exports.encode=function(aValue){var digit,encoded="",vlq=toVLQSigned(aValue);do digit=vlq&VLQ_BASE_MASK,vlq>>>=VLQ_BASE_SHIFT,vlq>0&&(digit|=VLQ_CONTINUATION_BIT),encoded+=base64.encode(digit);while(vlq>0);return encoded},exports.decode=function(aStr,aOutParam){var continuation,digit,i=0,strLen=aStr.length,result=0,shift=0;do{if(i>=strLen)throw 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+=digit<<shift,shift+=VLQ_BASE_SHIFT}while(continuation);aOutParam.value=fromVLQSigned(result),aOutParam.rest=aStr.slice(i)}}),define=makeDefine(m,"./binary-search"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){function recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare){var mid=Math.floor((aHigh-aLow)/2)+aLow,cmp=aCompare(aNeedle,aHaystack[mid],!0);return 0===cmp?mid:cmp>0?aHigh-mid>1?recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare):mid:mid-aLow>1?recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare):aLow<0?-1:aLow}exports.search=function(aNeedle,aHaystack,aCompare){return 0===aHaystack.length?-1:recursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare)}}),define=makeDefine(m,"./mapping-list"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){function generatedPositionAfter(mappingA,mappingB){var lineA=mappingA.generatedLine,lineB=mappingB.generatedLine,columnA=mappingA.generatedColumn,columnB=mappingB.generatedColumn;return lineB>lineA||lineB==lineA&&columnB>=columnA||util.compareByGeneratedPositions(mappingA,mappingB)<=0}function MappingList(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var util=require("./util");MappingList.prototype.unsortedForEach=function(aCallback,aThisArg){this._array.forEach(aCallback,aThisArg)},MappingList.prototype.add=function(aMapping){generatedPositionAfter(this._last,aMapping)?(this._last=aMapping,this._array.push(aMapping)):(this._sorted=!1,this._array.push(aMapping))},MappingList.prototype.toArray=function(){return this._sorted||(this._array.sort(util.compareByGeneratedPositions),this._sorted=!0),this._array},exports.MappingList=MappingList}),define=makeDefine(m,"./source-map-generator"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){function SourceMapGenerator(aArgs){aArgs||(aArgs={}),this._file=util.getArg(aArgs,"file",null),this._sourceRoot=util.getArg(aArgs,"sourceRoot",null),this._skipValidation=util.getArg(aArgs,"skipValidation",!1),this._sources=new ArraySet,this._names=new ArraySet,this._mappings=new MappingList,this._sourcesContents=null}var base64VLQ=require("./base64-vlq"),util=require("./util"),ArraySet=require("./array-set").ArraySet,MappingList=require("./mapping-list").MappingList;SourceMapGenerator.prototype._version=3,SourceMapGenerator.fromSourceMap=function(aSourceMapConsumer){var sourceRoot=aSourceMapConsumer.sourceRoot,generator=new SourceMapGenerator({file:aSourceMapConsumer.file,sourceRoot:sourceRoot});return aSourceMapConsumer.eachMapping(function(mapping){var newMapping={generated:{line:mapping.generatedLine,column:mapping.generatedColumn}};null!=mapping.source&&(newMapping.source=mapping.source,null!=sourceRoot&&(newMapping.source=util.relative(sourceRoot,newMapping.source)),newMapping.original={line:mapping.originalLine,column:mapping.originalColumn},null!=mapping.name&&(newMapping.name=mapping.name)),generator.addMapping(newMapping)}),aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);null!=content&&generator.setSourceContent(sourceFile,content)}),generator},SourceMapGenerator.prototype.addMapping=function(aArgs){var generated=util.getArg(aArgs,"generated"),original=util.getArg(aArgs,"original",null),source=util.getArg(aArgs,"source",null),name=util.getArg(aArgs,"name",null);this._skipValidation||this._validateMapping(generated,original,source,name),null==source||this._sources.has(source)||this._sources.add(source),null==name||this._names.has(name)||this._names.add(name),this._mappings.add({generatedLine:generated.line,generatedColumn:generated.column,originalLine:null!=original&&original.line,originalColumn:null!=original&&original.column,source:source,name:name})},SourceMapGenerator.prototype.setSourceContent=function(aSourceFile,aSourceContent){var source=aSourceFile;null!=this._sourceRoot&&(source=util.relative(this._sourceRoot,source)),null!=aSourceContent?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[util.toSetString(source)]=aSourceContent):this._sourcesContents&&(delete this._sourcesContents[util.toSetString(source)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},SourceMapGenerator.prototype.applySourceMap=function(aSourceMapConsumer,aSourceFile,aSourceMapPath){var sourceFile=aSourceFile;if(null==aSourceFile){if(null==aSourceMapConsumer.file)throw Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');sourceFile=aSourceMapConsumer.file}var sourceRoot=this._sourceRoot;null!=sourceRoot&&(sourceFile=util.relative(sourceRoot,sourceFile));var newSources=new ArraySet,newNames=new ArraySet;this._mappings.unsortedForEach(function(mapping){if(mapping.source===sourceFile&&null!=mapping.originalLine){var original=aSourceMapConsumer.originalPositionFor({line:mapping.originalLine,column:mapping.originalColumn});null!=original.source&&(mapping.source=original.source,null!=aSourceMapPath&&(mapping.source=util.join(aSourceMapPath,mapping.source)),null!=sourceRoot&&(mapping.source=util.relative(sourceRoot,mapping.source)),mapping.originalLine=original.line,mapping.originalColumn=original.column,null!=original.name&&(mapping.name=original.name))}var source=mapping.source;null==source||newSources.has(source)||newSources.add(source);var name=mapping.name;null==name||newNames.has(name)||newNames.add(name)},this),this._sources=newSources,this._names=newNames,aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);null!=content&&(null!=aSourceMapPath&&(sourceFile=util.join(aSourceMapPath,sourceFile)),null!=sourceRoot&&(sourceFile=util.relative(sourceRoot,sourceFile)),this.setSourceContent(sourceFile,content))},this)},SourceMapGenerator.prototype._validateMapping=function(aGenerated,aOriginal,aSource,aName){if((!(aGenerated&&"line"in aGenerated&&"column"in aGenerated&&aGenerated.line>0&&aGenerated.column>=0)||aOriginal||aSource||aName)&&!(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))throw Error("Invalid mapping: "+JSON.stringify({generated:aGenerated,source:aSource,original:aOriginal,name:aName}))},SourceMapGenerator.prototype._serializeMappings=function(){for(var mapping,previousGeneratedColumn=0,previousGeneratedLine=1,previousOriginalColumn=0,previousOriginalLine=0,previousName=0,previousSource=0,result="",mappings=this._mappings.toArray(),i=0,len=mappings.length;i<len;i++){if(mapping=mappings[i],mapping.generatedLine!==previousGeneratedLine)for(previousGeneratedColumn=0;mapping.generatedLine!==previousGeneratedLine;)result+=";",previousGeneratedLine++;else if(i>0){if(!util.compareByGeneratedPositions(mapping,mappings[i-1]))continue;result+=","}result+=base64VLQ.encode(mapping.generatedColumn-previousGeneratedColumn),previousGeneratedColumn=mapping.generatedColumn,null!=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,null!=mapping.name&&(result+=base64VLQ.encode(this._names.indexOf(mapping.name)-previousName),previousName=this._names.indexOf(mapping.name)))}return result},SourceMapGenerator.prototype._generateSourcesContent=function(aSources,aSourceRoot){return aSources.map(function(source){if(!this._sourcesContents)return null;null!=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(){var map={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(map.file=this._file),null!=this._sourceRoot&&(map.sourceRoot=this._sourceRoot),this._sourcesContents&&(map.sourcesContent=this._generateSourcesContent(map.sources,map.sourceRoot)),map},SourceMapGenerator.prototype.toString=function(){return JSON.stringify(this)},exports.SourceMapGenerator=SourceMapGenerator}),define=makeDefine(m,"./source-map-consumer"),"function"!=typeof define)var define=require("amdefine")(module,require);if(define(function(require,exports,module){function SourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;"string"==typeof aSourceMap&&(sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,"")));var version=util.getArg(sourceMap,"version"),sources=util.getArg(sourceMap,"sources"),names=util.getArg(sourceMap,"names",[]),sourceRoot=util.getArg(sourceMap,"sourceRoot",null),sourcesContent=util.getArg(sourceMap,"sourcesContent",null),mappings=util.getArg(sourceMap,"mappings"),file=util.getArg(sourceMap,"file",null);if(version!=this._version)throw Error("Unsupported version: "+version);sources=sources.map(util.normalize),this._names=ArraySet.fromArray(names,!0),this._sources=ArraySet.fromArray(sources,!0),this.sourceRoot=sourceRoot,this.sourcesContent=sourcesContent,this._mappings=mappings,this.file=file}var util=require("./util"),binarySearch=require("./binary-search"),ArraySet=require("./array-set").ArraySet,base64VLQ=require("./base64-vlq");SourceMapConsumer.fromSourceMap=function(aSourceMap){var smc=Object.create(SourceMapConsumer.prototype);return smc._names=ArraySet.fromArray(aSourceMap._names.toArray(),!0),smc._sources=ArraySet.fromArray(aSourceMap._sources.toArray(),!0),smc.sourceRoot=aSourceMap._sourceRoot,smc.sourcesContent=aSourceMap._generateSourcesContent(smc._sources.toArray(),smc.sourceRoot),smc.file=aSourceMap._file,smc.__generatedMappings=aSourceMap._mappings.toArray().slice(),smc.__originalMappings=aSourceMap._mappings.toArray().slice().sort(util.compareByOriginalPositions),smc},SourceMapConsumer.prototype._version=3,Object.defineProperty(SourceMapConsumer.prototype,"sources",{get:function(){return this._sources.toArray().map(function(s){return null!=this.sourceRoot?util.join(this.sourceRoot,s):s},this)}}),SourceMapConsumer.prototype.__generatedMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__generatedMappings}}),SourceMapConsumer.prototype.__originalMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{get:function(){return this.__originalMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__originalMappings}}),SourceMapConsumer.prototype._nextCharIsMappingSeparator=function(aStr){var c=aStr.charAt(0);return";"===c||","===c},SourceMapConsumer.prototype._parseMappings=function(aStr,aSourceRoot){for(var mapping,generatedLine=1,previousGeneratedColumn=0,previousOriginalLine=0,previousOriginalColumn=0,previousSource=0,previousName=0,str=aStr,temp={};str.length>0;)if(";"===str.charAt(0))generatedLine++,str=str.slice(1),previousGeneratedColumn=0;else if(","===str.charAt(0))str=str.slice(1);else{if(mapping={},mapping.generatedLine=generatedLine,base64VLQ.decode(str,temp),mapping.generatedColumn=previousGeneratedColumn+temp.value,previousGeneratedColumn=mapping.generatedColumn,str=temp.rest,str.length>0&&!this._nextCharIsMappingSeparator(str)){if(base64VLQ.decode(str,temp),mapping.source=this._sources.at(previousSource+temp.value),previousSource+=temp.value,str=temp.rest,0===str.length||this._nextCharIsMappingSeparator(str))throw Error("Found a source, but no line and column");if(base64VLQ.decode(str,temp),mapping.originalLine=previousOriginalLine+temp.value,previousOriginalLine=mapping.originalLine,mapping.originalLine+=1,str=temp.rest,0===str.length||this._nextCharIsMappingSeparator(str))throw Error("Found a source and line, but no column");base64VLQ.decode(str,temp),mapping.originalColumn=previousOriginalColumn+temp.value,previousOriginalColumn=mapping.originalColumn,str=temp.rest,str.length>0&&!this._nextCharIsMappingSeparator(str)&&(base64VLQ.decode(str,temp),mapping.name=this._names.at(previousName+temp.value),previousName+=temp.value,str=temp.rest)}this.__generatedMappings.push(mapping),"number"==typeof mapping.originalLine&&this.__originalMappings.push(mapping)}this.__generatedMappings.sort(util.compareByGeneratedPositions),this.__originalMappings.sort(util.compareByOriginalPositions)},SourceMapConsumer.prototype._findMapping=function(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.computeColumnSpans=function(){for(var index=0;index<this._generatedMappings.length;++index){var mapping=this._generatedMappings[index];if(index+1<this._generatedMappings.length){var nextMapping=this._generatedMappings[index+1];if(mapping.generatedLine===nextMapping.generatedLine){mapping.lastGeneratedColumn=nextMapping.generatedColumn-1;continue}}mapping.lastGeneratedColumn=1/0}},SourceMapConsumer.prototype.originalPositionFor=function(aArgs){var needle={generatedLine:util.getArg(aArgs,"line"),generatedColumn:util.getArg(aArgs,"column")},index=this._findMapping(needle,this._generatedMappings,"generatedLine","generatedColumn",util.compareByGeneratedPositions);if(index>=0){var mapping=this._generatedMappings[index];if(mapping.generatedLine===needle.generatedLine){var source=util.getArg(mapping,"source",null);return null!=source&&null!=this.sourceRoot&&(source=util.join(this.sourceRoot,source)),{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(aSource){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(aSource=util.relative(this.sourceRoot,aSource)),this._sources.has(aSource))return this.sourcesContent[this._sources.indexOf(aSource)];var url;if(null!=this.sourceRoot&&(url=util.urlParse(this.sourceRoot))){var fileUriAbsPath=aSource.replace(/^file:\/\//,"");if("file"==url.scheme&&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 Error('"'+aSource+'" is not in the SourceMap.')},SourceMapConsumer.prototype.generatedPositionFor=function(aArgs){var needle={source:util.getArg(aArgs,"source"),originalLine:util.getArg(aArgs,"line"),originalColumn:util.getArg(aArgs,"column")};null!=this.sourceRoot&&(needle.source=util.relative(this.sourceRoot,needle.source));var index=this._findMapping(needle,this._originalMappings,"originalLine","originalColumn",util.compareByOriginalPositions);if(index>=0){var mapping=this._originalMappings[index];return{line:util.getArg(mapping,"generatedLine",null),column:util.getArg(mapping,"generatedColumn",null),lastColumn:util.getArg(mapping,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},SourceMapConsumer.prototype.allGeneratedPositionsFor=function(aArgs){var needle={source:util.getArg(aArgs,"source"),originalLine:util.getArg(aArgs,"line"),originalColumn:1/0};null!=this.sourceRoot&&(needle.source=util.relative(this.sourceRoot,needle.source));var mappings=[],index=this._findMapping(needle,this._originalMappings,"originalLine","originalColumn",util.compareByOriginalPositions);if(index>=0)for(var mapping=this._originalMappings[index];mapping&&mapping.originalLine===needle.originalLine;)mappings.push({line:util.getArg(mapping,"generatedLine",null),column:util.getArg(mapping,"generatedColumn",null),lastColumn:util.getArg(mapping,"lastGeneratedColumn",null)}),mapping=this._originalMappings[--index];return mappings.reverse()},SourceMapConsumer.GENERATED_ORDER=1,SourceMapConsumer.ORIGINAL_ORDER=2,SourceMapConsumer.prototype.eachMapping=function(aCallback,aContext,aOrder){var mappings,context=aContext||null,order=aOrder||SourceMapConsumer.GENERATED_ORDER;switch(order){case SourceMapConsumer.GENERATED_ORDER:mappings=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:mappings=this._originalMappings;break;default:throw Error("Unknown order of iteration.")}var sourceRoot=this.sourceRoot;mappings.map(function(mapping){var source=mapping.source;return null!=source&&null!=sourceRoot&&(source=util.join(sourceRoot,source)),{source:source,generatedLine:mapping.generatedLine,generatedColumn:mapping.generatedColumn,originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:mapping.name}}).forEach(aCallback,context)},exports.SourceMapConsumer=SourceMapConsumer}),define=makeDefine(m,"./source-node"),"function"!=typeof define)var define=require("amdefine")(module,require);define(function(require,exports,module){function SourceNode(aLine,aColumn,aSource,aChunks,aName){this.children=[],this.sourceContents={},this.line=null==aLine?null:aLine,this.column=null==aColumn?null:aColumn,this.source=null==aSource?null:aSource,this.name=null==aName?null:aName,this[isSourceNode]=!0,null!=aChunks&&this.add(aChunks)}var SourceMapGenerator=require("./source-map-generator").SourceMapGenerator,util=require("./util"),REGEX_NEWLINE=/(\r?\n)/,NEWLINE_CODE=10,isSourceNode="$$$isSourceNode$$$";SourceNode.fromStringWithSourceMap=function(aGeneratedCode,aSourceMapConsumer,aRelativePath){function addMappingWithCode(mapping,code){if(null===mapping||void 0===mapping.source)node.add(code);else{var source=aRelativePath?util.join(aRelativePath,mapping.source):mapping.source;node.add(new SourceNode(mapping.originalLine,mapping.originalColumn,source,code,mapping.name))}}var node=new SourceNode,remainingLines=aGeneratedCode.split(REGEX_NEWLINE),shiftNextLine=function(){var lineContents=remainingLines.shift(),newLine=remainingLines.shift()||"";return lineContents+newLine},lastGeneratedLine=1,lastGeneratedColumn=0,lastMapping=null;return aSourceMapConsumer.eachMapping(function(mapping){if(null!==lastMapping){if(!(lastGeneratedLine<mapping.generatedLine)){var nextLine=remainingLines[0],code=nextLine.substr(0,mapping.generatedColumn-lastGeneratedColumn);return remainingLines[0]=nextLine.substr(mapping.generatedColumn-lastGeneratedColumn),lastGeneratedColumn=mapping.generatedColumn,addMappingWithCode(lastMapping,code),void(lastMapping=mapping)}var code="";addMappingWithCode(lastMapping,shiftNextLine()),lastGeneratedLine++,lastGeneratedColumn=0}for(;lastGeneratedLine<mapping.generatedLine;)node.add(shiftNextLine()),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}lastMapping=mapping},this),remainingLines.length>0&&(lastMapping&&addMappingWithCode(lastMapping,shiftNextLine()),node.add(remainingLines.join(""))),aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);null!=content&&(null!=aRelativePath&&(sourceFile=util.join(aRelativePath,sourceFile)),node.setSourceContent(sourceFile,content))}),node},SourceNode.prototype.add=function(aChunk){if(Array.isArray(aChunk))aChunk.forEach(function(chunk){this.add(chunk)},this);else{if(!aChunk[isSourceNode]&&"string"!=typeof aChunk)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk);aChunk&&this.children.push(aChunk)}return this},SourceNode.prototype.prepend=function(aChunk){if(Array.isArray(aChunk))for(var i=aChunk.length-1;i>=0;i--)this.prepend(aChunk[i]);else{if(!aChunk[isSourceNode]&&"string"!=typeof aChunk)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk);this.children.unshift(aChunk)}return this},SourceNode.prototype.walk=function(aFn){for(var chunk,i=0,len=this.children.length;i<len;i++)chunk=this.children[i],chunk[isSourceNode]?chunk.walk(aFn):""!==chunk&&aFn(chunk,{source:this.source,line:this.line,column:this.column,name:this.name})},SourceNode.prototype.join=function(aSep){var newChildren,i,len=this.children.length;if(len>0){for(newChildren=[],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(aPattern,aReplacement){var lastChild=this.children[this.children.length-1];return lastChild[isSourceNode]?lastChild.replaceRight(aPattern,aReplacement):"string"==typeof lastChild?this.children[this.children.length-1]=lastChild.replace(aPattern,aReplacement):this.children.push("".replace(aPattern,aReplacement)),this},SourceNode.prototype.setSourceContent=function(aSourceFile,aSourceContent){this.sourceContents[util.toSetString(aSourceFile)]=aSourceContent},SourceNode.prototype.walkSourceContents=function(aFn){for(var i=0,len=this.children.length;i<len;i++)this.children[i][isSourceNode]&&this.children[i].walkSourceContents(aFn);for(var sources=Object.keys(this.sourceContents),i=0,len=sources.length;i<len;i++)aFn(util.fromSetString(sources[i]),this.sourceContents[sources[i]])},SourceNode.prototype.toString=function(){var str="";return this.walk(function(chunk){str+=chunk}),str},SourceNode.prototype.toStringWithSourceMap=function(aArgs){var generated={code:"",line:1,column:0},map=new SourceMapGenerator(aArgs),sourceMappingActive=!1,lastOriginalSource=null,lastOriginalLine=null,lastOriginalColumn=null,lastOriginalName=null;return this.walk(function(chunk,original){generated.code+=chunk,null!==original.source&&null!==original.line&&null!==original.column?(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=!0):sourceMappingActive&&(map.addMapping({generated:{line:generated.line,column:generated.column}}),lastOriginalSource=null,sourceMappingActive=!1);for(var idx=0,length=chunk.length;idx<length;idx++)chunk.charCodeAt(idx)===NEWLINE_CODE?(generated.line++,
generated.column=0,idx+1===length?(lastOriginalSource=null,sourceMappingActive=!1):sourceMappingActive&&map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name})):generated.column++}),this.walkSourceContents(function(sourceFile,sourceContent){map.setSourceContent(sourceFile,sourceContent)}),{code:generated.code,map:map}},exports.SourceNode=SourceNode});var SourceMapGenerator=m["./source-map-generator"].SourceMapGenerator,SourceMapConsumer=m["./source-map-consumer"].SourceMapConsumer,SourceNode=m["./source-node"].SourceNode,join=m["./util"].join;return{get SourceMapGenerator(){return SourceMapGenerator},get SourceMapConsumer(){return SourceMapConsumer},get SourceNode(){return SourceNode},get join(){return join}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/outputgeneration/toSource.js",[],function(){"use strict";function toSource(tree){var options=arguments[1],outputName=void 0!==arguments[2]?arguments[2]:"<toSourceOutput>",sourceRoot=arguments[3],sourceMapGenerator=options&&options.sourceMapGenerator,sourcemaps=options&&options.sourceMaps;!sourceMapGenerator&&sourcemaps&&(sourceMapGenerator=new SourceMapGenerator({file:outputName,sourceRoot:sourceRoot,skipValidation:!0}));var writer,sourceMapConfiguration={sourceMapGenerator:sourceMapGenerator,sourceRoot:sourceRoot,lowResolution:options&&options.lowResolutionSourceMap};return writer=sourceMapGenerator?new ParseTreeMapWriter(sourceMapConfiguration,options):new ParseTreeWriter(options),writer.visitAny(tree),[""+writer,sourceMapGenerator&&""+sourceMapGenerator]}var ParseTreeMapWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeMapWriter.js","traceur@0.0.107/src/outputgeneration/toSource.js")).ParseTreeMapWriter,ParseTreeWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeWriter.js","traceur@0.0.107/src/outputgeneration/toSource.js")).ParseTreeWriter,SourceMapGenerator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SourceMapIntegration.js","traceur@0.0.107/src/outputgeneration/toSource.js")).SourceMapGenerator;return{get toSource(){return toSource}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/outputgeneration/TreeWriter.js",[],function(){"use strict";function write(tree){var $__2,$__3,options=arguments[1],outputName=void 0!==arguments[2]?arguments[2]:"<TreeWriter-output>",sourceRoot=arguments[3],$__1=toSource(tree,options,outputName,sourceRoot),result=($__2=$__1[Symbol.iterator](),($__3=$__2.next()).done?void 0:$__3.value),sourceMap=($__3=$__2.next()).done?void 0:$__3.value;return sourceMap&&(options.generatedSourceMap=sourceMap),result}var toSource=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./toSource.js","traceur@0.0.107/src/outputgeneration/TreeWriter.js")).toSource,TreeWriter=function(){function TreeWriter(){}return $traceurRuntime.createClass(TreeWriter,{},{})}();return TreeWriter.write=write,{get write(){return write},get TreeWriter(){return TreeWriter}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/syntax/ParseTreeValidator.js",[],function(){"use strict";var NewExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/syntax/ParseTreeValidator.js")).NewExpression,ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeVisitor.js","traceur@0.0.107/src/syntax/ParseTreeValidator.js")).ParseTreeVisitor,TreeWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../outputgeneration/TreeWriter.js","traceur@0.0.107/src/syntax/ParseTreeValidator.js")).TreeWriter,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TokenType.js","traceur@0.0.107/src/syntax/ParseTreeValidator.js")),AMPERSAND=$__7.AMPERSAND,AMPERSAND_EQUAL=$__7.AMPERSAND_EQUAL,AND=$__7.AND,BAR=$__7.BAR,BAR_EQUAL=$__7.BAR_EQUAL,CARET=$__7.CARET,CARET_EQUAL=$__7.CARET_EQUAL,CLOSE_ANGLE=$__7.CLOSE_ANGLE,EQUAL=$__7.EQUAL,EQUAL_EQUAL=$__7.EQUAL_EQUAL,EQUAL_EQUAL_EQUAL=$__7.EQUAL_EQUAL_EQUAL,GREATER_EQUAL=$__7.GREATER_EQUAL,IDENTIFIER=$__7.IDENTIFIER,IN=$__7.IN,INSTANCEOF=$__7.INSTANCEOF,LEFT_SHIFT=$__7.LEFT_SHIFT,LEFT_SHIFT_EQUAL=$__7.LEFT_SHIFT_EQUAL,LESS_EQUAL=$__7.LESS_EQUAL,MINUS=$__7.MINUS,MINUS_EQUAL=$__7.MINUS_EQUAL,NOT_EQUAL=$__7.NOT_EQUAL,NOT_EQUAL_EQUAL=$__7.NOT_EQUAL_EQUAL,NUMBER=$__7.NUMBER,OPEN_ANGLE=$__7.OPEN_ANGLE,OR=$__7.OR,PERCENT=$__7.PERCENT,PERCENT_EQUAL=$__7.PERCENT_EQUAL,PLUS=$__7.PLUS,PLUS_EQUAL=$__7.PLUS_EQUAL,RIGHT_SHIFT=$__7.RIGHT_SHIFT,RIGHT_SHIFT_EQUAL=$__7.RIGHT_SHIFT_EQUAL,SLASH=$__7.SLASH,SLASH_EQUAL=$__7.SLASH_EQUAL,STAR=$__7.STAR,STAR_EQUAL=$__7.STAR_EQUAL,STAR_STAR=$__7.STAR_STAR,STAR_STAR_EQUAL=$__7.STAR_STAR_EQUAL,STRING=$__7.STRING,UNSIGNED_RIGHT_SHIFT=$__7.UNSIGNED_RIGHT_SHIFT,UNSIGNED_RIGHT_SHIFT_EQUAL=$__7.UNSIGNED_RIGHT_SHIFT_EQUAL,YIELD=$__7.YIELD,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./trees/ParseTreeType.js","traceur@0.0.107/src/syntax/ParseTreeValidator.js")),ARRAY_PATTERN=$__8.ARRAY_PATTERN,ASSIGNMENT_ELEMENT=$__8.ASSIGNMENT_ELEMENT,BINDING_ELEMENT=$__8.BINDING_ELEMENT,BINDING_IDENTIFIER=$__8.BINDING_IDENTIFIER,BLOCK=$__8.BLOCK,CASE_CLAUSE=$__8.CASE_CLAUSE,CATCH=$__8.CATCH,CLASS_DECLARATION=$__8.CLASS_DECLARATION,COMPUTED_PROPERTY_NAME=$__8.COMPUTED_PROPERTY_NAME,DEFAULT_CLAUSE=$__8.DEFAULT_CLAUSE,EXPORT_DEFAULT=$__8.EXPORT_DEFAULT,EXPORT_SPECIFIER=$__8.EXPORT_SPECIFIER,EXPORT_SPECIFIER_SET=$__8.EXPORT_SPECIFIER_SET,EXPORT_STAR=$__8.EXPORT_STAR,FINALLY=$__8.FINALLY,FORMAL_PARAMETER=$__8.FORMAL_PARAMETER,FORMAL_PARAMETER_LIST=$__8.FORMAL_PARAMETER_LIST,FORWARD_DEFAULT_EXPORT=$__8.FORWARD_DEFAULT_EXPORT,FUNCTION_BODY=$__8.FUNCTION_BODY,FUNCTION_DECLARATION=$__8.FUNCTION_DECLARATION,GET_ACCESSOR=$__8.GET_ACCESSOR,IDENTIFIER_EXPRESSION=$__8.IDENTIFIER_EXPRESSION,IMPORTED_BINDING=$__8.IMPORTED_BINDING,IMPORT_CLAUSE_PAIR=$__8.IMPORT_CLAUSE_PAIR,IMPORT_SPECIFIER_SET=$__8.IMPORT_SPECIFIER_SET,IMPORT_TYPE_CLAUSE=$__8.IMPORT_TYPE_CLAUSE,JSX_ATTRIBUTE=$__8.JSX_ATTRIBUTE,JSX_ELEMENT_NAME=$__8.JSX_ELEMENT_NAME,JSX_ELEMENT=$__8.JSX_ELEMENT,JSX_PLACEHOLDER=$__8.JSX_PLACEHOLDER,JSX_SPREAD_ATTRIBUTE=$__8.JSX_SPREAD_ATTRIBUTE,JSX_TEXT=$__8.JSX_TEXT,LITERAL_PROPERTY_NAME=$__8.LITERAL_PROPERTY_NAME,METHOD=$__8.METHOD,MODULE_SPECIFIER=$__8.MODULE_SPECIFIER,NAMED_EXPORT=$__8.NAMED_EXPORT,NAME_SPACE_EXPORT=$__8.NAME_SPACE_EXPORT,NAME_SPACE_IMPORT=$__8.NAME_SPACE_IMPORT,OBJECT_PATTERN=$__8.OBJECT_PATTERN,OBJECT_PATTERN_FIELD=$__8.OBJECT_PATTERN_FIELD,PROPERTY_NAME_ASSIGNMENT=$__8.PROPERTY_NAME_ASSIGNMENT,PROPERTY_NAME_SHORTHAND=$__8.PROPERTY_NAME_SHORTHAND,PROPERTY_VARIABLE_DECLARATION=$__8.PROPERTY_VARIABLE_DECLARATION,REST_PARAMETER=$__8.REST_PARAMETER,SET_ACCESSOR=$__8.SET_ACCESSOR,SPREAD_EXPRESSION=$__8.SPREAD_EXPRESSION,TEMPLATE_LITERAL_PORTION=$__8.TEMPLATE_LITERAL_PORTION,TEMPLATE_SUBSTITUTION=$__8.TEMPLATE_SUBSTITUTION,TYPE_ALIAS_DECLARATION=$__8.TYPE_ALIAS_DECLARATION,TYPE_ARGUMENTS=$__8.TYPE_ARGUMENTS,TYPE_NAME=$__8.TYPE_NAME,TYPE_PARAMETER=$__8.TYPE_PARAMETER,TYPE_PARAMETERS=$__8.TYPE_PARAMETERS,VARIABLE_DECLARATION_LIST=$__8.VARIABLE_DECLARATION_LIST,VARIABLE_STATEMENT=$__8.VARIABLE_STATEMENT,assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/assert.js","traceur@0.0.107/src/syntax/ParseTreeValidator.js")).assert,ValidationError=function($__super){function ValidationError(tree,message){$traceurRuntime.superConstructor(ValidationError).call(this),this.tree=tree,this.message=message}return $traceurRuntime.createClass(ValidationError,{},{},$__super)}(Error),ParseTreeValidator=function($__super){function ParseTreeValidator(){$traceurRuntime.superConstructor(ParseTreeValidator).apply(this,arguments)}return $traceurRuntime.createClass(ParseTreeValidator,{fail_:function(tree,message){throw new ValidationError(tree,message)},check_:function(condition,tree,message){condition||this.fail_(tree,message)},checkVisit_:function(condition,tree,message){this.check_(condition,tree,message),this.visitAny(tree)},checkType_:function(type,tree,message){this.checkVisit_(tree.type===type,tree,message)},visitArgumentList:function(tree){for(var i=0;i<tree.args.length;i++){var argument=tree.args[i];this.checkVisit_(argument.isAssignmentOrSpread(),argument,"assignment or spread expected")}},visitArrayLiteral:function(tree){for(var i=0;i<tree.elements.length;i++){var element=tree.elements[i];this.checkVisit_(null===element||element.isAssignmentOrSpread(),element,"assignment or spread expected")}},visitArrayPattern:function(tree){for(var i=0;i<tree.elements.length;i++){var element=tree.elements[i];this.checkVisit_(null===element||element.type===BINDING_ELEMENT||element.type===ASSIGNMENT_ELEMENT||element.isLeftHandSideExpression()||element.isPattern()||element.isSpreadPatternElement(),element,"null, sub pattern, left hand side expression or spread expected"),element&&element.isSpreadPatternElement()&&this.check_(i===tree.elements.length-1,element,"spread in array patterns must be the last element")}},visitBinaryExpression:function(tree){switch(tree.operator.type){case EQUAL:case STAR_EQUAL:case STAR_STAR_EQUAL:case SLASH_EQUAL:case PERCENT_EQUAL:case PLUS_EQUAL:case MINUS_EQUAL:case LEFT_SHIFT_EQUAL:case RIGHT_SHIFT_EQUAL:case UNSIGNED_RIGHT_SHIFT_EQUAL:case AMPERSAND_EQUAL:case CARET_EQUAL:case BAR_EQUAL:this.check_(tree.left.isLeftHandSideExpression()||tree.left.isPattern(),tree.left,"left hand side expression or pattern expected"),this.check_(tree.right.isAssignmentExpression(),tree.right,"assignment expression expected");break;case AND:case OR:case BAR:case CARET:case AMPERSAND:case EQUAL_EQUAL:case NOT_EQUAL:case EQUAL_EQUAL_EQUAL:case NOT_EQUAL_EQUAL:case OPEN_ANGLE:case CLOSE_ANGLE:case GREATER_EQUAL:case LESS_EQUAL:case INSTANCEOF:case IN:case LEFT_SHIFT:case RIGHT_SHIFT:case UNSIGNED_RIGHT_SHIFT:case PLUS:case MINUS:case STAR:case SLASH:case PERCENT:case STAR_STAR:this.check_(tree.left.isAssignmentExpression(),tree.left,"assignment expression expected"),this.check_(tree.right.isAssignmentExpression(),tree.right,"assignment expression expected");break;default:this.fail_(tree,"unexpected binary operator")}this.visitAny(tree.left),this.visitAny(tree.right)},visitBindingElement:function(tree){var binding=tree.binding;this.checkVisit_(binding.type===BINDING_IDENTIFIER||binding.type===OBJECT_PATTERN||binding.type===ARRAY_PATTERN,binding,"expected valid binding element"),this.visitAny(tree.initializer)},visitAssignmentElement:function(tree){var assignment=tree.assignment;this.checkVisit_(assignment.type===OBJECT_PATTERN||assignment.type===ARRAY_PATTERN||assignment.isLeftHandSideExpression(),assignment,"expected valid assignment element"),this.visitAny(tree.initializer)},visitBlock:function(tree){for(var i=0;i<tree.statements.length;i++){var statement=tree.statements[i];this.checkVisit_(statement.isStatementListItem(),statement,"statement or function declaration expected")}},visitCallExpression:function(tree){this.check_(tree.operand.isMemberExpression(),tree.operand,"member expression expected"),tree.operand instanceof NewExpression&&this.check_(null!==tree.operand.args,tree.operand,"new args expected"),this.visitAny(tree.operand),this.visitAny(tree.args)},visitCaseClause:function(tree){this.checkVisit_(tree.expression.isExpression(),tree.expression,"expression expected");for(var i=0;i<tree.statements.length;i++){var statement=tree.statements[i];this.checkVisit_(statement.isStatementListItem(),statement,"statement expected")}},visitCatch:function(tree){this.checkVisit_(tree.binding.isPattern()||tree.binding.type===BINDING_IDENTIFIER,tree.binding,"binding identifier expected"),this.checkVisit_(tree.catchBody.type===BLOCK,tree.catchBody,"block expected")},visitClassDeclaration:function(tree){this.visitClassShared_(tree)},visitClassExpression:function(tree){this.visitClassShared_(tree)},visitClassShared_:function(tree){tree.typeParameters&&this.checkVisit_(tree.typeParameters.type===TYPE_PARAMETERS,tree.typeParameters,"type parameters expected");for(var i=0;i<tree.elements.length;i++){var element=tree.elements[i];switch(element.type){case GET_ACCESSOR:case SET_ACCESSOR:case METHOD:case PROPERTY_VARIABLE_DECLARATION:break;default:this.fail_(element,"class element expected")}this.visitAny(element)}},visitCommaExpression:function(tree){for(var i=0;i<tree.expressions.length;i++){var expression=tree.expressions[i];this.checkVisit_(expression.isExpression(),expression,"expression expected")}},visitConditionalExpression:function(tree){this.checkVisit_(tree.condition.isAssignmentExpression(),tree.condition,"expression expected"),this.checkVisit_(tree.left.isAssignmentExpression(),tree.left,"expression expected"),this.checkVisit_(tree.right.isAssignmentExpression(),tree.right,"expression expected")},visitCoverFormals:function(tree){this.fail_(tree,"CoverFormals should have been removed")},visitCoverInitializedName:function(tree){this.fail_(tree,"CoverInitializedName should have been removed")},visitDefaultClause:function(tree){for(var i=0;i<tree.statements.length;i++){var statement=tree.statements[i];this.checkVisit_(statement.isStatementListItem(),statement,"statement expected")}},visitDoWhileStatement:function(tree){this.checkVisit_(tree.body.isStatement(),tree.body,"statement expected"),this.checkVisit_(tree.condition.isExpression(),tree.condition,"expression expected")},visitExportDeclaration:function(tree){var declType=tree.declaration.type;this.checkVisit_(declType===VARIABLE_STATEMENT||declType===FUNCTION_DECLARATION||declType===CLASS_DECLARATION||declType===NAMED_EXPORT||declType===EXPORT_DEFAULT||declType===TYPE_ALIAS_DECLARATION,tree.declaration,"expected valid export tree")},visitNamedExport:function(tree){var specifierType=tree.exportClause.type;this.checkVisit_(specifierType===EXPORT_SPECIFIER||specifierType===EXPORT_SPECIFIER_SET||specifierType===EXPORT_STAR||specifierType===FORWARD_DEFAULT_EXPORT||specifierType===NAME_SPACE_EXPORT,tree.exportClause,"Invalid export clause"),tree.moduleSpecifier&&this.checkVisit_(tree.moduleSpecifier.type===MODULE_SPECIFIER,tree.moduleSpecifier,"module expression expected")},visitExportSpecifierSet:function(tree){this.check_(tree.specifiers.length>0,tree,"expected at least one identifier");for(var i=0;i<tree.specifiers.length;i++){var specifier=tree.specifiers[i];this.checkVisit_(specifier.type===EXPORT_SPECIFIER||specifier.type===IDENTIFIER_EXPRESSION,specifier,"expected valid export specifier")}},visitExpressionStatement:function(tree){this.checkVisit_(tree.expression.isExpression(),tree.expression,"expression expected")},visitFinally:function(tree){this.checkVisit_(tree.block.type===BLOCK,tree.block,"block expected")},visitForOfStatement:function(tree){this.checkVisit_(tree.initializer.isPattern()||tree.initializer.type===IDENTIFIER_EXPRESSION||tree.initializer.type===VARIABLE_DECLARATION_LIST&&1===tree.initializer.declarations.length,tree.initializer,"for-each statement may not have more than one variable declaration"),this.checkVisit_(tree.collection.isExpression(),tree.collection,"expression expected"),this.checkVisit_(tree.body.isStatement(),tree.body,"statement expected")},visitForInStatement:function(tree){tree.initializer.type===VARIABLE_DECLARATION_LIST?this.checkVisit_(tree.initializer.declarations.length<=1,tree.initializer,"for-in statement may not have more than one variable declaration"):this.checkVisit_(tree.initializer.isPattern()||tree.initializer.isExpression(),tree.initializer,"variable declaration, expression or pattern expected"),this.checkVisit_(tree.collection.isExpression(),tree.collection,"expression expected"),this.checkVisit_(tree.body.isStatement(),tree.body,"statement expected")},visitFormalParameterList:function(tree){for(var i=0;i<tree.parameters.length;i++){var parameter=tree.parameters[i];switch(assert(parameter.type===FORMAL_PARAMETER),parameter=parameter.parameter,parameter.type){case BINDING_ELEMENT:break;case REST_PARAMETER:this.checkVisit_(i===tree.parameters.length-1,parameter,"rest parameters must be the last parameter in a parameter list"),this.checkType_(BINDING_IDENTIFIER,parameter.identifier,"binding identifier expected");break;default:this.fail_(parameter,"parameters must be identifiers or rest parameters. Found: "+parameter.type)}this.visitAny(parameter)}},visitForStatement:function(tree){null!==tree.initializer&&this.checkVisit_(tree.initializer.isExpression()||tree.initializer.type===VARIABLE_DECLARATION_LIST,tree.initializer,"variable declaration list or expression expected"),null!==tree.condition&&this.checkVisit_(tree.condition.isExpression(),tree.condition,"expression expected"),null!==tree.increment&&this.checkVisit_(tree.increment.isExpression(),tree.increment,"expression expected"),this.checkVisit_(tree.body.isStatement(),tree.body,"statement expected")},visitFunctionBody:function(tree){for(var i=0;i<tree.statements.length;i++){var statement=tree.statements[i];this.checkVisit_(statement.isStatementListItem(),statement,"statement expected")}},visitFunctionDeclaration:function(tree){this.checkType_(BINDING_IDENTIFIER,tree.name,"binding identifier expected"),this.visitFunction_(tree)},visitFunctionExpression:function(tree){null!==tree.name&&this.checkType_(BINDING_IDENTIFIER,tree.name,"binding identifier expected"),this.visitFunction_(tree)},visitFunction_:function(tree){this.checkType_(FORMAL_PARAMETER_LIST,tree.parameterList,"formal parameters expected"),this.checkType_(FUNCTION_BODY,tree.body,"function body expected")},visitGetAccessor:function(tree){this.checkPropertyName_(tree.name),this.checkType_(FUNCTION_BODY,tree.body,"function body expected")},visitIfStatement:function(tree){this.checkVisit_(tree.condition.isExpression(),tree.condition,"expression expected"),this.checkVisit_(tree.ifClause.isStatement(),tree.ifClause,"statement expected"),null!==tree.elseClause&&this.checkVisit_(tree.elseClause.isStatement(),tree.elseClause,"statement expected")},visitImportDeclaration:function(tree){null!==tree.importClause&&this.check_(tree.importClause.type===NAME_SPACE_IMPORT||tree.importClause.type===IMPORTED_BINDING||tree.importClause.type===IMPORT_SPECIFIER_SET||tree.importClause.type===IMPORT_CLAUSE_PAIR||tree.importClause.type===IMPORT_TYPE_CLAUSE,tree.importClause,"Invalid import clause"),this.checkType_(MODULE_SPECIFIER,tree.moduleSpecifier,"module specifier expected")},visitImportSpecifier:function(tree){this.checkType_(IMPORTED_BINDING,tree.binding,"ImportedBinding expected")},visitImportedBinding:function(tree){this.checkType_(BINDING_IDENTIFIER,tree.binding,"binding identifier expected")},visitImportClausePair:function(tree){this.checkType_(IMPORTED_BINDING,tree.first,"ImportedBinding expected"),this.check_(tree.second.type===NAME_SPACE_IMPORT||tree.second.type===IMPORT_SPECIFIER_SET,tree.second,"Invalid import clause")},visitJsxElement:function(tree){this.checkType_(JSX_ELEMENT_NAME,tree.name,"JSX Element Name expected");for(var i=0;i<tree.attributes.length;i++){var attr=tree.attributes[i];this.checkVisit_(attr.type===JSX_ATTRIBUTE||attr.type===JSX_SPREAD_ATTRIBUTE,attr,"JSX Attribute expected")}for(var i$__3=0;i$__3<tree.children.length;i$__3++){var child=tree.children[i$__3];this.checkVisit_(child.type===JSX_ELEMENT||child.type===JSX_PLACEHOLDER||child.type===JSX_TEXT,child,"JSX child expected")}},visitLabelledStatement:function(tree){this.checkVisit_(tree.statement.isStatement(),tree.statement,"statement expected")},visitMemberExpression:function(tree){this.check_(tree.operand.isMemberExpression(),tree.operand,"member expression expected"),tree.operand instanceof NewExpression&&this.check_(null!==tree.operand.args,tree.operand,"new args expected"),this.visitAny(tree.operand)},visitMemberLookupExpression:function(tree){this.check_(tree.operand.isMemberExpression(),tree.operand,"member expression expected"),tree.operand instanceof NewExpression&&this.check_(null!==tree.operand.args,tree.operand,"new args expected"),this.visitAny(tree.operand)},visitSyntaxErrorTree:function(tree){this.fail_(tree,"parse tree contains SyntaxError: "+tree.message)},visitModuleSpecifier:function(tree){this.check_(tree.token.type===STRING,tree,"string or identifier expected")},visitNewExpression:function(tree){this.checkVisit_(tree.operand.isMemberExpression(),tree.operand,"member expression expected"),this.visitAny(tree.args)},visitObjectLiteral:function(tree){for(var i=0;i<tree.propertyNameAndValues.length;i++){var propertyNameAndValue=tree.propertyNameAndValues[i];switch(propertyNameAndValue.type){case GET_ACCESSOR:case SET_ACCESSOR:case METHOD:this.check_(!propertyNameAndValue.isStatic,propertyNameAndValue,"static is not allowed in object literal expression");break;case PROPERTY_NAME_ASSIGNMENT:case PROPERTY_NAME_SHORTHAND:case SPREAD_EXPRESSION:break;default:this.fail_(propertyNameAndValue,"accessor, property name assignment or property method assigment expected")}this.visitAny(propertyNameAndValue)}},visitObjectPattern:function(tree){for(var i=0;i<tree.fields.length;i++){var field=tree.fields[i];this.checkVisit_(field.type===OBJECT_PATTERN_FIELD||field.type===ASSIGNMENT_ELEMENT||field.type===BINDING_ELEMENT,field,"object pattern field expected")}},visitObjectPatternField:function(tree){this.checkPropertyName_(tree.name),this.checkVisit_(tree.element.type===ASSIGNMENT_ELEMENT||tree.element.type===BINDING_ELEMENT||tree.element.isPattern()||tree.element.isLeftHandSideExpression(),tree.element,"binding element expected")},visitParenExpression:function(tree){tree.expression.isPattern()?this.visitAny(tree.expression):this.checkVisit_(tree.expression.isExpression(),tree.expression,"expression expected")},visitPostfixExpression:function(tree){this.checkVisit_(tree.operand.isAssignmentExpression(),tree.operand,"assignment expression expected")},visitPredefinedType:function(tree){},visitScript:function(tree){for(var i=0;i<tree.scriptItemList.length;i++){var scriptItemList=tree.scriptItemList[i];this.checkVisit_(scriptItemList.isScriptElement(),scriptItemList,"global script item expected")}},checkPropertyName_:function(tree){this.checkVisit_(tree.type===LITERAL_PROPERTY_NAME||tree.type===COMPUTED_PROPERTY_NAME,tree,"property name expected")},visitPropertyNameAssignment:function(tree){this.checkPropertyName_(tree.name),this.checkVisit_(tree.value.isAssignmentExpression(),tree.value,"assignment expression expected")},visitPropertyNameShorthand:function(tree){this.check_(tree.name.type===IDENTIFIER||tree.name.type===YIELD||tree.name.isStrictKeyword(),tree,"identifier token expected")},visitLiteralPropertyName:function(tree){var type=tree.literalToken.type;this.check_(tree.literalToken.isKeyword()||type===IDENTIFIER||type===NUMBER||type===STRING,tree,"Unexpected token in literal property name")},visitTemplateLiteralExpression:function(tree){tree.operand&&this.checkVisit_(tree.operand.isMemberExpression(),tree.operand,"member or call expression expected");for(var i=0;i<tree.elements.length;i++){var element=tree.elements[i];i%2?this.checkType_(TEMPLATE_SUBSTITUTION,element,"Template literal substitution expected"):this.checkType_(TEMPLATE_LITERAL_PORTION,element,"Template literal portion expected")}},visitReturnStatement:function(tree){null!==tree.expression&&this.checkVisit_(tree.expression.isExpression(),tree.expression,"expression expected")},visitSetAccessor:function(tree){this.checkPropertyName_(tree.name),this.checkType_(FUNCTION_BODY,tree.body,"function body expected")},visitSpreadExpression:function(tree){this.checkVisit_(tree.expression.isAssignmentExpression(),tree.expression,"assignment expression expected")},visitStateMachine:function(tree){this.fail_(tree,"State machines are never valid outside of the GeneratorTransformer pass.")},visitSwitchStatement:function(tree){this.checkVisit_(tree.expression.isExpression(),tree.expression,"expression expected");for(var defaultCount=0,i=0;i<tree.caseClauses.length;i++){var caseClause=tree.caseClauses[i];caseClause.type===DEFAULT_CLAUSE?(++defaultCount,this.checkVisit_(defaultCount<=1,caseClause,"no more than one default clause allowed")):this.checkType_(CASE_CLAUSE,caseClause,"case or default clause expected")}},visitThrowStatement:function(tree){null!==tree.value&&this.checkVisit_(tree.value.isExpression(),tree.value,"expression expected")},visitTryStatement:function(tree){this.checkType_(BLOCK,tree.body,"block expected"),null!==tree.catchBlock&&this.checkType_(CATCH,tree.catchBlock,"catch block expected"),null!==tree.finallyBlock&&this.checkType_(FINALLY,tree.finallyBlock,"finally block expected"),null===tree.catchBlock&&null===tree.finallyBlock&&this.fail_(tree,"either catch or finally must be present")},visitTypeArguments:function(tree){for(var args=tree.args,i=0;i<args.length;i++)this.checkVisit_(args[i].isType(),args[i],"Type arguments must be type expressions")},visitTypeName:function(tree){this.checkVisit_(null===tree.moduleName||tree.moduleName.type===TYPE_NAME,tree.moduleName,"moduleName must be null or a TypeName"),this.check_(tree.name.type===IDENTIFIER,tree,"name must be an identifier")},visitTypeReference:function(tree){this.checkType_(TYPE_NAME,tree.typeName,"typeName must be a TypeName"),this.checkType_(TYPE_ARGUMENTS,tree.args,"args must be a TypeArguments")},visitTypeParameters:function(tree){for(var parameters=tree.parameters,i=0;i<parameters.length;i++)this.checkType_(TYPE_PARAMETER,parameters[i],"Type parameters must all be type parameters")},visitTypeParameter:function(tree){this.check_(tree.identifierToken.type===IDENTIFIER,tree,"Type parameter must be an identifier token"),tree.extendsType&&this.checkVisit_(tree.extendsType.isType(),tree.extendsType,"extends type must be a type expression")},visitUnaryExpression:function(tree){this.checkVisit_(tree.operand.isAssignmentExpression(),tree.operand,"assignment expression expected")},visitVariableDeclaration:function(tree){this.checkVisit_(tree.lvalue.isPattern()||tree.lvalue.type===BINDING_IDENTIFIER,tree.lvalue,"binding identifier expected, found: "+tree.lvalue.type),null!==tree.initializer&&this.checkVisit_(tree.initializer.isAssignmentExpression(),tree.initializer,"assignment expression expected")},visitWhileStatement:function(tree){this.checkVisit_(tree.condition.isExpression(),tree.condition,"expression expected"),this.checkVisit_(tree.body.isStatement(),tree.body,"statement expected")},visitWithStatement:function(tree){this.checkVisit_(tree.expression.isExpression(),tree.expression,"expression expected"),this.checkVisit_(tree.body.isStatement(),tree.body,"statement expected")},visitYieldExpression:function(tree){null!==tree.expression&&this.checkVisit_(tree.expression.isExpression(),tree.expression,"expression expected")}},{},$__super)}(ParseTreeVisitor);return ParseTreeValidator.validate=function(tree){var validator=new ParseTreeValidator;try{validator.visitAny(tree)}catch(e){if(!(e instanceof ValidationError))throw e;var location=null;null!==e.tree&&(location=e.tree.location),null===location&&(location=tree.location);var locationString=null!==location?""+location.start:"(unknown)";throw Error("Parse tree validation failure '"+e.message+"' at "+locationString+":"+("\n\n"+TreeWriter.write(tree)+"\n"))}},{get ParseTreeValidator(){return ParseTreeValidator}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/MultiTransformer.js",[],function(){"use strict";var ParseTreeValidator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/ParseTreeValidator.js","traceur@0.0.107/src/codegeneration/MultiTransformer.js")).ParseTreeValidator,MultiTransformer=function(){function MultiTransformer(reporter,validate){this.reporter_=reporter,this.validate_=validate,this.treeTransformers_=[]}return $traceurRuntime.createClass(MultiTransformer,{append:function(treeTransformer){this.treeTransformers_.push(treeTransformer)},transform:function(tree){var reporter=this.reporter_,validate=this.validate_;return this.treeTransformers_.every(function(transformTree){return tree=transformTree(tree),!reporter.hadError()&&(validate&&ParseTreeValidator.validate(tree),!0)}),tree}},{})}();return{get MultiTransformer(){return MultiTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/NumericLiteralTransformer.js",[],function(){"use strict";function needsTransform(token){return token.type===NUMBER&&/^0[bBoO]/.test(token.value)}function transformToken(token){return new LiteralToken(NUMBER,token.processedValue+"",token.location)}var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/NumericLiteralTransformer.js")).ParseTreeTransformer,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/NumericLiteralTransformer.js")),LiteralExpression=$__2.LiteralExpression,LiteralPropertyName=$__2.LiteralPropertyName,LiteralToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/LiteralToken.js","traceur@0.0.107/src/codegeneration/NumericLiteralTransformer.js")).LiteralToken,NUMBER=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/NumericLiteralTransformer.js")).NUMBER,NumericLiteralTransformer=function($__super){function NumericLiteralTransformer(){$traceurRuntime.superConstructor(NumericLiteralTransformer).apply(this,arguments)}return $traceurRuntime.createClass(NumericLiteralTransformer,{transformLiteralExpression:function(tree){var token=tree.literalToken;return needsTransform(token)?new LiteralExpression(tree.location,transformToken(token)):tree},transformLiteralPropertyName:function(tree){var token=tree.literalToken;return needsTransform(token)?new LiteralPropertyName(tree.location,transformToken(token)):tree}},{},$__super)}(ParseTreeTransformer);return{get NumericLiteralTransformer(){return NumericLiteralTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js",[],function(){"use strict";function isProtoName(tree){return"__proto__"===propName(tree)}var FindVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./FindVisitor.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")).FindVisitor,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")),FunctionExpression=$__4.FunctionExpression,IdentifierExpression=$__4.IdentifierExpression,LiteralExpression=$__4.LiteralExpression,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")).TempVarTransformer,IDENTIFIER=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")).IDENTIFIER,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")),COMPUTED_PROPERTY_NAME=$__7.COMPUTED_PROPERTY_NAME,LITERAL_PROPERTY_NAME=$__7.LITERAL_PROPERTY_NAME,StringMap=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/StringMap.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")).StringMap,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")),createAssignmentExpression=$__9.createAssignmentExpression,createCommaExpression=$__9.createCommaExpression,createDefineProperty=$__9.createDefineProperty,createEmptyParameterList=$__9.createEmptyParameterList,createFunctionExpression=$__9.createFunctionExpression,createIdentifierExpression=$__9.createIdentifierExpression,createObjectCreate=$__9.createObjectCreate,createObjectLiteral=$__9.createObjectLiteral,createParenExpression=$__9.createParenExpression,createPropertyNameAssignment=$__9.createPropertyNameAssignment,createStringLiteral=$__9.createStringLiteral,propName=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../staticsemantics/PropName.js","traceur@0.0.107/src/codegeneration/ObjectLiteralTransformer.js")).propName,FindAdvancedProperty=function($__super){
function FindAdvancedProperty(transformOptions){$traceurRuntime.superConstructor(FindAdvancedProperty).call(this,!0),this.transformOptions_=transformOptions,this.protoExpression=null}return $traceurRuntime.createClass(FindAdvancedProperty,{visitPropertyNameAssignment:function(tree){isProtoName(tree.name)?this.protoExpression=tree.value:this.visitAny(tree.name)},visitMethod:function(tree){this.visitAny(tree.name)},visitGetAccessor:function(tree){this.transformOptions_.properTailCalls?this.found=!0:this.visitAny(tree.name)},visitSetAccessor:function(tree){this.transformOptions_.properTailCalls?this.found=!0:this.visitAny(tree.name)},visitComputedPropertyName:function(tree){this.transformOptions_.computedPropertyNames&&(this.found=!0)}},{},$__super)}(FindVisitor),ObjectLiteralTransformer=function($__super){function ObjectLiteralTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(ObjectLiteralTransformer).call(this,identifierGenerator,reporter,options),this.transformOptions_=options.transformOptions,this.protoExpression=null,this.needsAdvancedTransform=!1,this.seenAccessors=null}return $traceurRuntime.createClass(ObjectLiteralTransformer,{findSeenAccessor_:function(name){if(name.type===COMPUTED_PROPERTY_NAME)return null;var s=propName(name);return this.seenAccessors.get(s)},removeSeenAccessor_:function(name){if(name.type!==COMPUTED_PROPERTY_NAME){var s=propName(name);this.seenAccessors["delete"](s)}},addSeenAccessor_:function(name,descr){if(name.type!==COMPUTED_PROPERTY_NAME){var s=propName(name);this.seenAccessors.set(s,descr)}},createProperty_:function(name,descr){var expression;if(expression=name.type===LITERAL_PROPERTY_NAME?this.needsAdvancedTransform?this.getPropertyName_(name):name:name.expression,descr.get||descr.set){var oldAccessor=this.findSeenAccessor_(name);if(oldAccessor)return oldAccessor.get=descr.get||oldAccessor.get,oldAccessor.set=descr.set||oldAccessor.set,this.removeSeenAccessor_(name),null;this.addSeenAccessor_(name,descr)}return[expression,descr]},getPropertyName_:function(nameTree){var token=nameTree.literalToken;switch(token.type){case IDENTIFIER:return createStringLiteral(token.value);default:return token.isKeyword()?createStringLiteral(token.type):new LiteralExpression(token.location,token)}},transformClassDeclaration:function(tree){return tree},transformClassExpression:function(tree){return tree},transformObjectLiteral:function(tree){var oldNeedsTransform=this.needsAdvancedTransform,oldSeenAccessors=this.seenAccessors,transformed=this.transformObjectLiteralInner_(tree);return this.needsAdvancedTransform=oldNeedsTransform,this.seenAccessors=oldSeenAccessors,transformed},transformObjectLiteralInner_:function(tree){var finder=new FindAdvancedProperty(this.transformOptions_);if(finder.visitAny(tree),!finder.found)return this.needsAdvancedTransform=!1,$traceurRuntime.superGet(this,ObjectLiteralTransformer.prototype,"transformObjectLiteral").call(this,tree);this.needsAdvancedTransform=!0,this.seenAccessors=new StringMap;var properties=this.transformList(tree.propertyNameAndValues);properties=properties.filter(function(tree){return tree});var objectExpression,tempVar=this.addTempVar(),tempVarIdentifierExpression=createIdentifierExpression(tempVar),expressions=properties.map(function(property){var expression=property[0],descr=property[1];return createDefineProperty(tempVarIdentifierExpression,expression,descr)}),protoExpression=this.transformAny(finder.protoExpression);return objectExpression=protoExpression?createObjectCreate(protoExpression):createObjectLiteral([]),expressions.unshift(createAssignmentExpression(tempVarIdentifierExpression,objectExpression)),expressions.push(tempVarIdentifierExpression),createParenExpression(createCommaExpression(expressions))},transformPropertyNameAssignment:function(tree){return this.needsAdvancedTransform?isProtoName(tree.name)?null:this.createProperty_(tree.name,{value:this.transformAny(tree.value),configurable:!0,enumerable:!0,writable:!0}):$traceurRuntime.superGet(this,ObjectLiteralTransformer.prototype,"transformPropertyNameAssignment").call(this,tree)},transformGetAccessor:function(tree){if(!this.needsAdvancedTransform)return $traceurRuntime.superGet(this,ObjectLiteralTransformer.prototype,"transformGetAccessor").call(this,tree);var body=this.transformAny(tree.body),func=createFunctionExpression(createEmptyParameterList(),body);return this.createProperty_(tree.name,{get:func,configurable:!0,enumerable:!0})},transformSetAccessor:function(tree){if(!this.needsAdvancedTransform)return $traceurRuntime.superGet(this,ObjectLiteralTransformer.prototype,"transformSetAccessor").call(this,tree);var body=this.transformAny(tree.body),parameterList=this.transformAny(tree.parameterList),func=createFunctionExpression(parameterList,body);return this.createProperty_(tree.name,{set:func,configurable:!0,enumerable:!0})},transformMethod:function(tree){var func=new FunctionExpression(tree.location,tree.debugName,tree.functionKind,this.transformAny(tree.parameterList),tree.typeAnnotation,[],this.transformAny(tree.body));if(!this.needsAdvancedTransform)return createPropertyNameAssignment(tree.name,func);this.transformAny(tree.name);return this.createProperty_(tree.name,{value:func,configurable:!0,enumerable:!0,writable:!0})},transformPropertyNameShorthand:function(tree){if(!this.needsAdvancedTransform)return $traceurRuntime.superGet(this,ObjectLiteralTransformer.prototype,"transformPropertyNameShorthand").call(this,tree);this.transformAny(tree.name);return this.createProperty_(tree.name,{value:new IdentifierExpression(tree.location,tree.name.identifierToken),configurable:!0,enumerable:!1,writable:!0})}},{},$__super)}(TempVarTransformer);return{get ObjectLiteralTransformer(){return ObjectLiteralTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/RewriteTailExpressionsTransformer.js",[],function(){"use strict";function createCall(tree,operand,thisArg){var argList=tree.args,argArray=argList?argList.args:[];return argArray=argArray.map(function(arg){return arg.type===COMMA_EXPRESSION?createParenExpression(arg.type):arg}),new CallExpression(tree.location,createMemberExpression("$traceurRuntime","continuation"),new ArgumentList(argList?argList.location:null,[operand,thisArg,createArrayLiteral(argArray)]))}var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/RewriteTailExpressionsTransformer.js")).ParseTreeTransformer,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/RewriteTailExpressionsTransformer.js")),ArgumentList=$__2.ArgumentList,BinaryExpression=$__2.BinaryExpression,CallExpression=$__2.CallExpression,ConditionalExpression=$__2.ConditionalExpression,MemberExpression=$__2.MemberExpression,MemberLookupExpression=$__2.MemberLookupExpression,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/RewriteTailExpressionsTransformer.js")),createArrayLiteral=$__3.createArrayLiteral,createAssignmentExpression=$__3.createAssignmentExpression,createCommaExpression=$__3.createCommaExpression,createMemberExpression=$__3.createMemberExpression,id=$__3.createIdentifierExpression,createNullLiteral=$__3.createNullLiteral,createParenExpression=$__3.createParenExpression,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/RewriteTailExpressionsTransformer.js")),COMMA_EXPRESSION=$__4.COMMA_EXPRESSION,MEMBER_EXPRESSION=$__4.MEMBER_EXPRESSION,MEMBER_LOOKUP_EXPRESSION=$__4.MEMBER_LOOKUP_EXPRESSION,IDENTIFIER_EXPRESSION=$__4.IDENTIFIER_EXPRESSION,PAREN_EXPRESSION=$__4.PAREN_EXPRESSION,THIS_EXPRESSION=$__4.THIS_EXPRESSION,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/RewriteTailExpressionsTransformer.js")),AND=$__5.AND,OR=$__5.OR,RewriteTailExpressionsTransformer=function($__super){function RewriteTailExpressionsTransformer(bodyTransformer){$traceurRuntime.superConstructor(RewriteTailExpressionsTransformer).call(this),this.bodyTransformer_=bodyTransformer}return $traceurRuntime.createClass(RewriteTailExpressionsTransformer,{transformBinaryExpression:function(tree){var operator=tree.operator;if(operator.type!==AND&&operator.type!==OR)return tree;var right=this.transformAny(tree.right);return right!==tree.right?new BinaryExpression(tree.location,tree.left,operator,right):tree},transformCallExpression:function(tree){for(var operand=tree.operand;operand.type===PAREN_EXPRESSION;)operand=operand.expression;switch(operand.type){case IDENTIFIER_EXPRESSION:return createCall(tree,operand,createNullLiteral());case MEMBER_EXPRESSION:case MEMBER_LOOKUP_EXPRESSION:return this.transformMemberExpressionCall_(tree,operand)}return tree},transformMemberExpressionCall_:function(tree,operand){var thisArg,assignment,object=operand.operand;return object.type===IDENTIFIER_EXPRESSION||object.type===THIS_EXPRESSION?thisArg=object:(thisArg=id(this.bodyTransformer_.addTempVar()),assignment=createAssignmentExpression(thisArg,operand.operand)),operand=operand.type===MEMBER_EXPRESSION?new MemberExpression(operand.location,thisArg,operand.memberName):new MemberLookupExpression(operand.location,thisArg,operand.memberExpression),assignment?createParenExpression(createCommaExpression([assignment,createCall(tree,operand,thisArg)])):createCall(tree,operand,thisArg)},transformCommaExpression:function(tree){var expressions=tree.expressions,expression=expressions[expressions.length-1],transformedExpression=this.transformAny(expression);return expression!==transformedExpression?(expressions=expressions.slice(0,-1),expressions.push(transformedExpression),new CommaExpression(tree.location,expressions)):tree},transformConditionalExpression:function(tree){var left=this.transformAny(tree.left),right=this.transformAny(tree.right);return left!==tree.left||right!==tree.right?new ConditionalExpression(tree.location,tree.condition,left,right):tree},transformNewExpression:function(tree){return createCall(tree,createMemberExpression("$traceurRuntime","construct"),tree.operand)},transformArrayLiteral:function(tree){return tree},transformArrowFunction:function(tree){return tree},transformFunctionExpression:function(tree){return tree},transformIdentifierExpression:function(tree){return tree},transformLiteralExpression:function(tree){return tree},transformMemberExpression:function(tree){return tree},transformMemberLookupExpression:function(tree){return tree},transformPostfixExpression:function(tree){return tree},transformObjectLiteral:function(tree){return tree},transformUnaryExpression:function(tree){return tree}},{transform:function(bodyTransformer,tree){return new RewriteTailExpressionsTransformer(bodyTransformer).transformAny(tree)}},$__super)}(ParseTreeTransformer);return{get RewriteTailExpressionsTransformer(){return RewriteTailExpressionsTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/RewriteTailCallsTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/RewriteTailCallsTransformer.js")).ParseTreeTransformer,RewriteTailExpressionsTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./RewriteTailExpressionsTransformer.js","traceur@0.0.107/src/codegeneration/RewriteTailCallsTransformer.js")).RewriteTailExpressionsTransformer,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/RewriteTailCallsTransformer.js")),ReturnStatement=$__3.ReturnStatement,TryStatement=$__3.TryStatement,SkipFunctionsTransformerTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SkipFunctionsTransformerTrait.js","traceur@0.0.107/src/codegeneration/RewriteTailCallsTransformer.js"))["default"],RewriteTailCallsTransformer=function($__super){function RewriteTailCallsTransformer(bodyTransformer){$traceurRuntime.superConstructor(RewriteTailCallsTransformer).call(this),this.bodyTransformer_=bodyTransformer}return $traceurRuntime.createClass(RewriteTailCallsTransformer,{transformReturnStatement:function(tree){var expression=tree.expression;return null!==expression&&(expression=RewriteTailExpressionsTransformer.transform(this.bodyTransformer_,expression),expression!==tree.expression)?new ReturnStatement(tree.location,expression):tree},transformTryStatement:function(tree){var block;if(null!==tree.finallyBlock){if(block=this.transformAny(tree.finallyBlock),block!==tree.finallyBlock)return new TryStatement(tree.location,tree.body,tree.catchBlock,block)}else if(block=this.transformAny(tree.catchBlock),block!==tree.catchBlock)return new TryStatement(tree.location,tree.body,block,tree.finallyBlock);return tree},transformForInStatement:function(tree){return tree},transformForOfStatement:function(tree){return tree},transformForOnStatement:function(tree){return tree},transformClassDeclaration:function(tree){return tree},transformClassExpression:function(tree){return tree},transformExpressionStatement:function(tree){return tree},transformComprehensionFor:function(tree){return tree},transformVariableStatement:function(tree){return tree}},{transform:function(bodyTransformer,tree){return new RewriteTailCallsTransformer(bodyTransformer).transformAny(tree)}},$__super)}(SkipFunctionsTransformerTrait(ParseTreeTransformer));return{get RewriteTailCallsTransformer(){return RewriteTailCallsTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/ProperTailCallTransformer.js",[],function(){"use strict";var TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/ProperTailCallTransformer.js")).TempVarTransformer,RewriteTailCallsTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./RewriteTailCallsTransformer.js","traceur@0.0.107/src/codegeneration/ProperTailCallTransformer.js")).RewriteTailCallsTransformer,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/ProperTailCallTransformer.js")),createFunctionBody=$__3.createFunctionBody,createFunctionExpression=$__3.createFunctionExpression,id=$__3.createIdentifierExpression,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/ProperTailCallTransformer.js")),parseExpression=$__4.parseExpression,parseStatement=$__4.parseStatement,parseStatements=$__4.parseStatements,$__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/ProperTailCallTransformer.js")),AnonBlock=$__5.AnonBlock,FunctionDeclaration=$__5.FunctionDeclaration,FunctionExpression=$__5.FunctionExpression,ProperTailCallTransformer=function($__super){function ProperTailCallTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(ProperTailCallTransformer).call(this,identifierGenerator,reporter,options),this.inBlock_=!1}return $traceurRuntime.createClass(ProperTailCallTransformer,{transformFunctionDeclaration:function(tree){if(tree=$traceurRuntime.superGet(this,ProperTailCallTransformer.prototype,"transformFunctionDeclaration").call(this,tree),null!==tree.functionKind)return tree;var nameIdExpression=id(tree.name.identifierToken),setupFlagExpression=parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.initTailRecursiveFunction(",")"]),nameIdExpression),funcDecl=this.transformFunction_(tree,FunctionDeclaration);if(funcDecl===tree)return tree;var tmpVar=id(this.inBlock_?this.getTempIdentifier():this.addTempVar(setupFlagExpression));return this.inBlock_?new AnonBlock(null,[funcDecl,parseStatement($traceurRuntime.getTemplateObject(["var "," = ",";"]),tmpVar,setupFlagExpression)]):funcDecl},transformFunctionExpression:function(tree){if(tree=$traceurRuntime.superGet(this,ProperTailCallTransformer.prototype,"transformFunctionExpression").call(this,tree),tree.functionKind)return tree;var functionExpression=this.transformFunction_(tree,FunctionExpression);return functionExpression===tree?tree:parseExpression($traceurRuntime.getTemplateObject(["\n        $traceurRuntime.initTailRecursiveFunction(",")"]),functionExpression)},transformFunction_:function(tree,constructor){var body=RewriteTailCallsTransformer.transform(this,tree.body);if(body===tree.body)return tree;var innerFunction=(id(this.getTempIdentifier()),createFunctionExpression(tree.parameterList,body)),outerBody=createFunctionBody(parseStatements($traceurRuntime.getTemplateObject(["\n        return $traceurRuntime.call(",", this, arguments);"]),innerFunction));return new constructor(tree.location,tree.name,tree.functionKind,tree.parameterList,tree.typeAnnotation,tree.annotations,outerBody)},transformBlock:function(tree){var inBlock=this.inBlock_;this.inBlock_=!0;var rv=$traceurRuntime.superGet(this,ProperTailCallTransformer.prototype,"transformBlock").call(this,tree);return this.inBlock_=inBlock,rv}},{},$__super)}(TempVarTransformer);return{get ProperTailCallTransformer(){return ProperTailCallTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/PropertyNameShorthandTransformer.js",[],function(){"use strict";var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/PropertyNameShorthandTransformer.js")),IdentifierExpression=$__1.IdentifierExpression,LiteralPropertyName=$__1.LiteralPropertyName,PropertyNameAssignment=$__1.PropertyNameAssignment,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/PropertyNameShorthandTransformer.js")).ParseTreeTransformer,PropertyNameShorthandTransformer=function($__super){function PropertyNameShorthandTransformer(){$traceurRuntime.superConstructor(PropertyNameShorthandTransformer).apply(this,arguments)}return $traceurRuntime.createClass(PropertyNameShorthandTransformer,{transformPropertyNameShorthand:function(tree){return new PropertyNameAssignment(tree.location,new LiteralPropertyName(tree.location,tree.name),new IdentifierExpression(tree.location,tree.name))}},{},$__super)}(ParseTreeTransformer);return{get PropertyNameShorthandTransformer(){return PropertyNameShorthandTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/outputgeneration/regexpuRewritePattern.js",[],function(){"use strict";function getCharacterClassEscapeSet(character){return unicode?ignoreCase?ESCAPE_SETS.UNICODE_IGNORE_CASE[character]:ESCAPE_SETS.UNICODE[character]:ESCAPE_SETS.REGULAR[character]}function has(object,property){return hasOwnProperty.call(object,property)}function assign(target,source){for(var key in source)target[key]=source[key]}function update(item,pattern){var tree=parse(pattern,"");switch(tree.type){case"characterClass":case"group":case"value":break;default:tree=wrap(tree,pattern)}assign(item,tree)}function wrap(tree,pattern){return{type:"group",behavior:"ignore",body:[tree],raw:"(?:"+pattern+")"}}function caseFold(codePoint){return!!has(iuMappings,codePoint)&&iuMappings[codePoint]}function processCharacterClass(characterClassItem){var set=regenerate();characterClassItem.body.forEach(function(item){switch(item.type){case"value":if(set.add(item.codePoint),ignoreCase&&unicode){var folded=caseFold(item.codePoint);folded&&set.add(folded)}break;case"characterClassRange":var min=item.min.codePoint,max=item.max.codePoint;set.addRange(min,max),ignoreCase&&unicode&&set.iuAddRange(min,max);break;case"characterClassEscape":set.add(getCharacterClassEscapeSet(item.value));break;default:throw Error("Unknown term type: "+item.type)}});return characterClassItem.negative&&(set=(unicode?UNICODE_SET:BMP_SET).clone().remove(set)),update(characterClassItem,""+set),characterClassItem}function processTerm(item){switch(item.type){case"dot":update(item,""+(unicode?DOT_SET_UNICODE:DOT_SET));break;case"characterClass":item=processCharacterClass(item);break;case"characterClassEscape":update(item,""+getCharacterClassEscapeSet(item.value));break;case"alternative":case"disjunction":case"group":case"quantifier":item.body=item.body.map(processTerm);break;case"value":var codePoint=item.codePoint,set=regenerate(codePoint);if(ignoreCase&&unicode){var folded=caseFold(codePoint);folded&&set.add(folded)}update(item,""+set);break;case"anchor":case"empty":case"group":case"reference":break;default:throw Error("Unknown term type: "+item.type)}return item}var modules={},module={},exports=module.exports={},require=function(id){return modules[id]};!function(root){var freeExports="object"==typeof exports&&exports,freeModule="object"==typeof module&&module&&module.exports==freeExports&&module,freeGlobal="object"==typeof global&&global;freeGlobal.global!==freeGlobal&&freeGlobal.window!==freeGlobal||(root=freeGlobal);var ERRORS={rangeOrder:"A range’s `stop` value must be greater than or equal to the `start` value.",codePointRange:"Invalid code point value. Code points range from U+000000 to U+10FFFF."},HIGH_SURROGATE_MIN=55296,HIGH_SURROGATE_MAX=56319,LOW_SURROGATE_MIN=56320,LOW_SURROGATE_MAX=57343,regexNull=/\\x00([^0123456789]|$)/g,object={},hasOwnProperty=object.hasOwnProperty,extend=function(destination,source){var key;for(key in source)hasOwnProperty.call(source,key)&&(destination[key]=source[key]);return destination},forEach=function(array,callback){for(var index=-1,length=array.length;++index<length;)callback(array[index],index)},toString=object.toString,isArray=function(value){return"[object Array]"==toString.call(value)},isNumber=function(value){return"number"==typeof value||"[object Number]"==toString.call(value)},zeroes="0000",pad=function(number,totalCharacters){var string=number+"";return string.length<totalCharacters?(zeroes+string).slice(-totalCharacters):string},hex=function(number){return(+number).toString(16).toUpperCase()},slice=[].slice,dataFromCodePoints=function(codePoints){for(var tmp,index=-1,length=codePoints.length,max=length-1,result=[],isStart=!0,previous=0;++index<length;)if(tmp=codePoints[index],isStart)result.push(tmp),previous=tmp,isStart=!1;else if(tmp==previous+1){if(index!=max){previous=tmp;continue}isStart=!0,result.push(tmp+1)}else result.push(previous+1,tmp),previous=tmp;return isStart||result.push(tmp+1),result},dataRemove=function(data,codePoint){for(var start,end,index=0,length=data.length;index<length;){if(start=data[index],end=data[index+1],codePoint>=start&&codePoint<end)return codePoint==start?end==start+1?(data.splice(index,2),data):(data[index]=codePoint+1,data):codePoint==end-1?(data[index+1]=codePoint,data):(data.splice(index,2,start,codePoint,codePoint+1,end),data);index+=2}return data},dataRemoveRange=function(data,rangeStart,rangeEnd){if(rangeEnd<rangeStart)throw Error(ERRORS.rangeOrder);for(var start,end,index=0;index<data.length;){if(start=data[index],end=data[index+1]-1,start>rangeEnd)return data;if(rangeStart<=start&&rangeEnd>=end)data.splice(index,2);else{if(rangeStart>=start&&rangeEnd<end)return rangeStart==start?(data[index]=rangeEnd+1,data[index+1]=end+1,data):(data.splice(index,2,start,rangeStart,rangeEnd+1,end+1),data);if(rangeStart>=start&&rangeStart<=end)data[index+1]=rangeStart;else if(rangeEnd>=start&&rangeEnd<=end)return data[index]=rangeEnd+1,data;index+=2}}return data},dataAdd=function(data,codePoint){var start,end,index=0,lastIndex=null,length=data.length;if(codePoint<0||codePoint>1114111)throw RangeError(ERRORS.codePointRange);for(;index<length;){if(start=data[index],end=data[index+1],codePoint>=start&&codePoint<end)return data;if(codePoint==start-1)return data[index]=codePoint,data;if(start>codePoint)return data.splice(null!=lastIndex?lastIndex+2:0,0,codePoint,codePoint+1),data;if(codePoint==end)return codePoint+1==data[index+2]?(data.splice(index,4,start,data[index+3]),data):(data[index+1]=codePoint+1,data);lastIndex=index,index+=2}return data.push(codePoint,codePoint+1),data},dataAddData=function(dataA,dataB){for(var start,end,index=0,data=dataA.slice(),length=dataB.length;index<length;)start=dataB[index],end=dataB[index+1]-1,data=start==end?dataAdd(data,start):dataAddRange(data,start,end),index+=2;return data},dataRemoveData=function(dataA,dataB){for(var start,end,index=0,data=dataA.slice(),length=dataB.length;index<length;)start=dataB[index],end=dataB[index+1]-1,data=start==end?dataRemove(data,start):dataRemoveRange(data,start,end),index+=2;return data},dataAddRange=function(data,rangeStart,rangeEnd){if(rangeEnd<rangeStart)throw Error(ERRORS.rangeOrder);if(rangeStart<0||rangeStart>1114111||rangeEnd<0||rangeEnd>1114111)throw RangeError(ERRORS.codePointRange);for(var start,end,index=0,added=!1,length=data.length;index<length;){if(start=data[index],end=data[index+1],added){if(start==rangeEnd+1)return data.splice(index-1,2),data;if(start>rangeEnd)return data;start>=rangeStart&&start<=rangeEnd&&(end>rangeStart&&end-1<=rangeEnd?(data.splice(index,2),index-=2):(data.splice(index-1,2),index-=2))}else{if(start==rangeEnd+1)return data[index]=rangeStart,data;if(start>rangeEnd)return data.splice(index,0,rangeStart,rangeEnd+1),data;if(rangeStart>=start&&rangeStart<end&&rangeEnd+1<=end)return data;rangeStart>=start&&rangeStart<end||end==rangeStart?(data[index+1]=rangeEnd+1,added=!0):rangeStart<=start&&rangeEnd+1>=end&&(data[index]=rangeStart,data[index+1]=rangeEnd+1,added=!0)}index+=2}return added||data.push(rangeStart,rangeEnd+1),data},dataContains=function(data,codePoint){var index=0,length=data.length,start=data[index],end=data[length-1];if(length>=2&&(codePoint<start||codePoint>end))return!1;for(;index<length;){if(start=data[index],end=data[index+1],codePoint>=start&&codePoint<end)return!0;index+=2}return!1},dataIntersection=function(data,codePoints){for(var codePoint,index=0,length=codePoints.length,result=[];index<length;)codePoint=codePoints[index],dataContains(data,codePoint)&&result.push(codePoint),++index;return dataFromCodePoints(result)},dataIsEmpty=function(data){return!data.length},dataIsSingleton=function(data){return 2==data.length&&data[0]+1==data[1]},dataToArray=function(data){for(var start,end,index=0,result=[],length=data.length;index<length;){for(start=data[index],end=data[index+1];start<end;)result.push(start),++start;index+=2}return result},floor=Math.floor,highSurrogate=function(codePoint){return parseInt(floor((codePoint-65536)/1024)+HIGH_SURROGATE_MIN,10)},lowSurrogate=function(codePoint){return parseInt((codePoint-65536)%1024+LOW_SURROGATE_MIN,10)},stringFromCharCode=String.fromCharCode,codePointToString=function(codePoint){var string;return string=9==codePoint?"\\t":10==codePoint?"\\n":12==codePoint?"\\f":13==codePoint?"\\r":92==codePoint?"\\\\":36==codePoint||codePoint>=40&&codePoint<=43||45==codePoint||46==codePoint||63==codePoint||codePoint>=91&&codePoint<=94||codePoint>=123&&codePoint<=125?"\\"+stringFromCharCode(codePoint):codePoint>=32&&codePoint<=126?stringFromCharCode(codePoint):codePoint<=255?"\\x"+pad(hex(codePoint),2):"\\u"+pad(hex(codePoint),4)},symbolToCodePoint=function(symbol){var second,length=symbol.length,first=symbol.charCodeAt(0);return first>=HIGH_SURROGATE_MIN&&first<=HIGH_SURROGATE_MAX&&length>1?(second=symbol.charCodeAt(1),1024*(first-HIGH_SURROGATE_MIN)+second-LOW_SURROGATE_MIN+65536):first},createBMPCharacterClasses=function(data){var start,end,result="",index=0,length=data.length;if(dataIsSingleton(data))return codePointToString(data[0]);for(;index<length;)start=data[index],end=data[index+1]-1,result+=start==end?codePointToString(start):start+1==end?codePointToString(start)+codePointToString(end):codePointToString(start)+"-"+codePointToString(end),index+=2;return"["+result+"]"},splitAtBMP=function(data){for(var start,end,loneHighSurrogates=[],loneLowSurrogates=[],bmp=[],astral=[],index=0,length=data.length;index<length;)start=data[index],end=data[index+1]-1,start<HIGH_SURROGATE_MIN?(end<HIGH_SURROGATE_MIN&&bmp.push(start,end+1),end>=HIGH_SURROGATE_MIN&&end<=HIGH_SURROGATE_MAX&&(bmp.push(start,HIGH_SURROGATE_MIN),loneHighSurrogates.push(HIGH_SURROGATE_MIN,end+1)),end>=LOW_SURROGATE_MIN&&end<=LOW_SURROGATE_MAX&&(bmp.push(start,HIGH_SURROGATE_MIN),loneHighSurrogates.push(HIGH_SURROGATE_MIN,HIGH_SURROGATE_MAX+1),loneLowSurrogates.push(LOW_SURROGATE_MIN,end+1)),end>LOW_SURROGATE_MAX&&(bmp.push(start,HIGH_SURROGATE_MIN),loneHighSurrogates.push(HIGH_SURROGATE_MIN,HIGH_SURROGATE_MAX+1),loneLowSurrogates.push(LOW_SURROGATE_MIN,LOW_SURROGATE_MAX+1),end<=65535?bmp.push(LOW_SURROGATE_MAX+1,end+1):(bmp.push(LOW_SURROGATE_MAX+1,65536),astral.push(65536,end+1)))):start>=HIGH_SURROGATE_MIN&&start<=HIGH_SURROGATE_MAX?(end>=HIGH_SURROGATE_MIN&&end<=HIGH_SURROGATE_MAX&&loneHighSurrogates.push(start,end+1),end>=LOW_SURROGATE_MIN&&end<=LOW_SURROGATE_MAX&&(loneHighSurrogates.push(start,HIGH_SURROGATE_MAX+1),loneLowSurrogates.push(LOW_SURROGATE_MIN,end+1)),end>LOW_SURROGATE_MAX&&(loneHighSurrogates.push(start,HIGH_SURROGATE_MAX+1),loneLowSurrogates.push(LOW_SURROGATE_MIN,LOW_SURROGATE_MAX+1),end<=65535?bmp.push(LOW_SURROGATE_MAX+1,end+1):(bmp.push(LOW_SURROGATE_MAX+1,65536),astral.push(65536,end+1)))):start>=LOW_SURROGATE_MIN&&start<=LOW_SURROGATE_MAX?(end>=LOW_SURROGATE_MIN&&end<=LOW_SURROGATE_MAX&&loneLowSurrogates.push(start,end+1),end>LOW_SURROGATE_MAX&&(loneLowSurrogates.push(start,LOW_SURROGATE_MAX+1),end<=65535?bmp.push(LOW_SURROGATE_MAX+1,end+1):(bmp.push(LOW_SURROGATE_MAX+1,65536),astral.push(65536,end+1)))):start>LOW_SURROGATE_MAX&&start<=65535?end<=65535?bmp.push(start,end+1):(bmp.push(start,65536),astral.push(65536,end+1)):astral.push(start,end+1),index+=2;return{loneHighSurrogates:loneHighSurrogates,loneLowSurrogates:loneLowSurrogates,bmp:bmp,astral:astral}},optimizeSurrogateMappings=function(surrogateMappings){for(var mapping,nextMapping,highSurrogates,lowSurrogates,nextHighSurrogates,nextLowSurrogates,result=[],tmpLow=[],addLow=!1,index=-1,length=surrogateMappings.length;++index<length;)if(mapping=surrogateMappings[index],nextMapping=surrogateMappings[index+1]){for(highSurrogates=mapping[0],lowSurrogates=mapping[1],nextHighSurrogates=nextMapping[0],nextLowSurrogates=nextMapping[1],tmpLow=lowSurrogates;nextHighSurrogates&&highSurrogates[0]==nextHighSurrogates[0]&&highSurrogates[1]==nextHighSurrogates[1];)tmpLow=dataIsSingleton(nextLowSurrogates)?dataAdd(tmpLow,nextLowSurrogates[0]):dataAddRange(tmpLow,nextLowSurrogates[0],nextLowSurrogates[1]-1),++index,mapping=surrogateMappings[index],highSurrogates=mapping[0],lowSurrogates=mapping[1],nextMapping=surrogateMappings[index+1],nextHighSurrogates=nextMapping&&nextMapping[0],nextLowSurrogates=nextMapping&&nextMapping[1],addLow=!0;result.push([highSurrogates,addLow?tmpLow:lowSurrogates]),addLow=!1}else result.push(mapping);return optimizeByLowSurrogates(result)},optimizeByLowSurrogates=function(surrogateMappings){if(1==surrogateMappings.length)return surrogateMappings;for(var index=-1,innerIndex=-1;++index<surrogateMappings.length;){var mapping=surrogateMappings[index],lowSurrogates=mapping[1],lowSurrogateStart=lowSurrogates[0],lowSurrogateEnd=lowSurrogates[1];for(innerIndex=index;++innerIndex<surrogateMappings.length;){var otherMapping=surrogateMappings[innerIndex],otherLowSurrogates=otherMapping[1],otherLowSurrogateStart=otherLowSurrogates[0],otherLowSurrogateEnd=otherLowSurrogates[1];lowSurrogateStart==otherLowSurrogateStart&&lowSurrogateEnd==otherLowSurrogateEnd&&(dataIsSingleton(otherMapping[0])?mapping[0]=dataAdd(mapping[0],otherMapping[0][0]):mapping[0]=dataAddRange(mapping[0],otherMapping[0][0],otherMapping[0][1]-1),surrogateMappings.splice(innerIndex,1),--innerIndex)}}return surrogateMappings},surrogateSet=function(data){if(!data.length)return[];
for(var start,end,startHigh,startLow,endHigh,endLow,index=0,prevStartHigh=0,prevEndHigh=0,surrogateMappings=[],length=data.length;index<length;){start=data[index],end=data[index+1]-1,startHigh=highSurrogate(start),startLow=lowSurrogate(start),endHigh=highSurrogate(end),endLow=lowSurrogate(end);var startsWithLowestLowSurrogate=startLow==LOW_SURROGATE_MIN,endsWithHighestLowSurrogate=endLow==LOW_SURROGATE_MAX,complete=!1;startHigh==endHigh||startsWithLowestLowSurrogate&&endsWithHighestLowSurrogate?(surrogateMappings.push([[startHigh,endHigh+1],[startLow,endLow+1]]),complete=!0):surrogateMappings.push([[startHigh,startHigh+1],[startLow,LOW_SURROGATE_MAX+1]]),!complete&&startHigh+1<endHigh&&(endsWithHighestLowSurrogate?(surrogateMappings.push([[startHigh+1,endHigh+1],[LOW_SURROGATE_MIN,endLow+1]]),complete=!0):surrogateMappings.push([[startHigh+1,endHigh],[LOW_SURROGATE_MIN,LOW_SURROGATE_MAX+1]])),complete||surrogateMappings.push([[endHigh,endHigh+1],[LOW_SURROGATE_MIN,endLow+1]]),prevStartHigh=startHigh,prevEndHigh=endHigh,index+=2}return optimizeSurrogateMappings(surrogateMappings)},createSurrogateCharacterClasses=function(surrogateMappings){var result=[];return forEach(surrogateMappings,function(surrogateMapping){var highSurrogates=surrogateMapping[0],lowSurrogates=surrogateMapping[1];result.push(createBMPCharacterClasses(highSurrogates)+createBMPCharacterClasses(lowSurrogates))}),result.join("|")},createCharacterClassesFromData=function(data,bmpOnly){var result=[],parts=splitAtBMP(data),loneHighSurrogates=parts.loneHighSurrogates,loneLowSurrogates=parts.loneLowSurrogates,bmp=parts.bmp,astral=parts.astral,hasLoneHighSurrogates=(!dataIsEmpty(parts.astral),!dataIsEmpty(loneHighSurrogates)),hasLoneLowSurrogates=!dataIsEmpty(loneLowSurrogates),surrogateMappings=surrogateSet(astral);return bmpOnly&&(bmp=dataAddData(bmp,loneHighSurrogates),hasLoneHighSurrogates=!1,bmp=dataAddData(bmp,loneLowSurrogates),hasLoneLowSurrogates=!1),dataIsEmpty(bmp)||result.push(createBMPCharacterClasses(bmp)),surrogateMappings.length&&result.push(createSurrogateCharacterClasses(surrogateMappings)),hasLoneHighSurrogates&&result.push(createBMPCharacterClasses(loneHighSurrogates)+"(?![\\uDC00-\\uDFFF])"),hasLoneLowSurrogates&&result.push("(?:[^\\uD800-\\uDBFF]|^)"+createBMPCharacterClasses(loneLowSurrogates)),result.join("|")},regenerate=function(value){return arguments.length>1&&(value=slice.call(arguments)),this instanceof regenerate?(this.data=[],value?this.add(value):this):(new regenerate).add(value)};regenerate.version="1.2.0";var proto=regenerate.prototype;extend(proto,{add:function(value){var $this=this;return null==value?$this:value instanceof regenerate?($this.data=dataAddData($this.data,value.data),$this):(arguments.length>1&&(value=slice.call(arguments)),isArray(value)?(forEach(value,function(item){$this.add(item)}),$this):($this.data=dataAdd($this.data,isNumber(value)?value:symbolToCodePoint(value)),$this))},remove:function(value){var $this=this;return null==value?$this:value instanceof regenerate?($this.data=dataRemoveData($this.data,value.data),$this):(arguments.length>1&&(value=slice.call(arguments)),isArray(value)?(forEach(value,function(item){$this.remove(item)}),$this):($this.data=dataRemove($this.data,isNumber(value)?value:symbolToCodePoint(value)),$this))},addRange:function(start,end){var $this=this;return $this.data=dataAddRange($this.data,isNumber(start)?start:symbolToCodePoint(start),isNumber(end)?end:symbolToCodePoint(end)),$this},removeRange:function(start,end){var $this=this,startCodePoint=isNumber(start)?start:symbolToCodePoint(start),endCodePoint=isNumber(end)?end:symbolToCodePoint(end);return $this.data=dataRemoveRange($this.data,startCodePoint,endCodePoint),$this},intersection:function(argument){var $this=this,array=argument instanceof regenerate?dataToArray(argument.data):argument;return $this.data=dataIntersection($this.data,array),$this},contains:function(codePoint){return dataContains(this.data,isNumber(codePoint)?codePoint:symbolToCodePoint(codePoint))},clone:function(){var set=new regenerate;return set.data=this.data.slice(0),set},toString:function(options){var result=createCharacterClassesFromData(this.data,!!options&&options.bmpOnly);return result.replace(regexNull,"\\0$1")},toRegExp:function(flags){return RegExp(""+this,flags||"")},valueOf:function(){return dataToArray(this.data)}}),proto.toArray=proto.valueOf,"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return regenerate}):freeExports&&!freeExports.nodeType?freeModule?freeModule.exports=regenerate:freeExports.regenerate=regenerate:root.regenerate=regenerate}(this),modules.regenerate=module.exports||window.regenerate,function(){function fromCodePoint(){var highSurrogate,lowSurrogate,MAX_SIZE=16384,codeUnits=[],index=-1,length=arguments.length;if(!length)return"";for(var result="";++index<length;){var codePoint=+arguments[index];if(!isFinite(codePoint)||codePoint<0||codePoint>1114111||floor(codePoint)!=codePoint)throw RangeError("Invalid code point: "+codePoint);codePoint<=65535?codeUnits.push(codePoint):(codePoint-=65536,highSurrogate=(codePoint>>10)+55296,lowSurrogate=codePoint%1024+56320,codeUnits.push(highSurrogate,lowSurrogate)),(index+1==length||codeUnits.length>MAX_SIZE)&&(result+=stringFromCharCode.apply(null,codeUnits),codeUnits.length=0)}return result}function assertType(type,expected){if(expected.indexOf("|")==-1){if(type==expected)return;throw Error("Invalid node type: "+type)}if(expected=assertType.hasOwnProperty(expected)?assertType[expected]:assertType[expected]=RegExp("^(?:"+expected+")$"),!expected.test(type))throw Error("Invalid node type: "+type)}function generate(node){var type=node.type;if(generate.hasOwnProperty(type)&&"function"==typeof generate[type])return generate[type](node);throw Error("Invalid node type: "+type)}function generateAlternative(node){assertType(node.type,"alternative");var terms=node.body,length=terms?terms.length:0;if(1==length)return generateTerm(terms[0]);for(var i=-1,result="";++i<length;)result+=generateTerm(terms[i]);return result}function generateAnchor(node){switch(assertType(node.type,"anchor"),node.kind){case"start":return"^";case"end":return"$";case"boundary":return"\\b";case"not-boundary":return"\\B";default:throw Error("Invalid assertion")}}function generateAtom(node){return assertType(node.type,"anchor|characterClass|characterClassEscape|dot|group|reference|value"),generate(node)}function generateCharacterClass(node){assertType(node.type,"characterClass");var classRanges=node.body,length=classRanges?classRanges.length:0,i=-1,result="[";for(node.negative&&(result+="^");++i<length;)result+=generateClassAtom(classRanges[i]);return result+="]"}function generateCharacterClassEscape(node){return assertType(node.type,"characterClassEscape"),"\\"+node.value}function generateCharacterClassRange(node){assertType(node.type,"characterClassRange");var min=node.min,max=node.max;if("characterClassRange"==min.type||"characterClassRange"==max.type)throw Error("Invalid character class range");return generateClassAtom(min)+"-"+generateClassAtom(max)}function generateClassAtom(node){return assertType(node.type,"anchor|characterClassEscape|characterClassRange|dot|value"),generate(node)}function generateDisjunction(node){assertType(node.type,"disjunction");var body=node.body,length=body?body.length:0;if(0==length)throw Error("No body");if(1==length)return generate(body[0]);for(var i=-1,result="";++i<length;)0!=i&&(result+="|"),result+=generate(body[i]);return result}function generateDot(node){return assertType(node.type,"dot"),"."}function generateGroup(node){assertType(node.type,"group");var result="(";switch(node.behavior){case"normal":break;case"ignore":result+="?:";break;case"lookahead":result+="?=";break;case"negativeLookahead":result+="?!";break;default:throw Error("Invalid behaviour: "+node.behaviour)}var body=node.body,length=body?body.length:0;if(1==length)result+=generate(body[0]);else for(var i=-1;++i<length;)result+=generate(body[i]);return result+=")"}function generateQuantifier(node){assertType(node.type,"quantifier");var quantifier="",min=node.min,max=node.max;switch(max){case void 0:case null:switch(min){case 0:quantifier="*";break;case 1:quantifier="+";break;default:quantifier="{"+min+",}"}break;default:quantifier=min==max?"{"+min+"}":0==min&&1==max?"?":"{"+min+","+max+"}"}return node.greedy||(quantifier+="?"),generateAtom(node.body[0])+quantifier}function generateReference(node){return assertType(node.type,"reference"),"\\"+node.matchIndex}function generateTerm(node){return assertType(node.type,"anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|value"),generate(node)}function generateValue(node){assertType(node.type,"value");var kind=node.kind,codePoint=node.codePoint;switch(kind){case"controlLetter":return"\\c"+fromCodePoint(codePoint+64);case"hexadecimalEscape":return"\\x"+("00"+codePoint.toString(16).toUpperCase()).slice(-2);case"identifier":return"\\"+fromCodePoint(codePoint);case"null":return"\\"+codePoint;case"octal":return"\\"+codePoint.toString(8);case"singleEscape":switch(codePoint){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 11:return"\\v";case 12:return"\\f";case 13:return"\\r";default:throw Error("Invalid codepoint: "+codePoint)}case"symbol":return fromCodePoint(codePoint);case"unicodeEscape":return"\\u"+("0000"+codePoint.toString(16).toUpperCase()).slice(-4);case"unicodeCodePointEscape":return"\\u{"+codePoint.toString(16).toUpperCase()+"}";default:throw Error("Unsupported node kind: "+kind)}}var objectTypes={"function":!0,object:!0},root=objectTypes[typeof window]&&window||this,freeExports=objectTypes[typeof exports]&&exports,freeModule=objectTypes[typeof module]&&module&&!module.nodeType&&module,freeGlobal=freeExports&&freeModule&&"object"==typeof global&&global;!freeGlobal||freeGlobal.global!==freeGlobal&&freeGlobal.window!==freeGlobal&&freeGlobal.self!==freeGlobal||(root=freeGlobal);var stringFromCharCode=String.fromCharCode,floor=Math.floor;generate.alternative=generateAlternative,generate.anchor=generateAnchor,generate.characterClass=generateCharacterClass,generate.characterClassEscape=generateCharacterClassEscape,generate.characterClassRange=generateCharacterClassRange,generate.disjunction=generateDisjunction,generate.dot=generateDot,generate.group=generateGroup,generate.quantifier=generateQuantifier,generate.reference=generateReference,generate.value=generateValue,"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return{generate:generate}}):freeExports&&freeModule?freeExports.generate=generate:root.regjsgen={generate:generate}}.call(this),modules.regjsgen={generate:exports.generate||window.regjsgen},function(){function parse(str,flags){function addRaw(node){return node.raw=str.substring(node.range[0],node.range[1]),node}function updateRawStart(node,start){return node.range[0]=start,addRaw(node)}function createAnchor(kind,rawLength){return addRaw({type:"anchor",kind:kind,range:[pos-rawLength,pos]})}function createValue(kind,codePoint,from,to){return addRaw({type:"value",kind:kind,codePoint:codePoint,range:[from,to]})}function createEscaped(kind,codePoint,value,fromOffset){return fromOffset=fromOffset||0,createValue(kind,codePoint,pos-(value.length+fromOffset),pos)}function createCharacter(matches){var _char=matches[0],first=_char.charCodeAt(0);if(hasUnicodeFlag){var second;if(1===_char.length&&first>=55296&&first<=56319&&(second=lookahead().charCodeAt(0),second>=56320&&second<=57343))return pos++,createValue("symbol",1024*(first-55296)+second-56320+65536,pos-2,pos)}return createValue("symbol",first,pos-1,pos)}function createDisjunction(alternatives,from,to){return addRaw({type:"disjunction",body:alternatives,range:[from,to]})}function createDot(){return addRaw({type:"dot",range:[pos-1,pos]})}function createCharacterClassEscape(value){return addRaw({type:"characterClassEscape",value:value,range:[pos-2,pos]})}function createReference(matchIndex){return addRaw({type:"reference",matchIndex:parseInt(matchIndex,10),range:[pos-1-matchIndex.length,pos]})}function createGroup(behavior,disjunction,from,to){return addRaw({type:"group",behavior:behavior,body:disjunction,range:[from,to]})}function createQuantifier(min,max,from,to){return null==to&&(from=pos-1,to=pos),addRaw({type:"quantifier",min:min,max:max,greedy:!0,body:null,range:[from,to]})}function createAlternative(terms,from,to){return addRaw({type:"alternative",body:terms,range:[from,to]})}function createCharacterClass(classRanges,negative,from,to){return addRaw({type:"characterClass",body:classRanges,negative:negative,range:[from,to]})}function createClassRange(min,max,from,to){return min.codePoint>max.codePoint&&bail("invalid range in character class",min.raw+"-"+max.raw,from,to),addRaw({type:"characterClassRange",min:min,max:max,range:[from,to]})}function flattenBody(body){return"alternative"===body.type?body.body:[body]}function incr(amount){amount=amount||1;var res=str.substring(pos,pos+amount);return pos+=amount||1,res}function skip(value){match(value)||bail("character",value)}function match(value){if(str.indexOf(value,pos)===pos)return incr(value.length)}function lookahead(){return str[pos]}function current(value){return str.indexOf(value,pos)===pos}function next(value){return str[pos+1]===value}function matchReg(regExp){var subStr=str.substring(pos),res=subStr.match(regExp);return res&&(res.range=[],res.range[0]=pos,incr(res[0].length),res.range[1]=pos),res}function parseDisjunction(){var res=[],from=pos;for(res.push(parseAlternative());match("|");)res.push(parseAlternative());return 1===res.length?res[0]:createDisjunction(res,from,pos)}function parseAlternative(){for(var term,res=[],from=pos;term=parseTerm();)res.push(term);return 1===res.length?res[0]:createAlternative(res,from,pos)}function parseTerm(){if(pos>=str.length||current("|")||current(")"))return null;var anchor=parseAnchor();if(anchor)return anchor;var atom=parseAtom();atom||bail("Expected atom");var quantifier=parseQuantifier()||!1;return quantifier?(quantifier.body=flattenBody(atom),updateRawStart(quantifier,atom.range[0]),quantifier):atom}function parseGroup(matchA,typeA,matchB,typeB){var type=null,from=pos;if(match(matchA))type=typeA;else{if(!match(matchB))return!1;type=typeB}var body=parseDisjunction();body||bail("Expected disjunction"),skip(")");var group=createGroup(type,flattenBody(body),from,pos);return"normal"==type&&firstIteration&&closedCaptureCounter++,group}function parseAnchor(){return match("^")?createAnchor("start",1):match("$")?createAnchor("end",1):match("\\b")?createAnchor("boundary",2):match("\\B")?createAnchor("not-boundary",2):parseGroup("(?=","lookahead","(?!","negativeLookahead")}function parseQuantifier(){var res,quantifier,min,max,from=pos;return match("*")?quantifier=createQuantifier(0):match("+")?quantifier=createQuantifier(1):match("?")?quantifier=createQuantifier(0,1):(res=matchReg(/^\{([0-9]+)\}/))?(min=parseInt(res[1],10),quantifier=createQuantifier(min,min,res.range[0],res.range[1])):(res=matchReg(/^\{([0-9]+),\}/))?(min=parseInt(res[1],10),quantifier=createQuantifier(min,void 0,res.range[0],res.range[1])):(res=matchReg(/^\{([0-9]+),([0-9]+)\}/))&&(min=parseInt(res[1],10),max=parseInt(res[2],10),min>max&&bail("numbers out of order in {} quantifier","",from,pos),quantifier=createQuantifier(min,max,res.range[0],res.range[1])),quantifier&&match("?")&&(quantifier.greedy=!1,quantifier.range[1]+=1),quantifier}function parseAtom(){var res;return(res=matchReg(/^[^^$\\.*+?(){[|]/))?createCharacter(res):match(".")?createDot():match("\\")?(res=parseAtomEscape(),res||bail("atomEscape"),res):(res=parseCharacterClass())?res:parseGroup("(?:","ignore","(","normal")}function parseUnicodeSurrogatePairEscape(firstEscape){if(hasUnicodeFlag){var first,second;if("unicodeEscape"==firstEscape.kind&&(first=firstEscape.codePoint)>=55296&&first<=56319&&current("\\")&&next("u")){var prevPos=pos;pos++;var secondEscape=parseClassEscape();"unicodeEscape"==secondEscape.kind&&(second=secondEscape.codePoint)>=56320&&second<=57343?(firstEscape.range[1]=secondEscape.range[1],firstEscape.codePoint=1024*(first-55296)+second-56320+65536,firstEscape.type="value",firstEscape.kind="unicodeCodePointEscape",addRaw(firstEscape)):pos=prevPos}}return firstEscape}function parseClassEscape(){return parseAtomEscape(!0)}function parseAtomEscape(insideCharacterClass){var res,from=pos;if(res=parseDecimalEscape())return res;if(insideCharacterClass){if(match("b"))return createEscaped("singleEscape",8,"\\b");match("B")&&bail("\\B not possible inside of CharacterClass","",from)}return res=parseCharacterEscape()}function parseDecimalEscape(){var res,match;if(res=matchReg(/^(?!0)\d+/)){match=res[0];var refIdx=parseInt(res[0],10);return refIdx<=closedCaptureCounter?createReference(res[0]):(backrefDenied.push(refIdx),incr(-res[0].length),(res=matchReg(/^[0-7]{1,3}/))?createEscaped("octal",parseInt(res[0],8),res[0],1):(res=createCharacter(matchReg(/^[89]/)),updateRawStart(res,res.range[0]-1)))}return(res=matchReg(/^[0-7]{1,3}/))?(match=res[0],/^0{1,3}$/.test(match)?createEscaped("null",0,"0",match.length+1):createEscaped("octal",parseInt(match,8),match,1)):!!(res=matchReg(/^[dDsSwW]/))&&createCharacterClassEscape(res[0])}function parseCharacterEscape(){var res;if(res=matchReg(/^[fnrtv]/)){var codePoint=0;switch(res[0]){case"t":codePoint=9;break;case"n":codePoint=10;break;case"v":codePoint=11;break;case"f":codePoint=12;break;case"r":codePoint=13}return createEscaped("singleEscape",codePoint,"\\"+res[0])}return(res=matchReg(/^c([a-zA-Z])/))?createEscaped("controlLetter",res[1].charCodeAt(0)%32,res[1],2):(res=matchReg(/^x([0-9a-fA-F]{2})/))?createEscaped("hexadecimalEscape",parseInt(res[1],16),res[1],2):(res=matchReg(/^u([0-9a-fA-F]{4})/))?parseUnicodeSurrogatePairEscape(createEscaped("unicodeEscape",parseInt(res[1],16),res[1],2)):hasUnicodeFlag&&(res=matchReg(/^u\{([0-9a-fA-F]+)\}/))?createEscaped("unicodeCodePointEscape",parseInt(res[1],16),res[1],4):parseIdentityEscape()}function isIdentifierPart(ch){var NonAsciiIdentifierPart=RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԯԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠ-ࢲࣤ-ॣ०-९ॱ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఀ-ఃఅ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಁ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲഁ-ഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟ෦-෯ෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤞᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧ᪰-᪽ᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶ᳸᳹ᴀ-᷵᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚝꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꧠ-ꧾꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︭︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]");return 36===ch||95===ch||ch>=65&&ch<=90||ch>=97&&ch<=122||ch>=48&&ch<=57||92===ch||ch>=128&&NonAsciiIdentifierPart.test(String.fromCharCode(ch))}function parseIdentityEscape(){var tmp,ZWJ="‌",ZWNJ="‍";return isIdentifierPart(lookahead())?match(ZWJ)?createEscaped("identifier",8204,ZWJ):match(ZWNJ)?createEscaped("identifier",8205,ZWNJ):null:(tmp=incr(),createEscaped("identifier",tmp.charCodeAt(0),tmp,1))}function parseCharacterClass(){var res,from=pos;return(res=matchReg(/^\[\^/))?(res=parseClassRanges(),skip("]"),createCharacterClass(res,!0,from,pos)):match("[")?(res=parseClassRanges(),skip("]"),createCharacterClass(res,!1,from,pos)):null}function parseClassRanges(){var res;return current("]")?[]:(res=parseNonemptyClassRanges(),res||bail("nonEmptyClassRanges"),res)}function parseHelperClassRanges(atom){var from,to,res;if(current("-")&&!next("]")){skip("-"),res=parseClassAtom(),res||bail("classAtom"),to=pos;var classRanges=parseClassRanges();return classRanges||bail("classRanges"),from=atom.range[0],"empty"===classRanges.type?[createClassRange(atom,res,from,to)]:[createClassRange(atom,res,from,to)].concat(classRanges)}return res=parseNonemptyClassRangesNoDash(),res||bail("nonEmptyClassRangesNoDash"),[atom].concat(res)}function parseNonemptyClassRanges(){var atom=parseClassAtom();return atom||bail("classAtom"),current("]")?[atom]:parseHelperClassRanges(atom)}function parseNonemptyClassRangesNoDash(){var res=parseClassAtom();return res||bail("classAtom"),current("]")?res:parseHelperClassRanges(res)}function parseClassAtom(){return match("-")?createCharacter("-"):parseClassAtomNoDash()}function parseClassAtomNoDash(){var res;return(res=matchReg(/^[^\\\]-]/))?createCharacter(res[0]):match("\\")?(res=parseClassEscape(),res||bail("classEscape"),parseUnicodeSurrogatePairEscape(res)):void 0}function bail(message,details,from,to){from=null==from?pos:from,to=null==to?from:to;var contextStart=Math.max(0,from-10),contextEnd=Math.min(to+10,str.length),context="    "+str.substring(contextStart,contextEnd),pointer="    "+Array(from-contextStart+1).join(" ")+"^";throw SyntaxError(message+" at position "+from+(details?": "+details:"")+"\n"+context+"\n"+pointer)}var backrefDenied=[],closedCaptureCounter=0,firstIteration=!0,hasUnicodeFlag=(flags||"").indexOf("u")!==-1,pos=0;str+="",""===str&&(str="(?:)");var result=parseDisjunction();result.range[1]!==str.length&&bail("Could not parse entire input - got stuck","",result.range[1]);for(var i=0;i<backrefDenied.length;i++)if(backrefDenied[i]<=closedCaptureCounter)return pos=0,firstIteration=!1,parseDisjunction();return result}var regjsparser={parse:parse};void 0!==module&&module.exports?module.exports=regjsparser:window.regjsparser=regjsparser}(),modules.regjsparser=module.exports||window.regjsparser,modules["./data/iu-mappings.json"]={75:8490,83:383,107:8490,115:383,181:924,197:8491,383:83,452:453,453:452,455:456,456:455,458:459,459:458,497:498,498:497,837:8126,914:976,917:1013,920:1012,921:8126,922:1008,924:181,928:982,929:1009,931:962,934:981,937:8486,962:931,976:914,977:1012,981:934,982:928,1008:922,1009:929,1012:[920,977],1013:917,7776:7835,7835:7776,8126:[837,921],8486:937,8490:75,8491:197,66560:66600,66561:66601,66562:66602,66563:66603,66564:66604,66565:66605,66566:66606,66567:66607,66568:66608,66569:66609,66570:66610,66571:66611,66572:66612,66573:66613,66574:66614,66575:66615,66576:66616,66577:66617,66578:66618,66579:66619,66580:66620,66581:66621,66582:66622,66583:66623,66584:66624,66585:66625,66586:66626,66587:66627,66588:66628,66589:66629,66590:66630,66591:66631,66592:66632,66593:66633,66594:66634,66595:66635,66596:66636,66597:66637,66598:66638,66599:66639,66600:66560,66601:66561,66602:66562,66603:66563,66604:66564,66605:66565,66606:66566,66607:66567,66608:66568,66609:66569,66610:66570,66611:66571,66612:66572,66613:66573,66614:66574,66615:66575,66616:66576,66617:66577,66618:66578,66619:66579,66620:66580,66621:66581,66622:66582,66623:66583,66624:66584,66625:66585,66626:66586,66627:66587,66628:66588,66629:66589,66630:66590,66631:66591,66632:66592,66633:66593,66634:66594,66635:66595,66636:66596,66637:66597,66638:66598,66639:66599,71840:71872,71841:71873,71842:71874,71843:71875,71844:71876,71845:71877,71846:71878,71847:71879,71848:71880,71849:71881,71850:71882,71851:71883,71852:71884,71853:71885,71854:71886,71855:71887,71856:71888,71857:71889,71858:71890,71859:71891,71860:71892,71861:71893,71862:71894,71863:71895,71864:71896,71865:71897,71866:71898,71867:71899,71868:71900,71869:71901,71870:71902,71871:71903,71872:71840,71873:71841,71874:71842,71875:71843,71876:71844,71877:71845,71878:71846,71879:71847,71880:71848,71881:71849,71882:71850,71883:71851,71884:71852,71885:71853,71886:71854,71887:71855,71888:71856,71889:71857,71890:71858,71891:71859,71892:71860,71893:71861,71894:71862,71895:71863,71896:71864,71897:71865,71898:71866,71899:71867,71900:71868,71901:71869,71902:71870,71903:71871};var regenerate=require("regenerate");exports.REGULAR={d:regenerate().addRange(48,57),D:regenerate().addRange(0,47).addRange(58,65535),s:regenerate(32,160,5760,6158,8239,8287,12288,65279).addRange(9,13).addRange(8192,8202).addRange(8232,8233),S:regenerate().addRange(0,8).addRange(14,31).addRange(33,159).addRange(161,5759).addRange(5761,6157).addRange(6159,8191).addRange(8203,8231).addRange(8234,8238).addRange(8240,8286).addRange(8288,12287).addRange(12289,65278).addRange(65280,65535),w:regenerate(95).addRange(48,57).addRange(65,90).addRange(97,122),W:regenerate(96).addRange(0,47).addRange(58,64).addRange(91,94).addRange(123,65535)},exports.UNICODE={d:regenerate().addRange(48,57),D:regenerate().addRange(0,47).addRange(58,1114111),s:regenerate(32,160,5760,6158,8239,8287,12288,65279).addRange(9,13).addRange(8192,8202).addRange(8232,8233),S:regenerate().addRange(0,8).addRange(14,31).addRange(33,159).addRange(161,5759).addRange(5761,6157).addRange(6159,8191).addRange(8203,8231).addRange(8234,8238).addRange(8240,8286).addRange(8288,12287).addRange(12289,65278).addRange(65280,1114111),w:regenerate(95).addRange(48,57).addRange(65,90).addRange(97,122),W:regenerate(96).addRange(0,47).addRange(58,64).addRange(91,94).addRange(123,1114111)},exports.UNICODE_IGNORE_CASE={d:regenerate().addRange(48,57),D:regenerate().addRange(0,47).addRange(58,1114111),s:regenerate(32,160,5760,6158,8239,8287,12288,65279).addRange(9,13).addRange(8192,8202).addRange(8232,8233),S:regenerate().addRange(0,8).addRange(14,31).addRange(33,159).addRange(161,5759).addRange(5761,6157).addRange(6159,8191).addRange(8203,8231).addRange(8234,8238).addRange(8240,8286).addRange(8288,12287).addRange(12289,65278).addRange(65280,1114111),w:regenerate(95,383,8490).addRange(48,57).addRange(65,90).addRange(97,122),W:regenerate(75,83,96).addRange(0,47).addRange(58,64).addRange(91,94).addRange(123,1114111)},modules["./data/character-class-escape-sets.js"]={REGULAR:exports.REGULAR,UNICODE:exports.UNICODE,UNICODE_IGNORE_CASE:exports.UNICODE_IGNORE_CASE};var generate=require("regjsgen").generate,parse=require("regjsparser").parse,regenerate=require("regenerate"),iuMappings=require("./data/iu-mappings.json"),ESCAPE_SETS=require("./data/character-class-escape-sets.js"),object={},hasOwnProperty=object.hasOwnProperty,UNICODE_SET=regenerate().addRange(0,1114111),BMP_SET=regenerate().addRange(0,65535),DOT_SET_UNICODE=UNICODE_SET.clone().remove(10,13,8232,8233),DOT_SET=DOT_SET_UNICODE.clone().intersection(BMP_SET);regenerate.prototype.iuAddRange=function(min,max){var $this=this;do{var folded=caseFold(min);folded&&$this.add(folded)}while(++min<=max);return $this};var ignoreCase=!1,unicode=!1;module.exports=function(pattern,flags){var tree=parse(pattern,flags);return ignoreCase=!!flags&&flags.indexOf("i")>-1,unicode=!!flags&&flags.indexOf("u")>-1,assign(tree,processTerm(tree)),generate(tree)};var regexpuRewritePattern=module.exports;return{get regexpuRewritePattern(){return regexpuRewritePattern}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/RegularExpressionTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/RegularExpressionTransformer.js")).ParseTreeTransformer,LiteralExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/RegularExpressionTransformer.js")).LiteralExpression,LiteralToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/LiteralToken.js","traceur@0.0.107/src/codegeneration/RegularExpressionTransformer.js")).LiteralToken,REGULAR_EXPRESSION=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/RegularExpressionTransformer.js")).REGULAR_EXPRESSION,regexpuRewritePattern=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../outputgeneration/regexpuRewritePattern.js","traceur@0.0.107/src/codegeneration/RegularExpressionTransformer.js")).regexpuRewritePattern,RegularExpressionTransformer=function($__super){function RegularExpressionTransformer(){$traceurRuntime.superConstructor(RegularExpressionTransformer).apply(this,arguments)}return $traceurRuntime.createClass(RegularExpressionTransformer,{transformLiteralExpression:function(tree){var token=tree.literalToken;if(token.type===REGULAR_EXPRESSION){var value=token.value,lastIndex=value.lastIndexOf("/"),pattern=value.slice(1,lastIndex),flags=value.slice(lastIndex+1);if(flags.indexOf("u")!==-1){var result="/"+regexpuRewritePattern(pattern,flags)+"/"+flags.replace("u","");return new LiteralExpression(tree.location,new LiteralToken(REGULAR_EXPRESSION,result,token.location))}}return tree}},{},$__super)}(ParseTreeTransformer);return{get RegularExpressionTransformer(){return RegularExpressionTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/RestParameterTransformer.js",[],function(){"use strict";function hasRestParameter(parameterList){var parameters=parameterList.parameters;return parameters.length>0&&parameters[parameters.length-1].isRestParameter()}function getRestParameterLiteralToken(parameterList){var parameters=parameterList.parameters;return parameters[parameters.length-1].parameter.identifier.identifierToken}var FormalParameterList=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/RestParameterTransformer.js")).FormalParameterList,ParameterTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParameterTransformer.js","traceur@0.0.107/src/codegeneration/RestParameterTransformer.js")).ParameterTransformer,createIdentifierToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/RestParameterTransformer.js")).createIdentifierToken,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/RestParameterTransformer.js")).parseStatement,RestParameterTransformer=function($__super){function RestParameterTransformer(){$traceurRuntime.superConstructor(RestParameterTransformer).apply(this,arguments)}return $traceurRuntime.createClass(RestParameterTransformer,{transformFormalParameterList:function(tree){var transformed=$traceurRuntime.superGet(this,RestParameterTransformer.prototype,"transformFormalParameterList").call(this,tree);if(hasRestParameter(transformed)){var loop,parametersWithoutRestParam=new FormalParameterList(transformed.location,transformed.parameters.slice(0,-1)),startIndex=transformed.parameters.length-1,i=createIdentifierToken(this.getTempIdentifier()),name=getRestParameterLiteralToken(transformed);return loop=startIndex?parseStatement($traceurRuntime.getTemplateObject(["\n            for (var "," = [], "," = ",";\n                 "," < arguments.length; ","++)\n              ","["," - ","] = arguments[","];"]),name,i,startIndex,i,i,name,i,startIndex,i):parseStatement($traceurRuntime.getTemplateObject(["\n            for (var "," = [], "," = 0;\n                 "," < arguments.length; ","++)\n              ","[","] = arguments[","];"]),name,i,i,i,name,i,i),this.parameterStatements.push(loop),parametersWithoutRestParam}return transformed}},{},$__super)}(ParameterTransformer);return{get RestParameterTransformer(){return RestParameterTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/SpreadTransformer.js",[],function(){"use strict";function hasSpreadMember(trees){return trees.some(function(tree){return tree&&tree.type===SPREAD_EXPRESSION})}var $__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/PredefinedName.js","traceur@0.0.107/src/codegeneration/SpreadTransformer.js")),APPLY=$__3.APPLY,BIND=$__3.BIND,FUNCTION=$__3.FUNCTION,PROTOTYPE=$__3.PROTOTYPE,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/SpreadTransformer.js")),MEMBER_EXPRESSION=$__4.MEMBER_EXPRESSION,MEMBER_LOOKUP_EXPRESSION=$__4.MEMBER_LOOKUP_EXPRESSION,SPREAD_EXPRESSION=$__4.SPREAD_EXPRESSION,TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/SpreadTransformer.js")).TempVarTransformer,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/SpreadTransformer.js")),createArgumentList=$__6.createArgumentList,createArrayLiteral=$__6.createArrayLiteral,createAssignmentExpression=$__6.createAssignmentExpression,createCallExpression=$__6.createCallExpression,createEmptyArgumentList=$__6.createEmptyArgumentList,createIdentifierExpression=$__6.createIdentifierExpression,createMemberExpression=$__6.createMemberExpression,createMemberLookupExpression=$__6.createMemberLookupExpression,createNewExpression=$__6.createNewExpression,createNullLiteral=$__6.createNullLiteral,createParenExpression=$__6.createParenExpression,createVoid0=$__6.createVoid0,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/SpreadTransformer.js")).parseExpression,SpreadTransformer=function($__super){
function SpreadTransformer(){$traceurRuntime.superConstructor(SpreadTransformer).apply(this,arguments)}return $traceurRuntime.createClass(SpreadTransformer,{createArrayFromElements_:function(elements){for(var lastArray,length=elements.length,args=[],i=0;i<length;i++)elements[i]&&elements[i].type===SPREAD_EXPRESSION?(lastArray&&(args.push(createArrayLiteral(lastArray)),lastArray=null),args.push(this.transformAny(elements[i].expression))):(lastArray||(lastArray=[]),lastArray.push(this.transformAny(elements[i])));return lastArray&&args.push(createArrayLiteral(lastArray)),parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.spread(",")"]),createArgumentList(args))},desugarCallSpread_:function(tree){var functionObject,contextObject,operand=this.transformAny(tree.operand);if(this.pushTempScope(),operand.type===MEMBER_EXPRESSION){var tempIdent=createIdentifierExpression(this.addTempVar()),parenExpression=createParenExpression(createAssignmentExpression(tempIdent,operand.operand)),memberName=operand.memberName;contextObject=tempIdent,functionObject=createMemberExpression(parenExpression,memberName)}else if(tree.operand.type===MEMBER_LOOKUP_EXPRESSION){var tempIdent$__1=createIdentifierExpression(this.addTempVar()),parenExpression$__2=createParenExpression(createAssignmentExpression(tempIdent$__1,operand.operand)),memberExpression=this.transformAny(operand.memberExpression);contextObject=tempIdent$__1,functionObject=createMemberLookupExpression(parenExpression$__2,memberExpression)}else contextObject=createVoid0(),functionObject=operand;this.popTempScope();var arrayExpression=this.createArrayFromElements_(tree.args.args);return createCallExpression(createMemberExpression(functionObject,APPLY),createArgumentList([contextObject,arrayExpression]))},desugarNewSpread_:function(tree){var arrayExpression=$traceurRuntime.spread([createNullLiteral()],tree.args.args);return arrayExpression=this.createArrayFromElements_(arrayExpression),createNewExpression(createParenExpression(createCallExpression(createMemberExpression(FUNCTION,PROTOTYPE,BIND,APPLY),createArgumentList([this.transformAny(tree.operand),arrayExpression]))),createEmptyArgumentList())},transformArrayLiteral:function(tree){return hasSpreadMember(tree.elements)?this.createArrayFromElements_(tree.elements):$traceurRuntime.superGet(this,SpreadTransformer.prototype,"transformArrayLiteral").call(this,tree)},transformCallExpression:function(tree){return hasSpreadMember(tree.args.args)?this.desugarCallSpread_(tree):$traceurRuntime.superGet(this,SpreadTransformer.prototype,"transformCallExpression").call(this,tree)},transformNewExpression:function(tree){return null!==tree.args&&hasSpreadMember(tree.args.args)?this.desugarNewSpread_(tree):$traceurRuntime.superGet(this,SpreadTransformer.prototype,"transformNewExpression").call(this,tree)}},{},$__super)}(TempVarTransformer);return{get SpreadTransformer(){return SpreadTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/SuperTransformer.js",[],function(){"use strict";function hasSuperMemberExpression(tree){return(tree.type===MEMBER_EXPRESSION||tree.type===MEMBER_LOOKUP_EXPRESSION)&&tree.operand.type===SUPER_EXPRESSION}var TempVarTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TempVarTransformer.js","traceur@0.0.107/src/codegeneration/SuperTransformer.js")).TempVarTransformer,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/SuperTransformer.js")),ArgumentList=$__6.ArgumentList,ClassDeclaration=$__6.ClassDeclaration,ClassExpression=$__6.ClassExpression,GetAccessor=$__6.GetAccessor,MemberExpression=$__6.MemberExpression,Method=$__6.Method,SetAccessor=$__6.SetAccessor,$__7=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/SuperTransformer.js")),MEMBER_EXPRESSION=$__7.MEMBER_EXPRESSION,MEMBER_LOOKUP_EXPRESSION=$__7.MEMBER_LOOKUP_EXPRESSION,SUPER_EXPRESSION=$__7.SUPER_EXPRESSION,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/SuperTransformer.js")),EQUAL=$__8.EQUAL,MINUS_MINUS=$__8.MINUS_MINUS,PLUS_PLUS=$__8.PLUS_PLUS,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/SuperTransformer.js")),createAssignmentExpression=$__9.createAssignmentExpression,createBindingIdentifier=$__9.createBindingIdentifier,createIdentifierExpression=$__9.createIdentifierExpression,createIdentifierToken=$__9.createIdentifierToken,createParenExpression=$__9.createParenExpression,createStringLiteral=$__9.createStringLiteral,createThisExpression=$__9.createThisExpression,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/SuperTransformer.js")).parseExpression,ExplodeExpressionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ExplodeExpressionTransformer.js","traceur@0.0.107/src/codegeneration/SuperTransformer.js")).ExplodeExpressionTransformer,State=function(){function State(transformer,home){this.transformer=transformer,this.home_=home,this.tempName=home?null:transformer.getTempIdentifier(),this.hasSuper=!1}return $traceurRuntime.createClass(State,{get home(){return this.hasSuper=!0,null===this.home_&&(this.home_=createIdentifierExpression(createIdentifierToken(this.tempName))),this.home_}},{})}(),ClassState=function($__super){function ClassState(transformer,tree){var home=null;null!==tree.name&&(home=createIdentifierExpression(tree.name.identifierToken)),$traceurRuntime.superConstructor(ClassState).call(this,transformer,home),this.name_=tree.name}return $traceurRuntime.createClass(ClassState,{get name(){return null!==this.name_?this.name_:this.hasSuper?createBindingIdentifier(this.home.identifierToken):null}},{},$__super)}(State),PrototypeState=function($__super){function PrototypeState(transformer,classState){$traceurRuntime.superConstructor(PrototypeState).call(this,transformer,null),this.classState=classState}return $traceurRuntime.createClass(PrototypeState,{get home(){var ident=this.classState.home;return new MemberExpression(null,ident,createIdentifierToken("prototype"))}},{},$__super)}(State),SuperTransformer=function($__super){function SuperTransformer(identifierGenerator,reporter,options){$traceurRuntime.superConstructor(SuperTransformer).call(this,identifierGenerator,reporter,options),this.stateStack_=[]}return $traceurRuntime.createClass(SuperTransformer,{pushState:function(state){this.stateStack_.push(state)},popState:function(){return this.stateStack_.pop()},peekState:function(){return this.stateStack_[this.stateStack_.length-1]},transformObjectLiteral:function(tree){var state=new State(this,null);this.pushState(state),this.pushState(state);var result=$traceurRuntime.superGet(this,SuperTransformer.prototype,"transformObjectLiteral").call(this,tree);return this.popState(),this.popState(),state.hasSuper?(this.registerTempVarName(state.tempName),createAssignmentExpression(state.home,result)):(this.releaseTempName(state.tempName),result)},transformClassExpression:function(tree){var superClass=this.transformAny(tree.superClass),annotations=this.transformList(tree.annotations),classState=new ClassState(this,tree),prototypeState=new PrototypeState(this,classState);this.pushState(classState),this.pushState(prototypeState);var elements=this.transformList(tree.elements);if(this.popState(),this.popState(),null===tree.name&&null!==tree.superClass)classState.home;else if(tree.superClass===superClass&&tree.elements===elements&&tree.annotations===annotations)return tree;return new ClassExpression(tree.location,classState.name,superClass,elements,tree.annotations,tree.typeParameters)},transformClassDeclaration:function(tree){var superClass=this.transformAny(tree.superClass),annotations=this.transformList(tree.annotations),classState=new ClassState(this,tree),prototypeState=new PrototypeState(this,classState);this.pushState(classState),this.pushState(prototypeState);var elements=this.transformList(tree.elements);return this.popState(),this.popState(),tree.superClass===superClass&&tree.elements===elements&&tree.annotations===annotations?tree:new ClassDeclaration(tree.location,tree.name,superClass,elements,tree.annotations,tree.typeParameters)},transformMethod:function(tree){var prototypeState,name=this.transformAny(tree.name);tree.isStatic&&(prototypeState=this.popState());var parameterList=this.transformAny(tree.parameterList),body=this.transformAny(tree.body);return tree.isStatic&&this.pushState(prototypeState),tree.name===name&&tree.parameterList===parameterList&&tree.body===body?tree:new Method(tree.location,tree.isStatic,tree.functionKind,name,parameterList,tree.typeAnnotation,tree.annotations,body,tree.debugName)},transformGetAccessor:function(tree){var prototypeState,name=this.transformAny(tree.name);tree.isStatic&&(prototypeState=this.popState());var body=this.transformAny(tree.body);return tree.isStatic&&this.pushState(prototypeState),tree.name===name&&tree.body===body?tree:new GetAccessor(tree.location,tree.isStatic,name,tree.typeAnnotation,tree.annotations,body)},transformSetAccessor:function(tree){var prototypeState,name=this.transformAny(tree.name);tree.isStatic&&(prototypeState=this.popState());var parameterList=this.transformAny(tree.parameterList),body=this.transformAny(tree.body);return tree.isStatic&&this.pushState(prototypeState),tree.name===name&&tree.parameterList===parameterList&&tree.body===body?tree:new SetAccessor(tree.location,tree.isStatic,name,parameterList,tree.annotations,body)},transformComputedPropertyName:function(tree){var s1=this.popState(),s2=this.popState(),result=$traceurRuntime.superGet(this,SuperTransformer.prototype,"transformComputedPropertyName").call(this,tree);return this.pushState(s2),this.pushState(s1),result},transformSuperExpression:function(tree){throw Error("unreachable")},transformMemberShared_:function(name){var home=this.peekState().home;return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.superGet(this, ",", ",")"]),home,name)},transformMemberExpression:function(tree){return tree.operand.type===SUPER_EXPRESSION?this.transformMemberShared_(tree.memberName.value):$traceurRuntime.superGet(this,SuperTransformer.prototype,"transformMemberExpression").call(this,tree)},transformMemberLookupExpression:function(tree){return tree.operand.type===SUPER_EXPRESSION?this.transformMemberShared_(tree.memberExpression):$traceurRuntime.superGet(this,SuperTransformer.prototype,"transformMemberLookupExpression").call(this,tree)},transformCallExpression:function(tree){var operand,args;if(tree.operand.type===SUPER_EXPRESSION){args=this.transformAny(tree.args),args=new ArgumentList(tree.location,$traceurRuntime.spread([createThisExpression()],args.args));var home=this.stateStack_[this.stateStack_.length-2].home;operand=parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.superConstructor(",")"]),home)}else{if(!hasSuperMemberExpression(tree.operand))return $traceurRuntime.superGet(this,SuperTransformer.prototype,"transformCallExpression").call(this,tree);operand=this.transformAny(tree.operand),args=this.transformAny(tree.args),args=new ArgumentList(args.location,$traceurRuntime.spread([createThisExpression()],args.args))}return parseExpression($traceurRuntime.getTemplateObject(["",".call(",")"]),operand,args)},transformBinaryExpression:function(tree){if(tree.operator.isAssignmentOperator()&&hasSuperMemberExpression(tree.left)){if(tree.operator.type!==EQUAL){var exploded=new ExplodeExpressionTransformer(this).transformAny(tree);return this.transformAny(createParenExpression(exploded))}var name=tree.left.type===MEMBER_LOOKUP_EXPRESSION?tree.left.memberExpression:createStringLiteral(tree.left.memberName.value),right=this.transformAny(tree.right),home=this.peekState().home;return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.superSet(this, ",", ",", ",")"]),home,name,right)}return $traceurRuntime.superGet(this,SuperTransformer.prototype,"transformBinaryExpression").call(this,tree)},transformUnaryExpression:function(tree){var transformed=this.transformIncrementDecrement_(tree);return transformed?transformed:$traceurRuntime.superGet(this,SuperTransformer.prototype,"transformUnaryExpression").call(this,tree)},transformPostfixExpression:function(tree){var transformed=this.transformIncrementDecrement_(tree);return transformed?transformed:$traceurRuntime.superGet(this,SuperTransformer.prototype,"transformPostfixExpression").call(this,tree)},transformIncrementDecrement_:function(tree){var operator=tree.operator,operand=tree.operand;if((operator.type===PLUS_PLUS||operator.type===MINUS_MINUS)&&hasSuperMemberExpression(operand)){var exploded=new ExplodeExpressionTransformer(this).transformAny(tree);return exploded!==tree&&(exploded=createParenExpression(exploded)),this.transformAny(exploded)}return null}},{},$__super)}(TempVarTransformer);return{get SuperTransformer(){return SuperTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/SymbolTransformer.js",[],function(){"use strict";function isEqualityExpression(tree){switch(tree.operator.type){case EQUAL_EQUAL:case EQUAL_EQUAL_EQUAL:case NOT_EQUAL:case NOT_EQUAL_EQUAL:return!0}return!1}function isTypeof(tree){return tree.type===UNARY_EXPRESSION&&tree.operator.type===TYPEOF}function isSafeTypeofString(tree){if(tree.type!==LITERAL_EXPRESSION)return!1;var value=tree.literalToken.processedValue;switch(value){case"symbol":case"object":return!1}return!0}var $__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/SymbolTransformer.js")),BinaryExpression=$__3.BinaryExpression,UnaryExpression=$__3.UnaryExpression,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/SymbolTransformer.js")),IDENTIFIER_EXPRESSION=$__4.IDENTIFIER_EXPRESSION,LITERAL_EXPRESSION=$__4.LITERAL_EXPRESSION,UNARY_EXPRESSION=$__4.UNARY_EXPRESSION,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/SymbolTransformer.js")).ParseTreeTransformer,$__6=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/SymbolTransformer.js")),EQUAL_EQUAL=$__6.EQUAL_EQUAL,EQUAL_EQUAL_EQUAL=$__6.EQUAL_EQUAL_EQUAL,NOT_EQUAL=$__6.NOT_EQUAL,NOT_EQUAL_EQUAL=$__6.NOT_EQUAL_EQUAL,TYPEOF=$__6.TYPEOF,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/SymbolTransformer.js")).parseExpression,SymbolTransformer=function($__super){function SymbolTransformer(){$traceurRuntime.superConstructor(SymbolTransformer).apply(this,arguments)}return $traceurRuntime.createClass(SymbolTransformer,{transformTypeofOperand_:function(tree){var operand=this.transformAny(tree.operand);return new UnaryExpression(tree.location,tree.operator,operand)},transformBinaryExpression:function(tree){if(isEqualityExpression(tree)){if(isTypeof(tree.left)&&isSafeTypeofString(tree.right)){var left=this.transformTypeofOperand_(tree.left),right=tree.right;return new BinaryExpression(tree.location,left,tree.operator,right)}if(isTypeof(tree.right)&&isSafeTypeofString(tree.left)){var left$__1=tree.left,right$__2=this.transformTypeofOperand_(tree.right);return new BinaryExpression(tree.location,left$__1,tree.operator,right$__2)}}return $traceurRuntime.superGet(this,SymbolTransformer.prototype,"transformBinaryExpression").call(this,tree)},transformUnaryExpression:function(tree){if(tree.operator.type!==TYPEOF)return $traceurRuntime.superGet(this,SymbolTransformer.prototype,"transformUnaryExpression").call(this,tree);var operand=this.transformAny(tree.operand),expression=this.getRuntimeTypeof(operand);return operand.type===IDENTIFIER_EXPRESSION?parseExpression($traceurRuntime.getTemplateObject(["(typeof "," === 'undefined' ?\n          'undefined' : ",")"]),operand,expression):expression},getRuntimeTypeof:function(operand){return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.typeof(",")"]),operand)}},{},$__super)}(ParseTreeTransformer);return{get SymbolTransformer(){return SymbolTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js",[],function(){"use strict";function createStringLiteralExpression(loc,str){return new LiteralExpression(loc,new LiteralToken(STRING,str,loc))}function createGetTemplateObject(elements){for(var cooked=[],raw=[],same=!0,i=0;i<elements.length;i+=2){var loc=elements[i].location,str=elements[i].value.value,cookedStr=toCookedString(str),rawStr=toRawString(str),cookedLiteral$__1=createStringLiteralExpression(loc,cookedStr);if(cooked.push(cookedLiteral$__1),cookedStr!==rawStr){same=!1;var rawLiteral=createStringLiteralExpression(loc,rawStr);raw.push(rawLiteral)}else raw.push(cookedLiteral$__1)}maybeAddEmptyStringAtEnd(elements,cooked);var cookedLiteral=createArrayLiteral(cooked),args=[cookedLiteral];if(!same){maybeAddEmptyStringAtEnd(elements,raw);var rawLiteral$__2=createArrayLiteral(raw);args.unshift(rawLiteral$__2)}return createCallExpression(createMemberExpression("$traceurRuntime","getTemplateObject"),createArgumentList(args))}function maybeAddEmptyStringAtEnd(elements,items){var length=elements.length;length&&elements[length-1].type===TEMPLATE_LITERAL_PORTION||items.push(createStringLiteralExpression(null,'""'))}function toRawString(str){return str=str.replace(/\r\n?/g,"\n"),str=JSON.stringify(str),str.replace(/\u2028|\u2029/g,function(c){switch(c){case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw Error("Not reachable")}})}function toCookedString(s){for(var c,c2,sb=['"'],i=0,k=1;i<s.length;)switch(c=s[i++]){case"\\":switch(c2=s[i++]){case"\n":case"\u2028":case"\u2029":break;case"\r":"\n"===s[i+1]&&i++;break;default:sb[k++]=c,sb[k++]=c2}break;case'"':sb[k++]='\\"';break;case"\n":sb[k++]="\\n";break;case"\r":"\n"===s[i]&&i++,sb[k++]="\\n";break;case"\t":sb[k++]="\\t";break;case"\f":sb[k++]="\\f";break;case"\b":sb[k++]="\\b";break;case"\u2028":sb[k++]="\\u2028";break;case"\u2029":sb[k++]="\\u2029";break;default:sb[k++]=c}return sb[k++]='"',sb.join("")}var $__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js")),BINARY_EXPRESSION=$__3.BINARY_EXPRESSION,COMMA_EXPRESSION=$__3.COMMA_EXPRESSION,CONDITIONAL_EXPRESSION=$__3.CONDITIONAL_EXPRESSION,TEMPLATE_LITERAL_PORTION=$__3.TEMPLATE_LITERAL_PORTION,$__4=($__3.TEMPLATE_LITERAL_EXPRESSION,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js"))),LiteralExpression=$__4.LiteralExpression,LiteralToken=($__4.NewExpression,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/LiteralToken.js","traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js")).LiteralToken),ParenTrait=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParenTrait.js","traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js")).ParenTrait,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js")).ParseTreeTransformer,$__8=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js")),PERCENT=$__8.PERCENT,PLUS=$__8.PLUS,SLASH=$__8.SLASH,STAR=$__8.STAR,STRING=$__8.STRING,$__9=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/TemplateLiteralTransformer.js")),createArgumentList=$__9.createArgumentList,createArrayLiteral=$__9.createArrayLiteral,createBinaryExpression=$__9.createBinaryExpression,createCallExpression=$__9.createCallExpression,createMemberExpression=$__9.createMemberExpression,createOperatorToken=$__9.createOperatorToken,createParenExpression=$__9.createParenExpression,TemplateLiteralTransformer=function($__super){function TemplateLiteralTransformer(){$traceurRuntime.superConstructor(TemplateLiteralTransformer).apply(this,arguments)}return $traceurRuntime.createClass(TemplateLiteralTransformer,{transformTemplateLiteralExpression:function(tree){if(!tree.operand)return this.createDefaultTemplateLiteral(tree);for(var operand=this.transformAny(tree.operand),elements=tree.elements,args=[createGetTemplateObject(tree.elements)],i=1;i<elements.length;i+=2)args.push(this.transformAny(elements[i]));return createCallExpression(operand,createArgumentList(args))},transformTemplateSubstitution:function(tree){var transformedTree=this.transformAny(tree.expression);switch(transformedTree.type){case BINARY_EXPRESSION:switch(transformedTree.operator.type){case STAR:case PERCENT:case SLASH:return transformedTree}return createParenExpression(transformedTree);case COMMA_EXPRESSION:case CONDITIONAL_EXPRESSION:return createParenExpression(transformedTree)}return transformedTree},transformTemplateLiteralPortion:function(tree){var str=toCookedString(tree.value.value);return createStringLiteralExpression(tree.location,str)},createDefaultTemplateLiteral:function(tree){var elements=tree.elements,length=elements.length;if(0===length)return createStringLiteralExpression(tree.location,'""');var firstNonEmpty=""===elements[0].value.value,binaryExpression=this.transformAny(elements[0]);if(1===length)return binaryExpression;for(var plusToken=createOperatorToken(PLUS),i=1;i<length;i++){var element=elements[i];if(element.type===TEMPLATE_LITERAL_PORTION){if(""===element.value.value)continue;firstNonEmpty&&2===i&&(binaryExpression=binaryExpression.right)}var transformedTree=this.transformAny(elements[i]);binaryExpression=createBinaryExpression(binaryExpression,plusToken,transformedTree)}return new createParenExpression(binaryExpression)}},{},$__super)}(ParenTrait(ParseTreeTransformer));return{get TemplateLiteralTransformer(){return TemplateLiteralTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/TypeToExpressionTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/TypeToExpressionTransformer.js")).ParseTreeTransformer,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/TypeToExpressionTransformer.js")),ArgumentList=$__2.ArgumentList,IdentifierExpression=$__2.IdentifierExpression,MemberExpression=$__2.MemberExpression,parseExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/TypeToExpressionTransformer.js")).parseExpression,TypeToExpressionTransformer=function($__super){function TypeToExpressionTransformer(){$traceurRuntime.superConstructor(TypeToExpressionTransformer).apply(this,arguments)}return $traceurRuntime.createClass(TypeToExpressionTransformer,{transformTypeName:function(tree){if(tree.moduleName){var operand=this.transformAny(tree.moduleName);return new MemberExpression(tree.location,operand,tree.name)}return new IdentifierExpression(tree.location,tree.name)},transformPredefinedType:function(tree){return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.type.",")"]),tree.typeToken)},transformTypeReference:function(tree){var typeName=this.transformAny(tree.typeName),args=this.transformAny(tree.args),argumentList=new ArgumentList(tree.location,$traceurRuntime.spread([typeName],args));return parseExpression($traceurRuntime.getTemplateObject(["$traceurRuntime.genericType(",")"]),argumentList)},transformTypeArguments:function(tree){return this.transformList(tree.args)}},{},$__super)}(ParseTreeTransformer);return{get TypeToExpressionTransformer(){return TypeToExpressionTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/TypeTransformer.js",[],function(){"use strict";var $__1=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/TypeTransformer.js")),AnonBlock=$__1.AnonBlock,FormalParameter=$__1.FormalParameter,FunctionDeclaration=$__1.FunctionDeclaration,FunctionExpression=$__1.FunctionExpression,GetAccessor=$__1.GetAccessor,Method=$__1.Method,VariableDeclaration=$__1.VariableDeclaration,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/TypeTransformer.js")),IMPORT_TYPE_CLAUSE=$__2.IMPORT_TYPE_CLAUSE,TYPE_ALIAS_DECLARATION=$__2.TYPE_ALIAS_DECLARATION,ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/TypeTransformer.js")).ParseTreeTransformer,TypeTransformer=function($__super){function TypeTransformer(){$traceurRuntime.superConstructor(TypeTransformer).apply(this,arguments)}return $traceurRuntime.createClass(TypeTransformer,{transformVariableDeclaration:function(tree){return tree.typeAnnotation&&(tree=new VariableDeclaration(tree.location,tree.lvalue,null,tree.initializer)),$traceurRuntime.superGet(this,TypeTransformer.prototype,"transformVariableDeclaration").call(this,tree)},transformFormalParameter:function(tree){return null!==tree.typeAnnotation?new FormalParameter(tree.location,tree.parameter,null,[]):tree},transformFunctionDeclaration:function(tree){return tree.typeAnnotation&&(tree=new FunctionDeclaration(tree.location,tree.name,tree.functionKind,tree.parameterList,null,tree.annotations,tree.body)),$traceurRuntime.superGet(this,TypeTransformer.prototype,"transformFunctionDeclaration").call(this,tree)},transformFunctionExpression:function(tree){return tree.typeAnnotation&&(tree=new FunctionExpression(tree.location,tree.name,tree.functionKind,tree.parameterList,null,tree.annotations,tree.body)),$traceurRuntime.superGet(this,TypeTransformer.prototype,"transformFunctionExpression").call(this,tree)},transformMethod:function(tree){return tree.typeAnnotation&&(tree=new Method(tree.location,tree.isStatic,tree.functionKind,tree.name,tree.parameterList,null,tree.annotations,tree.body,tree.debugName)),$traceurRuntime.superGet(this,TypeTransformer.prototype,"transformMethod").call(this,tree)},transformGetAccessor:function(tree){return tree.typeAnnotation&&(tree=new GetAccessor(tree.location,tree.isStatic,tree.name,null,tree.annotations,tree.body)),$traceurRuntime.superGet(this,TypeTransformer.prototype,"transformGetAccessor").call(this,tree)},transformInterfaceDeclaration:function(tree){return new AnonBlock(null,[])},transformExportDeclaration:function(tree){return tree.declaration.type===TYPE_ALIAS_DECLARATION?new AnonBlock(null,[]):$traceurRuntime.superGet(this,TypeTransformer.prototype,"transformExportDeclaration").call(this,tree)},transformTypeAliasDeclaration:function(tree){return new AnonBlock(null,[])},transformImportDeclaration:function(tree){return tree.importClause&&tree.importClause.type!==IMPORT_TYPE_CLAUSE?$traceurRuntime.superGet(this,TypeTransformer.prototype,"transformImportDeclaration").call(this,tree):new AnonBlock(null,[])}},{},$__super)}(ParseTreeTransformer);return{get TypeTransformer(){return TypeTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/UnicodeEscapeSequenceTransformer.js",[],function(){"use strict";function zeroPad(value){return"0000".slice(value.length)+value}function needsTransform(token){return token.type===STRING&&re.test(token.value)}function transformToken(token){return token.value.replace(re,function(match,backslashes,hexDigits){var backslashIsEscaped=backslashes.length%2===1;if(backslashIsEscaped)return match;var value,codePoint=parseInt(hexDigits,16);if(codePoint<=65535)value="\\u"+zeroPad(codePoint.toString(16).toUpperCase());else{var high=Math.floor((codePoint-65536)/1024)+55296,low=(codePoint-65536)%1024+56320;value="\\u"+high.toString(16).toUpperCase()+"\\u"+low.toString(16).toUpperCase()}return backslashes+value})}var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/UnicodeEscapeSequenceTransformer.js")).ParseTreeTransformer,LiteralExpression=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/UnicodeEscapeSequenceTransformer.js")).LiteralExpression,LiteralToken=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/LiteralToken.js","traceur@0.0.107/src/codegeneration/UnicodeEscapeSequenceTransformer.js")).LiteralToken,STRING=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/UnicodeEscapeSequenceTransformer.js")).STRING,re=/(\\*)\\u{([0-9a-fA-F]+)}/g,UnicodeEscapeSequenceTransformer=function($__super){function UnicodeEscapeSequenceTransformer(){$traceurRuntime.superConstructor(UnicodeEscapeSequenceTransformer).apply(this,arguments)}return $traceurRuntime.createClass(UnicodeEscapeSequenceTransformer,{transformLiteralExpression:function(tree){var token=tree.literalToken;if(needsTransform(token)){var value=transformToken(token);return new LiteralExpression(tree.location,new LiteralToken(STRING,value,token.location))}return tree}},{},$__super)}(ParseTreeTransformer);return{get UnicodeEscapeSequenceTransformer(){return UnicodeEscapeSequenceTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/UniqueIdentifierGenerator.js",[],function(){"use strict";var UniqueIdentifierGenerator=function(){function UniqueIdentifierGenerator(){this.identifierIndex=0}return $traceurRuntime.createClass(UniqueIdentifierGenerator,{generateUniqueIdentifier:function(){return"$__"+this.identifierIndex++}},{})}();return{get UniqueIdentifierGenerator(){return UniqueIdentifierGenerator}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/ConstChecker.js",[],function(){"use strict";function validate(tree,reporter){var builder=new ScopeChainBuilder(reporter);builder.visitAny(tree);var checker=new ConstChecker(builder,reporter);checker.visitAny(tree)}var IDENTIFIER_EXPRESSION=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/semantics/ConstChecker.js")).IDENTIFIER_EXPRESSION,$__3=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/semantics/ConstChecker.js")),CONST=$__3.CONST,MINUS_MINUS=$__3.MINUS_MINUS,PLUS_PLUS=$__3.PLUS_PLUS,ScopeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeVisitor.js","traceur@0.0.107/src/semantics/ConstChecker.js")).ScopeVisitor,ScopeChainBuilder=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeChainBuilder.js","traceur@0.0.107/src/semantics/ConstChecker.js")).ScopeChainBuilder,ConstChecker=function($__super){function ConstChecker(scopeBuilder,reporter){$traceurRuntime.superConstructor(ConstChecker).call(this),this.scopeBuilder_=scopeBuilder,this.reporter_=reporter}return $traceurRuntime.createClass(ConstChecker,{pushScope:function(tree){return this.scope=this.scopeBuilder_.getScopeForTree(tree)},visitUnaryExpression:function(tree){tree.operand.type!==IDENTIFIER_EXPRESSION||tree.operator.type!==PLUS_PLUS&&tree.operator.type!==MINUS_MINUS||this.validateMutation_(tree.operand),$traceurRuntime.superGet(this,ConstChecker.prototype,"visitUnaryExpression").call(this,tree);
},visitPostfixExpression:function(tree){tree.operand.type===IDENTIFIER_EXPRESSION&&this.validateMutation_(tree.operand),$traceurRuntime.superGet(this,ConstChecker.prototype,"visitPostfixExpression").call(this,tree)},visitBinaryExpression:function(tree){tree.left.type===IDENTIFIER_EXPRESSION&&tree.operator.isAssignmentOperator()&&this.validateMutation_(tree.left),$traceurRuntime.superGet(this,ConstChecker.prototype,"visitBinaryExpression").call(this,tree)},validateMutation_:function(identifierExpression){if(!this.inWithBlock){var binding=this.scope.getBinding(identifierExpression);if(null!==binding){var $__1=binding,type=$__1.type,tree=$__1.tree;type===CONST&&this.reportError_(identifierExpression.location,tree.getStringValue()+" is read-only")}}},reportError_:function(location,message){this.reporter_.reportError(location,message)}},{},$__super)}(ScopeVisitor);return{get ConstChecker(){return ConstChecker},get validate(){return validate}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/semantics/FreeVariableChecker.js",[],function(){"use strict";function validate(tree,reporter){var global=void 0!==arguments[2]?arguments[2]:Reflect.global,checker=new FreeVariableChecker(reporter,global);checker.visitAny(tree)}var ScopeChainBuilderWithReferences=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ScopeChainBuilderWithReferences.js","traceur@0.0.107/src/semantics/FreeVariableChecker.js")).ScopeChainBuilderWithReferences,FreeVariableChecker=function($__super){function FreeVariableChecker(reporter,global){$traceurRuntime.superConstructor(FreeVariableChecker).call(this,reporter),this.global_=global}return $traceurRuntime.createClass(FreeVariableChecker,{referenceFound:function(tree,name){this.scope.getBinding(tree)||name in this.global_||this.reporter.reportError(tree.location,name+" is not defined")}},{},$__super)}(ScopeChainBuilderWithReferences);return{get validate(){return validate}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js",[],function(){"use strict";var AmdTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AmdTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).AmdTransformer,AnnotationsTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AnnotationsTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).AnnotationsTransformer,ArrayComprehensionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ArrayComprehensionTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ArrayComprehensionTransformer,ArrowFunctionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ArrowFunctionTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ArrowFunctionTransformer,AsyncGeneratorTransformPass=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AsyncGeneratorTransformPass.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).AsyncGeneratorTransformPass,AsyncToGeneratorTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AsyncToGeneratorTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).AsyncToGeneratorTransformer,BlockBindingTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./BlockBindingTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).BlockBindingTransformer,ClassTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ClassTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ClassTransformer,ClosureModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ClosureModuleTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ClosureModuleTransformer,CommonJsModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./CommonJsModuleTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).CommonJsModuleTransformer,DefaultParametersTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./DefaultParametersTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).DefaultParametersTransformer,DestructuringTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./DestructuringTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).DestructuringTransformer,ExponentiationTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ExponentiationTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ExponentiationTransformer,ForOfTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ForOfTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ForOfTransformer,ForOnTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ForOnTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ForOnTransformer,GeneratorComprehensionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./GeneratorComprehensionTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).GeneratorComprehensionTransformer,GeneratorTransformPass=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./GeneratorTransformPass.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).GeneratorTransformPass,InlineModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./InlineModuleTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).InlineModuleTransformer,InstantiateModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./InstantiateModuleTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).InstantiateModuleTransformer,JsxTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./JsxTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).JsxTransformer,MemberVariableTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./MemberVariableTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).MemberVariableTransformer,ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ModuleTransformer,MultiTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./MultiTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).MultiTransformer,NumericLiteralTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./NumericLiteralTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).NumericLiteralTransformer,ObjectLiteralTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ObjectLiteralTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ObjectLiteralTransformer,ProperTailCallTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ProperTailCallTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).ProperTailCallTransformer,PropertyNameShorthandTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PropertyNameShorthandTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).PropertyNameShorthandTransformer,RegularExpressionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./RegularExpressionTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).RegularExpressionTransformer,RestParameterTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./RestParameterTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).RestParameterTransformer,SpreadPropertiesTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SpreadPropertiesTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).SpreadPropertiesTransformer,SpreadTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SpreadTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).SpreadTransformer,SuperTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SuperTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).SuperTransformer,SymbolTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SymbolTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).SymbolTransformer,TemplateLiteralTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TemplateLiteralTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).TemplateLiteralTransformer,TypeToExpressionTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TypeToExpressionTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).TypeToExpressionTransformer,TypeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TypeTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).TypeTransformer,UnicodeEscapeSequenceTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./UnicodeEscapeSequenceTransformer.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).UnicodeEscapeSequenceTransformer,UniqueIdentifierGenerator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./UniqueIdentifierGenerator.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).UniqueIdentifierGenerator,validateConst=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/ConstChecker.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).validate,validateFreeVariables=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/FreeVariableChecker.js","traceur@0.0.107/src/codegeneration/FromOptionsTransformer.js")).validate,FromOptionsTransformer=function($__super){function FromOptionsTransformer(reporter,options){var $__1;$traceurRuntime.superConstructor(FromOptionsTransformer).call(this,reporter,options.validate);var transformOptions=options.transformOptions,idGenerator=new UniqueIdentifierGenerator,append=($__1=this,function(transformer){$__1.append(function(tree){return new transformer(idGenerator,reporter,options).transformAny(tree)})});if(transformOptions.blockBinding&&this.append(function(tree){return validateConst(tree,reporter),tree}),options.freeVariableChecker&&this.append(function(tree){return validateFreeVariables(tree,reporter),tree}),transformOptions.exponentiation&&append(ExponentiationTransformer),transformOptions.numericLiterals&&append(NumericLiteralTransformer),transformOptions.unicodeExpressions&&append(RegularExpressionTransformer),transformOptions.jsx&&append(JsxTransformer),transformOptions.templateLiterals&&append(TemplateLiteralTransformer),transformOptions.types&&transformOptions.annotations&&append(TypeToExpressionTransformer),transformOptions.unicodeEscapeSequences&&append(UnicodeEscapeSequenceTransformer),transformOptions.annotations&&append(AnnotationsTransformer),transformOptions.propertyNameShorthand&&append(PropertyNameShorthandTransformer),transformOptions.memberVariables&&append(MemberVariableTransformer),transformOptions.classes&&append(SuperTransformer),transformOptions.arrowFunctions&&append(ArrowFunctionTransformer),transformOptions.classes&&append(ClassTransformer),transformOptions.spreadProperties&&append(SpreadPropertiesTransformer),(transformOptions.propertyMethods||transformOptions.computedPropertyNames||transformOptions.properTailCalls)&&append(ObjectLiteralTransformer),transformOptions.generatorComprehension&&append(GeneratorComprehensionTransformer),transformOptions.arrayComprehension&&append(ArrayComprehensionTransformer),transformOptions.forOf&&append(ForOfTransformer),transformOptions.asyncGenerators&&append(AsyncGeneratorTransformPass),transformOptions.forOn&&append(ForOnTransformer),transformOptions.restParameters&&append(RestParameterTransformer),transformOptions.defaultParameters&&append(DefaultParametersTransformer),transformOptions.destructuring&&append(DestructuringTransformer),transformOptions.types&&append(TypeTransformer),transformOptions.spread&&append(SpreadTransformer),transformOptions.blockBinding&&this.append(function(tree){var transformer=new BlockBindingTransformer(idGenerator,reporter,tree);return transformer.transformAny(tree)}),transformOptions.asyncFunctions&&"parse"===options.generators?append(AsyncToGeneratorTransformer):(transformOptions.generators||transformOptions.asyncFunctions)&&append(GeneratorTransformPass),transformOptions.symbols&&append(SymbolTransformer),transformOptions.properTailCalls&&append(ProperTailCallTransformer),transformOptions.modules)switch(transformOptions.modules){case"commonjs":append(CommonJsModuleTransformer);break;case"amd":append(AmdTransformer);break;case"closure":append(ClosureModuleTransformer);break;case"inline":append(InlineModuleTransformer);break;case"instantiate":append(InstantiateModuleTransformer);break;case"bootstrap":append(ModuleTransformer);break;case"parse":break;default:throw Error("Invalid modules transform option")}}return $traceurRuntime.createClass(FromOptionsTransformer,{},{},$__super)}(MultiTransformer);return{get FromOptionsTransformer(){return FromOptionsTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js",[],function(){"use strict";var $__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/TokenType.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js")),CONST=$__2.CONST,LET=$__2.LET,ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleTransformer.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js")).ModuleTransformer,$__4=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeFactory.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js")),createAssignmentStatement=$__4.createAssignmentStatement,createArgumentList=$__4.createArgumentList,createBindingIdentifier=$__4.createBindingIdentifier,createCallExpression=$__4.createCallExpression,createExpressionStatement=$__4.createExpressionStatement,createForInStatement=$__4.createForInStatement,createFunctionBody=$__4.createFunctionBody,createIfStatement=$__4.createIfStatement,createImmediatelyInvokedFunctionExpression=$__4.createImmediatelyInvokedFunctionExpression,createIdentifierExpression=$__4.createIdentifierExpression,createMemberLookupExpression=$__4.createMemberLookupExpression,createMemberExpression=$__4.createMemberExpression,createObjectLiteral=$__4.createObjectLiteral,createScopedExpression=$__4.createScopedExpression,createReturnStatement=$__4.createReturnStatement,createUseStrictDirective=$__4.createUseStrictDirective,createVariableDeclarationList=$__4.createVariableDeclarationList,createVariableStatement=$__4.createVariableStatement,globalThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./globalThis.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js"))["default"],scopeContainsThis=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./scopeContainsThis.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js"))["default"],IMPORT_SPECIFIER_SET=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTreeType.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js")).IMPORT_SPECIFIER_SET,AnonBlock=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js")).AnonBlock,parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./PlaceholderParser.js","traceur@0.0.107/src/codegeneration/InlineES6ModuleTransformer.js")).parseStatement,anonInlineModules=0,InlineES6ModuleTransformer=function($__super){function InlineES6ModuleTransformer(identifierGenerator,reporter,options,metadata){$traceurRuntime.superConstructor(InlineES6ModuleTransformer).call(this,identifierGenerator,reporter,options),this.metadata_=metadata}return $traceurRuntime.createClass(InlineES6ModuleTransformer,{moduleProlog:function(){return[createUseStrictDirective()]},wrapModule:function(statements){var seed=this.moduleName||"anon_"+ ++anonInlineModules,idName=this.getTempVarNameForModuleName(seed);if(this.isRootModule)return statements.pop(),statements;var moduleExpression,body=createFunctionBody(statements);return moduleExpression=statements.some(scopeContainsThis)?createScopedExpression(body,globalThis()):createImmediatelyInvokedFunctionExpression(body),[createVariableStatement(CONST,idName,moduleExpression)]},transformExportDeclaration:function(tree){return this.isRootModule?tree:(this.exportVisitor_.visitAny(tree),this.transformAny(tree.declaration))},transformImportDeclaration:function(tree){if(!tree.importClause||tree.importClause.type===IMPORT_SPECIFIER_SET&&0===tree.importClause.specifiers.length)return createExpressionStatement(this.transformAny(tree.moduleSpecifier));var binding=this.transformAny(tree.importClause),initializer=this.transformAny(tree.moduleSpecifier);return createVariableStatement(CONST,binding,initializer)},transformNamedExport:function(tree){return new AnonBlock(null,[])},appendExportStatement:function(statements){var $__1=this,exportProperties=this.getExportProperties(),exportObject=createObjectLiteral(exportProperties);if(this.exportVisitor_.starExports.length){var starExports=this.exportVisitor_.starExports,starIdents=starExports.map(function(moduleSpecifier){return createIdentifierExpression($__1.getTempVarNameForModuleSpecifier(moduleSpecifier))});exportProperties.length&&starIdents.push(exportObject);var exports=this.getTempIdentifier();statements.push(createVariableStatement(LET,exports,createObjectLiteral("")));var key=this.getTempIdentifier();return starIdents.forEach(function(starIdent){statements.push(createForInStatement(createVariableDeclarationList(LET,key,null),starIdent,createIfStatement(createCallExpression(createMemberExpression(starIdent,"hasOwnProperty"),createArgumentList([createIdentifierExpression(key)])),createAssignmentStatement(createMemberLookupExpression(createIdentifierExpression(exports),createIdentifierExpression(key)),createMemberLookupExpression(starIdent,createIdentifierExpression(key))))))}),statements.push(createReturnStatement(createIdentifierExpression(exports))),statements}return statements.push(parseStatement($traceurRuntime.getTemplateObject(["return ",""]),exportObject)),statements},transformModuleSpecifier:function(tree){return createBindingIdentifier(this.getTempVarNameForModuleSpecifier(tree))},get isRootModule(){return this.moduleName===(this.metadata_&&this.metadata_.rootModule)}},{},$__super)}(ModuleTransformer);return{get InlineES6ModuleTransformer(){return InlineES6ModuleTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/PureES6Transformer.js",[],function(){"use strict";var AnnotationsTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AnnotationsTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).AnnotationsTransformer,AsyncToGeneratorTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./AsyncToGeneratorTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).AsyncToGeneratorTransformer,InlineES6ModuleTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./InlineES6ModuleTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).InlineES6ModuleTransformer,JsxTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./JsxTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).JsxTransformer,MemberVariableTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./MemberVariableTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).MemberVariableTransformer,MultiTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./MultiTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).MultiTransformer,SpreadPropertiesTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./SpreadPropertiesTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).SpreadPropertiesTransformer,TypeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TypeTransformer.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).TypeTransformer,UniqueIdentifierGenerator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./UniqueIdentifierGenerator.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).UniqueIdentifierGenerator,validateFreeVariables=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../semantics/FreeVariableChecker.js","traceur@0.0.107/src/codegeneration/PureES6Transformer.js")).validate,PureES6Transformer=function($__super){function PureES6Transformer(reporter,options,metadata){var $__1;$traceurRuntime.superConstructor(PureES6Transformer).call(this,reporter,options.validate);var idGenerator=new UniqueIdentifierGenerator,append=($__1=this,function(transformer){$__1.append(function(tree){return new transformer(idGenerator,reporter,options,metadata).transformAny(tree)})});options.freeVariableChecker&&this.append(function(tree){return validateFreeVariables(tree,reporter),tree}),options.jsx&&append(JsxTransformer),options.spreadProperties&&append(SpreadPropertiesTransformer),options.memberVariables&&append(MemberVariableTransformer),append(AnnotationsTransformer),append(TypeTransformer),append(AsyncToGeneratorTransformer),"inline"===options.modules&&append(InlineES6ModuleTransformer)}return $traceurRuntime.createClass(PureES6Transformer,{},{},$__super)}(MultiTransformer);return{get PureES6Transformer(){return PureES6Transformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/Compiler.js",[],function(){"use strict";function merge(){for(var srcs=[],$__2=0;$__2<arguments.length;$__2++)srcs[$__2]=arguments[$__2];var dest=Object.create(null);return srcs.forEach(function(src){Object.keys(src).forEach(function(key){dest[key]=src[key]});var srcModules=src.modules;void 0!==srcModules&&(dest.modules=srcModules)}),dest}function basePath(name){if(!name)return null;var lastSlash=name.lastIndexOf("/");return lastSlash<0?null:name.substring(0,lastSlash+1)}var AttachModuleNameTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/module/AttachModuleNameTransformer.js","traceur@0.0.107/src/Compiler.js")).AttachModuleNameTransformer,FromOptionsTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/FromOptionsTransformer.js","traceur@0.0.107/src/Compiler.js")).FromOptionsTransformer,Parser=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./syntax/Parser.js","traceur@0.0.107/src/Compiler.js")).Parser,PureES6Transformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/PureES6Transformer.js","traceur@0.0.107/src/Compiler.js")).PureES6Transformer,SourceFile=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./syntax/SourceFile.js","traceur@0.0.107/src/Compiler.js")).SourceFile,CollectingErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util/CollectingErrorReporter.js","traceur@0.0.107/src/Compiler.js")).CollectingErrorReporter,$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Options.js","traceur@0.0.107/src/Compiler.js")),Options=$__10.Options,versionLockedOptions=$__10.versionLockedOptions,ParseTreeMapWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/ParseTreeMapWriter.js","traceur@0.0.107/src/Compiler.js")).ParseTreeMapWriter,ParseTreeWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/ParseTreeWriter.js","traceur@0.0.107/src/Compiler.js")).ParseTreeWriter,$__13=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/SourceMapIntegration.js","traceur@0.0.107/src/Compiler.js")),SourceMapConsumer=$__13.SourceMapConsumer,SourceMapGenerator=$__13.SourceMapGenerator,Compiler=function(){function Compiler(){var overridingOptions=void 0!==arguments[0]?arguments[0]:{};this.options_=new Options(this.defaultOptions()),this.options_.setFromObject(overridingOptions),this.sourceMapConfiguration_=null,this.sourceMapInfo_=null,this.sourceMapCache_=null}return $traceurRuntime.createClass(Compiler,{compile:function(content){var sourceName=void 0!==arguments[1]?arguments[1]:"<compileSource>",outputName=void 0!==arguments[2]?arguments[2]:"<compileOutput>",sourceRoot=arguments[3];sourceName=this.normalize(sourceName),outputName=this.normalize(outputName);var tree=this.parse(content,sourceName);tree=this.transform(tree,sourceName);var sourceURL=sourceName!==outputName?sourceName:void 0;return void 0===sourceRoot&&(sourceRoot=this.options_.sourceRoot),this.write(tree,outputName,sourceRoot,sourceURL)},throwIfErrors:function(errorReporter){if(errorReporter.hadError())throw errorReporter.toError()},parse:function(content){var sourceName=void 0!==arguments[1]?arguments[1]:"<compiler-parse-input>";sourceName=this.normalize(sourceName),this.sourceMapCache_=null,this.sourceMapConfiguration_=null;var errorReporter=new CollectingErrorReporter,sourceFile=new SourceFile(sourceName,content),parser=new Parser(sourceFile,errorReporter,this.options_),tree=this.options_.script?parser.parseScript():parser.parseModule();return this.throwIfErrors(errorReporter),tree},transform:function(tree){var transformer,candidateModuleName=arguments[1],metadata=arguments[2];if(candidateModuleName){var transformer$__3=new AttachModuleNameTransformer(candidateModuleName);tree=transformer$__3.transformAny(tree)}var errorReporter=new CollectingErrorReporter;transformer="es6"===this.options_.outputLanguage.toLowerCase()?new PureES6Transformer(errorReporter,this.options_,metadata):new FromOptionsTransformer(errorReporter,this.options_);var transformedTree=transformer.transform(tree);return this.throwIfErrors(errorReporter),transformedTree},createSourceMapConfiguration_:function(outputName){var sourceRoot=arguments[1],sourceURL=arguments[2];if(this.options_.sourceMaps)return{sourceMapGenerator:new SourceMapGenerator({file:outputName,sourceRoot:sourceRoot,skipValidation:!0}),basepath:basePath(outputName),inputSourceMap:this.options_.inputSourceMap,sourceURL:sourceURL,outputName:outputName}},getSourceMap:function(){if(this.sourceMapCache_)return this.sourceMapCache_;if(this.sourceMapConfiguration_){var sourceMap=""+this.sourceMapConfiguration_.sourceMapGenerator,inputSourceMap=this.sourceMapConfiguration_.inputSourceMap;if(inputSourceMap){var generator=SourceMapGenerator.fromSourceMap(new SourceMapConsumer(sourceMap));generator.applySourceMap(new SourceMapConsumer(inputSourceMap)),sourceMap=generator.toJSON()}return this.sourceMapCache_=sourceMap,sourceMap}},get sourceMapInfo(){if(!this.sourceMapInfo_&&this.sourceMapConfiguration_){var sourceMap=this.getSourceMap();this.sourceMapInfo_={url:this.sourceMapConfiguration_.sourceURL,outputName:this.sourceMapConfiguration_.outputName,map:sourceMap}}return this.sourceMapInfo_},write:function(tree){var outputName=arguments[1],sourceRoot=arguments[2],sourceURL=arguments[3];outputName=this.normalize(outputName),void 0===sourceRoot&&(sourceRoot=this.options_.sourceRoot),sourceRoot=sourceRoot===!0?basePath(outputName):sourceRoot?this.normalize(sourceRoot):void 0;var writer;this.sourceMapCache_=null,this.sourceMapConfiguration_=this.createSourceMapConfiguration_(outputName,sourceRoot,sourceURL),this.sourceMapConfiguration_?(this.sourceMapConfiguration_.lowResolution=this.options_.lowResolutionSourceMap,writer=new ParseTreeMapWriter(this.sourceMapConfiguration_,this.options_)):writer=new ParseTreeWriter(this.options_),writer.visitAny(tree);var compiledCode=""+writer,link=this.debuggerLink(sourceURL,outputName);return link&&(compiledCode+=link),compiledCode},debuggerLink:function(sourceURL,outputName){if(this.sourceMapConfiguration_){if("memory"===this.options_.sourceMaps)return;var sourceMappingURL=this.sourceMappingURL(sourceURL||outputName||"unnamed.js");return"//# sourceMappingURL="+sourceMappingURL+"\n"}if(sourceURL)return"//# sourceURL="+sourceURL+"\n"},sourceName:function(filename){return filename},sourceMappingURL:function(path){return"inline"===this.options_.sourceMaps&&Reflect.global.btoa?"data:application/json;base64,"+btoa(unescape(encodeURIComponent(this.getSourceMap()))):(path=path||"unamed.js",path=path.split("/").pop(),path+".map")},sourceNameFromTree:function(tree){return tree.location.start.source.name},defaultOptions:function(){return versionLockedOptions},normalize:function(name){return name&&name.replace(/\\/g,"/")}},{script:function(content){var options=void 0!==arguments[1]?arguments[1]:{};return options=new Options(options),options.script=!0,new Compiler(options).compile(content)},module:function(content){var options=void 0!==arguments[1]?arguments[1]:{};return options=new Options(options),options.modules="bootstrap",new Compiler(options).compile(content)},amdOptions:function(){var options=void 0!==arguments[0]?arguments[0]:{},amdOptions={modules:"amd",sourceMaps:!1,moduleName:!1};return merge(amdOptions,options)},closureOptions:function(){var options=void 0!==arguments[0]?arguments[0]:{},closureOptions={modules:"closure",sourceMaps:!1,moduleName:!0};return merge(closureOptions,options)},commonJSOptions:function(){var options=void 0!==arguments[0]?arguments[0]:{},commonjsOptions={modules:"commonjs",sourceMaps:!1,moduleName:!1};return merge(commonjsOptions,options)}})}();return{get Compiler(){return Compiler}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/CloneTreeTransformer.js",[],function(){"use strict";var ParseTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ParseTreeTransformer.js","traceur@0.0.107/src/codegeneration/CloneTreeTransformer.js")).ParseTreeTransformer,$__2=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/codegeneration/CloneTreeTransformer.js")),BindingIdentifier=$__2.BindingIdentifier,BreakStatement=$__2.BreakStatement,ContinueStatement=$__2.ContinueStatement,DebuggerStatement=$__2.DebuggerStatement,EmptyStatement=$__2.EmptyStatement,ExportSpecifier=$__2.ExportSpecifier,ExportStar=$__2.ExportStar,IdentifierExpression=$__2.IdentifierExpression,LiteralExpression=$__2.LiteralExpression,ModuleSpecifier=$__2.ModuleSpecifier,PredefinedType=$__2.PredefinedType,PropertyNameShorthand=$__2.PropertyNameShorthand,TemplateLiteralPortion=$__2.TemplateLiteralPortion,SuperExpression=$__2.SuperExpression,ThisExpression=$__2.ThisExpression,CloneTreeTransformer=function($__super){function CloneTreeTransformer(){$traceurRuntime.superConstructor(CloneTreeTransformer).apply(this,arguments)}return $traceurRuntime.createClass(CloneTreeTransformer,{transformBindingIdentifier:function(tree){return new BindingIdentifier(tree.location,tree.identifierToken)},transformBreakStatement:function(tree){return new BreakStatement(tree.location,tree.name)},transformContinueStatement:function(tree){return new ContinueStatement(tree.location,tree.name)},transformDebuggerStatement:function(tree){return new DebuggerStatement(tree.location)},transformEmptyStatement:function(tree){return new EmptyStatement(tree.location);
},transformExportSpecifier:function(tree){return new ExportSpecifier(tree.location,tree.lhs,tree.rhs)},transformExportStar:function(tree){return new ExportStar(tree.location)},transformIdentifierExpression:function(tree){return new IdentifierExpression(tree.location,tree.identifierToken)},transformList:function(list){return list?0===list.length?[]:$traceurRuntime.superGet(this,CloneTreeTransformer.prototype,"transformList").call(this,list):null},transformLiteralExpression:function(tree){return new LiteralExpression(tree.location,tree.literalToken)},transformModuleSpecifier:function(tree){return new ModuleSpecifier(tree.location,tree.token)},transformPredefinedType:function(tree){return new PredefinedType(tree.location,tree.typeToken)},transformPropertyNameShorthand:function(tree){return new PropertyNameShorthand(tree.location,tree.name)},transformTemplateLiteralPortion:function(tree){return new TemplateLiteralPortion(tree.location,tree.value)},transformSuperExpression:function(tree){return new SuperExpression(tree.location)},transformThisExpression:function(tree){return new ThisExpression(tree.location)}},{},$__super)}(ParseTreeTransformer);return CloneTreeTransformer.cloneTree=function(tree){return(new CloneTreeTransformer).transformAny(tree)},{get CloneTreeTransformer(){return CloneTreeTransformer}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/createModuleEvaluationStatement.js",[],function(){"use strict";function createModuleEvaluationStatement(normalizedName){return parseStatement($traceurRuntime.getTemplateObject(["$traceurRuntime.getModule("," +'')"]),normalizedName)}var parseStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../PlaceholderParser.js","traceur@0.0.107/src/codegeneration/module/createModuleEvaluationStatement.js")).parseStatement;return{get createModuleEvaluationStatement(){return createModuleEvaluationStatement}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/compiler-imports.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_Compiler_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Compiler.js","traceur@0.0.107/src/compiler-imports.js")),Parser=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./syntax/Parser.js","traceur@0.0.107/src/compiler-imports.js")).Parser,Script=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./syntax/trees/ParseTrees.js","traceur@0.0.107/src/compiler-imports.js")).Script,SourceFile=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./syntax/SourceFile.js","traceur@0.0.107/src/compiler-imports.js")).SourceFile,syntax={Parser:Parser,SourceFile:SourceFile,trees:{Script:Script}},ParseTreeMapWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/ParseTreeMapWriter.js","traceur@0.0.107/src/compiler-imports.js")).ParseTreeMapWriter,ParseTreeWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/ParseTreeWriter.js","traceur@0.0.107/src/compiler-imports.js")).ParseTreeWriter,regexpuRewritePattern=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/regexpuRewritePattern.js","traceur@0.0.107/src/compiler-imports.js")).regexpuRewritePattern,SourceMapConsumer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/SourceMapIntegration.js","traceur@0.0.107/src/compiler-imports.js")).SourceMapConsumer,SourceMapGenerator=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/SourceMapIntegration.js","traceur@0.0.107/src/compiler-imports.js")).SourceMapGenerator,TreeWriter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./outputgeneration/TreeWriter.js","traceur@0.0.107/src/compiler-imports.js")).TreeWriter,outputgeneration={ParseTreeMapWriter:ParseTreeMapWriter,ParseTreeWriter:ParseTreeWriter,regexpuRewritePattern:regexpuRewritePattern,SourceMapConsumer:SourceMapConsumer,SourceMapGenerator:SourceMapGenerator,TreeWriter:TreeWriter},AttachModuleNameTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/module/AttachModuleNameTransformer.js","traceur@0.0.107/src/compiler-imports.js")).AttachModuleNameTransformer,CloneTreeTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/CloneTreeTransformer.js","traceur@0.0.107/src/compiler-imports.js")).CloneTreeTransformer,FromOptionsTransformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/FromOptionsTransformer.js","traceur@0.0.107/src/compiler-imports.js")).FromOptionsTransformer,PureES6Transformer=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/PureES6Transformer.js","traceur@0.0.107/src/compiler-imports.js")).PureES6Transformer,createModuleEvaluationStatement=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/module/createModuleEvaluationStatement.js","traceur@0.0.107/src/compiler-imports.js")).createModuleEvaluationStatement,$__16=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./codegeneration/PlaceholderParser.js","traceur@0.0.107/src/compiler-imports.js")),parseExpression=$__16.parseExpression,parseModule=$__16.parseModule,parseScript=$__16.parseScript,parseStatement=$__16.parseStatement,codegeneration={CloneTreeTransformer:CloneTreeTransformer,FromOptionsTransformer:FromOptionsTransformer,PureES6Transformer:PureES6Transformer,parseExpression:parseExpression,parseModule:parseModule,parseScript:parseScript,parseStatement:parseStatement,module:{AttachModuleNameTransformer:AttachModuleNameTransformer,createModuleEvaluationStatement:createModuleEvaluationStatement}};return{get Compiler(){return $__traceur_64_0_46_0_46_107_47_src_47_Compiler_46_js__.Compiler},get syntax(){return syntax},get outputgeneration(){return outputgeneration},get codegeneration(){return codegeneration}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/ValidationVisitor.js",[],function(){"use strict";var ModuleVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ModuleVisitor.js","traceur@0.0.107/src/codegeneration/module/ValidationVisitor.js")).ModuleVisitor,ValidationVisitor=function($__super){function ValidationVisitor(){$traceurRuntime.superConstructor(ValidationVisitor).apply(this,arguments)}return $traceurRuntime.createClass(ValidationVisitor,{checkExport_:function(tree,name){var description=this.validatingModuleDescription_;if(description&&!description.getExport(name)){var moduleName=description.normalizedName;this.reportError(tree,"'"+name+"' is not exported by '"+moduleName+"'")}},checkImport_:function(tree,name){var existingImport=this.moduleSymbol.getImport(name);existingImport?this.reportError(tree,"'"+name+"' was previously imported at "+existingImport.location.start):this.moduleSymbol.addImport(name,tree)},visitAndValidate_:function(moduleDescription,tree){var validatingModuleDescription=this.validatingModuleDescription_;this.validatingModuleDescription_=moduleDescription,this.visitAny(tree),this.validatingModuleDescription_=validatingModuleDescription},visitNamedExport:function(tree){if(tree.moduleSpecifier){var name=tree.moduleSpecifier.token.processedValue,moduleDescription=this.getExportsListForModuleSpecifier(name);this.visitAndValidate_(moduleDescription,tree.exportClause)}},visitExportSpecifier:function(tree){this.checkExport_(tree,tree.lhs.value)},visitForwardDefaultExport:function(tree){this.checkExport_(tree,"default")},visitImportDeclaration:function(tree){var name=tree.moduleSpecifier.token.processedValue,moduleDescription=this.getExportsListForModuleSpecifier(name);this.visitAndValidate_(moduleDescription,tree.importClause)},visitImportSpecifier:function(tree){var importName=tree.binding.getStringValue(),exportName=tree.name?tree.name.value:importName;this.checkImport_(tree,importName),this.checkExport_(tree,exportName)},visitImportedBinding:function(tree){var importName=tree.binding.getStringValue();this.checkImport_(tree,importName),this.checkExport_(tree,"default")},visitNameSpaceImport:function(tree){var importName=tree.binding.binding.getStringValue();this.checkImport_(tree,importName)}},{},$__super)}(ModuleVisitor);return{get ValidationVisitor(){return ValidationVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/ExportListBuilder.js",[],function(){"use strict";function buildExportList(deps,loader,reporter){function doVisit(ctor){for(var i=0;i<deps.length;i++){var visitor=new ctor(reporter,loader,deps[i]);visitor.visitAny(deps[i].tree)}}function reverseVisit(ctor){for(var i=deps.length-1;i>=0;i--){var visitor=new ctor(reporter,loader,deps[i]);visitor.visitAny(deps[i].tree)}}reverseVisit(ExportVisitor),doVisit(ValidationVisitor)}var ExportVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ExportVisitor.js","traceur@0.0.107/src/codegeneration/module/ExportListBuilder.js")).ExportVisitor,ValidationVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./ValidationVisitor.js","traceur@0.0.107/src/codegeneration/module/ExportListBuilder.js")).ValidationVisitor;return{get buildExportList(){return buildExportList}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/codegeneration/module/ModuleSpecifierVisitor.js",[],function(){"use strict";var ParseTreeVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../syntax/ParseTreeVisitor.js","traceur@0.0.107/src/codegeneration/module/ModuleSpecifierVisitor.js")).ParseTreeVisitor,StringSet=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../../util/StringSet.js","traceur@0.0.107/src/codegeneration/module/ModuleSpecifierVisitor.js")).StringSet,ModuleSpecifierVisitor=function($__super){function ModuleSpecifierVisitor(options){$traceurRuntime.superConstructor(ModuleSpecifierVisitor).call(this),this.options_=options,this.moduleSpecifiers_=new StringSet}return $traceurRuntime.createClass(ModuleSpecifierVisitor,{get moduleSpecifiers(){return this.moduleSpecifiers_.valuesAsArray()},visitModuleSpecifier:function(tree){this.moduleSpecifiers_.add(tree.token.processedValue)}},{},$__super)}(ParseTreeVisitor);return{get ModuleSpecifierVisitor(){return ModuleSpecifierVisitor}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/system-map.js",[],function(){"use strict";function prefixMatchLength(name,prefix){var prefixParts=prefix.split("/"),nameParts=name.split("/");if(prefixParts.length>nameParts.length)return 0;for(var i=0;i<prefixParts.length;i++)if(nameParts[i]!=prefixParts[i])return 0;return prefixParts.length}function applyMap(map,name,parentName){var curMatch,curParent,curMatchLength=0,curParentMatchLength=0;if(parentName){var mappedName;Object.getOwnPropertyNames(map).some(function(p){var curMap=map[p];if(curMap&&"object"==typeof curMap){if(prefixMatchLength(parentName,p)<=curParentMatchLength)return;Object.getOwnPropertyNames(curMap).forEach(function(q){prefixMatchLength(name,q)>curMatchLength&&(curMatch=q,curMatchLength=q.split("/").length,curParent=p,curParentMatchLength=p.split("/").length)})}if(curMatch){var subPath=name.split("/").splice(curMatchLength).join("/");return mappedName=map[curParent][curMatch]+(subPath?"/"+subPath:"")}})}if(mappedName)return mappedName;if(Object.getOwnPropertyNames(map).forEach(function(p){var curMap=map[p];curMap&&"string"==typeof curMap&&prefixMatchLength(name,p)>curMatchLength&&(curMatch=p,curMatchLength=p.split("/").length)}),!curMatch)return name;var subPath=name.split("/").splice(curMatchLength).join("/");return map[curMatch]+(subPath?"/"+subPath:"")}var systemjs={applyMap:applyMap};return{get systemjs(){return systemjs}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/LoaderCompiler.js",[],function(){"use strict";var buildExportList=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../codegeneration/module/ExportListBuilder.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).buildExportList,CollectingErrorReporter=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/CollectingErrorReporter.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).CollectingErrorReporter,Compiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../Compiler.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).Compiler,ModuleSpecifierVisitor=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../codegeneration/module/ModuleSpecifierVisitor.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).ModuleSpecifierVisitor,ModuleSymbol=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../codegeneration/module/ModuleSymbol.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).ModuleSymbol,UniqueIdentifierGenerator=($traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/Parser.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).Parser,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/SourceFile.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).SourceFile,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./system-map.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).systemjs,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../codegeneration/UniqueIdentifierGenerator.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).UniqueIdentifierGenerator),$__10=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/url.js","traceur@0.0.107/src/loader/LoaderCompiler.js")),assert=($__10.isAbsolute,$__10.resolveUrl,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/assert.js","traceur@0.0.107/src/loader/LoaderCompiler.js")).assert),PARSED=3,anonymousSourcesSeen=(new UniqueIdentifierGenerator,0),LoaderCompiler=function(){function LoaderCompiler(){}return $traceurRuntime.createClass(LoaderCompiler,{getModuleSpecifiers:function(codeUnit){this.parse(codeUnit);var moduleSpecifierVisitor=new ModuleSpecifierVisitor(codeUnit.metadata.traceurOptions);return moduleSpecifierVisitor.visit(codeUnit.metadata.tree),moduleSpecifierVisitor.moduleSpecifiers},parse:function(codeUnit){assert(!codeUnit.metadata.tree);var metadata=codeUnit.metadata,options=metadata.traceurOptions;"script"===codeUnit.type&&(options.script=!0),metadata.compiler=new Compiler(options);var sourceName=codeUnit.metadata.sourceName=codeUnit.address||codeUnit.normalizedName||"(unnamed)#"+(++anonymousSourcesSeen+"");metadata.tree=metadata.compiler.parse(codeUnit.source,sourceName)},transform:function(codeUnit){var metadata=codeUnit.metadata;metadata.transformedTree=metadata.compiler.transform(metadata.tree,codeUnit.normalizedName,metadata)},write:function(codeUnit){var metadata=codeUnit.metadata,outputName=metadata.outputName||metadata.sourceName||"<loaderOutput>",sourceURL=(metadata.sourceRoot,metadata.sourceName||codeUnit.normalizedName||codeUnit.address);metadata.transcoded=metadata.compiler.write(metadata.transformedTree,outputName,void 0,sourceURL)},evaluateCodeUnit:function(codeUnit){var result=(0,eval)(codeUnit.metadata.transcoded);return codeUnit.metadata.transformedTree=null,result},analyzeDependencies:function(dependencies,loader){for(var deps=[],i=0;i<dependencies.length;i++){var codeUnit=dependencies[i];if(assert(codeUnit.state>=PARSED),codeUnit.state==PARSED){var symbol=codeUnit.metadata.moduleSymbol=new ModuleSymbol(codeUnit.metadata.tree,codeUnit.normalizedName);deps.push(symbol)}}this.checkForErrors(function(reporter){return buildExportList(deps,loader,reporter)})},checkForErrors:function(fncOfReporter){var reporter=new CollectingErrorReporter,result=fncOfReporter(reporter);if(reporter.hadError())throw reporter.toError();return result}},{})}();return{get LoaderCompiler(){return LoaderCompiler}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/InternalLoader.js",[],function(){"use strict";function mapToValues(map){var array=[];return map.forEach(function(v){array.push(v)}),array}var assert=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/assert.js","traceur@0.0.107/src/loader/InternalLoader.js")).assert,LoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./LoaderCompiler.js","traceur@0.0.107/src/loader/InternalLoader.js")).LoaderCompiler,ExportsList=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../codegeneration/module/ModuleSymbol.js","traceur@0.0.107/src/loader/InternalLoader.js")).ExportsList,$__13=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/url.js","traceur@0.0.107/src/loader/InternalLoader.js")),isAbsolute=$__13.isAbsolute,Options=($__13.resolveUrl,$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../Options.js","traceur@0.0.107/src/loader/InternalLoader.js")).Options),NOT_STARTED=0,LOADING=1,LOADED=2,PARSED=3,TRANSFORMING=4,TRANSFORMED=5,COMPLETE=6,ERROR=7,CodeUnit=(function($__super){function LoaderError(msg,tree){$traceurRuntime.superConstructor(LoaderError).call(this),this.message=msg,this.tree=tree,this.name="LoaderError"}return $traceurRuntime.createClass(LoaderError,{},{},$__super)}(Error),function(){function CodeUnit(loaderCompiler,normalizedName,type,state,name,referrerName,address){var $__8=this;this.promise=new Promise(function(res,rej){$__8.loaderCompiler=loaderCompiler,$__8.normalizedName=normalizedName,$__8.type=type,$__8.name_=name,$__8.referrerName_=referrerName,$__8.address=address,$__8.state_=state||NOT_STARTED,$__8.error=null,$__8.result=null,$__8.metadata_={},$__8.dependencies=[],$__8.resolve=res,$__8.reject=rej})}return $traceurRuntime.createClass(CodeUnit,{get state(){return this.state_},set state(value){if(value<this.state_)throw Error("Invalid state change");this.state_=value},get metadata(){return this.metadata_},set metadata(value){assert(value),this.metadata_=value},nameTrace:function(){var trace=this.specifiedAs();return isAbsolute(this.name_)?trace+"An absolute name.\n":this.referrerName_?trace+this.importedBy()+this.normalizesTo():trace+this.normalizesTo()},specifiedAs:function(){return"Specified as "+this.name_+".\n"},importedBy:function(){return"Imported by "+this.referrerName_+".\n"},normalizesTo:function(){return"Normalizes to "+this.normalizedName+"\n"}},{})}()),PreCompiledCodeUnit=function($__super){function PreCompiledCodeUnit(loaderCompiler,normalizedName,name,referrerName,address,module){$traceurRuntime.superConstructor(PreCompiledCodeUnit).call(this,loaderCompiler,normalizedName,"module",COMPLETE,name,referrerName,address),this.result=module,this.resolve(this.result)}return $traceurRuntime.createClass(PreCompiledCodeUnit,{},{},$__super)}(CodeUnit),HookedCodeUnit=(function($__super){function BundledCodeUnit(loaderCompiler,normalizedName,name,referrerName,address,deps,execute,setModule){$traceurRuntime.superConstructor(BundledCodeUnit).call(this,loaderCompiler,normalizedName,"module",TRANSFORMED,name,referrerName,address),this.deps=deps,this.execute=execute}return $traceurRuntime.createClass(BundledCodeUnit,{getModuleSpecifiers:function(){return this.deps},evaluate:function(){var $__8=this,normalizedNames=this.deps.map(function(name){return $__8.loader_.normalize(name)}),module=this.execute.apply(Reflect.global,normalizedNames);return setModule(this.normalizedName,module),module}},{},$__super)}(CodeUnit),function($__super){function HookedCodeUnit(){$traceurRuntime.superConstructor(HookedCodeUnit).apply(this,arguments)}return $traceurRuntime.createClass(HookedCodeUnit,{getModuleSpecifiers:function(){return this.loaderCompiler.getModuleSpecifiers(this)},evaluate:function(){return this.loaderCompiler.evaluateCodeUnit(this)}},{},$__super)}(CodeUnit)),LoadCodeUnit=function($__super){function LoadCodeUnit(loaderCompiler,normalizedName,name,referrerName,address){$traceurRuntime.superConstructor(LoadCodeUnit).call(this,loaderCompiler,normalizedName,"module",NOT_STARTED,name,referrerName,address)}return $traceurRuntime.createClass(LoadCodeUnit,{},{},$__super)}(HookedCodeUnit),EvalCodeUnit=function($__super){function EvalCodeUnit(loaderCompiler,code){var type=void 0!==arguments[2]?arguments[2]:"script",normalizedName=arguments[3],referrerName=arguments[4],address=arguments[5];$traceurRuntime.superConstructor(EvalCodeUnit).call(this,loaderCompiler,normalizedName,type,LOADED,null,referrerName,address),this.source=code}return $traceurRuntime.createClass(EvalCodeUnit,{},{},$__super)}(HookedCodeUnit),InternalLoader=function(){function InternalLoader(loader,loaderCompiler){assert(loaderCompiler),this.loader_=loader,this.loaderCompiler=loaderCompiler,this.cache=new Map,this.urlToKey=Object.create(null),this.sync_=!1,this.sourceMapsByURL_=Object.create(null),this.sourceMapsByOutputName_=Object.create(null)}return $traceurRuntime.createClass(InternalLoader,{defaultMetadata_:function(){var metadata=void 0!==arguments[0]?arguments[0]:{},incoming=metadata.traceurOptions;if(incoming&&!(incoming instanceof Options)){var unknown=Options.listUnknownOptions(incoming);unknown.length&&console.warn("Unknown metadata.traceurOptions ignored: "+unknown.join(","))}return metadata.traceurOptions=incoming||new Options,metadata},defaultModuleMetadata_:function(){var metadata=void 0!==arguments[0]?arguments[0]:{},metadata=this.defaultMetadata_(metadata);return metadata.traceurOptions.script=!1,metadata},getSourceMap:function(url){return this.sourceMapsByURL_[url]||this.sourceMapsByOutputName_[url]},load:function(name){var referrerName=void 0!==arguments[1]?arguments[1]:this.loader_.baseURL,address=arguments[2],metadata=void 0!==arguments[3]?arguments[3]:{};metadata=this.defaultMetadata_(metadata);var codeUnit=this.getOrCreateCodeUnit_(name,referrerName,address,metadata);return this.load_(codeUnit),codeUnit.promise.then(function(){return codeUnit})},load_:function(codeUnit){var $__8=this;if(codeUnit.state===ERROR)return codeUnit;if(codeUnit.state===TRANSFORMED)this.handleCodeUnitLoaded(codeUnit);else{if(codeUnit.state!==NOT_STARTED)return codeUnit;codeUnit.state=LOADING,codeUnit.address=this.loader_.locate(codeUnit),this.loader_.fetch(codeUnit).then(function(text){return codeUnit.source=text,codeUnit}).then(function(load){return $__8.loader_.translate(load)}).then(function(source){return codeUnit.source=source,codeUnit.state=LOADED,$__8.handleCodeUnitLoaded(codeUnit),codeUnit})["catch"](function(err){try{codeUnit.state=ERROR,codeUnit.error=err,$__8.handleCodeUnitLoadError(codeUnit)}catch(ex){console.error("Internal Error "+(ex.stack||ex))}})}return codeUnit},module:function(code,referrerName,address,metadata){var codeUnit=new EvalCodeUnit(this.loaderCompiler,code,"module",null,referrerName,address);return codeUnit.metadata=this.defaultMetadata_(metadata),this.cache.set({},codeUnit),this.handleCodeUnitLoaded(codeUnit),codeUnit.promise},define:function(normalizedName,code,address,metadata){var codeUnit=new EvalCodeUnit(this.loaderCompiler,code,"module",normalizedName,null,address),key=this.getKey(normalizedName,"module");return codeUnit.metadata=this.defaultMetadata_(metadata),this.cache.set(key,codeUnit),this.handleCodeUnitLoaded(codeUnit),codeUnit.promise},script:function(code,name,referrerName,address,metadata){var normalizedName=this.loader_.normalize(name||"",referrerName,address),codeUnit=new EvalCodeUnit(this.loaderCompiler,code,"script",normalizedName,referrerName,address),key={};return name&&(key=this.getKey(normalizedName,"script")),codeUnit.metadata=this.defaultMetadata_(metadata),this.cache.set(key,codeUnit),this.handleCodeUnitLoaded(codeUnit),codeUnit.promise},getKey:function(url,type){var combined=type+":"+url;return combined in this.urlToKey?this.urlToKey[combined]:this.urlToKey[combined]={}},getCodeUnit_:function(normalizedName,type){var key=this.getKey(normalizedName,type),codeUnit=this.cache.get(key);return{key:key,codeUnit:codeUnit}},getOrCreateCodeUnit_:function(name,referrerName,address,metadata){var normalizedName=this.loader_.normalize(name,referrerName,address),type="module";metadata&&metadata.traceurOptions&&metadata.traceurOptions.script&&(type="script");var $__9=this.getCodeUnit_(normalizedName,type),key=$__9.key,codeUnit=$__9.codeUnit;if(!codeUnit){assert(metadata&&metadata.traceurOptions);var module=this.loader_.get(normalizedName);module?(codeUnit=new PreCompiledCodeUnit(this.loaderCompiler,normalizedName,name,referrerName,address,module),codeUnit.type="module"):(codeUnit=new LoadCodeUnit(this.loaderCompiler,normalizedName,name,referrerName,address),codeUnit.type=type),codeUnit.metadata={traceurOptions:metadata.traceurOptions,outputName:metadata.outputName,rootModule:metadata.rootModule},this.cache.set(key,codeUnit)}return codeUnit},areAll:function(state){return mapToValues(this.cache).every(function(codeUnit){return codeUnit.state>=state})},getCodeUnitForModuleSpecifier:function(name,referrerName){var normalizedName=this.loader_.normalize(name,referrerName);return this.getCodeUnit_(normalizedName,"module").codeUnit},getExportsListForModuleSpecifier:function(name,referrer){var codeUnit=this.getCodeUnitForModuleSpecifier(name,referrer),exportsList=codeUnit.metadata.moduleSymbol;if(!exportsList){if(!codeUnit.result)throw Error("InternalError: "+name+" is not a module, required by "+referrer);exportsList=new ExportsList(codeUnit.normalizedName),exportsList.addExportsFromModule(codeUnit.result)}return exportsList},handleCodeUnitLoaded:function(codeUnit){var $__8=this,referrerName=codeUnit.normalizedName;try{var moduleSpecifiers=codeUnit.getModuleSpecifiers();if(codeUnit.state=PARSED,!moduleSpecifiers)return void this.abortAll("No module specifiers in "+referrerName);codeUnit.dependencies=moduleSpecifiers.map(function(name){return $__8.getOrCreateCodeUnit_(name,referrerName,null,$__8.defaultModuleMetadata_(codeUnit.metadata))})}catch(error){return void this.rejectOneAndAll(codeUnit,error)}if(codeUnit.dependencies.forEach(function(dependency){$__8.load_(dependency)}),this.areAll(PARSED))try{"module"===codeUnit.type&&this.analyze(),this.transform(),this.evaluate()}catch(error){this.rejectOneAndAll(codeUnit,error)}},rejectOneAndAll:function(codeUnit,error){codeUnit.state.ERROR,codeUnit.error=error,codeUnit.reject(error),this.abortAll(error)},handleCodeUnitLoadError:function(codeUnit){var message=codeUnit.error?codeUnit.error+"\n":"Failed to load '"+codeUnit.address+"'.\n";message+=codeUnit.nameTrace()+this.loader_.nameTrace(codeUnit),this.rejectOneAndAll(codeUnit,Error(message))},abortAll:function(errorMessage){this.cache.forEach(function(codeUnit){codeUnit.state!==ERROR&&codeUnit.reject(errorMessage)})},analyze:function(){this.loaderCompiler.analyzeDependencies(mapToValues(this.cache),this)},transform:function(){this.transformDependencies_(mapToValues(this.cache))},transformDependencies_:function(dependencies,dependentName){for(var i=0;i<dependencies.length;i++){var codeUnit=dependencies[i];if(!(codeUnit.state>=TRANSFORMED)){if(codeUnit.state===TRANSFORMING){var cir=codeUnit.normalizedName,cle=dependentName;return void this.rejectOneAndAll(codeUnit,Error("Unsupported circular dependency between "+cir+" and "+cle))}codeUnit.state=TRANSFORMING;try{this.transformCodeUnit_(codeUnit)}catch(error){return void this.rejectOneAndAll(codeUnit,error)}}}},transformCodeUnit_:function(codeUnit){if(this.transformDependencies_(codeUnit.dependencies,codeUnit.normalizedName),codeUnit.state!==ERROR){this.loaderCompiler.transform(codeUnit),codeUnit.state=TRANSFORMED,this.loaderCompiler.write(codeUnit);var info=codeUnit.metadata.compiler.sourceMapInfo;info&&(this.sourceMapsByURL_[info.url]=info.map,this.sourceMapsByOutputName_[info.outputName]=info.map),this.loader_.instantiate(codeUnit)}},orderDependencies:function(){function orderCodeUnits(codeUnit){visited.has(codeUnit)||(visited.set(codeUnit,!0),codeUnit.dependencies.forEach(orderCodeUnits),ordered.push(codeUnit))}var visited=new Map,ordered=[];return this.cache.forEach(orderCodeUnits),ordered},evaluate:function(){for(var dependencies=this.orderDependencies(),i=0;i<dependencies.length;i++){var codeUnit=dependencies[i];if(!(codeUnit.state>=COMPLETE)){var result=void 0;try{result=codeUnit.evaluate()}catch(ex){return void this.rejectOneAndAll(codeUnit,ex)}codeUnit.result=result,codeUnit.source=null}}for(var i=0;i<dependencies.length;i++){var codeUnit=dependencies[i];codeUnit.state>=COMPLETE||(codeUnit.state=COMPLETE,codeUnit.resolve(codeUnit.result))}}},{})}(),internals={CodeUnit:CodeUnit,EvalCodeUnit:EvalCodeUnit,LoadCodeUnit:LoadCodeUnit,LoaderCompiler:LoaderCompiler};return{get InternalLoader(){return InternalLoader},get internals(){return internals}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/Loader.js",[],function(){"use strict";function throwAbstractMethod(){throw Error("Unimplemented Loader function, see extended class")}var InternalLoader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./InternalLoader.js","traceur@0.0.107/src/loader/Loader.js")).InternalLoader,Loader=function(){function Loader(loaderCompiler){this.internalLoader_=new InternalLoader(this,loaderCompiler),this.loaderCompiler_=loaderCompiler}return $traceurRuntime.createClass(Loader,{"import":function(name){var $__3=void 0!==arguments[1]?arguments[1]:{},referrerName=$__3.referrerName,address=$__3.address,metadata=$__3.metadata,$__2=this;return this.internalLoader_.load(name,referrerName,address,metadata).then(function(codeUnit){return $__2.get(codeUnit.normalizedName)})},module:function(source){var $__3=void 0!==arguments[1]?arguments[1]:{},referrerName=$__3.referrerName,address=$__3.address,metadata=$__3.metadata;return this.internalLoader_.module(source,referrerName,address,metadata)},define:function(normalizedName,source){var $__3=void 0!==arguments[2]?arguments[2]:{},address=$__3.address,metadata=$__3.metadata;return this.internalLoader_.define(normalizedName,source,address,metadata)},get:function(normalizedName){throwAbstractMethod()},set:function(normalizedName,module){throwAbstractMethod()},normalize:function(name,referrerName,referrerAddress){throwAbstractMethod()},locate:function(load){throwAbstractMethod()},fetch:function(load){throwAbstractMethod()},translate:function(load){throwAbstractMethod()},instantiate:function(load){throwAbstractMethod()}},{})}();return{get throwAbstractMethod(){return throwAbstractMethod},get Loader(){return Loader},get LoaderCompiler(){return LoaderCompiler}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/version.js",[],function(){"use strict";var version="0.0.107";return{get version(){return version}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/TraceurLoader.js",[],function(){"use strict";var $__5=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../util/url.js","traceur@0.0.107/src/loader/TraceurLoader.js")),isAbsolute=$__5.isAbsolute,resolveUrl=$__5.resolveUrl,Loader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Loader.js","traceur@0.0.107/src/loader/TraceurLoader.js")).Loader,LoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./LoaderCompiler.js","traceur@0.0.107/src/loader/TraceurLoader.js")).LoaderCompiler,Options=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../Options.js","traceur@0.0.107/src/loader/TraceurLoader.js")).Options,systemjs=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./system-map.js","traceur@0.0.107/src/loader/TraceurLoader.js")).systemjs,webLoader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./webLoader.js","traceur@0.0.107/src/loader/TraceurLoader.js")).webLoader,version=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./version.js","traceur@0.0.107/src/loader/TraceurLoader.js")).version,uniqueNameCount=($traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../WebPageTranscoder.js","traceur@0.0.107/src/loader/TraceurLoader.js")).WebPageTranscoder,0),TraceurLoader=function($__super){function TraceurLoader(fileLoader,baseURL){var loaderCompiler=void 0!==arguments[2]?arguments[2]:new LoaderCompiler;
$traceurRuntime.superConstructor(TraceurLoader).call(this,loaderCompiler),this.fileLoader_=fileLoader,this.baseURL_=baseURL&&baseURL+"",this.moduleStore_=$traceurRuntime.ModuleStore}return $traceurRuntime.createClass(TraceurLoader,{get baseURL(){return this.baseURL_},set baseURL(value){this.baseURL_=value+""},get:function(normalizedName){return this.moduleStore_.get(normalizedName)},set:function(normalizedName,module){this.moduleStore_.set(normalizedName,module)},normalize:function(name,referrerName,referrerAddress){var normalizedName=this.moduleStore_.normalize(name,referrerName,referrerAddress);return void 0!==systemjs&&System.map?systemjs.applyMap(System.map,normalizedName,referrerName):normalizedName},locate:function(load){load.metadata.traceurOptions=load.metadata.traceurOptions||{};var url=load.normalizedName,options=load.metadata.traceurOptions,baseURL=load.metadata&&load.metadata.baseURL;baseURL=baseURL||this.baseURL;var referrer=options&&options.referrer;if(referrer){for(var minChars=Math.min(referrer.length,baseURL.length),commonChars=0,i=0;i<minChars;i++){var aChar=referrer[referrer.length-1-i];if(aChar!==baseURL[baseURL.length-1-i])break;commonChars++}if(commonChars){var packageName=referrer.slice(0,-commonChars),rootDirectory=baseURL.slice(0,-commonChars);0===url.indexOf(packageName)&&(url=url.replace(packageName,rootDirectory))}}return isAbsolute(url)||baseURL&&(load.metadata.baseURL=baseURL,url=resolveUrl(baseURL,url)),url},sourceName:function(load){var options=load.metadata.traceurOptions,sourceName=load.address;if(options.sourceMaps){var sourceRoot=this.baseURL;sourceName?sourceRoot&&0===sourceName.indexOf(sourceRoot)&&(sourceName=sourceName.substring(sourceRoot.length)):sourceName=this.baseURL+(uniqueNameCount++ +"")}return sourceName},nameTrace:function(load){var trace="";load.metadata.locateMap&&(trace+=this.locateMapTrace(load));var base=load.metadata.baseURL||this.baseURL;return trace+=base?this.baseURLTrace(base):"No baseURL\n"},locateMapTrace:function(load){var map=load.metadata.locateMap;return"locate found '"+map.pattern+"' -> '"+map.replacement+"'\n"},baseURLTrace:function(base){return"locate resolved against base '"+base+"'\n"},fetch:function(load){var $__2=this;return new Promise(function(resolve,reject){load?load.address&&"string"==typeof load.address?$__2.fileLoader_.load(load.address,resolve,reject):reject(new TypeError("fetch({address}) missing required string.")):reject(new TypeError("fetch requires argument object"))})},translate:function(load){return load.source},instantiate:function($__3){var $__4=$__3;$__4.name,$__4.metadata,$__4.address,$__4.source,$__4.sourceMap;return new Promise(function(resolve,reject){resolve(void 0)})},bundledModule:function(name){return this.moduleStore_.bundleStore[name]},importAll:function(names){var $__3=void 0!==arguments[1]?arguments[1]:{},referrerName=$__3.referrerName,address=$__3.address,metadata=$__3.metadata,$__2=this;return Promise.all(names.map(function(name){return $__2["import"](name,{referrerName:referrerName,address:address,metadata:metadata})}))},loadAsScript:function(name){var $__4,$__3=void 0!==arguments[1]?arguments[1]:{},referrerName=$__3.referrerName,address=$__3.address,metadata=void 0===($__4=$__3.metadata)?{}:$__4;return metadata.traceurOptions=metadata.traceurOptions||{},metadata.traceurOptions.script=!0,this.internalLoader_.load(name,referrerName,address,metadata).then(function(load){return load.result})},loadAsScriptAll:function(names){var $__3=void 0!==arguments[1]?arguments[1]:{},referrerName=$__3.referrerName,address=$__3.address,metadata=$__3.metadata,$__2=this;return Promise.all(names.map(function(name){return $__2.loadAsScript(name,{referrerName:referrerName,address:address,metadata:metadata})}))},script:function(source){var $__3=void 0!==arguments[1]?arguments[1]:{},name=$__3.name,referrerName=$__3.referrerName,address=$__3.address,metadata=$__3.metadata;return this.internalLoader_.script(source,name,referrerName,address,metadata)},semVerRegExp_:function(){return/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$/},semverMap:function(normalizedName){var slash=normalizedName.indexOf("/");slash<0&&(slash=normalizedName.length);var versionPart=normalizedName.slice(0,slash),at=versionPart.indexOf("@");if(at!==-1){var semver=versionPart.slice(at+1),m=this.semVerRegExp_().exec(semver);if(m){var major=m[1],minor=m[2],packageName=versionPart.slice(0,at),map=Object.create(null);return map[packageName]=versionPart,map[packageName+"@"+major]=versionPart,map[packageName+"@"+major+"."+minor]=versionPart,map}throw Error("semverMap found no matching semver regexp in "+semver)}throw Error("semverMap expected name@semver, got "+versionPart+" "+normalizedName)},get version(){return version},getSourceMap:function(filename){return this.internalLoader_.getSourceMap(filename)},register:function(normalizedName,deps,factoryFunction){$traceurRuntime.ModuleStore.register(normalizedName,deps,factoryFunction)},registerModule:function(normalizedName,deps,factoryFunction){$traceurRuntime.ModuleStore.registerModule(normalizedName,deps,factoryFunction)},dirname:function(filename){var lastSlash=filename.lastIndexOf("/");return lastSlash===-1?".":0===lastSlash?"/":filename.slice(0,lastSlash)}},{},$__super)}(Loader),BrowserTraceurLoader=function($__super){function BrowserTraceurLoader(){$traceurRuntime.superConstructor(BrowserTraceurLoader).call(this,webLoader,window.location.href,new LoaderCompiler)}return $traceurRuntime.createClass(BrowserTraceurLoader,{loadScriptTypeModule:function(){var traceurOptions=void 0!==arguments[0]?arguments[0]:new Options;new traceur.WebPageTranscoder(document.location.href,traceurOptions).run()}},{},$__super)}(TraceurLoader);return{get TraceurLoader(){return TraceurLoader},get BrowserTraceurLoader(){return BrowserTraceurLoader}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/node/NodeLoaderCompiler.js",[],function(){"use strict";var LoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../loader/LoaderCompiler.js","traceur@0.0.107/src/node/NodeLoaderCompiler.js")).LoaderCompiler,NodeLoaderCompiler=function($__super){function NodeLoaderCompiler(){$traceurRuntime.superConstructor(NodeLoaderCompiler).call(this),this.sourceMapsInMemory_=!1}return $traceurRuntime.createClass(NodeLoaderCompiler,{evaluateCodeUnit:function(codeUnit){var runInThisContext=require("vm").runInThisContext,semver=require("semver"),content=codeUnit.metadata.transcoded,filename=codeUnit.address||codeUnit.normalizedName;"memory"===codeUnit.metadata.traceurOptions.sourceMaps&&this.enableMemorySourceMaps_();var options;options=semver.gte(process.version,"0.12.0")?{filename:filename}:filename;var result=runInThisContext(content,options);return codeUnit.metadata.transformedTree=null,result},enableMemorySourceMaps_:function(){this.sourceMapsInMemory_||(require("source-map-support").install({retrieveSourceMap:function(url){try{var map=System.getSourceMap(url);if(map)return{url:url,map:map}}catch(ex){console.error("retrieveSourceMap FAILED ",ex)}}}),this.sourceMapsInMemory_=!0)}},{},$__super)}(LoaderCompiler);return{get NodeLoaderCompiler(){return NodeLoaderCompiler}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/InlineLoaderCompiler.js",[],function(){"use strict";var LoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./LoaderCompiler.js","traceur@0.0.107/src/loader/InlineLoaderCompiler.js")).LoaderCompiler,Script=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../syntax/trees/ParseTrees.js","traceur@0.0.107/src/loader/InlineLoaderCompiler.js")).Script,InlineLoaderCompiler=function($__super){function InlineLoaderCompiler(elements){$traceurRuntime.superConstructor(InlineLoaderCompiler).call(this),this.elements=elements}return $traceurRuntime.createClass(InlineLoaderCompiler,{write:function(){},evaluateCodeUnit:function(codeUnit){var $__1,tree=codeUnit.metadata.transformedTree;($__1=this.elements).push.apply($__1,$traceurRuntime.spread(tree.scriptItemList))},toTree:function(){return new Script(null,this.elements,null)}},{},$__super)}(LoaderCompiler);return{get InlineLoaderCompiler(){return InlineLoaderCompiler}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/NodeTraceurLoader.js",[],function(){"use strict";var TraceurLoader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TraceurLoader.js","traceur@0.0.107/src/loader/NodeTraceurLoader.js")).TraceurLoader,NodeLoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../node/NodeLoaderCompiler.js","traceur@0.0.107/src/loader/NodeTraceurLoader.js")).NodeLoaderCompiler,NodeTraceurLoader=function($__super){function NodeTraceurLoader(){var path=require("path"),fileloader=require("../node/nodeLoader.js"),url=(path.resolve("./")+"/").replace(/\\/g,"/");$traceurRuntime.superConstructor(NodeTraceurLoader).call(this,fileloader,url,new NodeLoaderCompiler),this.traceurMap_=null}return $traceurRuntime.createClass(NodeTraceurLoader,{getSourceMap:function(filename){var map=$traceurRuntime.superGet(this,NodeTraceurLoader.prototype,"getSourceMap").call(this,filename);if(!map&&filename.replace(/\\/g,"/").endsWith("/bin/traceur.js")){if(!this.traceurMap_){var fs=require("fs");this.traceurMap_=fs.readFileSync(filename+".map","utf8")}map=this.traceurMap_}return map}},{},$__super)}(TraceurLoader);return{get NodeTraceurLoader(){return NodeTraceurLoader}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/loader/loader-imports.js",[],function(){"use strict";var Loader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./Loader.js","traceur@0.0.107/src/loader/loader-imports.js")).Loader,LoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./LoaderCompiler.js","traceur@0.0.107/src/loader/loader-imports.js")).LoaderCompiler,BrowserTraceurLoader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TraceurLoader.js","traceur@0.0.107/src/loader/loader-imports.js")).BrowserTraceurLoader,NodeLoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("../node/NodeLoaderCompiler.js","traceur@0.0.107/src/loader/loader-imports.js")).NodeLoaderCompiler,InlineLoaderCompiler=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./InlineLoaderCompiler.js","traceur@0.0.107/src/loader/loader-imports.js")).InlineLoaderCompiler,NodeTraceurLoader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./NodeTraceurLoader.js","traceur@0.0.107/src/loader/loader-imports.js")).NodeTraceurLoader,TraceurLoader=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./TraceurLoader.js","traceur@0.0.107/src/loader/loader-imports.js")).TraceurLoader,loader={BrowserTraceurLoader:BrowserTraceurLoader,InlineLoaderCompiler:InlineLoaderCompiler,Loader:Loader,LoaderCompiler:LoaderCompiler,NodeLoaderCompiler:NodeLoaderCompiler,NodeTraceurLoader:NodeTraceurLoader,TraceurLoader:TraceurLoader};return{get loader(){return loader}}}),$traceurRuntime.registerModule("traceur@0.0.107/src/traceur.js",[],function(){"use strict";var $__traceur_64_0_46_0_46_107_47_src_47_util_45_imports_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./util-imports.js","traceur@0.0.107/src/traceur.js")),$__traceur_64_0_46_0_46_107_47_src_47_compiler_45_imports_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./compiler-imports.js","traceur@0.0.107/src/traceur.js")),$__traceur_64_0_46_0_46_107_47_src_47_loader_47_loader_45_imports_46_js__=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./loader/loader-imports.js","traceur@0.0.107/src/traceur.js"));return $traceurRuntime.exportStar({},$__traceur_64_0_46_0_46_107_47_src_47_util_45_imports_46_js__,$__traceur_64_0_46_0_46_107_47_src_47_compiler_45_imports_46_js__,$__traceur_64_0_46_0_46_107_47_src_47_loader_47_loader_45_imports_46_js__)}),$traceurRuntime.registerModule("traceur@0.0.107/src/traceur-import.js",[],function(){"use strict";var traceur=$traceurRuntime.getModule($traceurRuntime.normalizeModuleName("./traceur.js","traceur@0.0.107/src/traceur-import.js"));return Reflect.global.traceur=traceur,$traceurRuntime.ModuleStore.set("traceur@",traceur),{}}),$traceurRuntime.getModule("traceur@0.0.107/src/traceur-import.js"),function(){function bootstrap(){!function(global){function URLPolyfill(url,baseURL){if("string"!=typeof url)throw new TypeError("URL must be a string");var m=(url+"").replace(/^\s+|\s+$/g,"").replace(/\\/g,"/").match(/^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);if(!m)throw new RangeError("Invalid URL format");var protocol=m[1]||"",username=m[2]||"",password=m[3]||"",host=m[4]||"",hostname=m[5]||"",port=m[6]||"",pathname=m[7]||"",search=m[8]||"",hash=m[9]||"";if(void 0!==baseURL){var base=baseURL instanceof URLPolyfill?baseURL:new URLPolyfill(baseURL),flag=!protocol&&!host&&!username;!flag||pathname||search||(search=base.search),flag&&"/"!==pathname[0]&&(pathname=pathname?(!base.host&&!base.username||base.pathname?"":"/")+base.pathname.slice(0,base.pathname.lastIndexOf("/")+1)+pathname:base.pathname);var output=[];pathname.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(p){"/.."===p?output.pop():output.push(p)}),pathname=output.join("").replace(/^\//,"/"===pathname[0]?"/":""),flag&&(port=base.port,hostname=base.hostname,host=base.host,password=base.password,username=base.username),protocol||(protocol=base.protocol)}pathname=pathname.replace(/\\/g,"/"),this.origin=host?protocol+(""!==protocol||""!==host?"//":"")+host:"",this.href=protocol+(protocol&&host||"file:"==protocol?"//":"")+(""!==username?username+(""!==password?":"+password:"")+"@":"")+host+pathname+search+hash,this.protocol=protocol,this.username=username,this.password=password,this.host=host,this.hostname=hostname,this.port=port,this.pathname=pathname,this.search=search,this.hash=hash}global.URLPolyfill=URLPolyfill}("undefined"!=typeof self?self:global),function(__global){function addToError(err,msg){if(!err.originalErr)for(var stack=(""+((err.message||err)+(err.stack?"\n"+err.stack:""))).split("\n"),newStack=[],i=0;i<stack.length;i++)"undefined"!=typeof $__curScript&&stack[i].indexOf($__curScript.src)!=-1||newStack.push(stack[i]);var newMsg="(SystemJS) "+(newStack?newStack.join("\n\t"):err.message.substr(11))+"\n\t"+msg;isBrowser||(newMsg=newMsg.replace(isWindows?/file:\/\/\//g:/file:\/\//g,""));var newErr=errArgs?Error(newMsg,err.fileName,err.lineNumber):Error(newMsg);return newErr.stack=newMsg,newErr.originalErr=err.originalErr||err,newErr}function Module(){}function Loader(options){this._loader={loaderObj:this,loads:[],modules:{},importPromises:{},moduleRecords:{}},defineProperty(this,"global",{get:function(){return __global}})}function SystemJSLoader(){Loader.call(this),this.paths={},this._loader.paths={},systemJSConstructor.call(this)}function SystemProto(){}function hook(name,hook){SystemJSLoader.prototype[name]=hook(SystemJSLoader.prototype[name]||function(){})}function hookConstructor(hook){systemJSConstructor=hook(systemJSConstructor||function(){})}function isAbsolute(name){return name.match(absURLRegEx)}function isRel(name){return"."==name[0]&&(!name[1]||"/"==name[1]||"."==name[1])||"/"==name[0]}function isPlain(name){return!isRel(name)&&!isAbsolute(name)}function urlResolve(name,parent){if("."==name[0]){if("/"==name[1]&&"."!=name[2])return(parent&&parent.substr(0,parent.lastIndexOf("/")+1)||baseURI)+name.substr(2)}else if("/"!=name[0]&&name.indexOf(":")==-1)return(parent&&parent.substr(0,parent.lastIndexOf("/")+1)||baseURI)+name;return new URL(name,parent&&parent.replace(/#/g,"%05")||baseURIObj).href.replace(/%05/g,"#")}function applyPaths(loader,name){var wildcard,pathMatch="",maxWildcardPrefixLen=0,paths=loader.paths,pathsCache=loader._loader.paths;for(var p in paths)if(!paths.hasOwnProperty||paths.hasOwnProperty(p)){var path=paths[p];if(path!==pathsCache[p]&&(path=paths[p]=pathsCache[p]=urlResolve(paths[p],isRel(paths[p])?baseURI:loader.baseURL)),p.indexOf("*")===-1){if(name==p)return paths[p];if(name.substr(0,p.length-1)==p.substr(0,p.length-1)&&(name.length<p.length||name[p.length-1]==p[p.length-1])&&("/"==paths[p][paths[p].length-1]||""==paths[p]))return paths[p].substr(0,paths[p].length-1)+(name.length>p.length?(paths[p]&&"/"||"")+name.substr(p.length):"")}else{var pathParts=p.split("*");if(pathParts.length>2)throw new TypeError("Only one wildcard in a path is permitted");var wildcardPrefixLen=pathParts[0].length;wildcardPrefixLen>=maxWildcardPrefixLen&&name.substr(0,pathParts[0].length)==pathParts[0]&&name.substr(name.length-pathParts[1].length)==pathParts[1]&&(maxWildcardPrefixLen=wildcardPrefixLen,pathMatch=p,wildcard=name.substr(pathParts[0].length,name.length-pathParts[1].length-pathParts[0].length))}}var outPath=paths[pathMatch];return"string"==typeof wildcard&&(outPath=outPath.replace("*",wildcard)),outPath}function group(deps){for(var names=[],indices=[],i=0,l=deps.length;i<l;i++){var index=indexOf.call(names,deps[i]);index===-1?(names.push(deps[i]),indices.push([i])):indices[index].push(i)}return{names:names,indices:indices}}function getESModule(exports){var esModule={};if(("object"==typeof exports||"function"==typeof exports)&&exports!==__global)if(getOwnPropertyDescriptor)for(var p in exports)"default"!==p&&defineOrCopyProperty(esModule,exports,p);else extend(esModule,exports);return esModule["default"]=exports,defineProperty(esModule,"__useDefault",{value:!0}),esModule}function defineOrCopyProperty(targetObj,sourceObj,propName){try{var d;(d=Object.getOwnPropertyDescriptor(sourceObj,propName))&&defineProperty(targetObj,propName,d)}catch(ex){return targetObj[propName]=sourceObj[propName],!1}}function extend(a,b,prepend){var hasOwnProperty=b&&b.hasOwnProperty;for(var p in b)hasOwnProperty&&!b.hasOwnProperty(p)||prepend&&p in a||(a[p]=b[p]);return a}function extendMeta(a,b,prepend){var hasOwnProperty=b&&b.hasOwnProperty;for(var p in b)if(!hasOwnProperty||b.hasOwnProperty(p)){var val=b[p];p in a?val instanceof Array&&a[p]instanceof Array?a[p]=[].concat(prepend?val:a[p]).concat(prepend?a[p]:val):"object"==typeof val&&null!==val&&"object"==typeof a[p]?a[p]=extend(extend({},a[p]),val,prepend):prepend||(a[p]=val):a[p]=val}}function extendPkgConfig(pkgCfgA,pkgCfgB,pkgName,loader,warnInvalidProperties){for(var prop in pkgCfgB)if(indexOf.call(["main","format","defaultExtension","basePath"],prop)!=-1)pkgCfgA[prop]=pkgCfgB[prop];else if("map"==prop)extend(pkgCfgA.map=pkgCfgA.map||{},pkgCfgB.map);else if("meta"==prop)extend(pkgCfgA.meta=pkgCfgA.meta||{},pkgCfgB.meta);else if("depCache"==prop)for(var d in pkgCfgB.depCache){var dNormalized;dNormalized="./"==d.substr(0,2)?pkgName+"/"+d.substr(2):coreResolve.call(loader,d),loader.depCache[dNormalized]=(loader.depCache[dNormalized]||[]).concat(pkgCfgB.depCache[d])}else!warnInvalidProperties||indexOf.call(["browserConfig","nodeConfig","devConfig","productionConfig"],prop)!=-1||pkgCfgB.hasOwnProperty&&!pkgCfgB.hasOwnProperty(prop)||warn.call(loader,'"'+prop+'" is not a valid package configuration option in package '+pkgName)}function setPkgConfig(loader,pkgName,cfg,prependConfig){var pkg;if(loader.packages[pkgName]){var basePkg=loader.packages[pkgName];pkg=loader.packages[pkgName]={},extendPkgConfig(pkg,prependConfig?cfg:basePkg,pkgName,loader,prependConfig),extendPkgConfig(pkg,prependConfig?basePkg:cfg,pkgName,loader,!prependConfig)}else pkg=loader.packages[pkgName]=cfg;return"object"==typeof pkg.main&&(pkg.map=pkg.map||{},pkg.map["./@main"]=pkg.main,pkg.main["default"]=pkg.main["default"]||"./",pkg.main="@main"),pkg}function warn(msg){this.warnings&&"undefined"!=typeof console&&console.warn&&console.warn(msg)}function createInstantiate(load,result){load.metadata.entry=createEntry(),load.metadata.entry.execute=function(){return result},load.metadata.entry.deps=[],load.metadata.format="defined"}function readMemberExpression(p,value){for(var pParts=p.split(".");pParts.length;)value=value[pParts.shift()];return value}function getMapMatch(map,name){var bestMatch,bestMatchLength=0;for(var p in map)if(name.substr(0,p.length)==p&&(name.length==p.length||"/"==name[p.length])){var curMatchLength=p.split("/").length;if(curMatchLength<=bestMatchLength)continue;bestMatch=p,bestMatchLength=curMatchLength}return bestMatch}function prepareBaseURL(loader){this._loader.baseURL!==this.baseURL&&("/"!=this.baseURL[this.baseURL.length-1]&&(this.baseURL+="/"),this._loader.baseURL=this.baseURL=new URL(this.baseURL,baseURIObj).href)}function setProduction(isProduction,isBuilder){this.set("@system-env",envModule=this.newModule({browser:isBrowser,node:!!this._nodeRequire,production:!isBuilder&&isProduction,dev:isBuilder||!isProduction,build:isBuilder,"default":!0}))}function getNodeModule(name,baseURL){if(!isPlain(name))throw Error("Node module "+name+" can't be loaded as it is not a package require.");if(!parentModuleContext){var Module=this._nodeRequire("module"),base=baseURL.substr(isWindows?8:7);parentModuleContext=new Module(base),parentModuleContext.paths=Module._nodeModulePaths(base)}return parentModuleContext.require(name)}function coreResolve(name,parentName){if(isRel(name))return urlResolve(name,parentName);if(isAbsolute(name))return name;var mapMatch=getMapMatch(this.map,name);if(mapMatch){if(name=this.map[mapMatch]+name.substr(mapMatch.length),isRel(name))return urlResolve(name);if(isAbsolute(name))return name}if(this.has(name))return name;if("@node/"==name.substr(0,6)){if(!this._nodeRequire)throw new TypeError("Error loading "+name+". Can only load node core modules in Node.");return this.builder?this.set(name,this.newModule({})):this.set(name,this.newModule(getESModule(getNodeModule.call(this,name.substr(6),this.baseURL)))),name}return prepareBaseURL.call(this),applyPaths(this,name)||this.baseURL+name}function envSet(loader,cfg,envCallback){envModule.browser&&cfg.browserConfig&&envCallback(cfg.browserConfig),envModule.node&&cfg.nodeConfig&&envCallback(cfg.nodeConfig),envModule.dev&&cfg.devConfig&&envCallback(cfg.devConfig),envModule.build&&cfg.buildConfig&&envCallback(cfg.buildConfig),envModule.production&&cfg.productionConfig&&envCallback(cfg.productionConfig)}function detectRegisterFormat(source){var leadingCommentAndMeta=source.match(leadingCommentAndMetaRegEx);return leadingCommentAndMeta&&"System.register"==source.substr(leadingCommentAndMeta[0].length,15)}function createEntry(){return{name:null,deps:null,originalIndices:null,declare:null,execute:null,executingRequire:!1,declarative:!1,normalizedDeps:null,groupIndex:null,evaluated:!1,module:null,esModule:null,esmExports:!1}}function getGlobalValue(exports){if("string"==typeof exports)return readMemberExpression(exports,__global);if(!(exports instanceof Array))throw Error("Global exports must be a string or array.");for(var globalValue={},first=!0,i=0;i<exports.length;i++){var val=readMemberExpression(exports[i],__global);first&&(globalValue["default"]=val,first=!1),globalValue[exports[i].split(".").pop()]=val}return globalValue}function parseCondition(condition){var conditionExport,conditionModule,negation,negation="~"==condition[0],conditionExportIndex=condition.lastIndexOf("|");return conditionExportIndex!=-1?(conditionExport=condition.substr(conditionExportIndex+1),conditionModule=condition.substr(negation,conditionExportIndex-negation),negation&&warn.call(this,'Condition negation form "'+condition+'" is deprecated for "'+conditionModule+"|~"+conditionExport+'"'),"~"==conditionExport[0]&&(negation=!0,conditionExport=conditionExport.substr(1))):(conditionExport="default",conditionModule=condition.substr(negation),sysConditions.indexOf(conditionModule)!=-1&&(conditionExport=conditionModule,conditionModule=null)),{module:conditionModule||"@system-env",prop:conditionExport,negate:negation}}function serializeCondition(conditionObj){return conditionObj.module+"|"+(conditionObj.negate?"~":"")+conditionObj.prop}function resolveCondition(conditionObj,parentName,bool){var self=this;return this.normalize(conditionObj.module,parentName).then(function(normalizedCondition){return self.load(normalizedCondition).then(function(q){var m=readMemberExpression(conditionObj.prop,self.get(normalizedCondition));if(bool&&"boolean"!=typeof m)throw new TypeError("Condition "+serializeCondition(conditionObj)+" did not resolve to a boolean.");return conditionObj.negate?!m:m})})}function interpolateConditional(name,parentName){var conditionalMatch=name.match(interpolationRegEx);if(!conditionalMatch)return Promise.resolve(name);var conditionObj=parseCondition.call(this,conditionalMatch[0].substr(2,conditionalMatch[0].length-3));return this.builder?this.normalize(conditionObj.module,parentName).then(function(conditionModule){return conditionObj.module=conditionModule,name.replace(interpolationRegEx,"#{"+serializeCondition(conditionObj)+"}")}):resolveCondition.call(this,conditionObj,parentName,!1).then(function(conditionValue){if("string"!=typeof conditionValue)throw new TypeError("The condition value for "+name+" doesn't resolve to a string.");if(conditionValue.indexOf("/")!=-1)throw new TypeError("Unabled to interpolate conditional "+name+(parentName?" in "+parentName:"")+"\n\tThe condition value "+conditionValue+' cannot contain a "/" separator.');return name.replace(interpolationRegEx,conditionValue)})}function booleanConditional(name,parentName){var booleanIndex=name.lastIndexOf("#?");if(booleanIndex==-1)return Promise.resolve(name);var conditionObj=parseCondition.call(this,name.substr(booleanIndex+2));return this.builder?this.normalize(conditionObj.module,parentName).then(function(conditionModule){return conditionObj.module=conditionModule,name.substr(0,booleanIndex)+"#?"+serializeCondition(conditionObj)}):resolveCondition.call(this,conditionObj,parentName,!0).then(function(conditionValue){return conditionValue?name.substr(0,booleanIndex):"@empty"})}var isWorker="undefined"==typeof window&&"undefined"!=typeof self&&"undefined"!=typeof importScripts,isBrowser="undefined"!=typeof window&&"undefined"!=typeof document,isWindows="undefined"!=typeof process&&void 0!==process.platform&&!!process.platform.match(/^win/);__global.console||(__global.console={assert:function(){}});var defineProperty,indexOf=Array.prototype.indexOf||function(item){for(var i=0,thisLen=this.length;i<thisLen;i++)if(this[i]===item)return i;return-1};!function(){try{Object.defineProperty({},"a",{})&&(defineProperty=Object.defineProperty)}catch(e){defineProperty=function(obj,prop,opt){try{obj[prop]=opt.value||opt.get.call(obj)}catch(e){}}}}();var baseURI,errArgs="_"==Error(0,"_").fileName;if("undefined"!=typeof document&&document.getElementsByTagName){if(baseURI=document.baseURI,!baseURI){var bases=document.getElementsByTagName("base");baseURI=bases[0]&&bases[0].href||window.location.href}}else"undefined"!=typeof location&&(baseURI=__global.location.href);if(baseURI)baseURI=baseURI.split("#")[0].split("?")[0],baseURI=baseURI.substr(0,baseURI.lastIndexOf("/")+1);else{if("undefined"==typeof process||!process.cwd)throw new TypeError("No environment baseURI");baseURI="file://"+(isWindows?"/":"")+process.cwd()+"/",isWindows&&(baseURI=baseURI.replace(/\\/g,"/"))}try{var nativeURL="test:"==new __global.URL("test:///").protocol}catch(e){}var URL=nativeURL?__global.URL:__global.URLPolyfill;defineProperty(Module.prototype,"toString",{value:function(){return"Module"}}),function(){function createLoad(name){return{status:"loading",name:name||"<Anonymous"+ ++anonCnt+">",linkSets:[],dependencies:[],metadata:{}}}function loadModule(loader,name,options){return new Promise(asyncStartLoadPartwayThrough({step:options.address?"fetch":"locate",loader:loader,moduleName:name,moduleMetadata:options&&options.metadata||{},moduleSource:options.source,moduleAddress:options.address}))}function requestLoad(loader,request,refererName,refererAddress){return new Promise(function(resolve,reject){resolve(loader.loaderObj.normalize(request,refererName,refererAddress))}).then(function(name){var load;if(loader.modules[name])return load=createLoad(name),load.status="linked",load.module=loader.modules[name],load;for(var i=0,l=loader.loads.length;i<l;i++)if(load=loader.loads[i],load.name==name)return load;return load=createLoad(name),loader.loads.push(load),proceedToLocate(loader,load),load})}function proceedToLocate(loader,load){proceedToFetch(loader,load,Promise.resolve().then(function(){return loader.loaderObj.locate({name:load.name,metadata:load.metadata})}))}function proceedToFetch(loader,load,p){proceedToTranslate(loader,load,p.then(function(address){if("loading"==load.status)return load.address=address,loader.loaderObj.fetch({name:load.name,metadata:load.metadata,address:address})}))}function proceedToTranslate(loader,load,p){p.then(function(source){if("loading"==load.status)return load.address=load.address||load.name,Promise.resolve(loader.loaderObj.translate({name:load.name,metadata:load.metadata,address:load.address,source:source})).then(function(source){return load.source=source,loader.loaderObj.instantiate({name:load.name,metadata:load.metadata,address:load.address,source:source})}).then(function(instantiateResult){if(void 0===instantiateResult)throw new TypeError("Declarative modules unsupported in the polyfill.");if("object"!=typeof instantiateResult)throw new TypeError("Invalid instantiate return value");load.depsList=instantiateResult.deps||[],load.execute=instantiateResult.execute}).then(function(){load.dependencies=[];for(var depsList=load.depsList,loadPromises=[],i=0,l=depsList.length;i<l;i++)(function(request,index){loadPromises.push(requestLoad(loader,request,load.name,load.address).then(function(depLoad){if(load.dependencies[index]={key:request,value:depLoad.name},"linked"!=depLoad.status)for(var linkSets=load.linkSets.concat([]),i=0,l=linkSets.length;i<l;i++)addLoadToLinkSet(linkSets[i],depLoad)}))})(depsList[i],i);return Promise.all(loadPromises)}).then(function(){load.status="loaded";for(var linkSets=load.linkSets.concat([]),i=0,l=linkSets.length;i<l;i++)updateLinkSetOnLoad(linkSets[i],load)})})["catch"](function(exc){load.status="failed",load.exception=exc;for(var linkSets=load.linkSets.concat([]),i=0,l=linkSets.length;i<l;i++)linkSetFailed(linkSets[i],load,exc)})}function asyncStartLoadPartwayThrough(stepState){return function(resolve,reject){var loader=stepState.loader,name=stepState.moduleName,step=stepState.step;if(loader.modules[name])throw new TypeError('"'+name+'" already exists in the module table');for(var existingLoad,i=0,l=loader.loads.length;i<l;i++)if(loader.loads[i].name==name&&(existingLoad=loader.loads[i],"translate"!=step||existingLoad.source||(existingLoad.address=stepState.moduleAddress,proceedToTranslate(loader,existingLoad,Promise.resolve(stepState.moduleSource))),existingLoad.linkSets.length&&existingLoad.linkSets[0].loads[0].name==existingLoad.name))return existingLoad.linkSets[0].done.then(function(){resolve(existingLoad)});var load=existingLoad||createLoad(name);load.metadata=stepState.moduleMetadata;var linkSet=createLinkSet(loader,load);loader.loads.push(load),resolve(linkSet.done),"locate"==step?proceedToLocate(loader,load):"fetch"==step?proceedToFetch(loader,load,Promise.resolve(stepState.moduleAddress)):(load.address=stepState.moduleAddress,proceedToTranslate(loader,load,Promise.resolve(stepState.moduleSource)))}}function createLinkSet(loader,startingLoad){var linkSet={loader:loader,loads:[],startingLoad:startingLoad,loadingCount:0};return linkSet.done=new Promise(function(resolve,reject){linkSet.resolve=resolve,linkSet.reject=reject}),addLoadToLinkSet(linkSet,startingLoad),linkSet}function addLoadToLinkSet(linkSet,load){if("failed"!=load.status){for(var i=0,l=linkSet.loads.length;i<l;i++)if(linkSet.loads[i]==load)return;linkSet.loads.push(load),load.linkSets.push(linkSet),"loaded"!=load.status&&linkSet.loadingCount++;for(var loader=linkSet.loader,i=0,l=load.dependencies.length;i<l;i++)if(load.dependencies[i]){
var name=load.dependencies[i].value;if(!loader.modules[name])for(var j=0,d=loader.loads.length;j<d;j++)if(loader.loads[j].name==name){addLoadToLinkSet(linkSet,loader.loads[j]);break}}}}function doLink(linkSet){var error=!1;try{link(linkSet,function(load,exc){linkSetFailed(linkSet,load,exc),error=!0})}catch(e){linkSetFailed(linkSet,null,e),error=!0}return error}function updateLinkSetOnLoad(linkSet,load){if(linkSet.loadingCount--,!(linkSet.loadingCount>0)){var startingLoad=linkSet.startingLoad;if(linkSet.loader.loaderObj.execute===!1){for(var loads=[].concat(linkSet.loads),i=0,l=loads.length;i<l;i++){var load=loads[i];load.module={name:load.name,module:_newModule({}),evaluated:!0},load.status="linked",finishLoad(linkSet.loader,load)}return linkSet.resolve(startingLoad)}var abrupt=doLink(linkSet);abrupt||linkSet.resolve(startingLoad)}}function linkSetFailed(linkSet,load,exc){var loader=linkSet.loader;checkError:if(load)if(linkSet.loads[0].name==load.name)exc=addToError(exc,"Error loading "+load.name);else{for(var i=0;i<linkSet.loads.length;i++)for(var pLoad=linkSet.loads[i],j=0;j<pLoad.dependencies.length;j++){var dep=pLoad.dependencies[j];if(dep.value==load.name){exc=addToError(exc,"Error loading "+load.name+' as "'+dep.key+'" from '+pLoad.name);break checkError}}exc=addToError(exc,"Error loading "+load.name+" from "+linkSet.loads[0].name)}else exc=addToError(exc,"Error linking "+linkSet.loads[0].name);for(var loads=linkSet.loads.concat([]),i=0,l=loads.length;i<l;i++){var load=loads[i];loader.loaderObj.failed=loader.loaderObj.failed||[],indexOf.call(loader.loaderObj.failed,load)==-1&&loader.loaderObj.failed.push(load);var linkIndex=indexOf.call(load.linkSets,linkSet);if(load.linkSets.splice(linkIndex,1),0==load.linkSets.length){var globalLoadsIndex=indexOf.call(linkSet.loader.loads,load);globalLoadsIndex!=-1&&linkSet.loader.loads.splice(globalLoadsIndex,1)}}linkSet.reject(exc)}function finishLoad(loader,load){if(loader.loaderObj.trace){loader.loaderObj.loads||(loader.loaderObj.loads={});var depMap={};load.dependencies.forEach(function(dep){depMap[dep.key]=dep.value}),loader.loaderObj.loads[load.name]={name:load.name,deps:load.dependencies.map(function(dep){return dep.key}),depMap:depMap,address:load.address,metadata:load.metadata,source:load.source}}load.name&&(loader.modules[load.name]=load.module);var loadIndex=indexOf.call(loader.loads,load);loadIndex!=-1&&loader.loads.splice(loadIndex,1);for(var i=0,l=load.linkSets.length;i<l;i++)loadIndex=indexOf.call(load.linkSets[i].loads,load),loadIndex!=-1&&load.linkSets[i].loads.splice(loadIndex,1);load.linkSets.splice(0,load.linkSets.length)}function doDynamicExecute(linkSet,load,linkError){try{var module=load.execute()}catch(e){return void linkError(load,e)}return module&&module instanceof Module?module:void linkError(load,new TypeError("Execution must define a Module instance"))}function createImportPromise(loader,name,promise){var importPromises=loader._loader.importPromises;return importPromises[name]=promise.then(function(m){return importPromises[name]=void 0,m},function(e){throw importPromises[name]=void 0,e})}function link(linkSet,linkError){var loader=linkSet.loader;if(linkSet.loads.length)for(var loads=linkSet.loads.concat([]),i=0;i<loads.length;i++){var load=loads[i],module=doDynamicExecute(linkSet,load,linkError);if(!module)return;load.module={name:load.name,module:module},load.status="linked",finishLoad(loader,load)}}var anonCnt=0;Loader.prototype={constructor:Loader,define:function(name,source,options){if(this._loader.importPromises[name])throw new TypeError("Module is already loading.");return createImportPromise(this,name,new Promise(asyncStartLoadPartwayThrough({step:"translate",loader:this._loader,moduleName:name,moduleMetadata:options&&options.metadata||{},moduleSource:source,moduleAddress:options&&options.address})))},"delete":function(name){var loader=this._loader;return delete loader.importPromises[name],delete loader.moduleRecords[name],!!loader.modules[name]&&delete loader.modules[name]},get:function(key){if(this._loader.modules[key])return this._loader.modules[key].module},has:function(name){return!!this._loader.modules[name]},"import":function(name,parentName,parentAddress){"object"==typeof parentName&&(parentName=parentName.name);var loaderObj=this;return Promise.resolve(loaderObj.normalize(name,parentName)).then(function(name){var loader=loaderObj._loader;return loader.modules[name]?loader.modules[name].module:loader.importPromises[name]||createImportPromise(loaderObj,name,loadModule(loader,name,{}).then(function(load){return delete loader.importPromises[name],load.module.module}))})},load:function(name){var loader=this._loader;return loader.modules[name]?Promise.resolve():(loader.importPromises[name]||createImportPromise(this,name,new Promise(asyncStartLoadPartwayThrough({step:"locate",loader:loader,moduleName:name,moduleMetadata:{},moduleSource:void 0,moduleAddress:void 0})).then(function(load){return delete loader.importPromises[name],load.module.module}))).then(function(){})},module:function(source,options){var load=createLoad();load.address=options&&options.address;var linkSet=createLinkSet(this._loader,load),sourcePromise=Promise.resolve(source),loader=this._loader,p=linkSet.done.then(function(){return load.module.module});return proceedToTranslate(loader,load,sourcePromise),p},newModule:function(obj){if("object"!=typeof obj)throw new TypeError("Expected object");var m=new Module,pNames=[];if(Object.getOwnPropertyNames&&null!=obj)pNames=Object.getOwnPropertyNames(obj);else for(var key in obj)pNames.push(key);for(var i=0;i<pNames.length;i++)(function(key){defineProperty(m,key,{configurable:!1,enumerable:!0,get:function(){return obj[key]},set:function(){throw Error("Module exports cannot be changed externally.")}})})(pNames[i]);return Object.freeze&&Object.freeze(m),m},set:function(name,module){if(!(module instanceof Module))throw new TypeError("Loader.set("+name+", module) must be a module");this._loader.modules[name]={module:module}},normalize:function(name,referrerName,referrerAddress){},locate:function(load){return load.name},fetch:function(load){},translate:function(load){return load.source},instantiate:function(load){}};var _newModule=Loader.prototype.newModule}();var System,fetchTextFromURL;if("undefined"!=typeof XMLHttpRequest)fetchTextFromURL=function(url,authorization,fulfill,reject){function load(){fulfill(xhr.responseText)}function error(){reject(Error("XHR error"+(xhr.status?" ("+xhr.status+(xhr.statusText?" "+xhr.statusText:"")+")":"")+" loading "+url))}var xhr=new XMLHttpRequest,sameDomain=!0,doTimeout=!1;if(!("withCredentials"in xhr)){var domainCheck=/^(\w+:)?\/\/([^\/]+)/.exec(url);domainCheck&&(sameDomain=domainCheck[2]===window.location.host,domainCheck[1]&&(sameDomain&=domainCheck[1]===window.location.protocol))}sameDomain||"undefined"==typeof XDomainRequest||(xhr=new XDomainRequest,xhr.onload=load,xhr.onerror=error,xhr.ontimeout=error,xhr.onprogress=function(){},xhr.timeout=0,doTimeout=!0),xhr.onreadystatechange=function(){4===xhr.readyState&&(0==xhr.status?xhr.responseText?load():(xhr.addEventListener("error",error),xhr.addEventListener("load",load)):200===xhr.status?load():error())},xhr.open("GET",url,!0),xhr.setRequestHeader&&(xhr.setRequestHeader("Accept","application/x-es-module, */*"),authorization&&("string"==typeof authorization&&xhr.setRequestHeader("Authorization",authorization),xhr.withCredentials=!0)),doTimeout?setTimeout(function(){xhr.send()},0):xhr.send(null)};else if("undefined"!=typeof require&&"undefined"!=typeof process){var fs;fetchTextFromURL=function(url,authorization,fulfill,reject){if("file:///"!=url.substr(0,8))throw Error('Unable to fetch "'+url+'". Only file URLs of the form file:/// allowed running in Node.');return fs=fs||require("fs"),url=isWindows?url.replace(/\//g,"\\").substr(8):url.substr(7),fs.readFile(url,function(err,data){if(err)return reject(err);var dataString=data+"";"\ufeff"===dataString[0]&&(dataString=dataString.substr(1)),fulfill(dataString)})}}else{if("undefined"==typeof self||void 0===self.fetch)throw new TypeError("No environment fetch API available.");fetchTextFromURL=function(url,authorization,fulfill,reject){var opts={headers:{Accept:"application/x-es-module, */*"}};authorization&&("string"==typeof authorization&&(opts.headers.Authorization=authorization),opts.credentials="include"),fetch(url,opts).then(function(r){if(r.ok)return r.text();throw Error("Fetch error: "+r.status+" "+r.statusText)}).then(fulfill,reject)}}var transpile=function(){function transpile(load){var self=this;return Promise.resolve(__global["typescript"==self.transpiler?"ts":self.transpiler]||(self.pluginLoader||self)["import"](self.transpiler)).then(function(transpiler){transpiler.__useDefault&&(transpiler=transpiler["default"]);var transpileFunction;return transpileFunction=transpiler.Compiler?traceurTranspile:transpiler.createLanguageService?typescriptTranspile:babelTranspile,"(function(__moduleName){"+transpileFunction.call(self,load,transpiler)+'\n})("'+load.name+'");\n//# sourceURL='+load.address+"!transpiled"})}function traceurTranspile(load,traceur){var options=this.traceurOptions||{};options.modules="instantiate",options.script=!1,void 0===options.sourceMaps&&(options.sourceMaps="inline"),options.filename=load.address,options.inputSourceMap=load.metadata.sourceMap,options.moduleName=!1;var compiler=new traceur.Compiler(options);return doTraceurCompile(load.source,compiler,options.filename)}function doTraceurCompile(source,compiler,filename){try{return compiler.compile(source,filename)}catch(e){if(e.length)throw e[0];throw e}}function babelTranspile(load,babel){var options=this.babelOptions||{};return options.modules="system",void 0===options.sourceMap&&(options.sourceMap="inline"),options.inputSourceMap=load.metadata.sourceMap,options.filename=load.address,options.code=!0,options.ast=!1,babel.transform(load.source,options).code}function typescriptTranspile(load,ts){var options=this.typescriptOptions||{};return options.target=options.target||ts.ScriptTarget.ES5,void 0===options.sourceMap&&(options.sourceMap=!0),options.sourceMap&&options.inlineSourceMap!==!1&&(options.inlineSourceMap=!0),options.module=ts.ModuleKind.System,ts.transpile(load.source,options,load.address)}return Loader.prototype.transpiler="traceur",transpile}();SystemProto.prototype=Loader.prototype,SystemJSLoader.prototype=new SystemProto,SystemJSLoader.prototype.constructor=SystemJSLoader;var systemJSConstructor,absURLRegEx=/^[^\/]+:\/\//,baseURIObj=new URL(baseURI),getOwnPropertyDescriptor=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(e){getOwnPropertyDescriptor=!1}var __exec;!function(){function inlineSourceMap(sourceMapString){return hasBuffer?sourceMapPrefix+new Buffer(sourceMapString).toString("base64"):"undefined"!=typeof btoa?sourceMapPrefix+btoa(unescape(encodeURIComponent(sourceMapString))):""}function getSource(load,wrap){var lastLineIndex=load.source.lastIndexOf("\n");"global"==load.metadata.format&&(wrap=!1);var sourceMap=load.metadata.sourceMap;if(sourceMap){if("object"!=typeof sourceMap)throw new TypeError("load.metadata.sourceMap must be set to an object.");sourceMap=JSON.stringify(sourceMap)}return(wrap?"(function(System, SystemJS) {":"")+load.source+(wrap?"\n})(System, System);":"")+("\n//# sourceURL="!=load.source.substr(lastLineIndex,15)?"\n//# sourceURL="+load.address+(sourceMap?"!transpiled":""):"")+(sourceMap&&inlineSourceMap(sourceMap)||"")}function preExec(loader,load){curLoad=load,0==callCounter++&&(curSystem=__global.System),__global.System=__global.SystemJS=loader}function postExec(){0==--callCounter&&(__global.System=__global.SystemJS=curSystem),curLoad=void 0}function scriptExec(load){head||(head=document.head||document.body||document.documentElement);var script=document.createElement("script");script.text=getSource(load,!1);var e,onerror=window.onerror;if(window.onerror=function(_e){e=addToError(_e,"Evaluating "+load.address),onerror&&onerror.apply(this,arguments)},preExec(this,load),load.metadata.integrity&&script.setAttribute("integrity",load.metadata.integrity),load.metadata.nonce&&script.setAttribute("nonce",load.metadata.nonce),head.appendChild(script),head.removeChild(script),postExec(),window.onerror=onerror,e)throw e}var hasBuffer="undefined"!=typeof Buffer;try{hasBuffer&&"YQ=="!=new Buffer("a").toString("base64")&&(hasBuffer=!1)}catch(e){hasBuffer=!1}var curLoad,sourceMapPrefix="\n//# sourceMappingURL=data:application/json;base64,";hook("pushRegister_",function(){return function(register){return!!curLoad&&(this.reduceRegister_(curLoad,register),!0)}});var curSystem,useVm,vm,callCounter=0;__exec=function(load){if(load.source){if((load.metadata.integrity||load.metadata.nonce)&&supportsScriptExec)return scriptExec.call(this,load);try{preExec(this,load),curLoad=load,!vm&&this._nodeRequire&&(vm=this._nodeRequire("vm"),useVm=vm.runInThisContext("typeof System !== 'undefined' && System")===this),useVm?vm.runInThisContext(getSource(load,!0),{filename:load.address+(load.metadata.sourceMap?"!transpiled":"")}):(0,eval)(getSource(load,!0)),postExec()}catch(e){throw postExec(),addToError(e,"Evaluating "+load.address)}}};var supportsScriptExec=!1;isBrowser&&"undefined"!=typeof document&&document.getElementsByTagName&&(window.chrome&&window.chrome.extension||navigator.userAgent.match(/^Node\.js/)||(supportsScriptExec=!0));var head}();var envModule;hookConstructor(function(constructor){return function(){constructor.call(this),this.baseURL=baseURI,this.map={},"undefined"!=typeof $__curScript&&(this.scriptSrc=$__curScript.src),this.warnings=!1,this.defaultJSExtensions=!1,this.pluginFirst=!1,this.loaderErrorStack=!1,this.set("@empty",this.newModule({})),setProduction.call(this,!1,!1)}}),"undefined"==typeof require||"undefined"==typeof process||process.browser||(SystemJSLoader.prototype._nodeRequire=require);var parentModuleContext;hook("normalize",function(normalize){return function(name,parentName,skipExt){var resolved=coreResolve.call(this,name,parentName);return!this.defaultJSExtensions||skipExt||".js"==resolved.substr(resolved.length-3,3)||isPlain(resolved)||(resolved+=".js"),resolved}});var httpRequest="undefined"!=typeof XMLHttpRequest;hook("locate",function(locate){return function(load){return Promise.resolve(locate.call(this,load)).then(function(address){return httpRequest?address.replace(/#/g,"%23"):address})}}),hook("fetch",function(){return function(load){return new Promise(function(resolve,reject){fetchTextFromURL(load.address,load.metadata.authorization,resolve,reject)})}}),hook("import",function(systemImport){return function(name,parentName,parentAddress){return parentName&&parentName.name&&warn.call(this,"SystemJS.import(name, { name: parentName }) is deprecated for SystemJS.import(name, parentName), while importing "+name+" from "+parentName.name),systemImport.call(this,name,parentName,parentAddress).then(function(module){return module.__useDefault?module["default"]:module})}}),hook("translate",function(systemTranslate){return function(load){return"detect"==load.metadata.format&&(load.metadata.format=void 0),systemTranslate.apply(this,arguments)}}),hook("instantiate",function(instantiate){return function(load){if("json"==load.metadata.format&&!this.builder){var entry=load.metadata.entry=createEntry();entry.deps=[],entry.execute=function(){try{return JSON.parse(load.source)}catch(e){throw Error("Invalid JSON file "+load.name)}}}}}),SystemJSLoader.prototype.getConfig=function(name){var cfg={},loader=this;for(var p in loader)loader.hasOwnProperty&&!loader.hasOwnProperty(p)||p in SystemJSLoader.prototype&&"transpiler"!=p||indexOf.call(["_loader","amdDefine","amdRequire","defined","failed","version","loads"],p)==-1&&(cfg[p]=loader[p]);return cfg.production=envModule.production,cfg};var curCurScript;SystemJSLoader.prototype.config=function(cfg,isEnvConfig){function checkHasConfig(obj){for(var p in obj)if(obj.hasOwnProperty(p))return!0}var loader=this;if("loaderErrorStack"in cfg&&(curCurScript=$__curScript,cfg.loaderErrorStack?$__curScript=void 0:$__curScript=curCurScript),"warnings"in cfg&&(loader.warnings=cfg.warnings),cfg.transpilerRuntime===!1&&(loader._loader.loadedTranspilerRuntime=!0),("production"in cfg||"build"in cfg)&&setProduction.call(loader,!!cfg.production,!!(cfg.build||envModule&&envModule.build)),!isEnvConfig){var baseURL;if(envSet(loader,cfg,function(cfg){baseURL=baseURL||cfg.baseURL}),baseURL=baseURL||cfg.baseURL){if(checkHasConfig(loader.packages)||checkHasConfig(loader.meta)||checkHasConfig(loader.depCache)||checkHasConfig(loader.bundles)||checkHasConfig(loader.packageConfigPaths))throw new TypeError("Incorrect configuration order. The baseURL must be configured with the first SystemJS.config call.");this.baseURL=baseURL,prepareBaseURL.call(this)}if(cfg.paths&&extend(loader.paths,cfg.paths),envSet(loader,cfg,function(cfg){cfg.paths&&extend(loader.paths,cfg.paths)}),this.warnings)for(var p in loader.paths)p.indexOf("*")!=-1&&warn.call(loader,'Paths configuration "'+p+'" -> "'+loader.paths[p]+'" uses wildcards which are being deprecated for just leaving a trailing "/" to indicate folder paths.')}if(cfg.defaultJSExtensions&&(loader.defaultJSExtensions=cfg.defaultJSExtensions,warn.call(loader,"The defaultJSExtensions configuration option is deprecated, use packages configuration instead.")),cfg.pluginFirst&&(loader.pluginFirst=cfg.pluginFirst),cfg.map)for(var p in cfg.map){var v=cfg.map[p];if("string"!=typeof v){var defaultJSExtension=loader.defaultJSExtensions&&".js"!=p.substr(p.length-3,3),prop=loader.decanonicalize(p);defaultJSExtension&&".js"==prop.substr(prop.length-3,3)&&(prop=prop.substr(0,prop.length-3));var pkgMatch="";for(var pkg in loader.packages)prop.substr(0,pkg.length)==pkg&&(!prop[pkg.length]||"/"==prop[pkg.length])&&pkgMatch.split("/").length<pkg.split("/").length&&(pkgMatch=pkg);pkgMatch&&loader.packages[pkgMatch].main&&(prop=prop.substr(0,prop.length-loader.packages[pkgMatch].main.length-1));var pkg=loader.packages[prop]=loader.packages[prop]||{};pkg.map=v}else loader.map[p]=v}if(cfg.packageConfigPaths){for(var packageConfigPaths=[],i=0;i<cfg.packageConfigPaths.length;i++){var path=cfg.packageConfigPaths[i],packageLength=Math.max(path.lastIndexOf("*")+1,path.lastIndexOf("/")),normalized=coreResolve.call(loader,path.substr(0,packageLength));packageConfigPaths[i]=normalized+path.substr(packageLength)}loader.packageConfigPaths=packageConfigPaths}if(cfg.bundles)for(var p in cfg.bundles){for(var bundle=[],i=0;i<cfg.bundles[p].length;i++){var defaultJSExtension=loader.defaultJSExtensions&&".js"!=cfg.bundles[p][i].substr(cfg.bundles[p][i].length-3,3),normalizedBundleDep=loader.decanonicalize(cfg.bundles[p][i]);defaultJSExtension&&".js"==normalizedBundleDep.substr(normalizedBundleDep.length-3,3)&&(normalizedBundleDep=normalizedBundleDep.substr(0,normalizedBundleDep.length-3)),bundle.push(normalizedBundleDep)}loader.bundles[p]=bundle}if(cfg.packages)for(var p in cfg.packages){if(p.match(/^([^\/]+:)?\/\/$/))throw new TypeError('"'+p+'" is not a valid package name.');var prop=coreResolve.call(loader,p);"/"==prop[prop.length-1]&&(prop=prop.substr(0,prop.length-1)),setPkgConfig(loader,prop,cfg.packages[p],!1)}for(var c in cfg){var v=cfg[c];if(indexOf.call(["baseURL","map","packages","bundles","paths","warnings","packageConfigPaths","loaderErrorStack","browserConfig","nodeConfig","devConfig","buildConfig","productionConfig"],c)==-1)if("object"!=typeof v||v instanceof Array)loader[c]=v;else{loader[c]=loader[c]||{};for(var p in v)if("meta"==c&&"*"==p[0])extend(loader[c][p]=loader[c][p]||{},v[p]);else if("meta"==c){var resolved=coreResolve.call(loader,p);loader.defaultJSExtensions&&".js"!=resolved.substr(resolved.length-3,3)&&!isPlain(resolved)&&(resolved+=".js"),extend(loader[c][resolved]=loader[c][resolved]||{},v[p])}else if("depCache"==c){var defaultJSExtension=loader.defaultJSExtensions&&".js"!=p.substr(p.length-3,3),prop=loader.decanonicalize(p);defaultJSExtension&&".js"==prop.substr(prop.length-3,3)&&(prop=prop.substr(0,prop.length-3)),loader[c][prop]=[].concat(v[p])}else loader[c][p]=v[p]}}envSet(loader,cfg,function(cfg){loader.config(cfg,!0)})},function(){function getPackage(loader,normalized){var curPkg,pkgLen,curPkgLen=0;for(var p in loader.packages)normalized.substr(0,p.length)!==p||normalized.length!==p.length&&"/"!==normalized[p.length]||(pkgLen=p.split("/").length,pkgLen>curPkgLen&&(curPkg=p,curPkgLen=pkgLen));return curPkg}function addDefaultExtension(loader,pkg,pkgName,subPath,skipExtensions){if(!subPath||"/"==subPath[subPath.length-1]||skipExtensions||pkg.defaultExtension===!1)return subPath;var metaMatch=!1;if(pkg.meta&&getMetaMatches(pkg.meta,subPath,function(metaPattern,matchMeta,matchDepth){if(0==matchDepth||metaPattern.lastIndexOf("*")!=metaPattern.length-1)return metaMatch=!0}),!metaMatch&&loader.meta&&getMetaMatches(loader.meta,pkgName+"/"+subPath,function(metaPattern,matchMeta,matchDepth){if(0==matchDepth||metaPattern.lastIndexOf("*")!=metaPattern.length-1)return metaMatch=!0}),metaMatch)return subPath;var defaultExtension="."+(pkg.defaultExtension||"js");return subPath.substr(subPath.length-defaultExtension.length)!=defaultExtension?subPath+defaultExtension:subPath}function applyPackageConfigSync(loader,pkg,pkgName,subPath,skipExtensions){if(!subPath){if(!pkg.main)return pkgName+(loader.defaultJSExtensions?".js":"");subPath="./"==pkg.main.substr(0,2)?pkg.main.substr(2):pkg.main}if(pkg.map){var mapPath="./"+subPath,mapMatch=getMapMatch(pkg.map,mapPath);if(mapMatch||(mapPath="./"+addDefaultExtension(loader,pkg,pkgName,subPath,skipExtensions),mapPath!="./"+subPath&&(mapMatch=getMapMatch(pkg.map,mapPath))),mapMatch){var mapped=doMapSync(loader,pkg,pkgName,mapMatch,mapPath,skipExtensions);if(mapped)return mapped}}return pkgName+"/"+addDefaultExtension(loader,pkg,pkgName,subPath,skipExtensions)}function validMapping(mapMatch,mapped,pkgName,path){if("."==mapMatch)throw Error("Package "+pkgName+' has a map entry for "." which is not permitted.');return!(mapped.substr(0,mapMatch.length)==mapMatch&&path.length>mapMatch.length)}function doMapSync(loader,pkg,pkgName,mapMatch,path,skipExtensions){"/"==path[path.length-1]&&(path=path.substr(0,path.length-1));var mapped=pkg.map[mapMatch];if("object"==typeof mapped)throw Error("Synchronous conditional normalization not supported sync normalizing "+mapMatch+" in "+pkgName);if(validMapping(mapMatch,mapped,pkgName,path)&&"string"==typeof mapped){if("."==mapped)mapped=pkgName;else if("./"==mapped.substr(0,2))return pkgName+"/"+addDefaultExtension(loader,pkg,pkgName,mapped.substr(2)+path.substr(mapMatch.length),skipExtensions);return loader.normalizeSync(mapped+path.substr(mapMatch.length),pkgName+"/")}}function applyPackageConfig(loader,pkg,pkgName,subPath,skipExtensions){if(!subPath){if(!pkg.main)return Promise.resolve(pkgName+(loader.defaultJSExtensions?".js":""));subPath="./"==pkg.main.substr(0,2)?pkg.main.substr(2):pkg.main}var mapPath,mapMatch;return pkg.map&&(mapPath="./"+subPath,mapMatch=getMapMatch(pkg.map,mapPath),mapMatch||(mapPath="./"+addDefaultExtension(loader,pkg,pkgName,subPath,skipExtensions),mapPath!="./"+subPath&&(mapMatch=getMapMatch(pkg.map,mapPath)))),(mapMatch?doMap(loader,pkg,pkgName,mapMatch,mapPath,skipExtensions):Promise.resolve()).then(function(mapped){return mapped?Promise.resolve(mapped):Promise.resolve(pkgName+"/"+addDefaultExtension(loader,pkg,pkgName,subPath,skipExtensions))})}function doStringMap(loader,pkg,pkgName,mapMatch,mapped,path,skipExtensions){if("."==mapped)mapped=pkgName;else if("./"==mapped.substr(0,2))return Promise.resolve(pkgName+"/"+addDefaultExtension(loader,pkg,pkgName,mapped.substr(2)+path.substr(mapMatch.length),skipExtensions)).then(function(name){return interpolateConditional.call(loader,name,pkgName+"/")});return loader.normalize(mapped+path.substr(mapMatch.length),pkgName+"/")}function doMap(loader,pkg,pkgName,mapMatch,path,skipExtensions){"/"==path[path.length-1]&&(path=path.substr(0,path.length-1));var mapped=pkg.map[mapMatch];if("string"==typeof mapped)return validMapping(mapMatch,mapped,pkgName,path)?doStringMap(loader,pkg,pkgName,mapMatch,mapped,path,skipExtensions):Promise.resolve();if(loader.builder)return Promise.resolve(pkgName+"/#:"+path);var conditionPromises=[],conditions=[];for(var e in mapped){var c=parseCondition(e);conditions.push({condition:c,map:mapped[e]}),conditionPromises.push(loader["import"](c.module,pkgName))}return Promise.all(conditionPromises).then(function(conditionValues){for(var i=0;i<conditions.length;i++){var c=conditions[i].condition,value=readMemberExpression(c.prop,conditionValues[i]);if(!c.negate&&value||c.negate&&!value)return conditions[i].map}}).then(function(mapped){if(mapped){if(!validMapping(mapMatch,mapped,pkgName,path))return;return doStringMap(loader,pkg,pkgName,mapMatch,mapped,path,skipExtensions)}})}function createPkgConfigPathObj(path){var lastWildcard=path.lastIndexOf("*"),length=Math.max(lastWildcard+1,path.lastIndexOf("/"));return{length:length,regEx:RegExp("^("+path.substr(0,length).replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[^\\/]+")+")(\\/|$)"),wildcard:lastWildcard!=-1}}function getPackageConfigMatch(loader,normalized){for(var pkgName,configPath,exactMatch=!1,i=0;i<loader.packageConfigPaths.length;i++){var packageConfigPath=loader.packageConfigPaths[i],p=packageConfigPaths[packageConfigPath]||(packageConfigPaths[packageConfigPath]=createPkgConfigPathObj(packageConfigPath));if(!(normalized.length<p.length)){var match=normalized.match(p.regEx);!match||pkgName&&(exactMatch&&p.wildcard||!(pkgName.length<match[1].length))||(pkgName=match[1],exactMatch=!p.wildcard,configPath=pkgName+packageConfigPath.substr(p.length))}}if(pkgName)return{packageName:pkgName,configPath:configPath}}function loadPackageConfigPath(loader,pkgName,pkgConfigPath){var configLoader=loader.pluginLoader||loader;return(configLoader.meta[pkgConfigPath]=configLoader.meta[pkgConfigPath]||{}).format="json",configLoader.meta[pkgConfigPath].loader=null,configLoader.load(pkgConfigPath).then(function(){var cfg=configLoader.get(pkgConfigPath)["default"];return cfg.systemjs&&(cfg=cfg.systemjs),cfg.modules&&(cfg.meta=cfg.modules,warn.call(loader,"Package config file "+pkgConfigPath+' is configured with "modules", which is deprecated as it has been renamed to "meta".')),setPkgConfig(loader,pkgName,cfg,!0)})}function getMetaMatches(pkgMeta,subPath,matchFn){var wildcardIndex;for(var module in pkgMeta){var dotRel="./"==module.substr(0,2)?"./":"";if(dotRel&&(module=module.substr(2)),wildcardIndex=module.indexOf("*"),wildcardIndex!==-1&&module.substr(0,wildcardIndex)==subPath.substr(0,wildcardIndex)&&module.substr(wildcardIndex+1)==subPath.substr(subPath.length-module.length+wildcardIndex+1)&&matchFn(module,pkgMeta[dotRel+module],module.split("/").length))return}var exactMeta=pkgMeta[subPath]&&pkgMeta.hasOwnProperty&&pkgMeta.hasOwnProperty(subPath)?pkgMeta[subPath]:pkgMeta["./"+subPath];exactMeta&&matchFn(exactMeta,exactMeta,0)}hookConstructor(function(constructor){return function(){constructor.call(this),this.packages={},this.packageConfigPaths=[]}}),SystemJSLoader.prototype.normalizeSync=SystemJSLoader.prototype.decanonicalize=SystemJSLoader.prototype.normalize,hook("decanonicalize",function(decanonicalize){return function(name,parentName){if(this.builder)return decanonicalize.call(this,name,parentName,!0);var decanonicalized=decanonicalize.call(this,name,parentName,!1);if(!this.defaultJSExtensions)return decanonicalized;var pkgName=getPackage(this,decanonicalized),pkg=this.packages[pkgName],defaultExtension=pkg&&pkg.defaultExtension;return void 0==defaultExtension&&pkg&&pkg.meta&&getMetaMatches(pkg.meta,decanonicalized.substr(pkgName),function(metaPattern,matchMeta,matchDepth){if(0==matchDepth||metaPattern.lastIndexOf("*")!=metaPattern.length-1)return defaultExtension=!1,!0}),(defaultExtension===!1||defaultExtension&&".js"!=defaultExtension)&&".js"!=name.substr(name.length-3,3)&&".js"==decanonicalized.substr(decanonicalized.length-3,3)&&(decanonicalized=decanonicalized.substr(0,decanonicalized.length-3)),decanonicalized}}),hook("normalizeSync",function(normalizeSync){return function(name,parentName,isPlugin){var loader=this;if(isPlugin=isPlugin===!0,parentName)var parentPackageName=getPackage(loader,parentName)||loader.defaultJSExtensions&&".js"==parentName.substr(parentName.length-3,3)&&getPackage(loader,parentName.substr(0,parentName.length-3));var parentPackage=parentPackageName&&loader.packages[parentPackageName];if(parentPackage&&"."!=name[0]){var parentMap=parentPackage.map,parentMapMatch=parentMap&&getMapMatch(parentMap,name);if(parentMapMatch&&"string"==typeof parentMap[parentMapMatch]){var mapped=doMapSync(loader,parentPackage,parentPackageName,parentMapMatch,name,isPlugin);if(mapped)return mapped}}var defaultJSExtension=loader.defaultJSExtensions&&".js"!=name.substr(name.length-3,3),normalized=normalizeSync.call(loader,name,parentName,!1);defaultJSExtension&&".js"!=normalized.substr(normalized.length-3,3)&&(defaultJSExtension=!1),defaultJSExtension&&(normalized=normalized.substr(0,normalized.length-3));var pkgConfigMatch=getPackageConfigMatch(loader,normalized),pkgName=pkgConfigMatch&&pkgConfigMatch.packageName||getPackage(loader,normalized);if(!pkgName)return normalized+(defaultJSExtension?".js":"");var subPath=normalized.substr(pkgName.length+1);return applyPackageConfigSync(loader,loader.packages[pkgName]||{},pkgName,subPath,isPlugin)}}),hook("normalize",function(normalize){return function(name,parentName,isPlugin){var loader=this;return isPlugin=isPlugin===!0,Promise.resolve().then(function(){if(parentName)var parentPackageName=getPackage(loader,parentName)||loader.defaultJSExtensions&&".js"==parentName.substr(parentName.length-3,3)&&getPackage(loader,parentName.substr(0,parentName.length-3));var parentPackage=parentPackageName&&loader.packages[parentPackageName];if(parentPackage&&"./"!=name.substr(0,2)){var parentMap=parentPackage.map,parentMapMatch=parentMap&&getMapMatch(parentMap,name);if(parentMapMatch)return doMap(loader,parentPackage,parentPackageName,parentMapMatch,name,isPlugin)}return Promise.resolve()}).then(function(mapped){if(mapped)return mapped;var defaultJSExtension=loader.defaultJSExtensions&&".js"!=name.substr(name.length-3,3),normalized=normalize.call(loader,name,parentName,!1);defaultJSExtension&&".js"!=normalized.substr(normalized.length-3,3)&&(defaultJSExtension=!1),defaultJSExtension&&(normalized=normalized.substr(0,normalized.length-3));var pkgConfigMatch=getPackageConfigMatch(loader,normalized),pkgName=pkgConfigMatch&&pkgConfigMatch.packageName||getPackage(loader,normalized);if(!pkgName)return Promise.resolve(normalized+(defaultJSExtension?".js":""));var pkg=loader.packages[pkgName],isConfigured=pkg&&(pkg.configured||!pkgConfigMatch);return(isConfigured?Promise.resolve(pkg):loadPackageConfigPath(loader,pkgName,pkgConfigMatch.configPath)).then(function(pkg){var subPath=normalized.substr(pkgName.length+1);return applyPackageConfig(loader,pkg,pkgName,subPath,isPlugin)})})}});var packageConfigPaths={};hook("locate",function(locate){return function(load){var loader=this;return Promise.resolve(locate.call(this,load)).then(function(address){var pkgName=getPackage(loader,load.name);if(pkgName){var pkg=loader.packages[pkgName],subPath=load.name.substr(pkgName.length+1),meta={};if(pkg.meta){var bestDepth=0;getMetaMatches(pkg.meta,subPath,function(metaPattern,matchMeta,matchDepth){matchDepth>bestDepth&&(bestDepth=matchDepth),extendMeta(meta,matchMeta,matchDepth&&bestDepth>matchDepth)}),extendMeta(load.metadata,meta)}pkg.format&&!load.metadata.loader&&(load.metadata.format=load.metadata.format||pkg.format)}return address})}})}(),function(){function getInteractiveScriptLoad(){if(interactiveScript&&"interactive"===interactiveScript.script.readyState)return interactiveScript.load;for(var i=0;i<interactiveLoadingScripts.length;i++)if("interactive"==interactiveLoadingScripts[i].script.readyState)return interactiveScript=interactiveLoadingScripts[i],
interactiveScript.load}function webWorkerImport(loader,load){return new Promise(function(resolve,reject){load.metadata.integrity&&reject(Error("Subresource integrity checking is not supported in web workers.")),workerLoad=load;try{importScripts(load.address)}catch(e){workerLoad=null,reject(e)}workerLoad=null,load.metadata.entry||reject(Error(load.address+" did not call System.register or AMD define. If loading a global, ensure the meta format is set to global.")),resolve("")})}if("undefined"!=typeof document)var head=document.getElementsByTagName("head")[0];var curSystem,curRequire,interactiveScript,workerLoad=null,ieEvents=head&&function(){var s=document.createElement("script"),isOpera="undefined"!=typeof opera&&""+opera=="[object Opera]";return s.attachEvent&&!(s.attachEvent.toString&&(""+s.attachEvent).indexOf("[native code")<0)&&!isOpera}(),interactiveLoadingScripts=[],loadingCnt=0,registerQueue=[];hook("pushRegister_",function(pushRegister){return function(register){return!pushRegister.call(this,register)&&(workerLoad?this.reduceRegister_(workerLoad,register):ieEvents?this.reduceRegister_(getInteractiveScriptLoad(),register):loadingCnt?registerQueue.push(register):this.reduceRegister_(null,register),!0)}}),hook("fetch",function(fetch){return function(load){var loader=this;return"json"!=load.metadata.format&&load.metadata.scriptLoad&&(isBrowser||isWorker)?isWorker?webWorkerImport(loader,load):new Promise(function(resolve,reject){function complete(evt){if(!s.readyState||"loaded"==s.readyState||"complete"==s.readyState){if(loadingCnt--,load.metadata.entry||registerQueue.length){if(!ieEvents){for(var i=0;i<registerQueue.length;i++)loader.reduceRegister_(load,registerQueue[i]);registerQueue=[]}}else loader.reduceRegister_(load);cleanup(),load.metadata.entry||load.metadata.bundle||reject(Error(load.name+" did not call System.register or AMD define. If loading a global module configure the global name via the meta exports property for script injection support.")),resolve("")}}function error(evt){cleanup(),reject(Error("Unable to load script "+load.address))}function cleanup(){if(__global.System=curSystem,__global.require=curRequire,s.detachEvent){s.detachEvent("onreadystatechange",complete);for(var i=0;i<interactiveLoadingScripts.length;i++)interactiveLoadingScripts[i].script==s&&(interactiveScript&&interactiveScript.script==s&&(interactiveScript=null),interactiveLoadingScripts.splice(i,1))}else s.removeEventListener("load",complete,!1),s.removeEventListener("error",error,!1);head.removeChild(s)}var s=document.createElement("script");s.async=!0,load.metadata.crossOrigin&&(s.crossOrigin=load.metadata.crossOrigin),load.metadata.integrity&&s.setAttribute("integrity",load.metadata.integrity),ieEvents?(s.attachEvent("onreadystatechange",complete),interactiveLoadingScripts.push({script:s,load:load})):(s.addEventListener("load",complete,!1),s.addEventListener("error",error,!1)),loadingCnt++,curSystem=__global.System,curRequire=__global.require,s.src=load.address,head.appendChild(s)}):fetch.call(this,load)}})}();var leadingCommentAndMetaRegEx=/^(\s*\/\*[^\*]*(\*(?!\/)[^\*]*)*\*\/|\s*\/\/[^\n]*|\s*"[^"]+"\s*;?|\s*'[^']+'\s*;?)*\s*/;!function(){function buildGroups(entry,loader,groups){if(groups[entry.groupIndex]=groups[entry.groupIndex]||[],indexOf.call(groups[entry.groupIndex],entry)==-1){groups[entry.groupIndex].push(entry);for(var i=0,l=entry.normalizedDeps.length;i<l;i++){var depName=entry.normalizedDeps[i],depEntry=loader.defined[depName];if(depEntry&&!depEntry.evaluated){var depGroupIndex=entry.groupIndex+(depEntry.declarative!=entry.declarative);if(null===depEntry.groupIndex||depEntry.groupIndex<depGroupIndex){if(null!==depEntry.groupIndex&&(groups[depEntry.groupIndex].splice(indexOf.call(groups[depEntry.groupIndex],depEntry),1),0==groups[depEntry.groupIndex].length))throw Error("Mixed dependency cycle detected");depEntry.groupIndex=depGroupIndex}buildGroups(depEntry,loader,groups)}}}}function link(name,startEntry,loader){if(!startEntry.module){startEntry.groupIndex=0;var groups=[];buildGroups(startEntry,loader,groups);for(var curGroupDeclarative=!!startEntry.declarative==groups.length%2,i=groups.length-1;i>=0;i--){for(var group=groups[i],j=0;j<group.length;j++){var entry=group[j];curGroupDeclarative?linkDeclarativeModule(entry,loader):linkDynamicModule(entry,loader)}curGroupDeclarative=!curGroupDeclarative}}}function ModuleRecord(){}function getOrCreateModuleRecord(name,moduleRecords){return moduleRecords[name]||(moduleRecords[name]={name:name,dependencies:[],exports:new ModuleRecord,importers:[]})}function linkDeclarativeModule(entry,loader){if(!entry.module){var moduleRecords=loader._loader.moduleRecords,module=entry.module=getOrCreateModuleRecord(entry.name,moduleRecords),exports=entry.module.exports,declaration=entry.declare.call(__global,function(name,value){if(module.locked=!0,"object"==typeof name)for(var p in name)exports[p]=name[p];else exports[name]=value;for(var i=0,l=module.importers.length;i<l;i++){var importerModule=module.importers[i];if(!importerModule.locked){var importerIndex=indexOf.call(importerModule.dependencies,module),setter=importerModule.setters[importerIndex];setter&&setter(exports)}}return module.locked=!1,value},{id:entry.name});if("function"==typeof declaration&&(declaration={setters:[],execute:declaration}),declaration=declaration||{setters:[],execute:function(){}},module.setters=declaration.setters,module.execute=declaration.execute,!module.setters||!module.execute)throw new TypeError("Invalid System.register form for "+entry.name);for(var i=0,l=entry.normalizedDeps.length;i<l;i++){var depExports,depName=entry.normalizedDeps[i],depEntry=loader.defined[depName],depModule=moduleRecords[depName];depModule?depExports=depModule.exports:depEntry&&!depEntry.declarative?depExports=depEntry.esModule:depEntry?(linkDeclarativeModule(depEntry,loader),depModule=depEntry.module,depExports=depModule.exports):depExports=loader.get(depName),depModule&&depModule.importers?(depModule.importers.push(module),module.dependencies.push(depModule)):module.dependencies.push(null);for(var originalIndices=entry.originalIndices[i],j=0,len=originalIndices.length;j<len;++j){var index=originalIndices[j];module.setters[index]&&module.setters[index](depExports)}}}}function getModule(name,loader){var exports,entry=loader.defined[name];if(entry)entry.declarative?ensureEvaluated(name,entry,[],loader):entry.evaluated||linkDynamicModule(entry,loader),exports=entry.module.exports;else if(exports=loader.get(name),!exports)throw Error("Unable to load dependency "+name+".");return(!entry||entry.declarative)&&exports&&exports.__useDefault?exports["default"]:exports}function linkDynamicModule(entry,loader){if(!entry.module){var exports={},module=entry.module={exports:exports,id:entry.name};if(!entry.executingRequire)for(var i=0,l=entry.normalizedDeps.length;i<l;i++){var depName=entry.normalizedDeps[i],depEntry=loader.defined[depName];depEntry&&linkDynamicModule(depEntry,loader)}entry.evaluated=!0;var output=entry.execute.call(__global,function(name){for(var i=0,l=entry.deps.length;i<l;i++)if(entry.deps[i]==name)return getModule(entry.normalizedDeps[i],loader);var nameNormalized=loader.normalizeSync(name,entry.name);if(indexOf.call(entry.normalizedDeps,nameNormalized)!=-1)return getModule(nameNormalized,loader);throw Error("Module "+name+" not declared as a dependency of "+entry.name)},exports,module);void 0!==output&&(module.exports=output),exports=module.exports,exports&&(exports.__esModule||exports instanceof Module)?entry.esModule=loader.newModule(exports):entry.esmExports&&exports!==__global?entry.esModule=loader.newModule(getESModule(exports)):entry.esModule=loader.newModule({"default":exports,__useDefault:!0})}}function ensureEvaluated(moduleName,entry,seen,loader){if(entry&&!entry.evaluated&&entry.declarative){seen.push(moduleName);for(var i=0,l=entry.normalizedDeps.length;i<l;i++){var depName=entry.normalizedDeps[i];indexOf.call(seen,depName)==-1&&(loader.defined[depName]?ensureEvaluated(depName,loader.defined[depName],seen,loader):loader.get(depName))}entry.evaluated||(entry.evaluated=!0,entry.module.execute.call(__global))}}SystemJSLoader.prototype.register=function(name,deps,declare){if("string"!=typeof name&&(declare=deps,deps=name,name=null),"boolean"==typeof declare)return this.registerDynamic.apply(this,arguments);var entry=createEntry();entry.name=name&&(this.decanonicalize||this.normalize).call(this,name),entry.declarative=!0,entry.deps=deps,entry.declare=declare,this.pushRegister_({amd:!1,entry:entry})},SystemJSLoader.prototype.registerDynamic=function(name,deps,declare,execute){"string"!=typeof name&&(execute=declare,declare=deps,deps=name,name=null);var entry=createEntry();entry.name=name&&(this.decanonicalize||this.normalize).call(this,name),entry.deps=deps,entry.execute=execute,entry.executingRequire=declare,this.pushRegister_({amd:!1,entry:entry})},hook("reduceRegister_",function(){return function(load,register){if(register){var entry=register.entry,curMeta=load&&load.metadata;if(entry.name&&(entry.name in this.defined||(this.defined[entry.name]=entry),curMeta&&(curMeta.bundle=!0)),!entry.name||load&&!curMeta.entry&&entry.name==load.name){if(!curMeta)throw new TypeError("Invalid System.register call. Anonymous System.register calls can only be made by modules loaded by SystemJS.import and not via script tags.");if(curMeta.entry)throw"register"==curMeta.format?Error("Multiple anonymous System.register calls in module "+load.name+". If loading a bundle, ensure all the System.register calls are named."):Error("Module "+load.name+" interpreted as "+curMeta.format+" module format, but called System.register.");curMeta.format||(curMeta.format="register"),curMeta.entry=entry}}}}),hookConstructor(function(constructor){return function(){constructor.call(this),this.defined={},this._loader.moduleRecords={}}}),defineProperty(ModuleRecord,"toString",{value:function(){return"Module"}}),hook("delete",function(del){return function(name){return delete this._loader.moduleRecords[name],delete this.defined[name],del.call(this,name)}}),hook("fetch",function(fetch){return function(load){return this.defined[load.name]?(load.metadata.format="defined",""):(load.metadata.deps=load.metadata.deps||[],fetch.call(this,load))}}),hook("translate",function(translate){return function(load){return load.metadata.deps=load.metadata.deps||[],Promise.resolve(translate.apply(this,arguments)).then(function(source){return("register"==load.metadata.format||"system"==load.metadata.format||!load.metadata.format&&detectRegisterFormat(load.source))&&(load.metadata.format="register"),source})}}),hook("load",function(doLoad){return function(normalized){var loader=this,entry=loader.defined[normalized];return!entry||entry.deps.length?doLoad.apply(this,arguments):(entry.originalIndices=entry.normalizedDeps=[],link(normalized,entry,loader),ensureEvaluated(normalized,entry,[],loader),entry.esModule||(entry.esModule=loader.newModule(entry.module.exports)),loader.trace||(loader.defined[normalized]=void 0),loader.set(normalized,entry.esModule),Promise.resolve())}}),hook("instantiate",function(instantiate){return function(load){"detect"==load.metadata.format&&(load.metadata.format=void 0),instantiate.call(this,load);var entry,loader=this;if(loader.defined[load.name])entry=loader.defined[load.name],entry.declarative||(entry.deps=entry.deps.concat(load.metadata.deps)),entry.deps=entry.deps.concat(load.metadata.deps);else if(load.metadata.entry)entry=load.metadata.entry,entry.deps=entry.deps.concat(load.metadata.deps);else if(!(loader.builder&&load.metadata.bundle||"register"!=load.metadata.format&&"esm"!=load.metadata.format&&"es6"!=load.metadata.format)){if(void 0!==__exec&&__exec.call(loader,load),!load.metadata.entry&&!load.metadata.bundle)throw Error(load.name+" detected as "+load.metadata.format+" but didn't execute.");entry=load.metadata.entry,entry&&load.metadata.deps&&(entry.deps=entry.deps.concat(load.metadata.deps))}entry||(entry=createEntry(),entry.deps=load.metadata.deps,entry.execute=function(){}),loader.defined[load.name]=entry;var grouped=group(entry.deps);entry.deps=grouped.names,entry.originalIndices=grouped.indices,entry.name=load.name,entry.esmExports=load.metadata.esmExports!==!1;for(var normalizePromises=[],i=0,l=entry.deps.length;i<l;i++)normalizePromises.push(Promise.resolve(loader.normalize(entry.deps[i],load.name)));return Promise.all(normalizePromises).then(function(normalizedDeps){return entry.normalizedDeps=normalizedDeps,{deps:entry.deps,execute:function(){return link(load.name,entry,loader),ensureEvaluated(load.name,entry,[],loader),entry.esModule||(entry.esModule=loader.newModule(entry.module.exports)),loader.trace||(loader.defined[load.name]=void 0),entry.esModule}}})}})}(),function(){var esmRegEx=/(^\s*|[}\);\n]\s*)(import\s*(['"]|(\*\s+as\s+)?[^"'\(\)\n;]+\s*from\s*['"]|\{)|export\s+\*\s+from\s+["']|export\s*(\{|default|function|class|var|const|let|async\s+function))/,traceurRuntimeRegEx=/\$traceurRuntime\s*\./,babelHelpersRegEx=/babelHelpers\s*\./;hook("translate",function(translate){return function(load){var loader=this,args=arguments;return translate.apply(loader,args).then(function(source){if("esm"==load.metadata.format||"es6"==load.metadata.format||!load.metadata.format&&source.match(esmRegEx)){if("es6"==load.metadata.format&&warn.call(loader,"Module "+load.name+' has metadata setting its format to "es6", which is deprecated.\nThis should be updated to "esm".'),load.metadata.format="esm",load.metadata.deps){for(var depInject="",i=0;i<load.metadata.deps.length;i++)depInject+='import "'+load.metadata.deps[i]+'"; ';load.source=depInject+source}if(loader.transpiler===!1){if(loader.builder)return source;throw new TypeError("Unable to dynamically transpile ES module as SystemJS.transpiler set to false.")}return loader._loader.loadedTranspiler=loader._loader.loadedTranspiler||!1,loader.pluginLoader&&(loader.pluginLoader._loader.loadedTranspiler=loader._loader.loadedTranspiler||!1),(loader._loader.transpilerPromise||(loader._loader.transpilerPromise=Promise.resolve(__global["typescript"==loader.transpiler?"ts":loader.transpiler]||(loader.pluginLoader||loader).normalize(loader.transpiler).then(function(normalized){return loader._loader.transpilerNormalized=normalized,(loader.pluginLoader||loader).load(normalized).then(function(){return(loader.pluginLoader||loader).get(normalized)})})))).then(function(transpiler){return loader._loader.loadedTranspilerRuntime=!0,"function"!=typeof transpiler["default"]||__global["typescript"==loader.transpiler?"ts":loader.transpiler]?transpiler.translate?transpiler==load.metadata.loaderModule?load.source:("string"==typeof load.metadata.sourceMap&&(load.metadata.sourceMap=JSON.parse(load.metadata.sourceMap)),Promise.resolve(transpiler.translate.apply(loader,args)).then(function(source){var sourceMap=load.metadata.sourceMap;if(sourceMap&&"object"==typeof sourceMap){var originalName=load.address.split("!")[0];sourceMap.file&&sourceMap.file!=load.address||(sourceMap.file=originalName+"!transpiled"),(!sourceMap.sources||sourceMap.sources.length<=1&&(!sourceMap.sources[0]||sourceMap.sources[0]==load.address))&&(sourceMap.sources=[originalName])}return"esm"==load.metadata.format&&!loader.builder&&detectRegisterFormat(source)&&(load.metadata.format="register"),source})):(loader.builder&&(load.metadata.originalSource=load.source),transpile.call(loader,load).then(function(source){return load.metadata.sourceMap=void 0,source})):loader.builder?source:Promise.resolve(transpiler["default"].call(loader,load.address,load.name)).then(function(result){return createInstantiate(load,result),""})},function(err){throw addToError(err,"Unable to load transpiler to transpile "+load.name)})}if(loader.transpiler===!1)return source;if(loader._loader.loadedTranspiler!==!1||"traceur"!=loader.transpiler&&"typescript"!=loader.transpiler&&"babel"!=loader.transpiler||load.name!=loader.normalizeSync(loader.transpiler)||(source.length>100&&!load.metadata.format&&(load.metadata.format="global","traceur"===loader.transpiler&&(load.metadata.exports="traceur"),"typescript"===loader.transpiler&&(load.metadata.exports="ts")),loader._loader.loadedTranspiler=!0),loader._loader.loadedTranspilerRuntime===!1&&(load.name!=loader.normalizeSync("traceur-runtime")&&load.name!=loader.normalizeSync("babel/external-helpers*")||(source.length>100&&(load.metadata.format=load.metadata.format||"global"),loader._loader.loadedTranspilerRuntime=!0)),("register"==load.metadata.format||load.metadata.bundle)&&loader._loader.loadedTranspilerRuntime!==!0){if("traceur"==loader.transpiler&&!__global.$traceurRuntime&&load.source.match(traceurRuntimeRegEx))return loader._loader.loadedTranspilerRuntime=loader._loader.loadedTranspilerRuntime||!1,loader["import"]("traceur-runtime").then(function(){return source});if("babel"==loader.transpiler&&!__global.babelHelpers&&load.source.match(babelHelpersRegEx))return loader._loader.loadedTranspilerRuntime=loader._loader.loadedTranspilerRuntime||!1,loader["import"]("babel/external-helpers").then(function(){return source})}return source})}})}();var __globalName="undefined"!=typeof self?"self":"global";hook("fetch",function(fetch){return function(load){return load.metadata.exports&&!load.metadata.format&&(load.metadata.format="global"),fetch.call(this,load)}}),hook("instantiate",function(instantiate){return function(load){var loader=this;if(load.metadata.format||(load.metadata.format="global"),"global"==load.metadata.format&&!load.metadata.entry){var entry=createEntry();load.metadata.entry=entry,entry.deps=[];for(var g in load.metadata.globals){var gl=load.metadata.globals[g];gl&&entry.deps.push(gl)}entry.execute=function(require,exports,module){var globals;if(load.metadata.globals){globals={};for(var g in load.metadata.globals)load.metadata.globals[g]&&(globals[g]=require(load.metadata.globals[g]))}var exportName=load.metadata.exports;exportName&&(load.source+="\n"+__globalName+'["'+exportName+'"] = '+exportName+";");var retrieveGlobal=loader.get("@@global-helpers").prepareGlobal(module.id,exportName,globals,!!load.metadata.encapsulateGlobal);return __exec.call(loader,load),retrieveGlobal()}}return instantiate.call(this,load)}}),hook("reduceRegister_",function(reduceRegister){return function(load,register){if(register||!load.metadata.exports&&(!isWorker||"global"!=load.metadata.format))return reduceRegister.call(this,load,register);load.metadata.format="global";var entry=load.metadata.entry=createEntry();entry.deps=load.metadata.deps;var globalValue=getGlobalValue(load.metadata.exports);entry.execute=function(){return globalValue}}}),hookConstructor(function(constructor){return function(){function forEachGlobal(callback){if(Object.keys)Object.keys(__global).forEach(callback);else for(var g in __global)hasOwnProperty.call(__global,g)&&callback(g)}function forEachGlobalValue(callback){forEachGlobal(function(globalName){if(indexOf.call(ignoredGlobalProps,globalName)==-1){try{var value=__global[globalName]}catch(e){ignoredGlobalProps.push(globalName)}callback(globalName,value)}})}var loader=this;constructor.call(loader);var globalSnapshot,hasOwnProperty=Object.prototype.hasOwnProperty,ignoredGlobalProps=["_g","sessionStorage","localStorage","clipboardData","frames","frameElement","external","mozAnimationStartTime","webkitStorageInfo","webkitIndexedDB","mozInnerScreenY","mozInnerScreenX"];loader.set("@@global-helpers",loader.newModule({prepareGlobal:function(moduleName,exports,globals,encapsulate){var curDefine=__global.define;__global.define=void 0;var oldGlobals;if(globals){oldGlobals={};for(var g in globals)oldGlobals[g]=__global[g],__global[g]=globals[g]}return exports||(globalSnapshot={},forEachGlobalValue(function(name,value){globalSnapshot[name]=value})),function(){var singleGlobal,globalValue=exports?getGlobalValue(exports):{},multipleExports=!!exports;if(exports&&!encapsulate||forEachGlobalValue(function(name,value){globalSnapshot[name]!==value&&void 0!==value&&(encapsulate&&(__global[name]=void 0),exports||(globalValue[name]=value,void 0!==singleGlobal?multipleExports||singleGlobal===value||(multipleExports=!0):singleGlobal=value))}),globalValue=multipleExports?globalValue:singleGlobal,oldGlobals)for(var g in oldGlobals)__global[g]=oldGlobals[g];return __global.define=curDefine,globalValue}}}))}}),function(){function getCJSDeps(source){function inLocation(locations,match){for(var i=0;i<locations.length;i++)if(locations[i][0]<match.index&&locations[i][1]>match.index)return!0;return!1}cjsRequireRegEx.lastIndex=commentRegEx.lastIndex=stringRegEx.lastIndex=0;var match,deps=[],stringLocations=[],commentLocations=[];if(source.length/source.split("\n").length<200){for(;match=stringRegEx.exec(source);)stringLocations.push([match.index,match.index+match[0].length]);for(;match=commentRegEx.exec(source);)inLocation(stringLocations,match)||commentLocations.push([match.index+match[1].length,match.index+match[0].length-1])}for(;match=cjsRequireRegEx.exec(source);)if(!inLocation(stringLocations,match)&&!inLocation(commentLocations,match)){var dep=match[1].substr(1,match[1].length-2);if(dep.match(/"|'/))continue;"/"==dep[dep.length-1]&&(dep=dep.substr(0,dep.length-1)),deps.push(dep)}return deps}var cjsExportsRegEx=/(?:^\uFEFF?|[^$_a-zA-Z\xA0-\uFFFF.])(exports\s*(\[['"]|\.)|module(\.exports|\['exports'\]|\["exports"\])\s*(\[['"]|[=,\.]))/,cjsRequireRegEx=/(?:^\uFEFF?|[^$_a-zA-Z\xA0-\uFFFF."'])require\s*\(\s*("[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*')\s*\)/g,commentRegEx=/(^|[^\\])(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,stringRegEx=/("[^"\\\n\r]*(\\.[^"\\\n\r]*)*"|'[^'\\\n\r]*(\\.[^'\\\n\r]*)*')/g,hashBangRegEx=/^\#\!.*/;hook("instantiate",function(instantiate){return function(load){var loader=this;if(load.metadata.format||(cjsExportsRegEx.lastIndex=0,cjsRequireRegEx.lastIndex=0,(cjsRequireRegEx.exec(load.source)||cjsExportsRegEx.exec(load.source))&&(load.metadata.format="cjs")),"cjs"==load.metadata.format){var metaDeps=load.metadata.deps,deps=load.metadata.cjsRequireDetection===!1?[]:getCJSDeps(load.source);for(var g in load.metadata.globals)load.metadata.globals[g]&&deps.push(load.metadata.globals[g]);var entry=createEntry();load.metadata.entry=entry,entry.deps=deps,entry.executingRequire=!0,entry.execute=function(_require,exports,module){function require(name){return"/"==name[name.length-1]&&(name=name.substr(0,name.length-1)),_require.apply(this,arguments)}if(require.resolve=function(name){return loader.get("@@cjs-helpers").requireResolve(name,module.id)},module.paths=[],module.require=_require,!load.metadata.cjsDeferDepsExecute)for(var i=0;i<metaDeps.length;i++)require(metaDeps[i]);var pathVars=loader.get("@@cjs-helpers").getPathVars(module.id),__cjsWrapper={exports:exports,args:[require,exports,module,pathVars.filename,pathVars.dirname,__global,__global]},cjsWrapper="(function(require, exports, module, __filename, __dirname, global, GLOBAL";if(load.metadata.globals)for(var g in load.metadata.globals)__cjsWrapper.args.push(require(load.metadata.globals[g])),cjsWrapper+=", "+g;var define=__global.define;__global.define=void 0,__global.__cjsWrapper=__cjsWrapper,load.source=cjsWrapper+") {"+load.source.replace(hashBangRegEx,"")+"\n}).apply(__cjsWrapper.exports, __cjsWrapper.args);",__exec.call(loader,load),__global.__cjsWrapper=void 0,__global.define=define}}return instantiate.call(loader,load)}})}(),hookConstructor(function(constructor){return function(){function stripOrigin(path){return"file:///"==path.substr(0,8)?path.substr(7+!!isWindows):windowOrigin&&path.substr(0,windowOrigin.length)==windowOrigin?path.substr(windowOrigin.length):path}var loader=this;if(constructor.call(loader),"undefined"!=typeof window&&"undefined"!=typeof document&&window.location)var windowOrigin=location.protocol+"//"+location.hostname+(location.port?":"+location.port:"");loader.set("@@cjs-helpers",loader.newModule({requireResolve:function(request,parentId){return stripOrigin(loader.normalizeSync(request,parentId))},getPathVars:function(moduleId){var filename,pluginIndex=moduleId.lastIndexOf("!");filename=pluginIndex!=-1?moduleId.substr(0,pluginIndex):moduleId;var dirname=filename.split("/");return dirname.pop(),dirname=dirname.join("/"),{filename:stripOrigin(filename),dirname:stripOrigin(dirname)}}}))}}),hook("fetch",function(fetch){return function(load){return load.metadata.scriptLoad&&isBrowser&&(__global.define=this.amdDefine),fetch.call(this,load)}}),hookConstructor(function(constructor){return function(){function getCJSDeps(source,requireIndex){source=source.replace(commentRegEx,"");var params=source.match(fnBracketRegEx),requireAlias=(params[1].split(",")[requireIndex]||"require").replace(wsRegEx,""),requireRegEx=requireRegExs[requireAlias]||(requireRegExs[requireAlias]=RegExp(cjsRequirePre+requireAlias+cjsRequirePost,"g"));requireRegEx.lastIndex=0;for(var match,deps=[];match=requireRegEx.exec(source);)deps.push(match[2]||match[3]);return deps}function require(names,callback,errback,referer){if("object"==typeof names&&!(names instanceof Array))return require.apply(null,Array.prototype.splice.call(arguments,1,arguments.length-1));if("string"==typeof names&&"function"==typeof callback&&(names=[names]),!(names instanceof Array)){if("string"==typeof names){var defaultJSExtension=loader.defaultJSExtensions&&".js"!=names.substr(names.length-3,3),normalized=loader.decanonicalize(names,referer);defaultJSExtension&&".js"==normalized.substr(normalized.length-3,3)&&(normalized=normalized.substr(0,normalized.length-3));var module=loader.get(normalized);if(!module)throw Error('Module not already loaded loading "'+names+'" as '+normalized+(referer?' from "'+referer+'".':"."));return module.__useDefault?module["default"]:module}throw new TypeError("Invalid require")}for(var dynamicRequires=[],i=0;i<names.length;i++)dynamicRequires.push(loader["import"](names[i],referer));Promise.all(dynamicRequires).then(function(modules){callback&&callback.apply(null,modules)},errback)}function define(name,deps,factory){function execute(req,exports,module){function contextualRequire(names,callback,errback){return"string"==typeof names&&"function"!=typeof callback?req(names):require.call(loader,names,callback,errback,module.id)}for(var depValues=[],i=0;i<deps.length;i++)depValues.push(req(deps[i]));module.uri=module.id,module.config=function(){},moduleIndex!=-1&&depValues.splice(moduleIndex,0,module),exportsIndex!=-1&&depValues.splice(exportsIndex,0,exports),requireIndex!=-1&&(contextualRequire.toUrl=function(name){var defaultJSExtension=loader.defaultJSExtensions&&".js"!=name.substr(name.length-3,3),url=loader.decanonicalize(name,module.id);return defaultJSExtension&&".js"==url.substr(url.length-3,3)&&(url=url.substr(0,url.length-3)),url},depValues.splice(requireIndex,0,contextualRequire));var curRequire=__global.require;__global.require=require;var output=factory.apply(exportsIndex==-1?__global:exports,depValues);if(__global.require=curRequire,void 0===output&&module&&(output=module.exports),void 0!==output)return output}"string"!=typeof name&&(factory=deps,deps=name,name=null),deps instanceof Array||(factory=deps,deps=["require","exports","module"].splice(0,factory.length)),"function"!=typeof factory&&(factory=function(factory){return function(){return factory}}(factory)),void 0===deps[deps.length-1]&&deps.pop();var requireIndex,exportsIndex,moduleIndex;(requireIndex=indexOf.call(deps,"require"))!=-1&&(deps.splice(requireIndex,1),name||(deps=deps.concat(getCJSDeps(""+factory,requireIndex)))),(exportsIndex=indexOf.call(deps,"exports"))!=-1&&deps.splice(exportsIndex,1),(moduleIndex=indexOf.call(deps,"module"))!=-1&&deps.splice(moduleIndex,1);var entry=createEntry();entry.name=name&&(loader.decanonicalize||loader.normalize).call(loader,name),entry.deps=deps,entry.execute=execute,loader.pushRegister_({amd:!0,entry:entry})}var loader=this;constructor.call(this);var commentRegEx=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,cjsRequirePre="(?:^|[^$_a-zA-Z\\xA0-\\uFFFF.])",cjsRequirePost="\\s*\\(\\s*(\"([^\"]+)\"|'([^']+)')\\s*\\)",fnBracketRegEx=/\(([^\)]*)\)/,wsRegEx=/^\s+|\s+$/g,requireRegExs={};define.amd={},hook("reduceRegister_",function(reduceRegister){return function(load,register){if(!register||!register.amd)return reduceRegister.call(this,load,register);var curMeta=load&&load.metadata,entry=register.entry;if(curMeta)if(curMeta.format&&"detect"!=curMeta.format){if(!entry.name&&"amd"!=curMeta.format)throw Error("AMD define called while executing "+curMeta.format+" module "+load.name)}else curMeta.format="amd";if(entry.name)curMeta&&(curMeta.entry||curMeta.bundle?curMeta.entry&&curMeta.entry.name&&curMeta.entry.name!=load.name&&(curMeta.entry=void 0):curMeta.entry=entry,curMeta.bundle=!0),entry.name in this.defined||(this.defined[entry.name]=entry);else{if(!curMeta)throw new TypeError("Unexpected anonymous AMD define.");if(curMeta.entry&&!curMeta.entry.name)throw Error("Multiple anonymous defines in module "+load.name);curMeta.entry=entry}}}),loader.amdDefine=define,loader.amdRequire=require}}),function(){var amdRegEx=/(?:^\uFEFF?|[^$_a-zA-Z\xA0-\uFFFF.])define\s*\(\s*("[^"]+"\s*,\s*|'[^']+'\s*,\s*)?\s*(\[(\s*(("[^"]+"|'[^']+')\s*,|\/\/.*\r?\n|\/\*(.|\s)*?\*\/))*(\s*("[^"]+"|'[^']+')\s*,?)?(\s*(\/\/.*\r?\n|\/\*(.|\s)*?\*\/))*\s*\]|function\s*|{|[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*\))/;hook("instantiate",function(instantiate){return function(load){var loader=this;if("amd"==load.metadata.format||!load.metadata.format&&load.source.match(amdRegEx))if(load.metadata.format="amd",loader.builder||loader.execute===!1)load.metadata.execute=function(){return load.metadata.builderExecute.apply(this,arguments)};else{var curDefine=__global.define;__global.define=this.amdDefine;try{__exec.call(loader,load)}finally{__global.define=curDefine}if(!load.metadata.entry&&!load.metadata.bundle)throw new TypeError("AMD module "+load.name+" did not define")}return instantiate.call(loader,load)}})}(),function(){function getParentName(loader,parentName){if(parentName){var parentPluginIndex;if(loader.pluginFirst){if((parentPluginIndex=parentName.lastIndexOf("!"))!=-1)return parentName.substr(parentPluginIndex+1)}else if((parentPluginIndex=parentName.indexOf("!"))!=-1)return parentName.substr(0,parentPluginIndex);return parentName}}function parsePlugin(loader,name){var argumentName,pluginName,pluginIndex=name.lastIndexOf("!");if(pluginIndex!=-1)return loader.pluginFirst?(argumentName=name.substr(pluginIndex+1),pluginName=name.substr(0,pluginIndex)):(argumentName=name.substr(0,pluginIndex),pluginName=name.substr(pluginIndex+1)||argumentName.substr(argumentName.lastIndexOf(".")+1)),{argument:argumentName,plugin:pluginName}}function combinePluginParts(loader,argumentName,pluginName,defaultExtension){return defaultExtension&&".js"==argumentName.substr(argumentName.length-3,3)&&(argumentName=argumentName.substr(0,argumentName.length-3)),loader.pluginFirst?pluginName+"!"+argumentName:argumentName+"!"+pluginName}function checkDefaultExtension(loader,arg){return loader.defaultJSExtensions&&".js"!=arg.substr(arg.length-3,3)}function createNormalizeSync(normalizeSync){return function(name,parentName,isPlugin){var loader=this,parsed=parsePlugin(loader,name);if(parentName=getParentName(this,parentName),!parsed)return normalizeSync.call(this,name,parentName,isPlugin);var argumentName=loader.normalizeSync(parsed.argument,parentName,!0),pluginName=loader.normalizeSync(parsed.plugin,parentName,!0);return combinePluginParts(loader,argumentName,pluginName,checkDefaultExtension(loader,parsed.argument))}}hook("decanonicalize",createNormalizeSync),hook("normalizeSync",createNormalizeSync),hook("normalize",function(normalize){return function(name,parentName,isPlugin){var loader=this;parentName=getParentName(this,parentName);var parsed=parsePlugin(loader,name);return parsed?Promise.all([loader.normalize(parsed.argument,parentName,!0),loader.normalize(parsed.plugin,parentName,!1)]).then(function(normalized){
return combinePluginParts(loader,normalized[0],normalized[1],checkDefaultExtension(loader,parsed.argument))}):normalize.call(loader,name,parentName,isPlugin)}}),hook("locate",function(locate){return function(load){var pluginSyntaxIndex,loader=this,name=load.name;return loader.pluginFirst?(pluginSyntaxIndex=name.indexOf("!"))!=-1&&(load.metadata.loader=name.substr(0,pluginSyntaxIndex),load.name=name.substr(pluginSyntaxIndex+1)):(pluginSyntaxIndex=name.lastIndexOf("!"))!=-1&&(load.metadata.loader=name.substr(pluginSyntaxIndex+1),load.name=name.substr(0,pluginSyntaxIndex)),locate.call(loader,load).then(function(address){return pluginSyntaxIndex==-1&&load.metadata.loader?(loader.pluginLoader||loader).normalize(load.metadata.loader,load.name).then(function(loaderNormalized){return load.metadata.loader=loaderNormalized,address}):address}).then(function(address){var plugin=load.metadata.loader;if(!plugin)return address;if(load.name==plugin)throw Error("Plugin "+plugin+" cannot load itself, make sure it is excluded from any wildcard meta configuration via a custom loader: false rule.");if(loader.defined&&loader.defined[name])return address;var pluginLoader=loader.pluginLoader||loader;return pluginLoader["import"](plugin).then(function(loaderModule){return load.metadata.loaderModule=loaderModule,load.address=address,loaderModule.locate?loaderModule.locate.call(loader,load):address})})}}),hook("fetch",function(fetch){return function(load){var loader=this;if(load.metadata.loaderModule&&"defined"!=load.metadata.format){if("function"==typeof load.metadata.loaderModule||load.metadata.loaderModule instanceof Module&&"function"==typeof load.metadata.loaderModule["default"])return"";if(load.metadata.scriptLoad=!1,load.metadata.loaderModule.fetch)return load.metadata.loaderModule.fetch.call(loader,load,function(load){return fetch.call(loader,load)})}return fetch.call(loader,load)}}),hook("translate",function(translate){return function(load){var loader=this,args=arguments;return load.metadata.loaderModule&&load.metadata.loaderModule.translate&&"defined"!=load.metadata.format?Promise.resolve(load.metadata.loaderModule.translate.apply(loader,args)).then(function(result){var sourceMap=load.metadata.sourceMap;if(sourceMap){if("object"!=typeof sourceMap)throw Error("load.metadata.sourceMap must be set to an object.");var originalName=load.address.split("!")[0];sourceMap.file&&sourceMap.file!=load.address||(sourceMap.file=originalName+"!transpiled"),(!sourceMap.sources||sourceMap.sources.length<=1&&(!sourceMap.sources[0]||sourceMap.sources[0]==load.address))&&(sourceMap.sources=[originalName])}return"string"==typeof result&&(load.source=result),translate.apply(loader,args)}):translate.apply(loader,args)}}),hook("instantiate",function(instantiate){return function(load){var loader=this,calledInstantiate=!1;if(load.metadata.loaderModule&&!loader.builder&&"defined"!=load.metadata.format){if(load.metadata.loaderModule.instantiate)return Promise.resolve(load.metadata.loaderModule.instantiate.call(loader,load,function(load){if(calledInstantiate)throw Error("Instantiate must only be called once.");return calledInstantiate=!0,instantiate.call(loader,load)})).then(function(result){return calledInstantiate?result:(void 0!==result&&createInstantiate(load,result),instantiate.call(loader,load))});if("function"==typeof load.metadata.loaderModule||load.metadata.loaderModule instanceof Module&&"function"==typeof load.metadata.loaderModule["default"])return Promise.resolve((load.metadata.loaderModule["default"]||load.metadata.loaderModule).call(loader,load.address,load.name)).then(function(result){return void 0!==result&&createInstantiate(load,result),instantiate.call(loader,load)})}return instantiate.call(loader,load)}})}();var sysConditions=["browser","node","dev","build","production","default"],interpolationRegEx=/#\{[^\}]+\}/;hook("normalize",function(normalize){return function(name,parentName,skipExt){var loader=this;return booleanConditional.call(loader,name,parentName).then(function(name){return normalize.call(loader,name,parentName,skipExt)}).then(function(normalized){return interpolateConditional.call(loader,normalized,parentName)})}}),function(){hook("fetch",function(fetch){return function(load){var alias=load.metadata.alias,aliasDeps=load.metadata.deps||[];if(alias){load.metadata.format="defined";var entry=createEntry();return this.defined[load.name]=entry,entry.declarative=!0,entry.deps=aliasDeps.concat([alias]),entry.declare=function(_export){return{setters:[function(module){for(var p in module)_export(p,module[p]);module.__useDefault&&(entry.module.exports.__useDefault=!0)}],execute:function(){}}},""}return fetch.call(this,load)}})}(),function(){function setMetaProperty(target,p,value){for(var curPart,pParts=p.split(".");pParts.length>1;)curPart=pParts.shift(),target=target[curPart]=target[curPart]||{};curPart=pParts.shift(),curPart in target||(target[curPart]=value)}hookConstructor(function(constructor){return function(){this.meta={},constructor.call(this)}}),hook("locate",function(locate){return function(load){var wildcardIndex,meta=this.meta,name=load.name,bestDepth=0;for(var module in meta)if(wildcardIndex=module.indexOf("*"),wildcardIndex!==-1&&module.substr(0,wildcardIndex)===name.substr(0,wildcardIndex)&&module.substr(wildcardIndex+1)===name.substr(name.length-module.length+wildcardIndex+1)){var depth=module.split("/").length;depth>bestDepth&&(bestDepth=depth),extendMeta(load.metadata,meta[module],bestDepth!=depth)}return meta[name]&&extendMeta(load.metadata,meta[name]),locate.call(this,load)}});var metaRegEx=/^(\s*\/\*[^\*]*(\*(?!\/)[^\*]*)*\*\/|\s*\/\/[^\n]*|\s*"[^"]+"\s*;?|\s*'[^']+'\s*;?)+/,metaPartRegEx=/\/\*[^\*]*(\*(?!\/)[^\*]*)*\*\/|\/\/[^\n]*|"[^"]+"\s*;?|'[^']+'\s*;?/g;hook("translate",function(translate){return function(load){if("defined"==load.metadata.format)return load.metadata.deps=load.metadata.deps||[],Promise.resolve(load.source);var meta=load.source.match(metaRegEx);if(meta)for(var metaParts=meta[0].match(metaPartRegEx),i=0;i<metaParts.length;i++){var curPart=metaParts[i],len=curPart.length,firstChar=curPart.substr(0,1);if(";"==curPart.substr(len-1,1)&&len--,'"'==firstChar||"'"==firstChar){var metaString=curPart.substr(1,curPart.length-3),metaName=metaString.substr(0,metaString.indexOf(" "));if(metaName){var metaValue=metaString.substr(metaName.length+1,metaString.length-metaName.length-1);"[]"==metaName.substr(metaName.length-2,2)?(metaName=metaName.substr(0,metaName.length-2),load.metadata[metaName]=load.metadata[metaName]||[],load.metadata[metaName].push(metaValue)):load.metadata[metaName]instanceof Array?(warn.call(this,"Module "+load.name+' contains deprecated "deps '+metaValue+'" meta syntax.\nThis should be updated to "deps[] '+metaValue+'" for pushing to array meta.'),load.metadata[metaName].push(metaValue)):setMetaProperty(load.metadata,metaName,metaValue)}else load.metadata[metaString]=!0}}return translate.apply(this,arguments)}})}(),function(){hookConstructor(function(constructor){return function(){constructor.call(this),this.bundles={},this._loader.loadedBundles={}}}),hook("locate",function(locate){return function(load){var loader=this,matched=!1;if(!(load.name in loader.defined))for(var b in loader.bundles){for(var i=0;i<loader.bundles[b].length;i++){var curModule=loader.bundles[b][i];if(curModule==load.name){matched=!0;break}if(curModule.indexOf("*")!=-1){var parts=curModule.split("*");if(2!=parts.length){loader.bundles[b].splice(i--,1);continue}if(load.name.substring(0,parts[0].length)==parts[0]&&load.name.substr(load.name.length-parts[1].length,parts[1].length)==parts[1]&&load.name.substr(parts[0].length,load.name.length-parts[1].length-parts[0].length).indexOf("/")==-1){matched=!0;break}}}if(matched)return loader["import"](b).then(function(){return locate.call(loader,load)})}return locate.call(loader,load)}})}(),function(){hookConstructor(function(constructor){return function(){constructor.call(this),this.depCache={}}}),hook("locate",function(locate){return function(load){var loader=this,deps=loader.depCache[load.name];if(deps)for(var i=0;i<deps.length;i++)loader["import"](deps[i],load.name);return locate.call(loader,load)}})}(),System=new SystemJSLoader,__global.SystemJS=System,System.version="0.19.47 Standard","object"==typeof module&&module.exports&&"object"==typeof exports&&(module.exports=System),__global.System=System}("undefined"!=typeof self?self:global)}var doPolyfill="undefined"==typeof Promise;if("undefined"!=typeof document){var scripts=document.getElementsByTagName("script");if($__curScript=scripts[scripts.length-1],document.currentScript&&($__curScript.defer||$__curScript.async)&&($__curScript=document.currentScript),$__curScript.src||($__curScript=void 0),doPolyfill){var curPath=$__curScript.src,basePath=curPath.substr(0,curPath.lastIndexOf("/")+1);window.systemJSBootstrap=bootstrap,document.write('<script type="text/javascript" src="'+basePath+'system-polyfills.js"></script>')}else bootstrap()}else if("undefined"!=typeof importScripts){var basePath="";try{throw Error("_")}catch(e){e.stack.replace(/(?:at|@).*(http.+):[\d]+:[\d]+/,function(m,url){$__curScript={src:url},basePath=url.replace(/\/[^\/]*$/,"/")})}doPolyfill&&importScripts(basePath+"system-polyfills.js"),bootstrap()}else $__curScript="undefined"!=typeof __filename?{src:__filename}:null,bootstrap()}();var _get=function get(object,property,receiver){null===object&&(object=Function.prototype);var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};!function(f){if("object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,g.Fashion=f()}}(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=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}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var Fashion=require("./src/export/Base.js"),CssVariableManager=require("./src/export/css/CssVariableManager.js"),css=new CssVariableManager;Fashion.apply(Fashion,{css:css,CssExport:CssVariableManager,ValueParser:require("./src/export/parse/ValueParser.js"),functions:{Color:require("./src/functions/Color.js"),Gradients:require("./src/functions/Gradients.js"),HSL:require("./src/functions/HSL.js"),Introspection:require("./src/functions/Introspection.js"),List:require("./src/functions/List.js"),Misc:require("./src/functions/Misc.js"),Numeric:require("./src/functions/Numeric.js"),Opacity:require("./src/functions/Opacity.js"),RGB:require("./src/functions/RGB.js"),Selectors:require("./src/functions/Selectors.js"),Text:require("./src/functions/Text.js"),Util:require("./src/functions/Util.js")},parse:{ast:{BaseNode:require("./src/parse/ast/BaseNode.js"),Nodes:require("./src/parse/ast/Nodes.js")},Scanner:require("./src/parse/Scanner.js"),Tokenizer:require("./src/parse/Tokenizer.js"),Parser:require("./src/parse/Parser.js")},processors:{CssVariables:require("./src/processors/CssVariables.js"),NameRegistrations:require("./src/processors/NameRegistrations.js"),DataInline:require("./src/processors/DataInline.js")},BaseSelector:require("./src/type/selectors/BaseSelector.js"),BaseSelectorList:require("./src/type/selectors/BaseSelectorList.js"),CompoundSelector:require("./src/type/selectors/CompoundSelector.js"),MultiPartSelector:require("./src/type/selectors/MultiPartSelector.js"),SelectorList:require("./src/type/selectors/SelectorList.js"),SelectorPart:require("./src/type/selectors/SelectorPart.js"),SelectorProperty:require("./src/type/selectors/SelectorProperty.js"),Type:require("./src/export/type/Type.js"),Bool:require("./src/export/type/Bool.js"),Literal:require("./src/export/type/Literal.js"),ParentheticalExpression:require("./src/export/type/ParentheticalExpression.js"),Text:require("./src/export/type/Text.js"),Numeric:require("./src/export/type/Numeric.js"),List:require("./src/export/type/List.js"),Map:require("./src/export/type/Map.js"),Color:require("./src/export/type/Color.js"),ColorRGBA:require("./src/export/type/ColorRGBA.js"),ColorHSLA:require("./src/export/type/ColorHSLA.js"),ColorStop:require("./src/export/type/ColorStop.js"),FunctionCall:require("./src/export/type/FunctionCall.js"),Declaration:require("./src/type/Declaration.js"),LinearGradient:require("./src/export/type/LinearGradient.js"),RadialGradient:require("./src/export/type/RadialGradient.js"),Ruleset:require("./src/type/Ruleset.js"),Statics:require("./src/export/type/Statics.js"),SourceBuilder:require("./src/type/SourceBuilder.js"),Types:require("./src/type/Types.js"),TypeVisitor:require("./src/type/TypeVisitor.js"),Builder:require("./src/Builder.js"),CompressedOutput:require("./src/CompressedOutput.js"),Context:require("./src/Context.js"),CSS:require("./src/CSS.js"),CssPostprocessor:require("./src/CssPostprocessor.js"),Env:require("./src/Env.js"),ExtendProcessor:require("./src/ExtendProcessor.js"),Output:require("./src/export/Output.js"),PlaceholderProcessor:require("./src/PlaceholderProcessor.js"),Preprocessor:require("./src/Preprocessor.js"),Ready:require("./src/Ready.js"),Runtime:require("./src/Runtime.js"),SassFile:require("./src/SassFile.js"),Transpiler:require("./src/Transpiler.js"),Visitor:require("./src/Visitor.js")}),module.exports=Fashion},{"./src/Builder.js":4,"./src/CSS.js":5,"./src/CompressedOutput.js":6,"./src/Context.js":7,"./src/CssPostprocessor.js":8,"./src/Env.js":9,"./src/ExtendProcessor.js":10,"./src/PlaceholderProcessor.js":12,"./src/Preprocessor.js":13,"./src/Ready.js":14,"./src/Runtime.js":15,"./src/SassFile.js":16,"./src/Transpiler.js":17,"./src/Visitor.js":18,"./src/export/Base.js":19,"./src/export/Output.js":20,"./src/export/css/CssVariableManager.js":22,"./src/export/parse/ValueParser.js":23,"./src/export/type/Bool.js":24,"./src/export/type/Color.js":25,"./src/export/type/ColorHSLA.js":26,"./src/export/type/ColorRGBA.js":27,"./src/export/type/ColorStop.js":28,"./src/export/type/FunctionCall.js":29,"./src/export/type/LinearGradient.js":30,"./src/export/type/List.js":31,"./src/export/type/Literal.js":32,"./src/export/type/Map.js":33,"./src/export/type/Numeric.js":34,"./src/export/type/ParentheticalExpression.js":35,"./src/export/type/RadialGradient.js":36,"./src/export/type/Statics.js":38,"./src/export/type/Text.js":39,"./src/export/type/Type.js":40,"./src/functions/Color.js":43,"./src/functions/Gradients.js":44,"./src/functions/HSL.js":45,"./src/functions/Introspection.js":46,"./src/functions/List.js":47,"./src/functions/Misc.js":48,"./src/functions/Numeric.js":49,"./src/functions/Opacity.js":50,"./src/functions/RGB.js":51,"./src/functions/Selectors.js":52,"./src/functions/Text.js":53,"./src/functions/Util.js":54,"./src/parse/Parser.js":55,"./src/parse/Scanner.js":56,"./src/parse/Tokenizer.js":57,"./src/parse/ast/BaseNode.js":59,"./src/parse/ast/Nodes.js":60,"./src/processors/CssVariables.js":61,"./src/processors/DataInline.js":62,"./src/processors/NameRegistrations.js":64,"./src/type/Declaration.js":65,"./src/type/Ruleset.js":66,"./src/type/SourceBuilder.js":67,"./src/type/TypeVisitor.js":68,"./src/type/Types.js":69,"./src/type/selectors/BaseSelector.js":70,"./src/type/selectors/BaseSelectorList.js":71,"./src/type/selectors/CompoundSelector.js":72,"./src/type/selectors/MultiPartSelector.js":73,"./src/type/selectors/SelectorList.js":74,"./src/type/selectors/SelectorPart.js":75,"./src/type/selectors/SelectorProperty.js":76}],2:[function(require,module,exports){},{}],3:[function(require,module,exports){function defaultSetTimout(){throw Error("setTimeout has not been defined")}function defaultClearTimeout(){throw Error("clearTimeout has not been defined")}function runTimeout(fun){if(cachedSetTimeout===setTimeout)return setTimeout(fun,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(fun,0);try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout)return clearTimeout(marker);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(marker);try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}function cleanUpNextTick(){draining&&currentQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var timeout=runTimeout(cleanUpNextTick);draining=!0;for(var len=queue.length;len;){for(currentQueue=queue,queue=[];++queueIndex<len;)currentQueue&&currentQueue[queueIndex].run();queueIndex=-1,len=queue.length}currentQueue=null,draining=!1,runClearTimeout(timeout)}}function Item(fun,array){this.fun=fun,this.array=array}function noop(){}var cachedSetTimeout,cachedClearTimeout,process=module.exports={};!function(){try{cachedSetTimeout="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var currentQueue,queue=[],draining=!1,queueIndex=-1;process.nextTick=function(fun){var args=Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)args[i-1]=arguments[i];queue.push(new Item(fun,args)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title="browser",process.browser=!0,process.env={},process.argv=[],process.version="",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(name){return[]},process.binding=function(name){throw Error("process.binding is not supported")},process.cwd=function(){return"/"},process.chdir=function(dir){throw Error("process.chdir is not supported")},process.umask=function(){return 0}},{}],4:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),Base=Fashion.Base,Context=require("./Context.js"),Preprocessor=require("./Preprocessor.js"),Env=(require("./Transpiler.js"),require("./Env.js")),SassFile=require("./SassFile.js"),Parser=require("./parse/Parser.js"),Builder=(require("./parse/Scanner.js"),function(_Base){function Builder(config){_classCallCheck(this,Builder);var _this=_possibleConstructorReturn(this,(Builder.__proto__||Object.getPrototypeOf(Builder)).call(this,config));return _this.scripts={},Fashion.lastBuilder=_this,_this.context=new Context(_this.context),_this.context.libraries=_this.context.libraries||{compass:"../lib/compass/stylesheets/",blueprint:"../lib/blueprint/stylesheets/"},_this}return _inherits(Builder,_Base),_createClass(Builder,[{key:"getContext",value:function(){return this.context}},{key:"compile",value:function(scss,file){var context=this.getContext(),jsCode=context.convert(scss,file),fn=context.compile(jsCode),css=fn(context.runtime,{},context.preprocessor.getDynamicsMap());return css}},{key:"createSetters",value:function(vars){var varName,setters="";if("string"==typeof vars)setters=vars;else for(varName in vars)setters+=varName+": dynamic("+vars[varName]+");\n";return setters}},{key:"createVarsScope",value:function(vars){var setterAst,setterVariables,sortedAst,settersCode,settersFunc,newGlobals,context=this.context,parser=new Parser,preprocessor=new Preprocessor({runtime:context.runtime}),newContext=new Context({runtime:context.runtime,preprocessor:preprocessor}),setters=this.createSetters(vars),allVariables=Fashion.chain(context.getVariables());return setterAst=parser.parse(setters),preprocessor.preprocess(setterAst,!0),preprocessor.loadPreprocessorCache(context.preprocessor),setterVariables=preprocessor.getVariables(),Fashion.apply(allVariables,setterVariables),preprocessor.variables=allVariables,context.dynamicsMap=preprocessor.getDynamicsMap(),sortedAst=preprocessor.getSortedDynamicAstNodes(),settersCode=newContext.convert(sortedAst),newContext.runtime.setCaches(context.transpiler),settersFunc=newContext.compile(settersCode),settersFunc(context.runtime,null,context.dynamicsMap),newGlobals=context.runtime.getGlobalScope()}},{key:"rebuildCss",value:function(vars){var css,context=this.context,func=context.getFunc();return css=func(context.runtime,vars,context.dynamicsMap)}},{key:"build",value:function(file,callback){function onError(error){Fashion.log("Build error for "+file);var message=(error.message||error)+"";callback&&callback(["/* "+message+" */"],error)}var context,sassFile,split,vars,me=this;"string"!=typeof file&&(split=file.split,me.compressed=file.compress,vars=file.variables,file=file.path),this._sassFileUiPath=null,this._sassFileSavePath=null,context=me.getContext();try{sassFile=me.getSassFile(file),sassFile.invalidate(),sassFile.onReady(function(){Fashion.log("Fashion build starting for "+file);try{var ast=sassFile.getExpandedAst(),converted=context.convert(ast),func=context.compile(converted),css=func(),dynamics=context.dynamicsMap||context.preprocessor.getDynamicsMap();if(vars){var scope=me.createVarsScope(vars);context.dynamicsMap=dynamics,css=me.rebuildCss(scope)}css.getText(function(cssContent,exportFn){Fashion.log("Fashion build complete for "+file),callback&&callback(cssContent,null,exportFn)},me.compressed,me.indent,me.skipComments,split)}catch(error){onError(error)}})}catch(error){onError(error)}}},{key:"getSassFile",value:function(path,relPath,origSource,importer){var sassFileSavePath,sassFileUiPath,script,className,scripts=this.scripts,isSaveFile=!1,isUiFile=!1;return path=this.getSassFilePath(path,relPath),script=scripts[path],this.varSavePath&&(sassFileSavePath=this._sassFileSavePath||this.getSassFilePath(this.varSavePath),this._sassFileSavePath=sassFileSavePath,isSaveFile=path===sassFileSavePath),this.srcSavePath&&(sassFileUiPath=this._sassFileUiPath||this.getSassFilePath(this.srcSavePath),this._sassFileUiPath=sassFileUiPath,isUiFile=0===path.indexOf(sassFileUiPath)),isUiFile&&(className=path.replace(sassFileUiPath,"").replace(/^\//g,"").replace(/\//g,".").replace(/\.scss$/g,"")),script||(script=new SassFile({path:path,builder:this,originalSource:origSource,importer:importer,isSaveFile:isSaveFile,isUiFile:isUiFile,jsClassName:className}),scripts[path]=script),script}},{key:"getFsMap",value:function(){var key,k,path,parts,p,plen,part,level,next,map=this.fsMap,scripts=this.scripts,keys=Object.keys(scripts),len=keys.length;for(map||(map={files:{},root:!0},this.fsMap=map),k=0;k<len;k++){for(key=keys[k],path=key.replace(/\\/g,"/"),parts=path.split("/"),plen=parts.length,level=map,p=0;p<plen-1;p++)part=parts[p],next=level.files[part],next||(next={fullName:level.fullName?[level.fullName,part].join("/"):part,files:{},isDir:!0},level.files[part]=next),level=next;part=parts[plen-1],next=level.files[part],next||(next={fullName:level.fullName?[level.fullName,part].join("/"):part,key:key,isFile:!0,sassFile:scripts[key]},level.files[part]=next),level.hasFile=!0}return map}},{key:"getSassFilePath",value:function(path,relPath){return relPath&&(path=this.getPath(path,relPath)),path=path.replace(/\\/g,"/"),path=this.resolveUrl(path)}},{key:"getParser",value:function(){return new Parser}},{key:"getPath",value:function(baseFile,relPath){if(relPath){var root,libpath,separatorIndex=relPath.indexOf("/"),libraryPaths=this.context.libraries;if(0!==separatorIndex&&(root=separatorIndex===-1?relPath:relPath.substring(0,separatorIndex!==-1?separatorIndex:relPath.length),libpath=libraryPaths[root]))return this.calcPath(libpath,relPath)}return this.calcPath(baseFile,relPath)}},{key:"calcPath",value:function(baseFile,relPath){var path,sep=baseFile.lastIndexOf("/");return path=sep>-1?baseFile.substring(0,sep+1)+relPath:baseFile+"/"+relPath,path.indexOf(".scss")===-1&&path.indexOf(".js")===-1&&(path+=".scss"),path}},{key:"getResolverEl",value:function(){return this.resolverEl||(this.resolverEl=document.createElement("a")),this.resolverEl}},{key:"getCanonicalPath",value:function(path){var part,p,parts=path.split("/"),out=[];for(p=0;p<parts.length;p++)part=parts[p],"."!=part&&(".."==part?(0===out.length&&Fashion.raise("bad path for getCanonicalPath : "+path),out.pop()):out.push(part));return out.join("/")}},{key:"resolveUrl",value:function(path){if(path=path.replace(/\\/g,"/"),Env.isBrowser){var resolverEl=this.getResolverEl();return resolverEl.href=path,resolverEl.href}return path=this.getCanonicalPath(path)}},{key:"createStyleEl",value:function(href,content,before){var styleEl,ieMode,head=document.getElementsByTagName("head")[0],base=document.createElement("base");return Fashion.log("Using base href : "+href),base.href=href,head.firstChild?head.insertBefore(base,head.firstChild):head.appendChild(base),base.href=base.href,styleEl=document.createElement("style"),styleEl.type="text/css",ieMode="styleSheet"in styleEl,ieMode?(before?head.insertBefore(styleEl,before):head.appendChild(styleEl),styleEl.styleSheet.cssText=content):(styleEl.textContent=content,before?head.insertBefore(styleEl,before):head.appendChild(styleEl)),head.removeChild(base),styleEl}},{key:"injectCss",value:function(cssPath,cssContent){var _this2=this;this.lastCssPath=cssPath,Array.isArray(cssContent)||(cssContent=[cssContent]),cssPath=this.resolveUrl(cssPath);var me=this,currEls=me.styleEls||[],href=cssPath.substring(0,cssPath.lastIndexOf("/")+1);me.styleEls=[],cssContent.forEach(function(content,idx){content+="\n/*# sourceURL="+cssPath+"_"+idx+" */";var before=currEls.length&&currEls[0]||null,styleEl=_this2.createStyleEl(href,content,before);me.styleEls.push(styleEl)});var head=document.getElementsByTagName("head")[0];currEls.forEach(function(el){head.removeChild(el)})}}]),Builder}(Base));Fashion.apply(Builder.prototype,{context:void 0,varSavePath:void 0,srcSavePath:void 0,sassNamespace:void 0}),module.exports=Builder},{"./Context.js":7,"./Env.js":9,"./Preprocessor.js":13,"./SassFile.js":16,"./Transpiler.js":17,"./export/Base.js":19,"./parse/Parser.js":55,"./parse/Scanner.js":56}],5:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),Base=Fashion.Base,SourceBuilder=require("./type/SourceBuilder.js"),CssPostprocessor=require("./CssPostprocessor.js"),ExtendProcessor=require("./ExtendProcessor.js"),PlaceholderProcessor=require("./PlaceholderProcessor.js"),Ready=require("./Ready.js"),Output=require("./export/Output.js"),CompressedOutput=require("./CompressedOutput.js"),CSS=function(_Base2){function CSS(config){_classCallCheck(this,CSS);var _this3=_possibleConstructorReturn(this,(CSS.__proto__||Object.getPrototypeOf(CSS)).call(this,config));return Fashion.apply(_this3,{css:[],extenders:[],outputs:[]}),_this3}return _inherits(CSS,_Base2),_createClass(CSS,[{key:"reset",value:function(){this.css=[]}},{key:"resetOutputs",value:function(){this.outputs=[],this.output=null}},{key:"addRuleset",value:function(ruleset){this.css.push(ruleset)}},{key:"createOutput",value:function(compressed,indent,skipComments,split){var output=compressed?new CompressedOutput:new Output;return indent&&(output.indentstr=indent),!compressed&&skipComments&&(output.addComment=function(text){},output.addCommentLn=function(text){this.addln()}),split&&(output.splitThreshold=split),this.output=output,this.outputs.push(output),output}},{key:"getOutputs",value:function(){var out=[];return this.outputs.forEach(function(output){out.push(output.get().trim())}),out}},{key:"getText",value:function(callBack,compressed,indent,skipComments,split){function postProcess(){var ready,proc=processors.shift();if(proc)ready=new Ready,me.ready=ready,proc.execute(css,me),ready.onReady(function(){postProcess()});else{for(var output=me.createOutput(compressed,indent,skipComments,split),c=0;c<css.length;c++){var newCount,newOutput,count=sourceBuilder.selectorCount,len=output.output.length,prevOutput=output.output;sourceBuilder.toSource(css[c],output),newCount=sourceBuilder.selectorCount,split>-1&&newCount>split&&(newOutput=me.createOutput(compressed,indent,skipComments,split),newOutput.output=output.output.substring(len),output.output=prevOutput,sourceBuilder.selectorCount=newCount-count,output=newOutput)}callBack(me.getOutputs(),me.exportFn)}}this.resetOutputs();var proc,extendProc,placeholderProc,css=this.css,sourceBuilder=new SourceBuilder;proc=new CssPostprocessor({context:this.context}),css=proc.process(css),extendProc=new ExtendProcessor,extendProc.context=this.context,extendProc.extendRulesets(css,this.extenders),placeholderProc=new PlaceholderProcessor,css=placeholderProc.processRulesets(css);var hostDirectives={"@charset":!0,"@import":!0};css.forEach(function(r,i){return r.index=i}),css.sort(function(r1,r2){var d1=!!hostDirectives[r1.atDirectiveName],d2=!!hostDirectives[r2.atDirectiveName];return d1&&!d2?-1:d2&&!d1?1:d1&&d2&&r1.atDirectiveName!=r2.atDirectiveName?"@charset"===r1.atDirectiveName?-1:1:r1.index-r2.index});var me=this,processors=this.processors||[];postProcess()}},{key:"getJSON",value:function(){var ans={};return ans}}]),CSS}(Base);Fashion.apply(CSS.prototype,{css:void 0,extenders:void 0,outputs:void 0,output:void 0,processors:void 0,context:void 0,exportJs:void 0}),module.exports=CSS},{"./CompressedOutput.js":6,"./CssPostprocessor.js":8,"./ExtendProcessor.js":10,"./PlaceholderProcessor.js":12,"./Ready.js":14,"./export/Base.js":19,"./export/Output.js":20,"./type/SourceBuilder.js":67}],6:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),Output=require("./export/Output.js"),CompressedOutput=function(_Output){function CompressedOutput(){return _classCallCheck(this,CompressedOutput),_possibleConstructorReturn(this,(CompressedOutput.__proto__||Object.getPrototypeOf(CompressedOutput)).call(this))}return _inherits(CompressedOutput,_Output),_createClass(CompressedOutput,[{key:"space",value:function(){}},{key:"addComment",value:function(text){}},{key:"indent",value:function(){}},{key:"unindent",value:function(){}},{key:"addln",value:function(ln){_get(CompressedOutput.prototype.__proto__||Object.getPrototypeOf(CompressedOutput.prototype),"add",this).call(this,ln||"")}},{key:"addCommentLn",value:function(ln){}},{key:"indentln",value:function(ln){this.addln(ln)}},{key:"unindentln",value:function(ln){this.addln(ln)}}]),CompressedOutput}(Output);Fashion.apply(CompressedOutput.prototype,{isCompressed:!0}),module.exports=CompressedOutput;
},{"./export/Base.js":19,"./export/Output.js":20}],7:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),Base=Fashion.Base,Runtime=require("./Runtime.js"),Preprocessor=require("./Preprocessor.js"),Transpiler=require("./Transpiler.js"),Parser=require("./parse/Parser.js"),Scanner=require("./parse/Scanner.js"),Context=function(_Base3){function Context(config){_classCallCheck(this,Context);var _this5=_possibleConstructorReturn(this,(Context.__proto__||Object.getPrototypeOf(Context)).call(this,config));return _this5._fnMap={},_this5.runtime=_this5.runtime||new Runtime({context:_this5}),_this5.preprocessor=_this5.preprocessor||new Preprocessor({runtime:_this5.runtime}),_this5.transpiler=_this5.transpiler||new Transpiler({preprocessor:_this5.preprocessor,symbols:config&&config.symbols}),_this5}return _inherits(Context,_Base3),_createClass(Context,[{key:"convert",value:function(ast,file){var node,parser,jsCode,transpiler=this.transpiler;return"string"==typeof ast?(parser=new Parser,node=parser.parse(ast,file)):node=ast,this.preprocessor.preprocess(node),jsCode=this.transpiler.transpile(node),this.runtime.setCaches(this.transpiler),this.lastVariables=transpiler.variables,jsCode}},{key:"getVariables",value:function(){return this.lastVariables}},{key:"compile",value:function(jsCode){var me=this,fn=this.runtime.compile(jsCode);return me.func=function(rt,overrides,dyn){return fn(rt||me.runtime,overrides,dyn||me.dynamicsMap||me.preprocessor.getDynamicsMap())}}},{key:"getFunc",value:function(){return this.func}},{key:"run",value:function(code){return this.runtime.run(code)}},{key:"parseSelectors",value:function(selector){var fn=this._fnMap[selector],runtime=this.runtime;if(!fn){var ast,jsCode,parsedSelectors,parser=new Parser,transpiler=new Transpiler;parser.scanner=new Scanner(selector),parser.style=parser.scanner.style,ast=parser.parseSelectors(),jsCode=transpiler.transpile(ast,!0),jsCode="return "+jsCode+";",fn=runtime.createWrappedFn(jsCode),this._fnMap[selector]=fn}return parsedSelectors=runtime.callWrappedFn(fn,{})}},{key:"getConfig",value:function(name){return this[name]}},{key:"setConfig",value:function(name,value){if("string"==typeof name){var prev=this[name];return this[name]=value,prev}return Fashion.apply(this,name),null}}]),Context}(Base);Fashion.apply(Context.prototype,{runtime:void 0,_fn:void 0,preprocessor:void 0,transpiler:void 0,func:void 0}),module.exports=Context},{"./Preprocessor.js":13,"./Runtime.js":15,"./Transpiler.js":17,"./export/Base.js":19,"./parse/Parser.js":55,"./parse/Scanner.js":56}],8:[function(require,module,exports){(function(process){"use strict";var Fashion=require("./export/Base.js"),TypeVisitor=require("./type/TypeVisitor.js"),Declaration=require("./type/Declaration.js"),Ruleset=require("./type/Ruleset.js"),SelectorList=require("./type/selectors/SelectorList.js"),MultiPartSelector=require("./type/selectors/MultiPartSelector.js"),Types=require("./type/Types.js"),Literal=Types.Literal,CssPostprocessor=function(_TypeVisitor){function CssPostprocessor(cfg){return _classCallCheck(this,CssPostprocessor),_possibleConstructorReturn(this,(CssPostprocessor.__proto__||Object.getPrototypeOf(CssPostprocessor)).call(this,cfg))}return _inherits(CssPostprocessor,_TypeVisitor),_createClass(CssPostprocessor,[{key:"selector",value:function(obj){"parent"===obj.selectorType&&(this.currentParentSelector?(obj.visitTarget=this.currentParentSelector,this.parentUsed=!0):this.strictParentRef&&Fashion.raise("Base-level rules cannot contain the parent-selector-referencing character '&'."))}},{key:"literal",value:function(obj){"&"===obj.value&&(this.currentParentSelector?obj.visitTarget=this.currentParentSelector:this.strictParentRef&&Fashion.raise("Base-level rules cannot contain the parent-selector-referencing character '&'."))}},{key:"getSelectorArray",value:function(selectors,applyInterpolations){if(selectors instanceof SelectorList)applyInterpolations&&selectors.applyInterpolations(),selectors=selectors.items;else{var str=""+selectors;if(str.indexOf(",")>-1&&applyInterpolations)return this.getSelectorArray(this.context.parseSelectors(str));selectors=[selectors]}return selectors}},{key:"combineSelectors",value:function(parent,child){var p,c,parentSelector,childSelector,parentSelectors=this.getSelectorArray(parent.selectors),childSelectors=this.getSelectorArray(child.selectors),expandedSelectors=[],plen=parentSelectors.length,clen=childSelectors.length;for(p=0;p<plen;p++)for(parentSelector=parentSelectors[p],this.currentParentSelector=parentSelector,c=0;c<clen;c++)childSelector=childSelectors[c].clone(),this.parentUsed=!1,this.visit(childSelector),this.parentUsed||(childSelector=new MultiPartSelector([parentSelector,childSelector])),expandedSelectors.push(childSelector);this.currentParentSelector=null,expandedSelectors=1==expandedSelectors.length?expandedSelectors[0]:new SelectorList(expandedSelectors),child.selectors=expandedSelectors}},{key:"combineMediaSelectors",value:function(parent,child){for(var parentSelector,nestedSelector,expanded=[],selectors=this.getSelectorArray(parent.selectors),items=this.getSelectorArray(child.selectors),s=0;s<selectors.length;s++){parentSelector=selectors[s];for(var n=0;n<items.length;n++){nestedSelector=items[n],0===n&&(nestedSelector.items=nestedSelector.items.slice(1)),this.currentParentSelector=parentSelector,this.parentUsed=!1,this.visit(nestedSelector),this.parentUsed=!1;var newSelector=new MultiPartSelector([parentSelector,new Literal("and"),nestedSelector]);newSelector.skipParentPrepend=child.isAtRoot(),expanded.push(newSelector)}}expanded=1===expanded.length?expanded[0]:new SelectorList(expanded),child.selectors=expanded}},{key:"declaration",value:function(obj){var declWas=this.currDeclaration;this.currDeclaration=obj,obj.descend(this),this.currDeclaration=declWas}},{key:"ruleset",value:function(obj){var parent,ns,d,decl,idx,prevMedia=this.prevMedia,prevAtRoot=this.prevAtRoot,prevAtRule=this.prevAtRule,prevPlain=this.prevPlain,atRoot=!1,declaration=this.currDeclaration;if(obj.isNamespaced){if(this.visit(obj.declarations),declaration){for(ns=declaration.property,parent=declaration.ruleset,idx=parent.getDeclarationIndex(declaration),idx===-1&&(idx=parent.declarations.length),d=0;d<obj.declarations.length;d++)decl=obj.declarations[d],parent.addDeclaration(new Declaration({property:ns+"-"+decl.property,value:decl.value,docs:decl.docs,sourceInfo:decl.sourceInfo,important:decl.important}),d+idx);obj.visitTarget=null,obj.parentNode===declaration&&parent.removeDeclaration(declaration)}return!1}if(obj.selectors=this.getSelectorArray(obj.selectors,!0),1===obj.selectors.length?obj.selectors=obj.selectors[0]:obj.selectors=new SelectorList(obj.selectors),obj.isAtRule()){if(this.prevAtRule=obj,prevPlain&&obj.declarations.length){var newRuleset=new Ruleset({parent:obj,declarations:obj.declarations,selectors:prevPlain.selectors,isMediaRoot:!0});newRuleset.declarations.forEach(function(d){return d.ruleset=newRuleset}),obj.declarations=[],obj.children.unshift(newRuleset)}prevAtRule||(atRoot=!0)}return obj.isMedia()?(prevMedia&&this.combineMediaSelectors(prevMedia,obj),this.prevMedia=obj,atRoot=!0):obj.isAtRoot()?atRoot=!0:obj.isAtRule()||(prevPlain&&!obj.isMediaRoot&&this.combineSelectors(prevPlain,obj),this.prevPlain=obj,prevAtRule||(atRoot=!0)),atRoot&&(obj.parent&&obj.parent.removeChildRuleset(obj),(obj.isAtRule()||obj.declarations.length||obj.isAtDirective)&&this.rootCss.push(obj)),obj.descend(this),this.prevMedia=prevMedia,this.prevAtRoot=prevAtRoot,this.prevPlain=prevPlain,this.prevAtRule=prevAtRule,!1}},{key:"visitItem",value:function(obj){var currParent=this.currParent;obj.parentNode=currParent,this.currParent=obj,_get(CssPostprocessor.prototype.__proto__||Object.getPrototypeOf(CssPostprocessor.prototype),"visitItem",this).call(this,obj),this.currParent=currParent}},{key:"process",value:function(obj){return this.rootCss=[],this.visit(obj),this.rootCss}}]),CssPostprocessor}(TypeVisitor);Fashion.apply(CssPostprocessor.prototype,{currentParentSelector:null,parentUsed:null,rootCss:null,context:null,prevMedia:null,prevAtRule:null,prevAtRoot:null,prevPlain:null,currDeclaration:null,currParent:null,strictParentRef:!1}),module.exports=CssPostprocessor}).call(this,require("_process"))},{"./export/Base.js":19,"./type/Declaration.js":65,"./type/Ruleset.js":66,"./type/TypeVisitor.js":68,"./type/Types.js":69,"./type/selectors/MultiPartSelector.js":73,"./type/selectors/SelectorList.js":74,_process:3}],9:[function(require,module,exports){(function(global){"use strict";var fs,Fashion=require("./export/Base.js"),isNode=function(){try{return"[object process]"===Object.prototype.toString.call(global.process)}catch(e){return!1}}(),isPhantom="undefined"!=typeof phantom,isRhino="undefined"!=typeof importPackage,isBrowser=!(isNode||isRhino||isPhantom),canSetPrototype=function(){var a={x:42},b={};try{b.__proto__=a}catch(e){}return 42===b.x}();(isNode||isPhantom)&&(fs=require("fs"));var Env=function(){function Env(){_classCallCheck(this,Env),Fashion.apply(this,{isNode:isNode,isPhantom:isPhantom,isRhino:isRhino,isBrowser:isBrowser,canSetPrototype:canSetPrototype,fs:fs})}return _createClass(Env,[{key:"exists",value:function(path){var fs=this.fs;try{return this.isRhino&&!this.isPhantom?new java.io.File(path).exists():this.isPhantom?fs.exists(path):(this.readFile(path),!0)}catch(e){return!1}}},{key:"join",value:function(dir,subpath){return dir+"/"+subpath}},{key:"readFileRhino",value:function(file){Fashion.raise("function 'Fashion.Env.readFileRhino' has no default implementation")}},{key:"readFile",value:function(file){return this.isRhino?this.readFileRhino(file):this.isNode?this.fs.readFileSync(file):this.doRequest({url:file,async:!1,method:"GET"})}},{key:"loadFileRhino",value:function(file,success,error){Fashion.raise("function 'Fashion.Env.readFileRhino' has no default implementation")}},{key:"loadFile",value:function(file,success,error,options,retries){this.isBrowser?(retries=retries||0,this.doRequest(Fashion.merge({url:file,async:!0,params:{_dc:(new Date).getTime()},onComplete:function(options,xhr){success&&success(xhr.responseText,xhr)},onError:function(){retries<3?this.loadFile(file,success,error,options,retries+1):error&&error.apply(error,arguments)}},options))):this.isNode?this.fs.readFile(file,"utf-8",function(err,data){err?error&&error(err):(65279!==data.charCodeAt(0)&&65534!==data.charCodeAt(0)||(data=data.substr(1)),success(data))}):this.isRhino&&this.loadFileRhino(file,success,error)}},{key:"doRequest",value:function(options){var queryParamStr,xhr,content,sep,url=options.url,method=options.method||"GET",data=options.data||null,async=options.async!==!1,onComplete=options.onComplete,onError=options.onError,scope=options.scope||this,params=options.params,queryParams=[],arrayBufferSupported=!1;if(params){for(var name in params)queryParams.push(name+"="+params[name]);queryParamStr=queryParams.join("&"),""!==queryParamStr&&(sep=url.indexOf("?")>-1?"&":"?",url=url+sep+queryParamStr)}if("undefined"!=typeof XMLHttpRequest?(xhr=new XMLHttpRequest,arrayBufferSupported="string"==typeof xhr.responseType):xhr=new ActiveXObject("Microsoft.XMLHTTP"),xhr.open(method,url,async),async&&(xhr.timeout=5e3),options.binary&&(arrayBufferSupported?(xhr.responseType="arraybuffer",xhr.getBinaryData=function(){return new Uint8Array(this.response)}):(xhr.overrideMimeType("text/plain; charset=x-user-defined"),xhr.getBinaryData=function(){return this.responseText})),xhr.onreadystatechange=function(){if(4===xhr.readyState)try{200===xhr.status?onComplete&&onComplete.call(scope,options,xhr):onError&&onError.call(scope,options,xhr)}catch(err){Fashion.error((err.stack||err)+""),onError&&onError.call(scope,options,xhr,err)}finally{}},xhr.onerror=onError,"function"==typeof data&&(data=data()),"string"!=typeof data&&(data=JSON.stringify(data)),xhr.send(data),!async)return content=xhr.responseText}}]),Env}();module.exports=new Env}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./export/Base.js":19,fs:2}],10:[function(require,module,exports){"use strict";function pushApply(array,items){for(var i=0;i<items.length;i++){var item=items[i];item&&array.push(item)}}function joinArrays(){for(var arrays=arguments,out=[],i=0;i<arrays.length;i++){var array=arrays[i];Array.isArray(array)?pushApply(out,arrays[i]):array&&out.push(array)}return out}var Fashion=require("./export/Base.js"),TypeVisitor=require("./type/TypeVisitor.js"),SelectorList=require("./type/selectors/SelectorList.js"),MultiPartSelector=require("./type/selectors/MultiPartSelector.js"),CompoundSelector=require("./type/selectors/CompoundSelector.js"),SourceBuilder=require("./type/SourceBuilder.js"),ExtendProcessor=function(_TypeVisitor2){function ExtendProcessor(cfg){return _classCallCheck(this,ExtendProcessor),_possibleConstructorReturn(this,(ExtendProcessor.__proto__||Object.getPrototypeOf(ExtendProcessor)).call(this,cfg))}return _inherits(ExtendProcessor,_TypeVisitor2),_createClass(ExtendProcessor,[{key:"mergeCompoundSelector",value:function(match,extendSelector,matchKeys,targetKeys){for(var newCompoundSelector,matchIndex,origCompoundSelector=this.currCompoundSelector,compoundSelector=origCompoundSelector,multiPartSelector=this.currMultiPartSelector,items=[],i=0;i<compoundSelector.items.length;i++){for(var item=compoundSelector.items[i];item&&item.visitTarget;)item=item.visitTarget;item&&item.$isFashionBaseSelectorList&&(compoundSelector=this.context.parseSelectors(SourceBuilder.toSource(compoundSelector)),multiPartSelector=null)}for(var i=0;i<compoundSelector.items.length;i++){var item=compoundSelector.items[i],hash=item.getHash();targetKeys?targetKeys.hasOwnProperty(hash)?(matchIndex=i,items.push(null)):items.push(item):hash!=match.getHash()?items.push(item):(matchIndex=i,items.push(null))}if(extendSelector instanceof MultiPartSelector){var newSelector=extendSelector.clone(),last=newSelector.last();last instanceof CompoundSelector?last.setItems(joinArrays(items,last.items)):compoundSelector.$isFashionMultiPartSelector?(last=new MultiPartSelector(joinArrays([last],items)),newSelector.items[newSelector.items.length-1]=last):(last=new CompoundSelector(joinArrays([last],items)),newSelector.items[newSelector.items.length-1]=last),newCompoundSelector=newSelector}else extendSelector instanceof CompoundSelector?items.splice.apply(items,[matchIndex,1].concat(extendSelector.items)):items[matchIndex]=extendSelector;if(newCompoundSelector=newCompoundSelector||new CompoundSelector(items),multiPartSelector){for(var newItems=[],i=0;i<multiPartSelector.items.length;i++){var item=multiPartSelector.items[i];item===origCompoundSelector?newItems.push(newCompoundSelector):newItems.push(item)}this.newSelectors.push(new MultiPartSelector(newItems))}else this.newSelectors.push(newCompoundSelector)}},{key:"mergeMultiPartSelector",value:function(match,extendSelector){var i,item,before,after,multiPartSelector=this.currMultiPartSelector,items=multiPartSelector.items,len=items.length;for(i=0;i<len;i++)if(item=items[i],item.getHash()===match.getHash())if(before=items.slice(0,i),after=items.slice(i+1),extendSelector instanceof MultiPartSelector){var mpExtendSelector=extendSelector,extendItems=mpExtendSelector.items,elen=extendItems.length,first=extendItems.slice(0,elen-1),last=extendItems.slice(elen-1);this.newSelectors.push(new MultiPartSelector(joinArrays(before,first,last,after))),this.newSelectors.push(new MultiPartSelector(joinArrays(first,before,last,after)))}else this.newSelectors.push(new MultiPartSelector(joinArrays(before,extendSelector,after)))}},{key:"checkSelectorPart",value:function(obj){if(obj.getHash()===this.currTargetHash)if(this.currCompoundSelector)for(var e=0;e<this.extendSelectors.length;e++){var extendSelector=this.extendSelectors[e];this.mergeCompoundSelector(obj,extendSelector)}else if(this.currMultiPartSelector)for(var e=0;e<this.extendSelectors.length;e++){var extendSelector=this.extendSelectors[e];this.mergeMultiPartSelector(obj,extendSelector)}else this.appendAllExtendSelectors()}},{key:"appendAllExtendSelectors",value:function(){this.newSelectors.push.apply(this.newSelectors,this.extendSelectors)}},{key:"getCompoundSelectorMap",value:function(compoundSelector){for(var item,map={},i=0;i<compoundSelector.items.length;i++)item=compoundSelector.items[i],map[item.getHash()]=!0;return map}},{key:"literal",value:function(obj){this.checkSelectorPart(obj)}},{key:"selector",value:function(obj){this.checkSelectorPart(obj)}},{key:"compoundselector",value:function(obj){var resetCompoundSelector=this.currCompoundSelector;if(this.currCompoundSelector=obj,obj.getHash()===this.currTargetHash)this.appendAllExtendSelectors();else if(this.currTarget instanceof CompoundSelector){for(var targetKey,objMap=this.getCompoundSelectorMap(obj),targetMap=this.getCompoundSelectorMap(this.currTarget),objKeys=Object.keys(objMap),targetKeys=Object.keys(targetMap),subset=!0,t=0;t<targetKeys.length;t++)if(targetKey=targetKeys[t],!objKeys.hasOwnProperty(targetKey)){subset=!1;break}if(subset)for(var e=0;e<this.extendSelectors.length;e++){var extendSelector=this.extendSelectors[e];this.mergeCompoundSelector(obj,extendSelector,objKeys,targetKeys)}}else obj.descend(this);return this.currCompoundSelector=resetCompoundSelector,!1}},{key:"multipartselector",value:function(obj){var resetMultiPartSelector=this.currMultiPartSelector;return this.currMultiPartSelector=obj,obj.getHash()===this.currTargetHash?this.appendAllExtendSelectors():obj.descend(this),this.currMultiPartSelector=resetMultiPartSelector,!1}},{key:"extend",value:function(ruleset,targetSelector,extendSelectors){var i,j,newSelector,hash;if(this.currTarget=targetSelector,this.currTargetHash=this.currTarget.getHash(),this.newSelectors=[],this.extendSelectors=extendSelectors,ruleset.selectors&&(ruleset.selectors.flatten&&ruleset.selectors.flatten(),this.visit(ruleset.selectors)),this.newSelectors.length){var selectors=ruleset.selectors,map={};for(selectors=selectors instanceof SelectorList?selectors.items:[selectors],i=0;i<selectors.length;i++)map[selectors[i].getHash()]=!0;for(i=0;i<this.newSelectors.length;i++)newSelector=this.newSelectors[i],hash=newSelector.getHash(),map.hasOwnProperty(hash)||(selectors.push(newSelector),map[hash]=!0);for(i=0;i<selectors.length;i++)for(j=0;j<selectors.length;j++)if(i!=j&&selectors[i]&&selectors[j]){var comp=this.compareSelectors(selectors[i],selectors[j]);0!==comp&&(comp>1?selectors[i]=null:selectors[j]=null)}for(var filteredSelectors=[],i=0;i<selectors.length;i++){var selector=selectors[i];selector&&filteredSelectors.push(selector)}ruleset.selectors=new SelectorList(filteredSelectors)}for(var c=0;c<ruleset.children.length;c++)this.extend(ruleset.children[c],targetSelector,extendSelectors)}},{key:"compareSelectors",value:function(sel1,sel2){if(sel1 instanceof MultiPartSelector)return sel2 instanceof MultiPartSelector||(sel2=new MultiPartSelector([sel2])),this.isSuperSelector(sel1,sel2);if(sel2 instanceof MultiPartSelector)return sel1=new MultiPartSelector([sel1]),this.isSuperSelector(sel1,sel2);if(sel1 instanceof CompoundSelector)return sel2 instanceof CompoundSelector||(sel2=new CompoundSelector([sel2])),this.isSubset(sel1,sel2);if(sel2 instanceof CompoundSelector)return sel1=new CompoundSelector([sel1]),this.isSubset(sel1,sel2);var h1=sel1.getHash(),h2=sel2.getHash();return h1==h2?1:0}},{key:"isSuperSelector",value:function(sel1,sel2){var tmpRes,items=sel1.items,sItems=sel2.items,shortList=items,longList=sItems,res=1;items.length>sItems.length&&(shortList=sItems,longList=items,res=-1);for(var i=0;i<shortList.length;i++){tmpRes=this.compareSelectors(shortList[i],longList[i]);var tmpRes;if(0===tmpRes)return 0;if(tmpRes!==res)return 0}return res}},{key:"isSubset",value:function(sel1,sel2){var item,items=sel1.items,sItems=sel2.items,longItemMap={},shortList=items,longList=sItems,res=1;items.length>sItems.length&&(shortList=sItems,longList=items,res=-1);for(var i=0;i<longList.length;i++)item=longList[i],longItemMap[item.getHash()]=item;for(var i=0;i<shortList.length;i++)if(item=shortList[i],!longItemMap[item.getHash()])return 0;return res}},{key:"extendRulesets",value:function(rulesets,extenders){var i,j,k,e,iLen,jLen,kLen,eLen,extender,extend,ruleset,token,hash,extendMap={},extenderArray=[];for(iLen=extenders.length,kLen=rulesets.length,i=0;i<iLen;i++)for(extender=extenders[i],jLen=extender.extend.length,j=0;j<jLen;j++){extend=extender.extend[j];var extendSelectors=extender.selectors;extendSelectors instanceof SelectorList?(extendSelectors.flatten(),extendSelectors=extendSelectors.items):((extendSelectors.$isFashionMultiPartSelector||extendSelectors.$isFashionCompoundSelector)&&extendSelectors.flatten(),extendSelectors=[extendSelectors]),hash=extend.getHash(),token=extendMap[hash],token||(token={selector:extend,extenders:[]},extendMap[hash]=token,extenderArray.push(token)),token.extenders.push.apply(token.extenders,extendSelectors)}for(eLen=extenderArray.length,k=0;k<kLen;k++)for(ruleset=rulesets[k],e=0;e<eLen;e++)token=extenderArray[e],this.extend(ruleset,token.selector,token.extenders)}}]),ExtendProcessor}(TypeVisitor);Fashion.apply(ExtendProcessor.prototype,{currTarget:null,currTargetHash:null,newSelectors:null,extendSelectors:null,currCompoundSelector:null,currMultiPartSelector:null}),module.exports=ExtendProcessor},{"./export/Base.js":19,"./type/SourceBuilder.js":67,"./type/TypeVisitor.js":68,"./type/selectors/CompoundSelector.js":72,"./type/selectors/MultiPartSelector.js":73,"./type/selectors/SelectorList.js":74}],11:[function(require,module,exports){"use strict";function getJsName(name){return name.replace(/\-/g,"_").replace(/\//g,"_fs_").replace(/\\/g,"_bs_")}var NameConverter=function(){function NameConverter(){_classCallCheck(this,NameConverter),this.variableNameMap={}}return _createClass(NameConverter,[{key:"convertName",value:function(name){var map=this.variableNameMap,converted=map[name];return void 0===converted&&(converted=map[name]=getJsName(name)),converted}}]),NameConverter}(),converter=new NameConverter;module.exports={NameConverter:NameConverter,getJsName:function(name){return converter.convertName(name)}}},{}],12:[function(require,module,exports){(function(process){"use strict";var Fashion=require("./export/Base.js"),TypeVisitor=require("./type/TypeVisitor.js"),PlaceholderProcessor=function(_TypeVisitor3){function PlaceholderProcessor(cfg){return _classCallCheck(this,PlaceholderProcessor),_possibleConstructorReturn(this,(PlaceholderProcessor.__proto__||Object.getPrototypeOf(PlaceholderProcessor)).call(this,cfg))}return _inherits(PlaceholderProcessor,_TypeVisitor3),_createClass(PlaceholderProcessor,[{key:"literal",value:function(obj){"%"===obj.getHash()&&(this.hasPlaceholder=!0)}},{key:"selector",value:function(obj){"placeholder"===obj.selectorType&&(this.hasPlaceholder=!0)}},{key:"selectorlist",value:function(obj){var i,item,items=obj.items,len=items.length,newItems=[];for(i=0;i<len;i++)item=items[i],this.hasPlaceholder=!1,this.visit(item),this.hasPlaceholder||newItems.push(item);return obj.items=newItems,!1}},{key:"ruleset",value:function(obj){return this.hasPlaceholder=!1,this.visit(obj.selectors),this.hasPlaceholder&&(obj.selectors=null),this.visit(obj.children),!1}},{key:"process",value:function(css){this.visit(css),css.selectors&&0!==css.selectors.length&&this.outCss.push(css)}},{key:"processRulesets",value:function(css){this.outCss=[];for(var i=0;i<css.length;i++)this.process(css[i]);return this.outCss}}]),PlaceholderProcessor}(TypeVisitor);Fashion.apply(PlaceholderProcessor.prototype,{hasPlaceholder:!1,outCss:null}),module.exports=PlaceholderProcessor}).call(this,require("_process"))},{"./export/Base.js":19,"./type/TypeVisitor.js":68,_process:3}],13:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),Base=Fashion.Base,Visitor=require("./Visitor.js"),regexes={replaces:/^\s*?\/\/# fashion replaces\s+?(.*?)$/},SassVariableAttributes=function SassVariableAttributes(){_classCallCheck(this,SassVariableAttributes)};Fashion.apply(SassVariableAttributes.prototype,{global:!1,"default":!1,dynamic:!1});var SassVariable=function(_Base4){function SassVariable(cfg){_classCallCheck(this,SassVariable);var _this9=_possibleConstructorReturn(this,(SassVariable.__proto__||Object.getPrototypeOf(SassVariable)).call(this,cfg));return _this9.references=_this9.references||[],_this9}return _inherits(SassVariable,_Base4),_createClass(SassVariable,[{key:"elevateDynamics",value:function(variables,elevator){var me=this,dynamicWas=me.dynamic;me.dynamic=!0,dynamicWas||(this.enableElevationWarning&&(Fashion.warn("Elevating variable '"+me.name+"' to dynamic",me.node),Fashion.warn("\tcaused by",elevator.node)),me.elevationCause=elevator,variables.push(me)),me.references.forEach(function(ref){var variable=me.map[ref];variable&&!variable.dynamic&&variable.elevateDynamics(variables,me)})}},{key:"verify",value:function(){return!(this.dynamic&&this.previous&&!this.previous.dynamic)||(Fashion.error("Cannot redefine "+this.name+" as dynamic"),Fashion.error("\tfrom ",this.previous.getNode()),Fashion.error("\t  at ",this.getNode()),this.preprocessor.errors+=1,!1)}},{key:"elevated",value:function(){return this.dynamic&&!this.attributes.dynamic}},{key:"getNode",value:function(){var node=this.node;return node}}]),SassVariable}(Base);Fashion.apply(SassVariable.prototype,{name:null,previous:null,node:null,dynamic:!1,references:null,attributes:null,isGlobal:!1,map:null,elevationCause:null,processed:!1,preprocessor:null,enableElevationWarning:!1,scope:void 0});var Preprocessor=function(_Visitor){function Preprocessor(cfg){_classCallCheck(this,Preprocessor);var _this10=_possibleConstructorReturn(this,(Preprocessor.__proto__||Object.getPrototypeOf(Preprocessor)).call(this,cfg));return _this10.reset(),_this10}return _inherits(Preprocessor,_Visitor),_createClass(Preprocessor,[{key:"reset",value:function(){this.replacedVariable=null,this.variables={},this.functions=[],this.currentVariable=null,this.functionDeclarations={},this.mixinDeclarations={},this.registeredDeclarations=null,this.replacesMap={},this.currentScope={variables:{},isGlobal:!0}}},{key:"handleFunc",value:function(node,collection){var func=node.func||node.name,name=Fashion.getJsName(func.id||func.value),parameters=Preprocessor.getFunctionCallArgs(func);collection[name]={parameters:parameters,ast:node,scope:this.currentScope};for(var i=0;i<parameters.length;i++){var param=parameters[i];name=Fashion.getJsName(param.name),this.currentScope.variables[name]=new SassVariable({name:name,node:param.arg,isGlobal:!1,dynamic:!1,map:this.currentScope.variables,preprocessor:this,enableElevationWarning:this.enableElevationWarning,scope:this.currentScope})}}},{key:"Mixin",value:function(node){var scopeWas=this.currentScope;this.currentScope={prev:scopeWas,variables:{}},this.handleFunc(node,this.mixinDeclarations),node.descend(this),this.currentScope=scopeWas}},{key:"Function",value:function(node){var isGlobal=1==this.nodeStack.length,scopeWas=this.currentScope;isGlobal&&this.functions.push(node),this.currentScope={prev:scopeWas,variables:{}},this.handleFunc(node,this.functionDeclarations),node.descend(this),this.currentScope=scopeWas}},{key:"getVariable",value:function(name){for(var variable,scope=this.currentScope;scope&&!(variable=scope.variables[name]);)scope=scope.prev;return variable}},{key:"Variable",value:function(node){if(this.currentVariable){var refName=Fashion.getJsName(node.name),variable=this.getVariable(refName);variable&&!variable.scope.isGlobal||this.currentVariable.references.push(refName)}}},{key:"FunctionCall",value:function(node){if(this.currentVariable){node.descend(this);var id=Fashion.getJsName(node.id),entry=this.functionDeclarations[id];if(entry){var scopeWas=this.currentScope;this.currentScope=entry.scope,this.visit(entry.ast.statements),this.currentScope=scopeWas}}}},{key:"Comment",value:function(comment){var replaces=regexes.replaces,match=replaces.exec(comment);"//# fashion warn -elevation"===comment?this.enableElevationWarning=!1:"//# fashion warn +elevation"===comment?this.enableElevationWarning=!0:match&&(this.replacedVariable=match[1])}},{key:"VariableAssignment",value:function(node){var variable,value,funcName,replaces=this.replacedVariable,replacesEntry=this.replacesMap[Fashion.getJsName(node.name)],origName=node.name,nodeName=replacesEntry&&replacesEntry.name||origName,name=Fashion.getJsName(nodeName),currVariable=this.variables[name],varWas=this.currentVariable,bangGlobal=!!node.global,bangDynamic=!!node.dynamic,bangDefault=!!node["default"],isGlobalVar=1===this.nodeStack.length;if(replacesEntry&&Fashion.warn("Using new variable "+replacesEntry.name+" for deprecated variable "+node.name,node),node.name=nodeName,value=node.value,"FunctionCall"===value.type&&(funcName=value.id||value.value,"dynamic"===funcName&&(bangDynamic=!0,value.visitTarget=value.args,value.args.items&&1===value.args.items.length&&(value.visitTarget=value.args.items[0]))),variable=new SassVariable({name:name,nodeName:origName,node:node,previous:currVariable,attributes:{global:bangGlobal,"default":bangDefault,dynamic:bangDynamic},isGlobal:isGlobalVar,dynamic:currVariable&&currVariable.dynamic||bangDynamic,map:this.variables,preprocessor:this,enableElevationWarning:this.enableElevationWarning,scope:this.currentScope,replaces:replaces||currVariable&&currVariable.replaces}),variable.replaces){var replacesName=Fashion.getJsName(variable.replaces),current=this.replacesMap[replacesName];current&&variable.name!=current.name&&Fashion.warn("Variable "+current.name+" already replaces variable "+variable.replaces,node),this.replacesMap[replacesName]=variable}return this.replacedVariable=null,this.currentScope.variables[name]=variable,isGlobalVar||bangGlobal?(node.dynamic&&(Fashion.warn("Use of !dynamic has been deprecated",node),Fashion.warn("Use dynamic() function instead.")),variable.verify(),this.variables[name]=variable,this.currentVariable=variable,node.descend(this),void(this.currentVariable=varWas)):(node.descend(this),!1)}},{key:"getRuntime",value:function(){return this.runtime}},{key:"getRegisteredFunctions",value:function(){return this.registeredFunctions||(this.registeredFunctions=this.runtime&&this.runtime.getRegisteredFunctions()||{}),this.registeredFunctions}},{key:"loadRegisteredFunctionArgs",value:function(){if(!this.registeredDeclarations){var name,func,src,params,match,args,i,argName,registered=this.getRegisteredFunctions(),funcArgsRx=this.funcArgsRx,paramsMap={};for(name in registered)if(func=registered[name],Fashion.isFunction(func)){if(src=func+"",params=[],match=funcArgsRx.exec(src),match&&match[2])for(args=match[2]&&match[2].split(/,/g)||[],i=0;i<args.length;i++)argName=args[i].trim(),params.push({name:argName,position:i});paramsMap[name]=params}this.registeredDeclarations=paramsMap}}},{key:"preprocess",value:function(node,skipRegistrations){this.reset(),this.visit(node),skipRegistrations||this.loadRegisteredFunctionArgs(),this.errors&&Fashion.raise("Encountered "+this.errors+" error(s) during preprocessing.")}},{key:"getVariables",value:function(){return this.variables}},{key:"generateCycleError",value:function(stack,variables){var r,trace,referenceTrace=[];for(r=0;r<stack.length;r++)trace=stack[r]+" => "+variables[stack[r]].node.file+":"+variables[stack[r]].node.lineNumber,referenceTrace.push(trace);var msg=["Variable Cycle detected in variable : ",referenceTrace.join("\n")].join("\n");Fashion.error(msg),Fashion.raise(msg)}},{key:"topoSort",value:function(variable,variables,sorted,processed,stack){function processRef(ref){var refVariable=variables[ref];return!(!refVariable||!refVariable.dynamic&&!me.sortAllVariables)&&(me.topoSort(refVariable,variables,sorted,processed,stack),!0)}processed=processed||{},sorted=sorted||[],stack=stack||[];var refs,ref,r,me=this,name=variable.name;if(processed[name]!==!0){for(stack.push(name),
"processing"===processed[name]&&this.generateCycleError(stack,variables),processed[name]="processing",refs=variable.references,r=0;r<refs.length;r++)if(ref=refs[r],!processRef(ref)&&this.replacesMap[ref]){var entry=this.replacesMap[ref],ref=Fashion.getJsName(entry.name);processRef(ref)}sorted.push(variable),processed[name]=!0,stack.pop()}}},{key:"getDynamics",value:function(){var variable,name,dynamic,d,n,variables=this.sortAllVariables?this.currentScope.variables:this.variables,variableNames=Object.keys(variables),dynamics=[],sorted=[];for(n=0;n<variableNames.length;n++)name=variableNames[n],variable=variables[name],variable.dynamic&&(variable.elevateDynamics(dynamics),dynamics.push(variable));for(d=0;d<dynamics.length;d++)dynamic=dynamics[d],this.topoSort(dynamic,variables,sorted);return sorted}},{key:"getDynamicsMap",value:function(){var i,variable,dynamicVariables=this.getDynamics(),map={};for(i=0;i<dynamicVariables.length;i++)variable=dynamicVariables[i],map[variable.name]=variable;return map}},{key:"getSortedDynamicAstNodes",value:function(){var i,sortedVariables=this.getDynamics(),sortedAst=[];for(i=0;i<sortedVariables.length;i++)sortedAst.push(sortedVariables[i].getNode());return sortedAst}},{key:"loadPreprocessorCache",value:function(preprocessor){this.functionDeclarations=preprocessor.functionDeclarations,this.mixinDeclarations=preprocessor.mixinDeclarations,this.registeredDeclarations=preprocessor.registeredDeclarations,this.registeredFunctions=preprocessor.registeredFunctions,this.currentScope=preprocessor.currentScope}}],[{key:"loadArgsArray",value:function(args){return!args||"SelectorList"!==args.type&&"List"!==args.type||(args=args.items),Array.isArray(args)||(args=[args]),args}},{key:"getFunctionCallArgs",value:function(func){var arg,a,param,args=this.loadArgsArray(func.args),parameters=[];for(a=0;a<args.length;a++)if(arg=args[a],arg&&(param={name:arg.variable||arg.name,value:arg,position:a,varArgs:arg.varArgs},parameters.push(param),arg.variable))if(arg.token){var scanner=arg.token.scanner,style=scanner&&scanner.style,start=arg.token.startIdx,end=arg.token.idx;param["default"]=style.substring(start,end).trim()}else if("List"==arg.type){var first=arg.items[0],last=arg.items[arg.items.length-1],startTok=first&&first.token,endTok=last&&last.token;if(startTok&&endTok){var style=startTok.scanner.style,start=startTok.startIdx,end=endTok.idx;param["default"]=style.substring(start,end).trim()}}return parameters}}]),Preprocessor}(Visitor);Fashion.apply(Preprocessor.prototype,{functionDeclarations:null,mixinDeclarations:null,registeredDeclarations:null,registeredFunctions:null,runtime:null,currentVariable:null,functions:null,variables:null,errors:0,enableElevationWarning:!0,funcArgsRx:/function\s*?(.*?)\((.*?)\)\s*?\{/,sortAllVariables:!1}),module.exports=Preprocessor},{"./Visitor.js":18,"./export/Base.js":19}],14:[function(require,module,exports){"use strict";var Ready=function(){function Ready(){_classCallCheck(this,Ready),this.blocks=0,this.listeners=[]}return _createClass(Ready,[{key:"block",value:function(){this.blocks++}},{key:"unblock",value:function(){this.blocks&&!--this.blocks&&this.fireReady()}},{key:"fireReady",value:function(){for(var i=0;i<this.listeners.length;i++){var listener=this.listeners[i];listener(),this.listeners[i]=null}this.listeners=Fashion.filter(this.listeners,function(l){return!!l})}},{key:"onReady",value:function(callback){this.blocks?this.listeners.push(callback):callback()}}]),Ready}();module.exports=Ready},{}],15:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),BaseRuntime=(Fashion.Base,require("./export/Runtime.js")),Literal=(require("./export/type/Type.js"),require("./export/type/List.js"),require("./export/type/Bool.js"),require("./export/type/Literal.js")),Null=Literal.Null,Declaration=require("./type/Declaration.js"),Ruleset=require("./type/Ruleset.js"),CSS=require("./CSS.js"),TypeVisitor=require("./type/TypeVisitor.js"),Types=require("./type/Types.js"),SelectorList=require("./type/selectors/SelectorList.js"),ColorFunctions=require("./functions/Color.js"),Gradients=require("./functions/Gradients.js"),HSL=require("./functions/HSL.js"),Introspection=require("./functions/Introspection.js"),ListFunctions=require("./functions/List.js"),Misc=require("./functions/Misc.js"),Numeric=require("./functions/Numeric.js"),Opacity=require("./functions/Opacity.js"),RGB=require("./functions/RGB.js"),Selectors=require("./functions/Selectors.js"),Text=require("./functions/Text.js"),Util=require("./functions/Util.js"),NameRegistrations=require("./processors/NameRegistrations.js"),DataInline=require("./processors/DataInline.js"),CssVariables=require("./processors/CssVariables.js"),Runtime=function(_BaseRuntime){function Runtime(config){_classCallCheck(this,Runtime);var _this11=_possibleConstructorReturn(this,(Runtime.__proto__||Object.getPrototypeOf(Runtime)).call(this,config)),me=_this11;return me.deferredContent=[],ColorFunctions.init(me),Gradients.init(me),HSL.init(me),Introspection.init(me),ListFunctions.init(me),Misc.init(me),Numeric.init(me),Opacity.init(me),RGB.init(me),Selectors.init(me),Text.init(me),Util.init(me),NameRegistrations.init(me),DataInline.init(me),CssVariables.init(me),_this11}return _inherits(Runtime,_BaseRuntime),_createClass(Runtime,[{key:"ruleset",value:function ruleset(selectors,sourceInfo,docs,blockDocs,hasBlock){var ruleset=this.openRuleset(selectors);return ruleset.sourceInfo=sourceInfo,ruleset.docs=docs,ruleset.blockDocs=blockDocs,ruleset.hasBlock=hasBlock,ruleset}},{key:"rulesetDone",value:function(){var current=this.closeRuleset();return this.printRuleset(current),current}},{key:"namespacedRuleset",value:function(ns){var ruleset=this.openRuleset(new SelectorList([]));ruleset.isNamespaced=!0,ruleset.parent.removeChildRuleset(ruleset),ruleset.parent=null,ns=""+ns,this.rulesets.pop(),this.declare(ns,ruleset),this.rulesets.push(ruleset)}},{key:"declare",value:function(property,value,important,sourceInfo,docs){var isNull=!1;value.$isFashionList&&1===value.items.length&&(value=value.items[0]),void 0!==value&&null!==value&&value!==Null||(isNull=!0),isNull&&!important||this.getCurrentRuleset().addDeclaration(new Declaration({property:property,value:value,important:important,sourceInfo:sourceInfo,docs:docs}))}},{key:"extendSelector",value:function(selector){var current=this.getCurrentRuleset();current.extend||(this.extenders.push(current),current.extend=[]),current.extend.push(selector)}},{key:"openRuleset",value:function(selectors){var current=this.getCurrentRuleset(),ruleset=new Ruleset({selectors:selectors,parent:current});return current&&current.addChildRuleset(ruleset),this.rulesets.push(ruleset),ruleset}},{key:"closeRuleset",value:function(){return this.rulesets.pop()}},{key:"getCurrentRuleset",value:function(){var rulesets=this.rulesets;return rulesets[rulesets.length-1]}},{key:"getCurrentRulesets",value:function(){return this.rulesets}},{key:"addDirectiveRuleset",value:function(name,value){this.printRuleset(new Ruleset({isAtDirective:!0,atDirectiveName:name,atDirectiveValue:value}))}},{key:"printRuleset",value:function(ruleset){ruleset.parent||ruleset.isNamespaced||this.css.addRuleset(ruleset)}},{key:"reset",value:function(){_get(Runtime.prototype.__proto__||Object.getPrototypeOf(Runtime.prototype),"reset",this).call(this),this.css=new CSS({context:this.context}),this.css.processors=this.processors.slice(),this.rulesets=[],this.extenders=[]}},{key:"registerProcessor",value:function(proc){this.processors.push(new TypeVisitor(proc))}},{key:"compile",value:function(code){var me=this,theFn=_get(Runtime.prototype.__proto__||Object.getPrototypeOf(Runtime.prototype),"compile",this).call(this,code);return this.fn=function(rt,overrides,dyn){var runtime=rt||me;return theFn(runtime,overrides,dyn),runtime.runDeferred(),runtime.css.extenders=runtime.extenders,runtime.css},this.fn}},{key:"defer",value:function(name,fn){this.deferredContent.push({name:name,fn:fn})}},{key:"runDeferred",value:function(name){for(var d,deferred=this.deferredContent,newDeferred=[];deferred.length;)d=deferred.shift(),name&&d.name!==name?newDeferred.push(d):d.fn();this.deferredContent=newDeferred}}]),Runtime}(BaseRuntime);Fashion.apply(Runtime,{uniqueScopesForGlobalRulesets:!0,uniqueScopesForAllRulesets:!0,allowSetScopedVariables:!0,allowMultipleImports:!0,allowNullDefaults:!0,allowEmptyRulesets:!1,fullExtendWeave:!1,compactSuperSelectors:!1}),Fashion.apply(Runtime.prototype,{extenders:null,mixins:null,rulesets:null,css:null,types:Types,mediaTest:/@media/,keyframesTest:/@.*?keyframes/}),module.exports=Runtime},{"./CSS.js":5,"./export/Base.js":19,"./export/Runtime.js":21,"./export/type/Bool.js":24,"./export/type/List.js":31,"./export/type/Literal.js":32,"./export/type/Type.js":40,"./functions/Color.js":43,"./functions/Gradients.js":44,"./functions/HSL.js":45,"./functions/Introspection.js":46,"./functions/List.js":47,"./functions/Misc.js":48,"./functions/Numeric.js":49,"./functions/Opacity.js":50,"./functions/RGB.js":51,"./functions/Selectors.js":52,"./functions/Text.js":53,"./functions/Util.js":54,"./processors/CssVariables.js":61,"./processors/DataInline.js":62,"./processors/NameRegistrations.js":64,"./type/Declaration.js":65,"./type/Ruleset.js":66,"./type/TypeVisitor.js":68,"./type/Types.js":69,"./type/selectors/SelectorList.js":74}],16:[function(require,module,exports){(function(process){"use strict";var Fashion=require("./export/Base.js"),Base=Fashion.Base,Env=require("./Env.js"),Visitor=require("./Visitor.js"),Runtime=require("./Runtime.js");Fashion.currentFile=void 0;var SassFile=function(_Base5){function SassFile(cfg){_classCallCheck(this,SassFile);var _this12=_possibleConstructorReturn(this,(SassFile.__proto__||Object.getPrototypeOf(SassFile)).call(this,cfg));return _this12.readyListeners=[],_this12.state=0,_this12.imports={},_this12.importedBy={},_this12.isJsExtension()?_this12.loadExtension():_this12.loadSass(),_this12}return _inherits(SassFile,_Base5),_createClass(SassFile,[{key:"getLoadPath",value:function(){var loadPath=this.loadPath;return loadPath||(loadPath=this.loadPath=this.path),loadPath}},{key:"loadExtension",value:function(){var me=this,loadPath=me.getLoadPath();if(me.state<5&&(me.state=5,me.state<9))if(me.state=9,"undefined"!=typeof System)try{me.info("importing "+loadPath),System["import"](loadPath).then(function(extension){extension.init(me.builder.context.runtime),me.state=10,me.content="",me.info("file "+loadPath+" is loaded"),me.checkImports()},function(err){me.error("file "+loadPath+" failed to load"),me.error((err.stack||err)+""),me.checkImports()})}catch(err){me.error("file "+loadPath+" failed to load"),me.error(err),me.error((err.stack||err)+""),me.checkImports()}else try{/\.js$/.test(loadPath)||(loadPath+=".js"),Env.isNode&&0!==loadPath.indexOf("/")&&1!==loadPath.indexOf(":")&&(loadPath=process.cwd()+"/"+loadPath),me.info("requiring "+loadPath),delete require.cache[require.resolve(loadPath)];var extension=require(loadPath);extension.init(me.builder.context.runtime),me.state=10,me.content="",me.info("file "+loadPath+" is loaded"),me.checkImports()}catch(err){me.error("file "+loadPath+" failed to load"),me.error((err.stack||err)+""),me.checkImports()}}},{key:"loadSass",value:function(){var loadPath,me=this;if(me.state<5&&(me.state=5,me.state<10)){if(loadPath=me.getLoadPath(),me.info("loading file "+loadPath),me.isSaveFile)return me.state=10,me.content="",void me.checkImports();Env.loadFile(loadPath,function(content){me.state=10,me.info("file "+loadPath+" is loaded"),me.content=content,me.checkImports()},function(){var idx=loadPath.lastIndexOf("/"),attempt=loadPath;idx>-1&&(attempt=attempt.substring(0,idx+1)+"_"+attempt.substring(idx+1)),loadPath=me.loadPath=attempt,me.info("retrying with "+loadPath),Env.loadFile(loadPath,function(content){me.state=10,me.info("file "+loadPath+" is loaded"),me.content=content,me.checkImports()},function(){Fashion.error("failed to download path : "+loadPath),me.content="",me.checkImports()})})}}},{key:"getAst",value:function(){var parser,me=this,ast=me.ast,content=me.content,loadPath=me.getLoadPath();if(!me.isJsExtension()){if(!ast&&content){parser=me.builder.getParser(),me.debug("parsing file "+loadPath);try{ast=me.ast=parser.parse(content,loadPath)}catch(err){throw Fashion.error("Error parsing file : "+loadPath+" => "),err}}return ast}}},{key:"getSassFile",value:function(basePath,targetPath,origSource,importer){return this.builder.getSassFile(basePath,targetPath,origSource,importer)}},{key:"isJsExtension",value:function(){var loadPath=this.getLoadPath();return loadPath.indexOf(".js")>0}},{key:"getImportSource",value:function(source){var imports=[];return"List"!==source.type&&"SelectorList"!==source.type||!source.separator||0!==source.separator.indexOf(",")?imports.push(source):imports=source.items,imports=Fashion.convert(imports,function(source){return source&&"MultiPartSelector"===source.type&&1===source.items.length&&(source=source.items[0]),source&&"CompoundSelector"===source.type&&1===source.items.length&&(source=source.items[0]),source&&source.value?source.value:source}),imports=Fashion.filter(imports,function(source){if(!source)return!1;if(!source.indexOf)return!1;var idx=source.indexOf(".css");return!(idx>-1&&idx===source.length-4)&&(idx=source.indexOf("http://"),0!==idx&&(idx=source.indexOf("//"),0!==idx))})}},{key:"trimComment",value:function(comment){return 0===comment.indexOf("//#")&&(comment=comment.substring(3)),0===comment.indexOf("//")&&(comment=comment.substring(2)),0===comment.indexOf("/*")&&(comment=comment.substring(2,comment.length-3)),comment.trim()}},{key:"dependsOn",value:function(path){var me=this;if(me.imports[path])return!0;for(var loadPath in me.imports){var dep=me.imports[loadPath];if(dep.dependsOn(path))return!0}return!1}},{key:"checkImports",value:function checkImports(){var me=this,loadPath=me.getLoadPath(),sassFiles=[],missing,i;if(me.state<15){if(me.info("checking Imports for file "+loadPath),me.state=15,me.isJsExtension()){if(Fashion&&Env&&Env.isRhino){var content=me.content+"\n//# sourceURL="+loadPath;eval(content)}}else{me.isUiFile&&(me.mixinCalls=[]);var vis=new Visitor({skipBranching:!0,loadJsExtension:function(source){source=source.replace(/;$/,"").replace(/^'/,"").replace(/'$/,"").replace(/\.js$/,"").replace(/^js:\s*/,""),0!==source.indexOf(".")&&(source="./"+source);var sassFile=me.getSassFile(me.path,source+".js",source,me);sassFile===me&&Fashion.raise("file "+loadPath+" should not import itself"),me.imports[sassFile.getLoadPath()]=sassFile,sassFile.importedBy[loadPath]=me,sassFile.state<20&&sassFiles.push(sassFile)},FunctionCall:function(node){var funcName=node.id||node.value,handlers=this;if("require"===funcName){var sources=me.getImportSource(node.args);Fashion.warn("Use of 'require()' will be deprecated",node),Fashion.warn("Use @import instead"),sources.forEach(function(source){handlers.loadJsExtension(source)}),node.visitTarget=null}},Require:function(node){var source=me.getImportSource(node.source)[0],isGlobal=1==this.nodeStack.length;source.indexOf&&(isGlobal||Fashion.raise('Cannot use require() "'+source+'" from non-file-scope location',node),Fashion.warn("Use of '@require' has been deprecated",node),Fashion.warn("Use @import instead"),delete node.visitTarget,this.loadJsExtension(source))},Import:function(node){delete node.visitTarget,delete node.nodeFiles;var handlers=this,source=me.getImportSource(node.source);source.forEach(function(source){if(/(^js[:])|(\.js$)/.test(source))handlers.loadJsExtension(source);else{var sassFile=me.getSassFile(me.path,source,source);sassFile===me&&Fashion.raise("file "+loadPath+" should not import itself"),sassFile.dependsOn(loadPath)?me.importError=Error("Import cycle detected between "+me.getLoadPath()+" and "+sassFile.getLoadPath()):(me.imports[sassFile.getLoadPath()]=sassFile,sassFile.importedBy[loadPath]=me,sassFile.state<20&&sassFiles.push(sassFile))}})},Include:function(node){me.isUiFile&&me.mixinCalls.push(node)}});vis.visit(me.getAst())}if(16==me.state,missing=sassFiles.length,!missing)return void me.fireReady();for(i=0;i<sassFiles.length;i++)sassFiles[i].onReady(function(){missing--,0===missing?me.fireReady():me.debug("file "+loadPath+" still waiting for "+missing+" other files")})}}},{key:"onReady",value:function(listener){var me=this;me.state>=20?listener(me):(me.readyListeners.push(listener),10==me.state&&me.checkImports())}},{key:"fireReady",value:function(){var me=this;if(me.state<20){me.info("file "+me.getLoadPath()+" is ready"),me.state=20;for(var listener;null!=(listener=me.readyListeners.shift());)listener(me)}}},{key:"getExpandedAst",value:function(stamp){function addSourceInfo(vis){vis.addSourceInfo&&vis.addSourceInfo(this.node)}function createCallStackScope(vis){vis.createCallStackScope&&vis.createCallStackScope()}function popCallStackScope(vis){vis.popCallStackScope&&vis.popCallStackScope()}stamp=stamp||(new Date).getTime();var me=this,ast=me.getAst();if(me.importError){var err=me.importError;throw delete me.importError,err}if(me.imported!=stamp&&(me.imported=stamp,!me.isJsExtension())){me.debug("expanding ast for file "+me.getLoadPath());var vis=new Visitor({skipBranching:!0,Import:function(node){delete node.visitTarget;var source=me.getImportSource(node.source),visitTarget=[];source.forEach(function(source){if(source&&source.indexOf&&!/(^js[:])|(\.js$)/.test(source)&&!node.skipSassImport){var sassFile=me.getSassFile(me.path,source);sassFile.importing=!0;var importAst=sassFile.getExpandedAst(stamp);me.builder.context.enableSymbols&&(visitTarget.push({node:node,doVisit:addSourceInfo}),visitTarget.push({doVisit:createCallStackScope})),visitTarget.push(importAst),me.builder.context.enableSymbols&&visitTarget.push({doVisit:popCallStackScope}),sassFile.importing=!1}}),visitTarget.length&&(node.visitTarget=visitTarget)}});return me.expanding=!0,vis.visit(ast),me.expanding=!1,ast}return Runtime.allowMultipleImports?ast:void 0}},{key:"invalidate",value:function(){var me=this;if(me.state>=10){me.info("invalidating file "+me.getLoadPath()),me.state=0,delete me.ast,delete me.content,delete me.imported;for(var name in me.importedBy)me.importedBy[name].unready();var loadPath=me.getLoadPath();for(name in me.imports)delete me.imports[name].importedBy[loadPath];me.imports={},me.isJsExtension()?me.loadExtension():me.loadSass()}}},{key:"unready",value:function(){this.state=10,delete this.ast;for(var name in this.importedBy)this.importedBy[name].unready()}},{key:"debug",value:function(message){}},{key:"info",value:function(message){}},{key:"error",value:function(message){Fashion.error(message)}},{key:"getCustomUIs",value:function(){var node,mixinName,include,args,arg,argName,argMap,uiMap,me=this,mixinMap={},allUIs={},calls=me.mixinCalls,separator=", ";allUIs[me.jsClassName]=mixinMap;for(var i=0;i<calls.length;i++){node=calls[i],include=node.include,mixinName=include.id||include.value,uiMap=mixinMap[mixinName]||{},args=include.args,args.isFashionListAst&&(args=args.items,separator=args.separator),Array.isArray(args)||(args=[args]),argMap={};for(var a=0;a<args.length;a++){arg=args[a],argName=a;var value=arg.name||arg.value;if(arg.variable&&(argName=arg.variable),!value){for(;arg&&arg.expr;)arg=arg.expr;var converter=function converter(item){if(item=item&&item.expr||item,item.isFashionListAst){var sep=item.separator||separator,items=Fashion.convert(item.items,converter),value=items.join(sep);return items.length>1&&(value="("+value+")"),value}return item.name||item.value};arg.isFashionListAst?(separator=arg.separator||separator,value=converter(arg)):value=arg.name||arg.value}argMap[argName]=value}if(argMap.$ui){var tmp={};tmp[argMap.$ui]=argMap,delete argMap.$ui,argMap=tmp}Fashion.apply(uiMap,argMap),mixinMap[mixinName]=uiMap}return allUIs}}]),SassFile}(Base);Fashion.apply(SassFile.prototype,{$isSassFile:!0,expanding:!1,readyListeners:null,state:null,imports:null,importedBy:null,loadPath:null,path:null,content:null,originalSource:null,ast:null,imported:null,importer:null,builder:null,isSaveFile:null,isUiFile:null,jsClassName:null,mixinCalls:null}),module.exports=SassFile}).call(this,require("_process"))},{"./Env.js":9,"./Runtime.js":15,"./Visitor.js":18,"./export/Base.js":19,_process:3}],17:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),Visitor=require("./Visitor.js"),Preprocessor=require("./Preprocessor.js"),Output=require("./export/Output.js"),Parser=require("./parse/Parser.js"),Scanner=require("./parse/Scanner.js"),Color=require("./export/type/Color.js"),Runtime=require("./Runtime.js"),Nodes=require("./parse/ast/Nodes.js"),List=Nodes.List,SelectorList=Nodes.SelectorList,Constant=Nodes.Constant,FunctionCall=Nodes.FunctionCall,Variable=Nodes.Variable,_VariableAssignment=Nodes.VariableAssignment,StringCache=function(){function StringCache(){_classCallCheck(this,StringCache),this.array=[],this.map={}}return _createClass(StringCache,[{key:"addString",value:function(string){var idx=this.map[string];return void 0===idx&&(idx=this.array.length,this.array.push(string),this.map[string]=idx),idx}},{key:"get",value:function(id){return this.array[id]}}]),StringCache}(),ObjCache=function(){function ObjCache(){_classCallCheck(this,ObjCache),this.array=[]}return _createClass(ObjCache,[{key:"addObj",value:function(obj){var idx=this.array.length;return this.array.push(obj),idx}},{key:"get",value:function(id){return this.array[id]}}]),ObjCache}(),Transpiler=function(_Visitor2){function Transpiler(){return _classCallCheck(this,Transpiler),_possibleConstructorReturn(this,(Transpiler.__proto__||Object.getPrototypeOf(Transpiler)).apply(this,arguments))}return _inherits(Transpiler,_Visitor2),_createClass(Transpiler,[{key:"reset",value:function(){this.output=new Output,this.currentScope={__suffix:"",__isGlobal:!0},this.globalScope=this.currentScope,this.globalVars={},this.errors=0,this.warnings=0,this.stringCache=new StringCache,this.docCache=new ObjCache,this.nodeCache=new ObjCache}},{key:"createScope",value:function(parent){parent=parent||this.currentScope;var scope=Fashion.chain(parent);return scope.__suffix=scope.__suffix+"$",scope}},{key:"getScopeName",value:function(name,scope){return Fashion.getJsName(name)}},{key:"getVariableName",value:function(node){return node.variable||node.name||node.value||node}},{key:"handleInlineExpression",value:function(expr){try{var tree,outwas=this.output,output=new Output,parser=this.inlineParser||(this.inlineParser=new Parser);return this.isSelector?(parser.scanner=new Scanner(expr),tree=parser.parseSequence()):(tree=parser.parse("$foobar: "+expr+";"),tree=tree[0].value),this.output=output,this.handleStatement(tree),this.output=outwas,output.get().trim()}catch(error){throw Fashion.log("failed to evaluate inline expression : "+expr),error}}},{key:"handleInlineExpressions",value:function(text,start,skipEscape){text+="",start=start||0;var outwas,i,ch,ch2,out=[],level=0;for(i=start;i<text.length;i++)switch(ch=text.charAt(i),ch2=i<text.length-1?text.charAt(i+1):void 0,ch){case"\\":outwas||skipEscape?out.push(ch):out.push("\\\\");break;case'"':outwas||skipEscape?out.push(ch):out.push('\\"');break;case"#":"{"===ch2?(level++,level<2?(outwas=out,out=[],i++):out.push(ch)):out.push(ch);break;case"}":level--,level?out.push(ch):(outwas.push('" + __rt_unquote('),outwas.push(this.handleInlineExpression(out.join(""))),outwas.push(') + "'),out=outwas,outwas=void 0);break;default:out.push(ch)}return out.join("")}},{key:"addSourceInfo",value:function(item){this.symbols&&(item=item||this.nodeStack[this.nodeStack.length-1],item&&(item.lineNumber||item.file)&&(this.output.add("__rt_pushSourceInfo(["+item.lineNumber+", '"+(item.file||"source-code")+"'])"),this.output.add(";")))}},{key:"createCallStackScope",value:function(){this.symbols&&this.output.addln("__rt_createCallStackScope();")}},{key:"popCallStackScope",value:function(){this.symbols&&this.output.addln("__rt_popCallStackScope();")}},{key:"handleStatements",value:function(statements){this.symbols&&this.addSourceInfo(),this.visit(statements)}},{key:"handleStatement",value:function(statement){statement&&statement.hasOwnProperty("visitTarget")&&(statement=statement.visitTarget,statement&&Array.isArray(statement)&&this.handleStatements(statement)),statement&&(statement instanceof Array&&(statement=new List(null,statement,",")),this.visit(statement))}},{key:"createDefaultScopeMap",value:function(args,isMixin){args=this.loadArgsArray(args);var arg,a,varName,jsName,name,output=this.output,defaulted=0;for(this.isSignatureDeclaration=!0,this.generateGets=!0,a=0;a<args.length;a++)arg=args[a],arg&&(varName=arg.variable||arg.name,name=varName,jsName=this.getScopeName(varName),this.currentScope[jsName]={name:jsName,param:!0},varName=jsName,arg.varArgs?(output.addln(varName+" = __rt_sliceArgs(arguments, "+(isMixin?a+1:a)+");"),defaulted++):"Variable"!==arg.type||void 0!==arg.variable?(output.addln("var "+varName+" = "+varName+" || "),this.handleStatement(arg),output.add(";"),defaulted++):output.addln("var "+varName+" = "+varName+" || __Null;"),output.addln('__rt_set("'+jsName+'", '+varName+", true);"));return this.generateGets=!1,this.isSignatureDeclaration=!1,defaulted}},{key:"getRegisteredDeclarationsMap",value:function(declaredParameters){for(var param,map={},d=0;d<declaredParameters.length;d++)param=declaredParameters[d],map[param.name]=param;return map}},{key:"createCallArray",value:function(args,defaults,id,convertName,addComma){args=this.loadArgsArray(args),defaults.parameters&&(defaults=defaults.parameters);for(var arg,a,position,me=this,output=me.output,len=args.length>defaults.length?args.length:defaults.length,declaredMap=me.getRegisteredDeclarationsMap(defaults),actual=Array(len),a=0;a<args.length;a++){if(arg=args[a],position=a,arg&&arg.variable){var argName=arg.variable;if(convertName&&(0==argName.indexOf("$")&&(argName=argName.substr(1)),argName=argName.replace(/\-/g,"_")),!declaredMap[argName]){var params=[];for(var pName in declaredMap)params.push(pName);Fashion.warn("function or mixin '"+id+"' had no parameter named "+argName+" : params were : "+params.join(", "));continue}position=declaredMap[argName].position}actual[position]=arg}for(a=0;a<actual.length;a++)arg=actual[a],(addComma||a>0)&&(output.add(","),output.space()),arg?(output.addln(),arg.varArgs?(output.add("__rt_applySpread("),me.handleStatement(arg),output.add(")")):me.handleStatement(arg)):output.addln("__udf");return actual.length}},{key:"escapeString",value:function(str){return str&&str.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}},{key:"Each",value:function(statement){var _this14=this;if(statement.isMap){var me=this,output=me.output,arg=statement.variable,names=statement.variable.items;me.eachCount=me.eachCount||1;var jsNames=Fashion.convert(names,function(name){return me.getScopeName(name)}),jsItrName="__each_itr_"+me.eachCount,jsListName="__each__list";names.forEach(function(name,i){return _this14.currentScope[jsNames[i]]=jsNames[i]}),output.addln("var "+jsListName+" = "),me.handleStatement(statement.list),output.add(";"),output.addln("for(var "+jsItrName+" = 0; "+jsItrName+" < "+jsListName+".items.length - 1; "+jsItrName+"+=2) {"),output.indent(),output.addln('__rt_set("'+jsNames[0]+'", '+jsListName+".items["+jsItrName+"]);"),output.addln('__rt_set("'+jsNames[1]+'", '+jsListName+".items["+jsItrName+" + 1]);"),me.handleStatements(statement.statements),output.unindentln("}")}else{var me=this,output=me.output,arg=statement.variable,name=me.getVariableName(arg),jsName=me.getScopeName(name),jsListName=jsName+"__list",jsItrName=jsName+"__itr";this.currentScope[jsItrName]=jsItrName,this.currentScope[jsListName]=jsListName,this.currentScope[jsName]=jsName,output.addln("var "+jsListName+" = "),me.handleStatement(statement.list),output.add(";"),output.addln("for(var "+jsItrName+" = 0; "+jsItrName+" < "+jsListName+".items.length; "+jsItrName+"++) {"),output.indent(),output.addln('__rt_set("'+jsName+'", '+jsListName+".items["+jsItrName+"]);"),me.handleStatements(statement.statements),output.unindentln("}")}return!1}},{key:"For",value:function(statement){var me=this,output=me.output,arg=statement.variable,name=me.getVariableName(arg),jsName=me.getScopeName(name),jsItrName=jsName+"__itr";return this.currentScope[jsName]=jsName,output.addln("for(var "+jsItrName+" = __rt_unbox("),me.handleStatement(statement.start),output.add("), end = (__rt_unbox("),me.handleStatement(statement.end),output.add(")"),statement.inclusive&&output.add(" + 1"),output.add("); "+jsItrName+" < end; "+jsItrName+"++){"),output.indent(),output.addln("var "+jsName+" = "+jsItrName),output.addln('__rt_set("'+jsName+'", '+jsItrName+", true);"),me.handleStatements(statement.statements),output.unindentln("};"),!1}},{key:"While",value:function(statement){var output=this.output;return output.addln("while(__rt_unbox("),this.handleStatement(statement.condition),output.add(")) {"),output.indent(),this.handleStatements(statement.statements),output.unindentln("};"),!1}},{key:"Function",value:function(statement){var me=this,output=me.output,func=statement.func,jsName=Fashion.getJsName(func.id||func.value);"dynamic"===jsName&&me.error("Cannot define function named 'dynamic'",statement),"require"===jsName&&me.error("Cannot define function named 'require'",statement),me.nestedDocs=!0;var scopeWas=me.currentScope;me.currentScope=me.createScope(),output.addln("function "+jsName+"__fn(");for(var args=me.loadArgsArray(func.args||[]),i=0;i<args.length;i++){var arg=args[i],varName=arg.variable||arg.name;varName=me.getScopeName(varName),i>0&&(output.add(","),output.space()),output.add(varName)}return output.add(") {"),output.indent(),output.addln("__rt_createScope(__rt_functions."+jsName+" && __rt_functions."+jsName+".createdScope);"),this.symbols&&me.createCallStackScope(),this.symbols&&this.addSourceInfo(),me.createDefaultScopeMap(func.args),this.popScope=!0,statement.statements.length&&me.handleStatements(statement.statements),me.currentScope=scopeWas,this.popScope&&(this.symbols&&me.popCallStackScope(),output.addln("__rt_popScope();"),this.popScope=!1),output.unindentln("};"),output.addln("__rt_functions."+jsName+" = "+jsName+"__fn;"),output.addln("__rt_functions."+jsName+".createdScope = __rt_getCurrentScope();"),me.nestedDocs=!1,!1}},{key:"Ruleset",value:function(statement,fnName){fnName=fnName||"__rt_ruleset";var me=this,output=me.output,isGlobal=1===me.nodeStack.length,newScope=!1,docIdx=-1,blockDocIdx=-1,hasBlock=!!statement.statements;if(output.addln(fnName+"("),this.isSelector=statement.selectors,this.handleStatement(statement.selectors),this.isSelector=null,statement.file){var fileIdx=this.stringCache.addString(statement.file);output.add(",__rt_getString("+fileIdx+') + ":'+statement.lineNumber+'"')}else output.add(", null");if(statement.docs&&statement.docs.length?(docIdx=this.docCache.addObj(statement.docs),output.add(",__rt_getDocs("+docIdx+")")):output.add(", null"),statement.blockDocs&&statement.blockDocs.length?(blockDocIdx=this.docCache.addObj(statement.blockDocs),output.add(",__rt_getDocs("+blockDocIdx+")")):output.add(", null"),output.add(", "+hasBlock),output.add(");"),isGlobal&&Runtime.uniqueScopesForGlobalRulesets&&(newScope=!0),Runtime.uniqueScopesForAllRulesets&&(newScope=!0),newScope){var scopeWas=me.currentScope;me.currentScope=me.createScope(),output.addln("__rt_createScope();"),me.handleStatements(statement.statements),output.addln("__rt_popScope();"),me.currentScope=scopeWas}else me.handleStatements(statement.statements);output.addln("__rt_rulesetDone();"),me.nestedDocs=!1}},{key:"Mixin",value:function(statement){var args,arg,varName,scopeWas,i,me=this,output=me.output,name=statement.name,jsName=Fashion.getJsName(name.id||name.value);for(me.nestedDocs=!0,me.processingMixin=!0,scopeWas=me.currentScope,me.currentScope=me.createScope(),output.addln("__rt.mixins."+jsName+"= function("),args=me.loadArgsArray(name.args||[]),output.add("$$content"),i=0;i<args.length;i++)arg=args[i],
varName=arg.variable||arg.name,varName=me.getScopeName(varName),output.add(","),output.space(),output.add(varName);return output.add(") {"),output.indent(),output.addln("__rt_createScope(__rt.mixins."+jsName+" && __rt.mixins."+jsName+".createdScope);"),this.symbols&&me.createCallStackScope(),this.symbols&&this.addSourceInfo(),me.createDefaultScopeMap(name.args,!0),me.handleStatements(statement.statements),me.currentScope=scopeWas,this.symbols&&me.popCallStackScope(),output.addln("__rt_popScope();"),output.unindentln("};"),output.addln("__rt.mixins."+jsName+".createdScope = __rt_getCurrentScope();"),me.nestedDocs=!1,me.processingMixin=!1,!1}},{key:"Content",value:function(statement){return this.processingMixin||this.error("@content may only be used within a mixin declaration"),this.output.addln("$$content && $$content();"),!1}},{key:"Include",value:function(statement){var me=this,output=me.output,include=statement.include,id=include.id||include.value,jsId=Fashion.getJsName(id),args=me.loadArgsArray(include.args||[]);return this.symbols&&(me.addSourceInfo(),output.add(";"),output.addln()),"fashion_defer_content"==jsId?(output.addln("__rt.defer("),args[0]?(output.add("__rt.unbox("),me.handleStatement(args[0]),output.add(")")):output.add("null"),output.add(", "),output.addln("(function(scope) { return function(){"),output.indent(),output.addln("__rt_createScope(scope);"),this.symbols&&me.createCallStackScope(),me.handleStatements(statement.content.statements),this.symbols&&me.popCallStackScope(),output.addln("__rt_popScope();"),output.unindent(),output.addln("}})(__rt_getCurrentScope())"),output.add(");")):"fashion_inject_content"==jsId?(output.addln("__rt.runDeferred("),args[0]&&(output.add("__rt.unbox("),me.handleStatement(args[0]),output.add(")")),output.add(");")):me.mixinDeclarations[jsId]?(output.addln("(__rt.mixins."+jsId+" || "+jsId+"__mix).apply(__rt.mixins, __rt_applySpreadArgs(["),output.indent(),statement.content?(output.addln("(function(scope) { return function(){"),output.indent(),output.addln("__rt_createScope(scope);"),this.symbols&&me.createCallStackScope(),this.symbols&&this.addSourceInfo(),me.handleStatements(statement.content.statements),this.symbols&&me.popCallStackScope(),output.addln("__rt_popScope();"),output.unindent(),output.addln("}})(__rt_getCurrentScope())")):output.add("__udf"),me.createCallArray(args,me.mixinDeclarations[jsId],id,!1,!0),output.unindent(),output.add('], "'+jsId+'"));')):me.error("unknown definition for mixin named "+id+" : "+statement.file+":"+statement.lineNumber),!1}},{key:"Declaration",value:function(statement){var i,nsRuleset,me=this,output=me.output,namespacedRulesets=[],props=[],separator=" ",docIdx=-1,val=statement.value;for("List"===val.type?(separator=val.separator,val=val.items):Array.isArray(val)||(val=[val]),i=0;i<val.length;i++){var prop=val[i];"Ruleset"!==prop.type?props.push(prop):namespacedRulesets.push(prop)}if(props.length){if(this.symbols&&this.addSourceInfo(),output.addln('__rt_declare("'+me.handleInlineExpressions(statement.property)+'", '),"font"===statement.property&&(me.isFontDecl=statement),me.handleStatement(new List(null,props,separator)),output.add(","),output.space(),output.add(!!statement.important+""),statement.file){var fileIdx=this.stringCache.addString(statement.file);output.add(",__rt_getString("+fileIdx+') + ":'+statement.lineNumber+'"')}else output.add(", null");statement.docs&&statement.docs.length?(docIdx=this.docCache.addObj(statement.docs),output.add(",__rt_getDocs("+docIdx+")")):output.add(", null"),output.add(");")}if(namespacedRulesets.length)for(i=0;i<namespacedRulesets.length;i++)nsRuleset=namespacedRulesets[i],nsRuleset.selectors=new SelectorList({items:[new Constant({dataType:"Literal",value:statement.property})],separator:", "}),me.Ruleset(nsRuleset,"__rt_namespacedRuleset"),delete nsRuleset.selectors;return me.isFontDecl=void 0,!1}},{key:"VariableAssignment",value:function(statement){var me=this,output=me.output,name=statement.name,bangGlobal=statement.global?1:0,bangDynamic=statement.dynamic?1:0,bangDefault=statement["default"]?1:0,isGlobalVar=1===me.nodeStack.length?1:0,jsName=me.getScopeName(name),exists=me.currentScope[jsName],createLocal=isGlobalVar||exists&&exists.param?0:1,variable=me.dynamicVariables[jsName],failDynamicAssignment=!1,processed=me.processedVariables,isDynamic=!1;this.preprocessor.replacesMap;if(this.symbols&&this.addSourceInfo(),bangDynamic&&!isGlobalVar&&(failDynamicAssignment=!0),bangDynamic||!variable||isGlobalVar||me.currentScope!==me.globalScope||(failDynamicAssignment=!0),bangGlobal&&!bangDynamic&&!isGlobalVar&&variable&&(failDynamicAssignment=!0),failDynamicAssignment){this.error("Dynamic variable "+name+" can only be assigned at file scope "),Fashion.error("  at ",statement);for(var v=variable;v&&v.elevationCause;)Fashion.error("\t"+v.name+" elevated by "+v.elevationCause.name+" at ",v.elevationCause.getNode()),v=v.elevationCause}if(isGlobalVar&&variable&&processed[jsName])return!1;variable&&(!exists||!exists.param&&bangGlobal)&&(isDynamic=!0),exists?bangGlobal?createLocal=0:!variable&&Runtime.allowSetScopedVariables&&(createLocal=0):bangGlobal&&(createLocal=0),createLocal?me.currentScope[jsName]={name:jsName}:bangGlobal&&(jsName=me.getScopeName(name,me.globalScope)),isGlobalVar&&(me.globalScope[jsName]=jsName);var setArgs=[];if(isDynamic){output.addln('__rt_setDynamic("'+name+'", '),output.add('__rt_getGlobalDefault("'+jsName+'") || ');var idx=this.nodeCache.addObj(statement.value);setArgs.push(idx)}else if(bangGlobal){output.addln('__rt_setGlobal("'+jsName+'", '),bangDefault&&output.add('__rt_getGlobalDefault("'+jsName+'") || ');var idx=this.nodeCache.addObj(statement.value);setArgs.push(idx)}else createLocal?(output.addln('__rt_set("'+jsName+'", '),bangDefault&&output.add('__rt_getLocalDefault("'+jsName+'") || ')):(output.addln('__rt_setScoped("'+jsName+'", '),bangDefault&&output.add('__rt_getLocalDefault("'+jsName+'") || '));if(me.handleStatement(statement.value),setArgs.length&&output.add(", "+setArgs.join(", ")),output.add(");"),variable&&(processed[jsName]=!0),variable&&variable.replaces){var assignment=new _VariableAssignment(null,variable.replaces,new Variable(null,name));assignment.deprecatedAssignment=!0,me.nodeStack.pop(),me.handleStatement(assignment),me.nodeStack.push(statement)}return!1}},{key:"If",value:function(statement){var output=this.output;return output.addln("if(__rt_unbox("),this.handleStatement(statement.condition),output.add(")) {"),output.indent(),this.handleStatements(statement.statements),output.unindentln("}"),!1}},{key:"Else",value:function(statement){var output=this.output;return statement.condition?(output.addln("else if(__rt_unbox("),this.handleStatement(statement.condition),output.add(")) {"),output.indent()):output.indentln("else {"),this.handleStatements(statement.statements),output.unindentln("}"),!1}},{key:"Return",value:function(statement){for(var isFunc=!1,stack=this.nodeStack,i=stack.length-1;i>=0;i--)if("Function"==stack[i].type){isFunc=!0;break}return isFunc?(this.popScope=!1,this.output.addln("var $$$r = "),this.handleStatement(statement.expr),this.output.add(";"),this.symbols&&this.popCallStackScope(),this.output.addln("__rt_popScope();"),this.output.addln("return $$$r;")):Fashion.warn("Ingnored @return => ",statement),!1}},{key:"BinaryExpression",value:function(statement){var me=this,output=me.output,suffix="";"-"!=statement.operator&&"+"!=statement.operator||void 0!==statement.left||(statement.left=new Constant({dataType:"Number",value:0}));var divider=", ",prefix="__rt";switch(statement.operator){case"+":case"-":case"*":case"%":case"**":case"==":case"!=":case">":case"<":case">=":case"<=":divider='.operate("'+statement.operator+'",';break;case"and":output.add("__rt_and("),divider="",prefix="";break;case"or":output.add("__rt_or("),divider="",prefix="";break;case"/":for(var parent,doOperator=!0,isDeclaration=!1,isParenthetical=!1,isFunctionCall=!1,stack=this.nodeStack,p=stack.length-1;p>=0;p--)switch(parent=stack[p],parent.type){case"Declaration":isDeclaration=!0;break;case"ParentheticalExpression":isParenthetical=!0;break;case"FunctionCall":isFunctionCall=!0}if(doOperator=!isDeclaration||!me.isFontDecl||isParenthetical||isFunctionCall,!doOperator)return output.add("new __Literal("),me.handleStatement(statement.left),output.add(' + "/" + '),me.handleStatement(statement.right),output.add(")"),!1;divider='.operate("'+statement.operator+'",';break;default:Fashion.log("Unrecognized binary expression operator: "+statement.operator)}return output.add(prefix),output.add(divider),me.handleStatement(statement.left),output.add(", "),me.handleStatement(statement.right),output.add(")"),output.add(suffix),!1}},{key:"UnaryExpression",value:function(statement){var output=this.output;switch(statement.operator){case"not":output.add("__rt_not("),this.handleStatement(statement.expr),output.add(")");break;default:Fashion.log("Unrecognized unary expression operator "+statement.operator)}return!1}},{key:"Variable",value:function(statement){var name=statement.name,jsName=this.getScopeName(name);if("$__filename"==name)return void this.output.add('new __Text("'+statement.file+'")');if("$__dirname"==name){var fileName=statement.file.replace("\\","/"),dirName=fileName.indexOf("/")>-1?statement.file.substring(0,fileName.lastIndexOf("/")):statement.file;return void this.output.add('new __Text("'+dirName+'")')}return this.skipWarning||jsName in this.currentScope||jsName in this.variables||this.warn("Reference to undeclared variable "+name+" => "+statement.file+":"+statement.lineNumber),this.output.add('__rt_get("'+jsName+'")'),!1}},{key:"Constant",value:function(statement){var regex,me=this,output=me.output,value=statement.value;if(statement.jsonEncoded){var tmp=JSON.parse(value);value=tmp.value,value=me.handleInlineExpressions(JSON.stringify(value),null,!0)}else value=me.handleInlineExpressions(value);switch(statement.dataType){case"Length":case"Time":case"Angle":regex=/([0-9\.\-]+)([\w]+)$/i,value=value.match(regex),output.add("new __Numeric("+value[1]+', "'+value[2]+'")');break;case"Number":var s=value+"";0===s.indexOf(".")&&(s="0"+s),value=s,output.add("new __Numeric("+value+")");break;case"Percentage":var s=value+"";0===s.indexOf(".")&&(s="0"+s),value=s,output.add("new __Numeric("+value.replace("%","").replace(/\\/g,"")+', "%")');break;case"String":output.add('new __Text("'+value+'", "'+me.escapeString(statement.quoteChar)+'")');break;case"Literal":me.booleans.hasOwnProperty(value.toLowerCase())?"true"===value.toLowerCase()?output.add("__True"):output.add("__False"):me.colors.hasOwnProperty(value.toLowerCase())?output.add('__rt_color("'+value+'")'):"null"==value?output.add("__Null"):"none"==value?output.add("__None"):statement.jsonEncoded?output.add("new __Literal("+value+")"):output.add('new __Literal("'+value+'")');break;case"Color":output.add('__ColorRGBA.fromHex("'+value+'")');break;default:output.add('"'+value+'"')}return!1}},{key:"FunctionCall",value:function(statement){var jsId,me=this,output=me.output,args=statement.args,id=statement.id||statement.value,reserved={"if":!0,"else":!0};if(id=reserved[id]?"__"+id:id,jsId=Fashion.getJsName(id),"__if"===jsId){var args=me.loadArgsArray(statement.args),skipWarning=this.skipWarning;output.add("(__rt_test("),me.handleStatement(args[0]),output.add(") ? "),this.skipWarning=!0,me.handleStatement(args[1]),output.add(" : "),me.handleStatement(args[2]),output.add(")"),this.skipWarning=skipWarning}else if(me.functionDeclarations[jsId])output.add("__rt_box((__rt.functions."+jsId+" || "+jsId+"__fn).apply(__rt.functions, __rt_applySpreadArgs(["),output.indent(),me.createCallArray(statement.args,me.functionDeclarations[jsId],id),output.unindent(),output.add("])))");else if(me.registeredDeclarations[jsId])output.add("__rt_box(__rt.registered."+jsId+".apply(__rt.registered, __rt_applySpreadArgs(["),output.indent(),me.createCallArray(statement.args,me.registeredDeclarations[jsId],id,!0),output.unindent(),output.add("])))");else{args=this.loadArgsArray(args),output.add('new __FunctionCall("'),output.add(me.handleInlineExpressions(id)),output.add('", new __List(['),output.indent(),output.addln();for(var a=0;a<args.length;a++){var arg=args[a];me.handleStatement(arg),a<args.length-1&&(output.add(","),output.space())}output.unindentln('], ","))')}return!1}},{key:"Extend",value:function(statement){return this.output.addln("__rt_extendSelector("),this.handleStatement(statement.selector),this.output.add(");"),!1}},{key:"ParentheticalExpression",value:function(statement){return this.isSelector?(this.output.addln("new __ParentheticalExpression("),this.handleStatement(statement.expr),this.output.add(")")):statement.expr?this.handleStatement(statement.expr):this.output.add("new __List([], ', ')"),!1}},{key:"List",value:function(statement){var output=this.output,isMap=!1;if(statement.items.length&&statement.items[0].isKVP&&(isMap=!0),isMap){output.add("new __Map([");for(var i=0;i<statement.items.length;i++){var item=statement.items[i];this.handleStatement(item.variable),output.add(","),output.space(),this.handleStatement(item),i<statement.items.length-1&&(output.add(","),output.space())}output.add("])")}else{output.add("new __List([");for(var i=0;i<statement.items.length;i++){var item=statement.items[i];this.handleStatement(item),i<statement.items.length-1&&(output.add(","),output.space())}output.add('], "'+statement.separator+'")')}return!1}},{key:"Warn",value:function(statement){return this.addSourceInfo(),this.output.addln("__rt_warn(__rt_unbox("),this.handleStatement(statement.expr),this.output.add("));"),!1}},{key:"Error",value:function(statement){return this.addSourceInfo(),this.output.addln("__rt_error(__rt_unbox("),this.handleStatement(statement.expr),this.output.add("));"),!1}},{key:"Debugger",value:function(statement){return this.output.addln("debugger;"),!1}},{key:"Import",value:function(statement){var _this15=this,me=this,output=me.output,source=statement.source;return source="List"!==source.type&&"SelectorList"!==source.type||!source.separator||0!==source.separator.indexOf(",")?[source]:source.items,this.isSelector=statement.source,source.forEach(function(source){source&&!/(^js[:])|(\.js$)/.test(source.value)&&(output.addln('__rt_addDirectiveRuleset("@import", '),"MultiPartSelector"===source.type&&1===source.items.length&&(source=source.items[0]),source&&"CompoundSelector"===source.type&&1===source.items.length&&(source=source.items[0]),source.type&&"String"!==source.dataType&&"Literal"!==source.dataType?_this15.handleStatement(source):(source.type||(source=new Constant({value:source,dataType:"String",quoteChar:'"'})),0!==source.value.indexOf("http://")&&0!==source.value.indexOf("//")&&(source=new FunctionCall(null,"url",[new FunctionCall(null,"unquote",[source])])),_this15.handleStatement(source)),output.add(");"))}),this.isSelector=null,!1}},{key:"Require",value:function(statement){return!1}},{key:"Assignment",value:function(statement){return this.output.addln('new __Literal(["'),this.output.add(this.handleInlineExpressions(statement.id)),this.output.add(statement.operator+'", '),this.handleStatement(statement.expr),this.output.add('].join(""))'),!1}},{key:"Debug",value:function(statement){this.output.addln("__rt_debug(__rt_unbox("),this.handleStatement(statement.expr),this.output.add("));")}},{key:"Charset",value:function(statement){return!1}},{key:"SelectorPart",value:function(statement){var output=this.output;return output.add("new __SelectorPart("),this.handleStatement(statement.value),output.add(', "'+statement.selectorType+'")'),!1}},{key:"CompoundSelector",value:function(statement){var output=this.output;output.add("new __CompoundSelector([");for(var i=0;i<statement.items.length;i++){var item=statement.items[i];this.handleStatement(item),i<statement.items.length-1&&(output.add(","),output.space())}return output.add("], true)"),!1}},{key:"MultiPartSelector",value:function(statement){var output=this.output;output.add("new __MultiPartSelector([");for(var i=0;i<statement.items.length;i++){var item=statement.items[i];this.handleStatement(item),i<statement.items.length-1&&(output.add(","),output.space())}return output.add("])"),!1}},{key:"SelectorList",value:function(statement){var output=this.output;output.add("new __SelectorList([");for(var i=0;i<statement.items.length;i++){var item=statement.items[i];this.handleStatement(item),i<statement.items.length-1&&(output.add(","),output.space())}return output.add("])"),!1}},{key:"SelectorProperty",value:function(statement){var output=this.output;return output.add("new __SelectorProperty("),this.handleStatement(statement.property),output.add(", "),this.handleStatement(statement.value),output.add(")"),!1}},{key:"Default",value:function(statement){this.warn("Unrecognized statement type: "+statement.type+" , "+JSON.stringify(statement,null,4))}},{key:"error",value:function(message,data){Fashion.error(message,data),this.errors++}},{key:"warn",value:function(message,data){Fashion.warn(message,data),this.warnings++}},{key:"transpile",value:function(ast,disableGetter){var sortedAst,me=this,preprocessor=this.preprocessor;return me.reset(),preprocessor||(preprocessor=new Preprocessor,preprocessor.preprocess(ast)),this.preprocessor=preprocessor,me.functionDeclarations=preprocessor.functionDeclarations,me.mixinDeclarations=preprocessor.mixinDeclarations,me.registeredDeclarations=preprocessor.registeredDeclarations,me.variables=preprocessor.getVariables(),me.dynamicVariables=preprocessor.getDynamicsMap(),me.processedVariables={},sortedAst=preprocessor.getSortedDynamicAstNodes(),Array.isArray(ast)?sortedAst.push.apply(sortedAst,ast):sortedAst.push(ast),me.nestedDocs=!1,me.handleStatements(sortedAst),me.warnings&&Fashion.warn("Sass compilation encountered "+me.warnings+" warning(s)"),me.errors&&Fashion.raise("Sass compilation encountered "+me.errors+" error(s)"),me.output.get().trim()}}]),Transpiler}(Visitor);Fashion.apply(Transpiler.prototype,{errors:0,warnings:0,preprocessor:void 0,output:void 0,currentScope:void 0,globalScope:void 0,globalVars:void 0,isSignatureDeclaration:void 0,nestedDocs:void 0,processingMixin:void 0,functionDeclarations:void 0,mixinDeclarations:void 0,registeredDeclarations:void 0,isFontDecl:void 0,isSelector:void 0,variables:void 0,dynamicVariables:void 0,stringCache:void 0,docCache:void 0,nodeCache:void 0,eachCount:void 0,popScope:void 0,generateGets:void 0,processedVariables:void 0,skipWarning:void 0,loadArgsArray:Preprocessor.loadArgsArray,colors:Color.map,booleans:{"true":!0,"false":!0},nativeCssMethods:{url:!0,translate3d:!0,rotate:!0,scale:!0,"-webkit-gradient":!0,from:!0,skew:!0,"color-stop":!0,rect:!0,calc:!0}}),module.exports=Transpiler},{"./Preprocessor.js":13,"./Runtime.js":15,"./Visitor.js":18,"./export/Base.js":19,"./export/Output.js":20,"./export/type/Color.js":25,"./parse/Parser.js":55,"./parse/Scanner.js":56,"./parse/ast/Nodes.js":60}],18:[function(require,module,exports){"use strict";var Fashion=require("./export/Base.js"),Base=Fashion.Base,Visitor=function(_Base6){function Visitor(config){_classCallCheck(this,Visitor);var _this16=_possibleConstructorReturn(this,(Visitor.__proto__||Object.getPrototypeOf(Visitor)).call(this,config));return _this16.nodeStack=[],_this16}return _inherits(Visitor,_Base6),_createClass(Visitor,[{key:"visitComments",value:function(docs){for(var d=0;d<docs.length;d++)this.Comment(docs[d])}},{key:"visitItem",value:function(obj){obj.docs&&obj.docs.length&&this.visitComments(obj.docs),obj.doVisit(this)}},{key:"visit",value:function(obj){for(;obj&&void 0!==obj.visitTarget;)obj=obj.visitTarget;if(obj){if(Array.isArray(obj)){for(var i=0;i<obj.length;i++)this.visit(obj[i]);return}this.nodeStack.push(obj),this.visitItem(obj),this.nodeStack.pop()}}},{key:"Comment",value:function(comment){}},{key:"Each",value:function(obj){obj.descend(this)}},{key:"For",value:function(obj){obj.descend(this)}},{key:"While",value:function(obj){obj.descend(this)}},{key:"Charset",value:function(obj){obj.descend(this)}},{key:"Function",value:function(obj){obj.descend(this)}},{key:"Ruleset",value:function(obj){obj.descend(this)}},{key:"Mixin",value:function(obj){obj.descend(this)}},{key:"Block",value:function(obj){obj.descend(this)}},{key:"Include",value:function(obj){obj.descend(this)}},{key:"Declaration",value:function(obj){obj.descend(this)}},{key:"VariableAssignment",value:function(obj){obj.descend(this)}},{key:"Assignment",value:function(obj){obj.descend(this)}},{key:"If",value:function(obj){obj.descend(this)}},{key:"Else",value:function(obj){obj.descend(this)}},{key:"Return",value:function(obj){obj.descend(this)}},{key:"ParentheticalExpression",value:function(obj){obj.descend(this)}},{key:"SelectorPart",value:function(obj){obj.descend(this)}},{key:"SelectorProperty",value:function(obj){obj.descend(this)}},{key:"CompoundSelector",value:function(obj){obj.descend(this)}},{key:"MultiPartSelector",value:function(obj){obj.descend(this)}},{key:"SelectorList",value:function(obj){obj.descend(this)}},{key:"BinaryExpression",value:function(obj){obj.descend(this)}},{key:"UnaryExpression",value:function(obj){obj.descend(this)}},{key:"Variable",value:function(obj){obj.descend(this)}},{key:"Constant",value:function(obj){obj.descend(this)}},{key:"FunctionCall",value:function(obj){obj.descend(this)}},{key:"Extend",value:function(obj){obj.descend(this)}},{key:"List",value:function(obj){obj.descend(this)}},{key:"Warn",value:function(obj){obj.descend(this)}},{key:"Error",value:function(obj){obj.descend(this)}},{key:"Import",value:function(obj){obj.descend(this)}},{key:"Require",value:function(obj){obj.descend(this)}},{key:"Content",value:function(obj){obj.descend(this)}},{key:"Debugger",value:function(obj){obj.descend(this)}},{key:"Debug",value:function(obj){obj.descend(this)}}]),Visitor}(Base);Fashion.apply(Visitor.prototype,{nodeStack:null,skipBranching:!1}),module.exports=Visitor},{"./export/Base.js":19}],19:[function(require,module,exports){"use strict";function _chainFunc(){}function apply(target,source){if(target=target||{},source)for(var name in source)target[name]=source[name];return target}function merge(destination,object){destination=destination||{};var key,value,sourceKey;if(object)for(key in object)value=object[key],value&&value.constructor===Object?(sourceKey=destination[key],sourceKey&&sourceKey.constructor===Object?merge(sourceKey,value):destination[key]=value):destination[key]=value;return destination}function createMessage(message,source){return source&&source.isFashionScanner?message+=": "+source.currentFile+":"+source.lineNumber:source&&(message+=": "+source.file+":"+source.lineNumber),message}function isFunction(obj){return obj&&"function"==typeof obj}function trace(message,source){debugging.trace&&console.log(createMessage("[DBG] "+message,source))}function debug(message,source){console.log(createMessage("[DBG] "+message,source))}function log(message,source){console.log(createMessage("[LOG] "+message,source))}function info(message,source){console.log(createMessage("[INF] "+message,source))}function warn(message,source){console.log(createMessage("[WRN] "+message,source))}function error(message,source){console.log(createMessage("[ERR] "+message,source))}function raise(message,extra){Fashion.inspect,"string"!=typeof message&&(extra=message,message=extra.message,delete extra.message);var error=Error(message);throw error.$isFashionError=!0,apply(error,extra)}function raiseAt(message,source,stack){var extra;source&&(message=createMessage(message,source),extra=source.isFashionScanner?{file:source.currentFile,lineNumber:source.lineNumber}:{node:source,lineNumber:source.lineNumber,file:source.file}),stack&&(extra||(extra={}),extra.fashionStack=stack),raise(message,extra)}function filter(array,func){for(var result=[],i=0;i<array.length;i++){var item=array[i];func(item,i)&&result.push(item)}return result}function convert(array,func){for(var converted=[],i=0;i<array.length;i++)converted.push(func(array[i]));return converted}function _first(array){return array.length&&array[0]}function _last(array){return array.length&&array[array.length-1]}function _tail(array){return array.length>2?array.slice(1):[]}function getAllKeys(obj,stop){for(var i,key,n,names,keys=[],map={};obj&&obj!==stop;obj=Object.getPrototypeOf(obj))for(names=Object.getOwnPropertyNames(obj),i=0,n=names.length;i<n;++i)key=names[i],map[key]||(map[key]=!0,keys.push(key));return keys}function mixin(target,bases){Array.isArray(bases)||(bases=Array.prototype.slice.call(arguments,1));for(var proto=target.prototype,b=0;b<bases.length;b++){var base=bases[b],baseProto=base.prototype;getAllKeys(baseProto,Base.prototype).forEach(function(name){name in baseProto&&(name in proto||(proto[name]=baseProto[name]))})}}function flatten(array,level,output){output=output||[],level=void 0===level?1e3:level;for(var i=0;i<array.length;i++){var item=array[i];Array.isArray(item)&&level?flatten(item,level-1,output):output.push(item)}return output}var NameConverter=require("./../NameConverter.js"),debugging={trace:!1},Base=function Base(config){_classCallCheck(this,Base),config&&merge(this,config)},BaseSet=function(){function BaseSet(){_classCallCheck(this,BaseSet)}return _createClass(BaseSet,[{key:"first",value:function(){return _first(this.items)}},{key:"last",value:function(){return _last(this.items)}},{key:"tail",value:function(){return _tail(this.items)}}]),BaseSet}();BaseSet.prototype.items=null;var chain=Object.create||function(Parent){return _chainFunc.prototype=Parent,new _chainFunc};module.exports={EmptyArray:[],getJsName:NameConverter.getJsName,chain:chain,Base:Base,BaseSet:BaseSet,apply:apply,merge:merge,createMessage:createMessage,isFunction:isFunction,debugging:debugging,trace:trace,debug:debug,log:log,info:info,warn:warn,error:error,raise:raise,raiseAt:raiseAt,filter:filter,convert:convert,first:_first,last:_last,tail:_tail,mixin:mixin,flatten:flatten}},{"./../NameConverter.js":11}],20:[function(require,module,exports){"use strict";var Fashion=require("./Base.js"),Base=Fashion.Base,Output=function(_Base7){function Output(){_classCallCheck(this,Output);var _this17=_possibleConstructorReturn(this,(Output.__proto__||Object.getPrototypeOf(Output)).call(this));return _this17.output="",_this17}return _inherits(Output,_Base7),_createClass(Output,[{key:"space",value:function(){this.add(" ")}},{key:"add",value:function(text){this.output+=text}},{key:"addComment",value:function(text){this.output+=text}},{key:"indent",value:function(){this.indentation+=this.indentstr}},{key:"unindent",value:function(){this.indentation=this.indentation.substr(this.indentstr.length)}},{key:"addln",value:function(ln){this.output+="\n"+this.indentation+(ln||"")}},{key:"addCommentLn",value:function(ln){ln&&0===ln.indexOf("//")||this.addln(ln)}},{key:"get",value:function(){return this.output}},{key:"indentln",value:function(ln){this.addln(ln),this.indent()}},{key:"unindentln",value:function(ln){this.unindent(),this.addln(ln)}},{key:"reset",value:function(){this.indentation="",this.output=""}}]),Output}(Base);Fashion.apply(Output.prototype,{indentation:"",output:"",isCompressed:!1,indentstr:"    ",splitThreshold:1e6,selectorCount:0}),module.exports=Output},{"./Base.js":19}],21:[function(require,module,exports){"use strict";var Fashion=require("./Base.js"),Base=Fashion.Base,Type=require("./type/Type.js"),List=require("./type/List.js"),Bool=require("./type/Bool.js"),Color=require("./type/Color.js"),ColorRGBA=require("./type/ColorRGBA.js"),Text=require("./type/Text.js"),Literal=require("./type/Literal.js"),Statics=require("./type/Statics.js"),TypeVisitor=require("./type/TypeVisitor.js"),Types=require("./type/Types.js"),Scope=function(){function Scope(prev){_classCallCheck(this,Scope),this.prev=prev,this.map={},this.sourceInfo=null}return _createClass(Scope,[{key:"get",value:function(name){for(var value,map=this.map,prev=this;map;){if(value=map[name])return value;prev=prev.prev,map=prev&&prev.map}return value}},{key:"has",value:function(name){for(var map=this.map,prev=this;map;){if(name in map)return!0;prev=prev.prev,map=prev&&prev.map}return!1}},{key:"put",value:function(name,value){return this.map[name]=value,value}},{key:"addEntries",value:function(names){this.prev&&this.prev.addEntries(names);for(var name in this.map)names[name]=this.map[name]}},{key:"getEntries",value:function(entries){return entries=entries||{},this.addEntries(entries),entries}},{key:"getSourceInfo",value:function(){return this.sourceInfo}},{key:"getCallStack",value:function(stack){return stack=stack||[],this.sourceInfo&&stack.push(this.sourceInfo),this.prev&&this.prev.getCallStack(stack),stack}}]),Scope}();Fashion.apply(Scope.prototype,{$isScope:!0,map:void 0,prev:void 0,resetScope:void 0});var Runtime=function(_Base8){function Runtime(config){_classCallCheck(this,Runtime);var _this18=_possibleConstructorReturn(this,(Runtime.__proto__||Object.getPrototypeOf(Runtime)).call(this,config)),me=_this18;return me.mixins={},me.functions={},me.processors=[],me.registered={runtime:me,box:Statics.boxType,unbox:Statics.unboxType,isArray:function(array){return Array.isArray(array)},getRuntime:function(){return this.runtime},handleArgs:function(args,keys){for(var key,scope={},index=0,a=0;a<args.length;a++){var arg=args[a];if(void 0!==arg)if(arg===!0||arg===!1)scope[keys[index]]=arg,index++;else if(void 0===arg.type)for(key in arg)scope[key.replace(/^\$/,"")]=arg[key];else key=keys[index],key instanceof Array?(key=key[0],scope[key]=scope[key]||new List,scope[key].add(arg)):(scope[key]=arg,index++)}return scope},sliceArgs:function(args,start,end){return this.getRuntime().sliceArgs(args,start,end).items},tailArgs:function(start,args){var tail=Array.prototype.slice.call(args,start);return 1==tail.length&&this.isArray(tail)&&(tail=tail[0]),tail}},_this18}return _inherits(Runtime,_Base8),_createClass(Runtime,[{key:"bool",value:function(value){return new Bool(value)}},{key:"color",value:function color(name){var rgb=Color.map[name],color=new ColorRGBA(rgb[0],rgb[1],rgb[2],rgb[3]);return color.stringified=name,color}},{key:"quote",value:function(value){return"string"===value.type?value:new Text(""+value)}},{key:"unquote",value:function(value){return value.$isFashionType?value.unquote():new Literal(""+value)}},{key:"not",value:function(expression){return this.box(0==this.unbox(expression))}},{key:"operate",value:function(operation,left,right){return(null!=left&&!left.$isFashionNull||"=="==operation||"!="==operation)&&(null!=right&&!right.$isFashionNull||"=="==operation||"!="==operation)?left.operate(operation,right):Literal.Null}},{key:"reset",value:function(){this._currentScope=null,this._currentCallStackScope=this.createCallStackScope(),this._globalScope=this.createScope(),this._dynamics={}}},{key:"run",value:function(code,metadata){return this.load(code),this.compile(code),this.execute(metadata)}},{key:"createTypesBlock",value:function(types){types=types||this.types;for(var name,keys=Object.getOwnPropertyNames(types),buff=[],i=0;i<keys.length;i++)name=keys[i],buff.push(name+" = Types."+name),buff.push("__"+name+" = "+name);return 0===buff.length?"":"var "+buff.join(",\n    ")+";\n"}},{key:"createMethodBlock",value:function(proto){proto=proto||this.constructor.prototype;for(var keys,name,buff=[];proto;){keys=Object.getOwnPropertyNames(proto);for(var i=0;i<keys.length;i++)name=keys[i],"function"==typeof proto[name]&&buff.push("__rt_"+name+" = __rt."+name+".bind(__rt)");proto=Object.getPrototypeOf(proto)}return 0===buff.length?"":"var "+buff.join(",\n    ")+";\n"}},{key:"createPropertyBlock",value:function(){for(var name,keys=Object.getOwnPropertyNames(this),buff=[],i=0;i<keys.length;i++)name=keys[i],buff.push("__rt_"+name+" = __rt."+name);return 0===buff.length?"":"var "+buff.join(",\n    ")+";\n"}},{key:"createPrefixedFunctionBody",value:function(code){return code=this.createTypesBlock()+this.createMethodBlock()+this.createPropertyBlock()+code}},{key:"createWrappedFn",value:function(code){
return Function("Types","__rt","__gs","__udf","__dyn",this.createPrefixedFunctionBody(code))}},{key:"callWrappedFn",value:function(fn,dynamics){return fn(Fashion,this,this._globalScope,void 0,dynamics||{})}},{key:"compile",value:function(code){var theFn,me=this;return this.code=code,theFn=this.createWrappedFn(code),this.fn=function(rt,overrides,dyn){var runtime=rt||me,dynamics=dyn||{};runtime.reset(),overrides&&(overrides.$isScope?runtime._globalScope=overrides:runtime._globalScope.map=overrides),dyn&&(runtime._dynamics=dyn),runtime._currentScope=runtime._globalScope,runtime._scopeStack=[runtime._currentScope];try{theFn(me.types,runtime,runtime._globalScope,void 0,dynamics)}catch(err){Fashion.raiseAt(err.message||err,null,runtime.getCallStack())}return runtime._globalScope},this.fn}},{key:"execute",value:function(metadata){return this.fn(this,metadata)}},{key:"load",value:function(code){return this.code=code,this}},{key:"registerProcessor",value:function(proc){this.processors.push(new TypeVisitor(proc))}},{key:"register",value:function(methods){methods.dynamic&&(Fashion.error('Cannot register javascript function named "dynamic"'),delete methods.dynamic),methods.require&&(Fashion.error('Cannot register javascript function named "require"'),delete methods.require),Fashion.apply(this.registered,methods)}},{key:"isRegistered",value:function(name){return name=this.reserved[name]?"__"+name:name,!!this.registered[name]}},{key:"getGlobalScope",value:function(){return this._globalScope}},{key:"getCurrentScope",value:function(){return this._currentScope}},{key:"getRegisteredFunctions",value:function(){return this.registered}},{key:"getFunctions",value:function(){return this.functions}},{key:"getMixins",value:function(){return this.mixins}},{key:"createScope",value:function(scope){var currScope=scope||this._currentScope,newScope=new Scope(currScope);return this.pushScope(newScope)}},{key:"pushScope",value:function(scope){return scope.resetScope=this._currentScope,this._currentScope=scope,scope}},{key:"popScope",value:function(){return this._currentScope=this._currentScope.resetScope,this._currentScope}},{key:"createCallStackScope",value:function(scope){var currScope=scope||this._currentCallStackScope,newScope=new Scope(currScope);return this.pushCallStackScope(newScope)}},{key:"pushCallStackScope",value:function(scope){return scope.resetScope=this._currentCallStackScope,this._currentCallStackScope=scope,scope}},{key:"popCallStackScope",value:function(){return this._currentCallStackScope=this._currentCallStackScope.resetScope,this._currentCallStackScope}},{key:"getCallStack",value:function(){return this._currentCallStackScope?this._currentCallStackScope.getCallStack():null}},{key:"pushSourceInfo",value:function(info){return this._currentCallStackScope&&(this._currentCallStackScope.sourceInfo=info),!0}},{key:"getSourceInfo",value:function(){var stack=this._currentCallStackScope,info=stack&&stack.sourceInfo;return info&&info.length?{lineNumber:info[0],file:info[1]}:null}},{key:"get",value:function(name){var scope=this.getScopeForName(name),res=scope.map[name];return void 0===res&&(name in scope.map||Fashion.raiseAt("Reference to undeclared variable : "+name,null,this.getCallStack())),this.box(res)}},{key:"getScopeForName",value:function(jsName){for(var scope=this._currentScope;scope;){if(jsName in scope.map)return scope;scope=scope.prev}return this._currentScope}},{key:"getDefault",value:function(val){if(null!=val&&void 0!==val){if(!val.$isFashionNull)return this.box(val);if(this.constructor.allowNullDefaults)return val}}},{key:"getGlobalDefault",value:function(jsName){var obj=this._globalScope.get(jsName);return this.getDefault(obj)}},{key:"getLocalDefault",value:function(jsName){var obj=this._currentScope.get(jsName);return this.getDefault(obj)}},{key:"setGlobal",value:function(jsName,value,astNodeId){var currScope=this._globalScope;return value&&value.$isFashionLiteral||(value=this.box(value)),value.ast=value.ast||this.getAstNode(astNodeId),currScope.map[jsName]=value,value}},{key:"setDynamic",value:function(name,value,astNodeId){var newValue,jsName=Fashion.getJsName(name),currScope=this._globalScope;return value&&value.$isFashionLiteral||(value=this.box(value)),value.ast=value.ast||this.getAstNode(astNodeId),value.$referenceName||value.$constant?(newValue=value.clone(),newValue.$previousReference=value,value=newValue,value.ast=this.getAstNode(astNodeId)):value.$referenceName=name,currScope.map[jsName]=value,value}},{key:"setScoped",value:function(jsName,value){var currScope=this.getScopeForName(jsName);return value&&value.$isFashionLiteral||(value=this.box(value)),currScope.map[jsName]=value,value}},{key:"set",value:function(jsName,value){var currScope=this._currentScope;return value&&value.$isFashionLiteral||(value=this.box(value)),currScope.map[jsName]=value,value}},{key:"getDocs",value:function(id){if(this.docCache)return this.docCache.get(id)}},{key:"getString",value:function(id){if(this.stringCache)return this.stringCache.get(id)}},{key:"getAstNode",value:function(id){if(this.nodeCache)return this.nodeCache.get(id)}},{key:"applySpread",value:function(arg){return arg.spread=!0,arg}},{key:"sliceArgs",value:function(args,start,end){start=start||0,end=end||args.length;var spread,a,arg,filtered=[],newArgs=[],separator=", ";for(a=start;a<end;a++)arg=args[a],arg?arg.spread&&arg.$isFashionList?(spread&&filtered.push(spread),spread=arg,separator=spread.separator||separator):filtered.push(arg):spread||filtered.push(arg);for(a=0;a<filtered.length;a++)arg=filtered[a],separator=arg&&arg.splatSeparator||separator,newArgs.push(filtered[a]);return spread&&newArgs.push.apply(newArgs,spread.items),new List(newArgs,separator)}},{key:"applySpreadArgs",value:function(args,name){var arg,a,item,i,items,key,map,defaults,proc,param,paramName,newArgs=[],hadSpread=!1,offset=0;for(proc=this.context&&this.context.preprocessor,proc&&(defaults=proc.mixinDeclarations[name],defaults?offset=1:defaults=proc.functionDeclarations[name],defaults=defaults&&defaults.parameters),a=0;a<args.length;a++){if(arg=args[a],arg&&arg.spread&&arg.$isFashionMap&&defaults){items=arg.items,map={};for(key in arg.map)map["$"+Fashion.getJsName(key)]=arg.map[key];for(var p=0;p<defaults.length;p++)param=defaults[p],paramName=Fashion.getJsName(param.name),paramName in map?(newArgs.push(items[map[paramName]]),delete map[paramName]):param.varArgs||newArgs.push(void 0);for(key in map)item=items[map[key]],newArgs.push(item);hadSpread=!0}else if(arg&&arg.spread&&arg.$isFashionList){for(items=arg.getItems(),i=0;i<items.length;i++)item=items[i],item&&(item.splatSeparator=arg.separator),newArgs.push(item);hadSpread=!0}else!arg&&hadSpread||newArgs.push(arg);arg&&(arg.spread=void 0)}var misisngParams=this.context&&this.context.missingParameters;if(misisngParams&&"error"==misisngParams&&defaults)for(var d=0;d<defaults.length;d++)defaults[d].hasOwnProperty("default")||defaults[d].varArgs||void 0===newArgs[d+offset]&&Fashion.raiseAt("No value supplied for argument : "+defaults[d].name,null,this.getCallStack());return newArgs}},{key:"warn",value:function(arg){Fashion.warn(arg,this.getSourceInfo())}},{key:"error",value:function(arg){Fashion.raiseAt(arg,null,this.getCallStack())}},{key:"debug",value:function(){Fashion.debug.apply(Fashion,arguments)}},{key:"setCaches",value:function(transpiler){this.docCache=transpiler.docCache,this.stringCache=transpiler.stringCache,this.nodeCache=transpiler.nodeCache}},{key:"copyRuntimeState",value:function(runtime){this._dynamics=runtime._dynamics,this.registered=runtime.registered,this.functions=runtime.functions,this.mixins=runtime.mixins}},{key:"test",value:function(val){return val=this.unbox(val),null!=val&&val!==!1}},{key:"and",value:function(a,b){return this.test(a)?b:a}},{key:"or",value:function(a,b){return this.test(a)?a:b}}]),Runtime}(Base);Fashion.apply(Runtime.prototype,{box:Type.box,unbox:Type.unbox,Scope:Scope,isFashionRuntime:!0,functions:null,code:null,fn:null,stringCache:null,docCache:null,types:Types,_globalScope:null,_currentScope:null,_dynamics:null,context:null,reserved:{"if":!0,"else":!0}}),module.exports=Runtime},{"./Base.js":19,"./type/Bool.js":24,"./type/Color.js":25,"./type/ColorRGBA.js":27,"./type/List.js":31,"./type/Literal.js":32,"./type/Statics.js":38,"./type/Text.js":39,"./type/Type.js":40,"./type/TypeVisitor.js":41,"./type/Types.js":42}],22:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Runtime=require("../Runtime.js"),ValueParser=require("../parse/ValueParser.js"),SourceBuilder=require("../type/SourceBuilder.js"),CssVariableManager=function(){function CssVariableManager(){_classCallCheck(this,CssVariableManager),this.reset()}return _createClass(CssVariableManager,[{key:"reset",value:function(){this.initFns=[],this.calcFns=[],this.variableMap={},this.runtime=null}},{key:"createRuntime",value:function(){return new Runtime}},{key:"getRuntime",value:function(){var me=this,rt=me.runtime;if(!rt){rt=me.createRuntime();for(var i=0;i<me.initFns.length;i++)me.initFns[i](rt);me.runtime=rt}return rt}},{key:"calculate",value:function(vars){var key,scope,sb,name,names,jsName,value,me=this,rt=me.getRuntime(),parser=new ValueParser,map=me.variableMap;scope=new rt.Scope;for(name in vars)key=Fashion.getJsName(name.replace(me.nameRe,"")),0!==key.indexOf("$")&&(key="$"+key),scope.put(key,parser.parse(vars[name]));rt._globalScope=scope,rt._currentScope=scope;for(var i=0;i<me.calcFns.length;i++)me.calcFns[i](rt);sb=new SourceBuilder,vars={};for(name in map){names=map[name];for(var i=0;i<names.length;i++)key=names[i],jsName="$"+Fashion.getJsName(key),value=scope.get(jsName),value&&(value.$isWrapper&&(value=value.value),vars[key]=sb.toSource(value))}return vars}},{key:"applyVariables",value:function(vars){var me=this,map=me.variableMap;for(var selector in map){var variables=map[selector],els=document.querySelectorAll(selector);if(els)for(var i=0;i<els.length;i++)for(var j=0;j<variables.length;j++){var varName=variables[j];els[i].style.setProperty("--"+varName,vars[varName])}}}},{key:"setVariables",value:function(vars){this.applyVariables(this.calculate(vars))}},{key:"register",value:function(init,calc,map){if(init&&this.initFns.push(init),calc&&this.calcFns.push(calc),map){var vars=this.variableMap;for(var name in map){var curr=vars[name];curr?curr.push.apply(curr,map[name]):vars[name]=map[name]}}}},{key:"buildName",value:function(name){return name.replace(/^--/,"").replace(/^\$/,"")}},{key:"buildJsName",value:function(name){return Fashion.getJsName(name)}},{key:"buildNames",value:function(names){var name,out={};for(name in names)out[name]=this.buildName(names[name]);return out}},{key:"buildJsNames",value:function(names){var name,out={};for(name in names)out[name]=this.buildJsName(names[name]);return out}},{key:"getVariables",value:function(){var me=this,map=me.variableMap,out={};for(var selector in map){var variables=map[selector],els=document.querySelectorAll(selector);if(els)for(var i=0;i<els.length;i++)for(var j=0;j<variables.length;j++){var varName=variables[j];out[varName]=els[i].style.getPropertyValue("--"+varName)}}return out}}]),CssVariableManager}();Fashion.apply(CssVariableManager.prototype,{$isExport:!0,nameRe:/^--/}),module.exports=CssVariableManager},{"../Base.js":19,"../Runtime.js":21,"../parse/ValueParser.js":23,"../type/SourceBuilder.js":37}],23:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("../type/Type.js"),Types=(require("../type/Statics.js"),require("../type/Types.js")),Color=Types.Color,Text=Types.Text,Numeric=Types.Numeric,List=Types.List,Bool=Types.Bool,Literal=Types.Literal,ColorRGBA=Types.ColorRGBA,ColorHSLA=Types.ColorHSLA,FunctionCall=Types.FunctionCall,Parser=function(){function Parser(){_classCallCheck(this,Parser),this.index=0}return _createClass(Parser,[{key:"_advance",value:function(){for(var ch,me=this,buff="",str=me.str,len=str.length,isString=!1,escaped=!1,isParen=0;me.index<len;)if(ch=str[me.index],me.index++,ch<=" "&&!isString&&!isParen){if(buff.length)break}else{if(";"===ch&&!isString&&!escaped)break;if("("===ch&&isParen++,")"===ch&&isParen&&isParen--,","===ch&&!isString&&!escaped&&!isParen){if(buff.length){me.index--;break}return ch}"\\"===ch&&isString?(escaped=1,me.index++):('"'!==ch&&"'"!==ch||(isString?isString===ch&&(isString=!1):isString=ch),escaped=!1,buff+=ch)}return buff}},{key:"parseValue",value:function(token){var match,value,rx={number:/^(\d+)(px|pt|pc|cm|mm|in|em|rem|ex)?$/g,shortHexColor:/^#([A-Fa-f0-9]{3})$/,longHexColor:/^#([A-Fa-f0-9]{6})$/,functionCall:/^([A-Za-z0-9_]+)\((.*)\)$/,parenList:/^\((.*?)\)$/};if('"'===token[0]||"'"===token[0])return value=token=token.substring(1,token.length-1),new Text(value,token[0]);if("true"===token)return new Bool((!0));if("false"===token)return new Bool((!1));if("null"===token)return Literal.Null;if("none"===token)return Literal.None;if(Fashion.Color.map[token]){var rgb=Color.map[token],color=new ColorRGBA(rgb[0],rgb[1],rgb[2],rgb[3]);return color.stringified=token,color}if(match=rx.number.exec(token))return new Numeric(parseFloat(match[1]),match[2]);if(match=rx.shortHexColor.exec(token))return ColorRGBA.fromHex(match[1]);if(match=rx.longHexColor.exec(token))return ColorRGBA.fromHex(match[1]);if(match=rx.functionCall.exec(token)){var name=match[1],args=this.parse(match[2]).items;return"hsla"===name||"hsl"===name?new ColorHSLA(Type.unbox(args[0]),Type.unbox(args[1]),Type.unbox(args[2]),Type.unbox(args[3])||1):"rgba"===name||"rgb"===name?new ColorRGBA(Type.unbox(args[0]),Type.unbox(args[1]),Type.unbox(args[2]),Type.unbox(args[3])||1):new FunctionCall(name,args)}return(match=rx.parenList.exec(token))?new FunctionCall(this.parse(match[1])):new Fashion.Literal(token)}},{key:"parse",value:function(str){var token,me=this,tokens=[],values=[],csv=null;for(me.str=str,me.index=0;token=me._advance();)tokens.push(token);for(var i=0;i<tokens.length;i++)token=tokens[i].trim(),","===tokens[i+1]?(csv=csv||[],csv.push(me.parseValue(token)),i++):csv?(csv.push(me.parseValue(token)),values.push(new List(csv,", ")),csv=null):values.push(me.parseValue(token));return 1===values.length?values[0]:new List(values," ")}}]),Parser}();module.exports=Parser},{"../Base.js":19,"../type/Statics.js":38,"../type/Type.js":40,"../type/Types.js":42}],24:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),Bool=function(_Type){function Bool(value){_classCallCheck(this,Bool);var _this19=_possibleConstructorReturn(this,(Bool.__proto__||Object.getPrototypeOf(Bool)).call(this));return _this19.value=!!value,_this19}return _inherits(Bool,_Type),_createClass(Bool,[{key:"doVisit",value:function(visitor){visitor.bool(this)}},{key:"toString",value:function(){return this.value?"true":"false"}},{key:"copy",value:function(){return new Bool(this.value)}}]),Bool}(Type);Fashion.apply(Bool.prototype,{type:"bool",$isFashionBool:!0,value:null}),Bool.True=new Bool((!0)),Bool.True.$constant=!0,Bool.False=new Bool((!1)),Bool.False.$constant=!0,module.exports=Bool},{"../Base.js":19,"./Type.js":40}],25:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),Bool=require("./Bool.js"),Numeric=require("./Numeric.js"),Color=function(_Type2){function Color(){return _classCallCheck(this,Color),_possibleConstructorReturn(this,(Color.__proto__||Object.getPrototypeOf(Color)).call(this))}return _inherits(Color,_Type2),_createClass(Color,[{key:"toBoolean",value:function(){return Bool.True}},{key:"getRGBA",value:function(){return this}},{key:"getHSLA",value:function(){return this}}],[{key:"component",value:function(color,_component){var targetColor,unit=Color.units[_component],type=Color.types[_component],prop=Color.comps[_component];return targetColor="hsla"==type?color.getHSLA():color.getRGBA(),new Numeric(targetColor[prop],unit)}},{key:"adjust",value:function(color,component,amount){var hsl=color.getHSLA().copy(),prop=Color.comps[component],value=amount.value;return hsl[prop]+=value,hsl.h=Color.constrainDegrees(hsl.h),hsl.s=Color.constrainPercentage(hsl.s),hsl.l=Color.constrainPercentage(hsl.l),hsl.getRGBA()}},{key:"constrainChannel",value:function(channel){return Math.max(0,Math.min(channel,255))}},{key:"constrainPercentage",value:function(per){return Math.max(0,Math.min(per,100))}},{key:"constrainDegrees",value:function(deg){return deg%=360,deg<0?360+deg:deg}},{key:"constrainAlpha",value:function(alpha){return void 0===alpha?1:Math.max(0,Math.min(alpha,1))}}]),Color}(Type);Fashion.apply(Color,{units:{lightness:"%",saturation:"%",hue:"deg"},types:{red:"rgba",blue:"rgba",green:"rgba",alpha:"rgba",hue:"hsla",saturation:"hsla",lightness:"hsla"},comps:{red:"r",green:"g",blue:"b",alpha:"a",hue:"h",saturation:"s",lightness:"l"},map:{aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5],transparent:[0,0,0,0]}}),Fashion.apply(Color.prototype,{type:"color",$isFashionColor:!0,$isFashionRGBA:!1,$isFashionHSLA:!1,$canUnbox:!1}),module.exports=Color},{"../Base.js":19,"./Bool.js":24,"./Numeric.js":34,"./Type.js":40}],26:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Color=require("./Color.js"),ColorRGBA=require("./ColorRGBA.js"),ColorHSLA=function(_Color){function ColorHSLA(h,s,l,a){_classCallCheck(this,ColorHSLA);var _this21=_possibleConstructorReturn(this,(ColorHSLA.__proto__||Object.getPrototypeOf(ColorHSLA)).call(this));return _this21.h=Color.constrainDegrees(h),_this21.s=s,_this21.l=l,void 0!==a&&(_this21.a=a),_this21}return _inherits(ColorHSLA,_Color),_createClass(ColorHSLA,[{key:"doVisit",value:function(visitor){visitor.hsla(this)}},{key:"operate",value:function(operation,right){return this.getRGBA().operate(operation,right)}},{key:"copy",value:function(){return new ColorHSLA(this.h,this.s,this.l,this.a)}},{key:"getRGBA",value:function(){return ColorRGBA.fromHSLA(this)}},{key:"toString",value:function(){return""+this.getRGBA()}},{key:"add",value:function(h,s,l,a){return new ColorHSLA(Color.constrainDegrees(this.h+h),Color.constrainPercentage(this.s+s),Color.constrainPercentage(this.l+l),Color.constrainAlpha(this.a*a))}},{key:"subtract",value:function(h,s,l){return this.add(-h,-s,-l)}},{key:"adjustLightness",value:function(percent){return this.l=Color.constrainPercentage(this.l+percent),this}},{key:"adjustHue",value:function(deg){return this.h=Color.constrainDegrees(this.h+deg),this}}],[{key:"fromRGBA",value:function(rgba){if(rgba.$isFashionHSLA)return rgba.clone();var r=rgba.r/255,g=rgba.g/255,b=rgba.b/255,a=rgba.a,max=Math.max(r,g,b),min=Math.min(r,g,b),delta=max-min,h=0,s=0,l=.5*(max+min);return min!=max&&(s=l<.5?delta/(max+min):delta/(2-max-min),h=r==max?60*(g-b)/delta:g==max?120+60*(b-r)/delta:240+60*(r-g)/delta,h<0&&(h+=360),h>=360&&(h-=360)),new ColorHSLA(Color.constrainDegrees(h),Color.constrainPercentage(100*s),Color.constrainPercentage(100*l),a)}}]),ColorHSLA}(Color);ColorRGBA.prototype.getHSLA=function(){return ColorHSLA.fromRGBA(this)},Fashion.apply(ColorHSLA.prototype,{type:"hsla",$isFashionHSLA:!0,h:null,s:null,l:null,a:1}),module.exports=ColorHSLA},{"../Base.js":19,"./Color.js":25,"./ColorRGBA.js":27}],27:[function(require,module,exports){"use strict";function hex2(v){var s=v.toString(16);return s.length<2&&(s="0"+s),s}var Fashion=require("../Base.js"),Color=require("./Color.js"),ColorRGBA=function(_Color2){function ColorRGBA(r,g,b,a){_classCallCheck(this,ColorRGBA);var _this22=_possibleConstructorReturn(this,(ColorRGBA.__proto__||Object.getPrototypeOf(ColorRGBA)).call(this));return _this22.r=Math.min(255,Math.max(0,r)),_this22.g=Math.min(255,Math.max(0,g)),_this22.b=Math.min(255,Math.max(0,b)),void 0!==a&&(_this22.a=Math.min(1,Math.max(0,a))),_this22}return _inherits(ColorRGBA,_Color2),_createClass(ColorRGBA,[{key:"doVisit",value:function(visitor){visitor.rgba(this)}},{key:"copy",value:function(){return new ColorRGBA(this.r,this.g,this.b,this.a)}},{key:"getHSLA",value:function(){return null}},{key:"stringify",value:function(){var me=this,round=Math.round,r=round(me.r),g=round(me.g),b=round(me.b),a=me.a,stringified="";return stringified=1===a?"#"+hex2(r)+hex2(g)+hex2(b):"rgba("+r+", "+g+", "+b+", "+a+")",stringified=stringified.toLowerCase()}},{key:"getCompressedValue",value:function(lowerVal){var name=ColorRGBA.stringifiedMap[lowerVal],shortName=ColorRGBA.shortFormMap[lowerVal];return name&&(lowerVal=lowerVal.length>name.length?name:lowerVal),ColorRGBA.useShortValues&&shortName&&(lowerVal=lowerVal.length>shortName.length?shortName:lowerVal),lowerVal}},{key:"toString",value:function(){return this.stringified||(this.stringified=this.getCompressedValue(this.stringify())),this.stringified}},{key:"toIeHexStr",value:function(){var me=this,round=Math.round,r=round(me.r),g=round(me.g),b=round(me.b),a=round(255*me.a);return"#"+hex2(a)+hex2(r)+hex2(g)+hex2(b)}},{key:"add",value:function(r,g,b,a){return new ColorRGBA(this.r+r,this.g+g,this.b+b,this.a*a)}},{key:"subtract",value:function(r,g,b){return new ColorRGBA(this.r-r,this.g-g,this.b-b,this.a)}},{key:"multiply",value:function(number){return new ColorRGBA(this.r*number,this.g*number,this.b*number,this.a)}},{key:"divide",value:function(number){return new ColorRGBA(this.r/number,this.g/number,this.b/number,this.a)}}],[{key:"fromHex",value:function(value){"#"==value.charAt(0)&&(value=value.substr(1));var r,g,b;3===value.length?(r=parseInt(value.charAt(0),16),g=parseInt(value.charAt(1),16),b=parseInt(value.charAt(2),16),r=(r<<4)+r,g=(g<<4)+g,b=(b<<4)+b):(r=parseInt(value.substring(0,2),16),g=parseInt(value.substring(2,4),16),b=parseInt(value.substring(4,6),16));var result=new ColorRGBA(r,g,b);return ColorRGBA.preserveInputStrings&&(result.stringified="#"+value),result}},{key:"fromHSLA",value:function(color){function hue(h){return h<0&&++h,h>1&&--h,6*h<1?m1+(m2-m1)*h*6:2*h<1?m2:3*h<2?m1+(m2-m1)*(2/3-h)*6:m1}if(color.$isFashionRGBA)return color.clone();var hsla=color,h=hsla.h/360,s=hsla.s/100,l=hsla.l/100,a=hsla.a,m2=l<=.5?l*(s+1):l+s-l*s,m1=2*l-m2,r=Color.constrainChannel(255*hue(h+1/3)),g=Color.constrainChannel(255*hue(h)),b=Color.constrainChannel(255*hue(h-1/3));return new ColorRGBA(r,g,b,a)}}]),ColorRGBA}(Color);Fashion.apply(ColorRGBA,{stringifiedMap:{"rgba(0, 0, 0, 0)":"transparent"},shortFormMap:{},useShortValues:!0,preserveInputStrings:!1}),Fashion.apply(ColorRGBA.prototype,{type:"rgba",$isFashionRGBA:!0,r:null,g:null,b:null,a:1,stringified:null,"+.number":function(right){var value=right.value,unit=right.unit;switch(unit){case"%":return this.getHSLA().adjustLightness(value).getRGBA();case"deg":return this.getHSLA().adjustHue(value).getRGBA();default:return this.add(value,value,value,1)}},"+.rgba":function(right){return this.add(right.r,right.g,right.b,right.a)},"+.hsla":function(right){return this.getHSLA().add(right.h,right.s,right.l)},"-.number":function(right){var value=right.value,unit=right.unit;switch(unit){case"%":return this.getHSLA().adjustLightness(-value).getRGBA();case"deg":return this.getHSLA().adjustHue(-value).getRGBA();default:return this.subtract(value,value,value)}},"-.rgba":function(right){return this.subtract(right.r,right.g,right.b)},"-.hsla":function(right){return this.getHSLA().subtract(right.h,right.s,right.l)},"*.number":function(right){return this.multiply(right.value)},"/.number":function(right){return this.divide(right.value)},"*.rgba":function(right){return new ColorRGBA(this.r*right.r,this.g*right.g,this.b*right.b,this.a*right.a)},"/.rgba":function(right){return new ColorRGBA(Math.floor(this.r/right.r),Math.floor(this.g/right.g),Math.floor(this.b/right.b),Math.floor(this.a/right.a))}}),module.exports=ColorRGBA,function(ColorRGBA,stringifiedMap,colorMap,shortMap){var i,colorChars=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"],names=Object.keys(colorMap);for(names.sort(),i=0;i<names.length;i++){var name=names[i],val=colorMap[name],color=new ColorRGBA(val[0],val[1],val[2],val[3]),str=color.stringify();stringifiedMap[str]=name}colorChars.forEach(function(short1){var long1=short1+short1;colorChars.forEach(function(short2){var long2=short2+short2;colorChars.forEach(function(short3){var long3=short3+short3,shortName="#"+short1+short2+short3,longName="#"+long1+long2+long3;if(shortMap[longName]){var curr=shortMap[longName];shortName=curr.length>shortName.length?shortName:curr}shortMap[longName]=shortName})})})}(ColorRGBA,ColorRGBA.stringifiedMap,Color.map,ColorRGBA.shortFormMap)},{"../Base.js":19,"./Color.js":25}],28:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),Numeric=require("./Numeric.js"),ColorStop=function(_Type3){function ColorStop(color,stop){_classCallCheck(this,ColorStop);var _this23=_possibleConstructorReturn(this,(ColorStop.__proto__||Object.getPrototypeOf(ColorStop)).call(this));return _this23.color=color,_this23.stop=stop,_this23}return _inherits(ColorStop,_Type3),_createClass(ColorStop,[{key:"doVisit",value:function(visitor){visitor.colorstop(this)}},{key:"descend",value:function(visitor){visitor.visit(this.color),visitor.visit(this.stop)}},{key:"toString",value:function(){var string=""+this.color,stop=this.stop;return stop&&(stop=stop.copy(),string+=" ",stop.unit||(stop.value*=100,stop.unit="%"),string+=""+stop),string}},{key:"toOriginalWebkitString",value:function(){var stop=this.stop;return stop||(stop=new Numeric(0,"%")),stop=stop.copy(),stop.unit||(stop.value*=100,stop.unit="%"),"color-stop("+stop+", "+this.color+")"}},{key:"copy",value:function(){return new ColorStop(this.color&&this.color.clone(),this.stop&&this.stop.clone())}}]),ColorStop}(Type);Fashion.apply(ColorStop.prototype,{type:"colorstop",$isFashionColorStop:!0,$canUnbox:!1,color:null,stop:null}),module.exports=ColorStop},{"../Base.js":19,"./Numeric.js":34,"./Type.js":40}],29:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),List=require("./List.js"),FunctionCall=function(_Type4){function FunctionCall(name,args){_classCallCheck(this,FunctionCall);var _this24=_possibleConstructorReturn(this,(FunctionCall.__proto__||Object.getPrototypeOf(FunctionCall)).call(this));return _this24.name=name,Array.isArray(args)&&(args=new List(args)),_this24.args=args,_this24}return _inherits(FunctionCall,_Type4),_createClass(FunctionCall,[{key:"toString",value:function(){var argsStr,args=this.args;return argsStr=Array.isArray(args)?args.join(", "):""+args,this.name+"("+argsStr+")"}},{key:"doVisit",value:function(visitor){visitor.functioncall(this)}},{key:"descend",value:function(visitor){this.args&&visitor.visit(this.args)}},{key:"copy",value:function(){return new FunctionCall(this.name,this.args&&this.args.copy())}}]),FunctionCall}(Type);Fashion.apply(FunctionCall.prototype,{type:"functioncall",$isFashionFunctionCall:!0,$canUnbox:!1,name:null,args:null}),module.exports=FunctionCall},{"../Base.js":19,"./List.js":31,"./Type.js":40}],30:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),LinearGradient=function(_Type5){function LinearGradient(position,stops){_classCallCheck(this,LinearGradient);var _this25=_possibleConstructorReturn(this,(LinearGradient.__proto__||Object.getPrototypeOf(LinearGradient)).call(this));return _this25.position=position,_this25.stops=stops,_this25}return _inherits(LinearGradient,_Type5),_createClass(LinearGradient,[{key:"doVisit",value:function(visitor){visitor.lineargradient(this)}},{key:"descend",value:function(visitor){visitor.visit(this.position),visitor.visit(this.stops)}},{key:"copy",value:function(){return new LinearGradient(this.position&&this.position.clone(),this.stops&&this.stops.clone())}},{key:"gradientPoints",value:function(position){}},{key:"operate",value:function(operation,right){switch(operation){case"!=":if("literal"==right.type&&("null"==right.value||"none"==right.value))return!0;case"==":if("literal"==right.type&&("null"==right.value||"none"==right.value))return!1}return _get(LinearGradient.prototype.__proto__||Object.getPrototypeOf(LinearGradient.prototype),"operate",this).call(this,operation,right)}},{key:"supports",value:function(prefix){return!!this.vendorPrefixes[prefix.toLowerCase()]}},{key:"toString",value:function(){var string="linear-gradient(";return this.position&&(string+=this.position+", "),string+this.stops+")"}},{key:"toOriginalWebkitString",value:function(){var i,args=[],stops=this.stops.items,ln=stops.length;for(args.push("top"),args.push("bottom"),i=0;i<ln;i++)args.push(stops[i].toOriginalWebkitString());return"-webkit-gradient(linear, "+args.join(", ")+")"}},{key:"toPrefixedString",value:function(prefix){return"owg"===prefix?this.toOriginalWebkitString():prefix+(""+this);
}}]),LinearGradient}(Type);Fashion.apply(LinearGradient.prototype,{type:"lineargradient",$isFashionLinearGradient:!0,$canUnbox:!1,position:null,stops:null,vendorPrefixes:{webkit:!0,moz:!0,svg:!0,pie:!0,css2:!0,o:!0,owg:!0}}),module.exports=LinearGradient},{"../Base.js":19,"./Type.js":40}],31:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),List=function(_Type6){function List(items,separator){_classCallCheck(this,List);var _this26=_possibleConstructorReturn(this,(List.__proto__||Object.getPrototypeOf(List)).call(this));return _this26.items=items||[],_this26.separator=void 0===separator?" ":separator,_this26}return _inherits(List,_Type6),_createClass(List,[{key:"doVisit",value:function(visitor){visitor.list(this)}},{key:"descend",value:function(visitor){for(var i=0;i<this.items.length;i++)visitor.visit(this.items[i])}},{key:"copy",value:function(){for(var items=this.items,len=items.length,newItems=[],i=0;i<len;i++)newItems.push(items[i].clone());return new List(newItems,this.separator)}},{key:"clone",value:function(match,replace){if(replace&&this.matches(match))return replace.clone();for(var items=this.items,len=items.length,newItems=[],i=0;i<len;i++){var item=items[i];item?newItems.push(item.clone(match,replace)):newItems.push(item)}var copy=new List(newItems,this.separator);return copy.$referenceName=this.$referenceName,copy.$referenceBase=this.$referenceBase,copy.$previousReference=this.$previousReference,copy}},{key:"add",value:function(item){return this.items.push(item)}},{key:"get",value:function(index){return this.items[index-1]||null}},{key:"operate",value:function(operation,right){switch(operation){case"!=":if(right.$isFashionLiteral&&("null"===right.value||"none"===right.value))return!0;break;case"==":if(right.$isFashionLiteral&&("null"===right.value||"none"===right.value))return!1}return _get(List.prototype.__proto__||Object.getPrototypeOf(List.prototype),"operate",this).call(this,operation,right)}},{key:"supports",value:function(prefix){for(var i=0;i<this.items.length;i++){var item=this.items[i];if(item.supports(prefix))return!0}return!1}},{key:"toBoolean",value:function(){return!!this.items.length}},{key:"getItems",value:function(){return this.items}},{key:"toString",value:function(){return this.items.join(this.separator)}},{key:"unquote",value:function(){for(var item,items=[],i=0;i<this.items.length;i++)item=this.items[i],item?items.push(item.unquote()):items.push(item);return new List(items,this.separator)}},{key:"toPrefixedString",value:function(prefix){for(var items=[],i=0;i<this.items.length;i++){var item=this.items[i];item&&items.push(item.toPrefixedString(prefix))}return items.join(this.separator)}},{key:"==.list",value:function(right){for(var equals=this.separator==right.separator&&this.items.length==right.items.length,i=0;equals&&i<this.items.length;++i)equals=this.items[i].operate("==",right.items[i]);return equals}}]),List}(Type);Fashion.apply(List.prototype,{type:"list",$isFashionList:!0,items:null,separator:null}),module.exports=List},{"../Base.js":19,"./Type.js":40}],32:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),Numeric=require("./Numeric.js"),Literal=function(_Type7){function Literal(value){_classCallCheck(this,Literal);var _this27=_possibleConstructorReturn(this,(Literal.__proto__||Object.getPrototypeOf(Literal)).call(this));return _this27.value=value,_this27}return _inherits(Literal,_Type7),_createClass(Literal,[{key:"doVisit",value:function(visitor){visitor.literal(this)}},{key:"_getHash",value:function(){return this.value}},{key:"toString",value:function(){return this.value||""}},{key:"toBoolean",value:function(){return this.value.length}},{key:"copy",value:function(){return new Literal(this.value)}},{key:"+",value:function(right){return new Literal(this.value+right.getHash())}},{key:"+.number",value:function(right){return null===this.value?right:new Literal(this.value+(""+right))}},{key:"/",value:function(right){return new Literal(this.value+"/"+right.getHash())}},{key:"-",value:function(right){return new Literal(this.value+"-"+right.getHash())}},{key:"%",value:function(right){return new Literal(this.value+"%"+right.getHash())}},{key:"normalizeStart",value:function(startVal){var start=Type.unbox(startVal)||0;return start>0&&(start-=1),start<0&&(start=this.value.length+start),start<0&&(start=0),start}},{key:"normalizeEnd",value:function(endVal){var end=Type.unbox(endVal)||-1;return end>0&&(end-=1),end<0&&(end=this.value.length+end),end<0&&(end=0),end>0&&(end+=1),end}},{key:"slice",value:function(start,end){return start=this.normalizeStart(start),end=this.normalizeEnd(end),new Literal(this.value.slice(start,end))}},{key:"toUpperCase",value:function(){return new Literal(this.value.toUpperCase())}},{key:"toLowerCase",value:function(){return new Literal(this.value.toLowerCase())}},{key:"indexOf",value:function(str){var idx=this.value.indexOf(str.value);if(idx!==-1)return new Numeric(idx+1)}},{key:"insert",value:function(str,startVal){var start=Type.unbox(startVal)||0,inserted=this.value;return start>0&&(start=Math.min(start-1,inserted.length)),start<0&&(start=inserted.length+start+1,start=Math.max(start,0)),inserted=inserted.substring(0,start)+str.value+inserted.substring(start),new Literal(Literal.deEscape(inserted))}},{key:"toDisplayString",value:function(){var val=this.value;return null===val?"null":""+this}}],[{key:"tryCoerce",value:function(obj){if(!obj.$isFashionNumber)return obj.$isFashionString?new Literal(obj.value):obj.$isFashionLiteral?obj:new Literal(obj.getHash())}},{key:"deEscape",value:function(str){var i,ch,buff="";for(i=0;i<str.length;i++)ch=str.charAt(i),"\\"===ch&&(i++,ch=str.charAt(i)),buff+=ch;return buff}}]),Literal}(Type);Fashion.apply(Literal.prototype,{type:"literal",$isFashionLiteral:!0,value:null});var FashionNull=function(_Literal){function FashionNull(value){return _classCallCheck(this,FashionNull),_possibleConstructorReturn(this,(FashionNull.__proto__||Object.getPrototypeOf(FashionNull)).call(this,value||null))}return _inherits(FashionNull,_Literal),_createClass(FashionNull,[{key:"copy",value:function(){return new FashionNull(this.value)}}]),FashionNull}(Literal);Fashion.apply(FashionNull.prototype,{$isFashionNull:!0,$constant:!0}),FashionNull.prototype.$isFashionNull=!0,Literal.Null=new FashionNull(null),Literal.None=new Literal("none"),module.exports=Literal},{"../Base.js":19,"./Numeric.js":34,"./Type.js":40}],33:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),List=require("./List.js"),Type=require("./Type.js"),Literal=require("./Literal.js"),Null=Literal.Null,Numeric=require("./Numeric.js"),Map=function(_List){function Map(pairs){_classCallCheck(this,Map);var _this29=_possibleConstructorReturn(this,(Map.__proto__||Object.getPrototypeOf(Map)).call(this,pairs));if(_this29.map={},pairs)for(var i=0;i<pairs.length-1;i+=2){var key=_this29.toKey(pairs[i]);pairs[i+1];_this29.map[key]=i+1}return _this29}return _inherits(Map,_List),_createClass(Map,[{key:"doVisit",value:function(visitor){visitor.map(this)}},{key:"descend",value:function(visitor){for(var i=0;i<this.items.length;i++)visitor.visit(this.items[i])}},{key:"get",value:function(key){return key instanceof Numeric&&(key=Type.unbox(key)),"number"==typeof key?new List([this.items[2*key-2],this.items[2*key-1]]," "):(key=this.toKey(key),this.items[this.map[key]]||Null)}},{key:"getItems",value:function(){for(var values=[],i=0;i<this.items.length-1;i+=2){var key=this.toKey(this.items[i]);values.push(this.map[key])}return values}},{key:"put",value:function(key,value){var keyStr=this.toKey(key);this.map.hasOwnProperty(keyStr)?this.items[this.map[keyStr]]=value:(this.items.push(key,value),this.map[keyStr]=this.items.length-1)}},{key:"toString",value:function(){for(var str="",count=0,i=0;i<this.items.length-1;i+=2){var key=this.toKey(this.items[i]),value=this.map[key];value&&(count>0&&(str+=", "),str+=key+": "+value,count++)}return str}},{key:"toKey",value:function(key){return""+this.unquoteKey(key)}},{key:"unquoteKey",value:function(string){return string.$isFashionType?string.unquote():string}},{key:"remove",value:function(key){if(key=this.toKey(key),this.map[key]){var idx=this.map[key];delete this.items[idx-1],delete this.items[idx],delete this.map[key]}}},{key:"getKeys",value:function(){for(var keys=[],i=0;i<this.items.length;i+=2){var k=this.items[i];k&&keys.push(k)}return keys}},{key:"getValues",value:function(){for(var values=[],i=1;i<this.items.length;i+=2){var v=this.items[i];v&&values.push(v)}return values}},{key:"hasKey",value:function(key){return key=this.toKey(key),!!this.map.hasOwnProperty(key)}}]),Map}(List);Fashion.apply(Map.prototype,{type:"map",$isFashionMap:!0,$canUnbox:!1,map:null}),module.exports=Map},{"../Base.js":19,"./List.js":31,"./Literal.js":32,"./Numeric.js":34,"./Type.js":40}],34:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),Bool=require("./Bool.js"),Literal=require("./Literal.js"),Numeric=function(_Type8){function Numeric(value,unit,numeratorUnits,denominatorUnits){_classCallCheck(this,Numeric);var _this30=_possibleConstructorReturn(this,(Numeric.__proto__||Object.getPrototypeOf(Numeric)).call(this));return _this30.value=value,_this30.unit=unit,unit&&!numeratorUnits?_this30.numeratorUnits=[unit]:_this30.numeratorUnits=numeratorUnits||[],_this30.denominatorUnits=denominatorUnits||[],_this30}return _inherits(Numeric,_Type8),_createClass(Numeric,[{key:"doVisit",value:function(visitor){visitor.number(this)}},{key:"unitless",value:function(){return(!this.numeratorUnits||!this.numeratorUnits.length)&&(!this.denominatorUnits||!this.denominatorUnits.length)}},{key:"getUnitStr",value:function(){this.normalizeUnits();var unitStr=this.numeratorUnits.join("*");return this.denominatorUnits.length&&(unitStr+="/"+this.denominatorUnits.join("*")),unitStr}},{key:"_getHash",value:function(){return this.value}},{key:"stringify",value:function(){this.normalizeUnits();var valStr,value=this.value;return valStr=Math.round(1e5*value)/1e5+"",valStr+this.getUnitStr()}},{key:"toString",value:function(){return this.stringify()}},{key:"toBoolean",value:function(){return!!this.unit||!!this.value}},{key:"copy",value:function(){return new Numeric(this.value,this.unit)}},{key:"-.literal",value:function(right){return new Literal(0===this.value&&this.unitless()?"-"+right:""+this+"-"+right)}},{key:"-.string",value:function(right){return new Literal(0===this.value&&this.unitless()?"-"+right:""+this+"-"+right)}},{key:"-.number",value:function(right){var value=right.value;return"%"==right.unit&&right.unit!==this.unit&&(value=this.value*(right.value/100)),new Numeric(this.value-value,this.unit||right.unit)}},{key:"+.literal",value:function(right){return new Literal(right.$isFashionString?""+this+right.value:""+this+(""+right))}},{key:"+.number",value:function(right){var value=right.value;return"%"==right.unit&&right.unit!==this.unit&&(value=this.value*(right.value/100)),new Numeric(this.value+value,this.unit||right.unit)}},{key:"/",value:function(right){return new Numeric(this.value/right.value,this.unit==right.unit?null:this.unit||right.unit)}},{key:"*",value:function(right){return new Numeric(this.value*right.value,this.unit||right.unit)}},{key:"%",value:function(right){return new Numeric(this.value%right.value,this.unit||right.unit)}},{key:"**",value:function(right){return new Numeric(Math.pow(this.value,right.value),this.unit||right.unit)}},{key:"operate",value:function(operation,right){var normalized;this.unit||right.unit;return right.$isFashionRGBA||right.$isFashionHSLA?new Literal(this+operation+right):right.$isFashionNumber?this.numericOperate(operation,right):right.$isFashionLiteral&&(normalized=this.tryCoerce(right))?this.performOperation(operation,normalized):_get(Numeric.prototype.__proto__||Object.getPrototypeOf(Numeric.prototype),"operate",this).call(this,operation,right)}},{key:"tryNormalize",value:function(other){var value=other.value,unit=other.unit;if(other.$isFashionNumber)switch(this.unit){case"mm":switch(unit){case"in":return new Numeric(25.4*value,"mm");case"cm":return new Numeric(2.54*value,"mm")}break;case"cm":switch(unit){case"in":return new Numeric(2.54*value,"cm");case"mm":return new Numeric(value/10,"cm")}break;case"in":switch(unit){case"mm":return new Numeric(value/25.4,"in");case"cm":return new Numeric(value/2.54,"in")}break;case"ms":switch(unit){case"s":return new Numeric(1e3*value,"ms")}break;case"s":switch(unit){case"ms":return new Numeric(value/1e3,"s")}break;case"Hz":switch(unit){case"kHz":return new Numeric(1e3*value,"Hz")}break;case"kHz":switch(unit){case"Hz":return new Numeric(value/1e3,"kHz")}break;case"%":switch(unit){default:return new Numeric(value)}}}},{key:"normalize",value:function(other){var norm=this.tryNormalize(other);return void 0===norm&&raise("Could not normalize "+this+" with "+other),norm}},{key:"comparable",value:function(other){var unit1=this.unit,unit2=other.unit;return!!other.$isFashionNumber&&(unit1===unit2||"mm"===unit1&&("in"===unit2||"cm"===unit2)||"cm"===unit1&&("in"===unit2||"mm"===unit2)||"in"===unit1&&("mm"===unit2||"cm"===unit2)||"ms"===unit1&&"s"===unit2||"s"===unit1&&"ms"===unit2||"Hz"===unit1&&"kHz"===unit2||"kHz"===unit1&&"Hz"===unit2)}},{key:"normalizeUnits",value:function(){if(!this.normalized&&(this.normalized=!0,!this.unitless())){var clean=this.removeCommonUnits(this.numeratorUnits,this.denominatorUnits);clean.num=Fashion.filter(clean.num,function(val){return!!val}),clean.den=Fashion.filter(clean.den,function(val){return!!val}),this.numeratorUnits=clean.num,this.denominatorUnits=clean.den}}},{key:"numericOperate",value:function(operation,right){this.normalizeUnits(),right.normalizeUnits();var result,me=this,other=right,ops=Numeric.OPERATIONS,moreOps=Numeric.NON_COERCE_OPERATIONS,op=ops[operation];if(op)try{me.unitless()?me=me.coerceUnits(other.numeratorUnits,other.denominatorUnits):other=other.coerceUnits(me.numeratorUnits,me.denominatorUnits)}catch(e){if("=="==operation)return Bool.False;if("!="==operation)return Bool.True;throw e}else op=moreOps[operation];if(op&&(result=op(me.value,other.value)),"number"==typeof result){var units=this.computeUnits(me,other,operation);return new Numeric(result,units.num.length?units.num[0]:null,units.num,units.den)}return new Bool(result)}},{key:"computeUnits",value:function(left,right,op){switch(op){case"*":return{num:left.numeratorUnits.slice().concat(right.numeratorUnits),den:left.denominatorUnits.slice().concat(right.denominatorUnits)};case"/":return{num:left.numeratorUnits.slice().concat(right.denominatorUnits),den:left.denominatorUnits.slice().concat(right.numeratorUnits)};default:return{num:left.numeratorUnits,den:left.denominatorUnits}}}},{key:"coerceUnits",value:function(units,denominatorUnits){var value=this.value;return this.unitless()||(value=value*this.coercionFactor(this.numeratorUnits,units)/this.coercionFactor(this.denominatorUnits,denominatorUnits)),new Numeric(value,units&&units[0],units,denominatorUnits)}},{key:"coercionFactor",value:function(units,otherUnits){var res=this.removeCommonUnits(units,otherUnits),fromUnits=res.num,toUnits=res.den;fromUnits.length===toUnits.length&&this.convertable(fromUnits||toUnits)||Fashion.raise("Incompatible units: "+fromUnits.join("*")+" and "+toUnits.join("*"));for(var i=0;i<fromUnits.length;i++)for(var fromUnit=fromUnits[i],j=0;j<toUnits.length;j++){var toUnit=toUnits[j],factor=this.conversionFactor(fromUnit,toUnit);if(null!==factor)return factor}return 1}},{key:"conversionFactor",value:function(fromUnit,toUnit){var cUnits=Numeric.CONVERTABLE_UNITS,cTable=Numeric.CONVERSION_TABLE,factor=null;return cUnits[fromUnit]&&cUnits[toUnit]&&(factor=cTable[cUnits[fromUnit]][cUnits[toUnit]]),null===factor&&cUnits[toUnit]&&cUnits[fromUnit]&&(factor=1/cTable[cUnits[toUnit]][cUnits[fromUnit]]),factor}},{key:"convertable",value:function(units){if(units&&!Array.isArray(units)&&(units=[units]),units&&units.length)for(var convertableUnits=Numeric.CONVERTABLE_UNITS,i=0;i<units.length;i++)if(void 0===convertableUnits[units[i]])return!1;return!0}},{key:"removeCommonUnits",value:function(numUnits,denUnits){var i,unit,unit,map={},num=[],den=[];for(i=0;i<numUnits.length;i++)unit=numUnits[i],map[unit]=(map[unit]||0)+1;for(i=0;i<denUnits.length;i++)unit=denUnits[i],map[unit]=(map[unit]||0)-1;for(i=0;i<numUnits.length;i++)unit=numUnits[i],map[unit]>0&&(num.push(unit),map[unit]--);for(i=0;i<denUnits.length;i++)unit=denUnits[i],map[unit]<0&&(den.push(unit),map[unit]++);return{num:num,den:den}}}],[{key:"tryGetNumber",value:function(value){if(/^\d*$/.test(value)&&(value=parseFloat(value)),!isNaN(value))return new Numeric(value)}},{key:"tryCoerce",value:function(obj){return obj.$isFashionNumber?obj:obj.$isFashionLiteral?this.tryGetNumber(obj.value):void 0}}]),Numeric}(Type);Fashion.apply(Numeric,{OPERATIONS:{"!=":function(l,r){return l!=r},"+":function(l,r){return l+r},"-":function(l,r){return l-r},"<=":function(l,r){return l<=r},"<":function(l,r){return l<r},">":function(l,r){return l>r},">=":function(l,r){return l>=r},"==":function(l,r){return l==r},"%":function(l,r){return Math.abs(l%r)}},NON_COERCE_OPERATIONS:{"*":function(l,r){return l*r},"**":function(l,r){return Math.pow(l,r)},"/":function(l,r){return l/r}},CONVERTABLE_UNITS:{"in":0,cm:1,pc:2,mm:3,pt:4,px:5},CONVERSION_TABLE:[[1,2.54,6,25.4,72,96],[null,1,2.36220473,10,28.3464567,37.795276],[null,null,1,4.23333333,12,16],[null,null,null,1,2.83464567,3.7795276],[null,null,null,null,1,1.3333333],[null,null,null,null,null,1]]}),Fashion.apply(Numeric.prototype,{type:"number",$isFashionNumber:!0,value:void 0,unit:void 0,numeratorUnits:void 0,denominatorUnits:void 0,normalized:!1}),module.exports=Numeric},{"../Base.js":19,"./Bool.js":24,"./Literal.js":32,"./Type.js":40}],35:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),ParentheticalExpression=function(_Type9){function ParentheticalExpression(value){_classCallCheck(this,ParentheticalExpression);var _this31=_possibleConstructorReturn(this,(ParentheticalExpression.__proto__||Object.getPrototypeOf(ParentheticalExpression)).call(this));return _this31.value=value,_this31}return _inherits(ParentheticalExpression,_Type9),_createClass(ParentheticalExpression,[{key:"toString",value:function(){return"("+(this.value&&""+this.value)+")"}},{key:"doVisit",value:function(visitor){visitor.parenthetical(this)}}]),ParentheticalExpression}(Type);Fashion.apply(ParentheticalExpression.prototype,{value:null,type:"parenthetical"}),module.exports=ParentheticalExpression},{"../Base.js":19,"./Type.js":40}],36:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),RadialGradient=function(_Type10){function RadialGradient(position,shape,stops){_classCallCheck(this,RadialGradient);var _this32=_possibleConstructorReturn(this,(RadialGradient.__proto__||Object.getPrototypeOf(RadialGradient)).call(this));return _this32.position=position,_this32.stops=stops,_this32.shape=shape,_this32}return _inherits(RadialGradient,_Type10),_createClass(RadialGradient,[{key:"doVisit",value:function(visitor){visitor.radialgradient(this)}},{key:"descend",value:function(visitor){visitor.visit(this.position),visitor.visit(this.stops),visitor.visit(this.shape)}},{key:"copy",value:function(){return new RadialGradient(this.position,this.shape,this.stops)}},{key:"toString",value:function(){var string="radial-gradient(";return this.position&&(string+=this.position+", "),this.shape&&(string+=this.shape+", "),string+this.stops+")"}},{key:"toOriginalWebkitString",value:function(){var i,args=[],stops=this.stops.items,ln=stops.length;for(args.push("center 0%"),args.push("center 100%"),i=0;i<ln;i++)args.push(stops[i].toOriginalWebkitString());return"-webkit-gradient(radial, "+args.join(", ")+")"}},{key:"supports",value:function(prefix){return["owg","webkit"].indexOf(prefix.toLowerCase())!==-1}},{key:"toPrefixedString",value:function(prefix){return"owg"===prefix?this.toOriginalWebkitString():prefix+(""+this)}},{key:"gradientPoints",value:function(position){}}]),RadialGradient}(Type);Fashion.apply(RadialGradient.prototype,{type:"radialgradient",$isFashionRadialGradient:!0,$canUnbox:!1,position:null,stops:null,shape:null}),module.exports=RadialGradient},{"../Base.js":19,"./Type.js":40}],37:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),TypeVisitor=require("./TypeVisitor.js"),Output=require("../Output.js"),SourceBuilder=function(_TypeVisitor4){function SourceBuilder(cfg){_classCallCheck(this,SourceBuilder);var _this33=_possibleConstructorReturn(this,(SourceBuilder.__proto__||Object.getPrototypeOf(SourceBuilder)).call(this,cfg));return _this33.nullFound=!1,_this33}return _inherits(SourceBuilder,_TypeVisitor4),_createClass(SourceBuilder,[{key:"list",value:function(obj){for(var delta,output=this.output,items=obj.items,len=output.output.length,sep=obj.separator,sepLen=sep&&sep.length,hasSpace=sep&&sep.indexOf(" ")>-1,prev=output.output,i=0;i<items.length;i++)items[i]&&!items[i].$isFashionNull?(this.visit(items[i]),delta=output.output.length-len,!delta&&sepLen&&i>0&&(output.output=prev),prev=output.output,i<items.length-1&&sepLen&&(output.add(sep),hasSpace||output.space()),len=output.output.length):this.nullFound=!0}},{key:"map",value:function(obj){var key,value,output=this.output,items=obj.items;this.currDeclaration&&Fashion.raise("("+obj+") isn't a valid CSS value.");for(var i=0;i<items.length-1;i+=2)key=items[i],value=items[i+1],key&&value&&(i>0&&(output.add(","),output.space()),this.visit(key),output.add(": "),this.visit(value))}},{key:"literal",value:function(obj){obj.value&&this.output.add(obj.value)}},{key:"string",value:function(obj){var output=this.output;output.add(obj.quoteChar),output.add(obj.value),output.add(obj.quoteChar)}},{key:"functioncall",value:function(obj){var output=this.output;output.add(obj.name),output.add("("),this.visit(obj.args),output.add(")")}},{key:"parenthetical",value:function(obj){this.output.add("("),this.visit(obj.value),this.output.add(")")}},{key:"number",value:function(obj){var val=obj.stringify();"."!==val.indexOf(".")||this.output.isCompressed||(val="0"+val),this.output.add(val)}},{key:"bool",value:function(obj){this.output.add(obj.value?"true":"false")}},{key:"hsla",value:function(obj){this.output.add(""+obj)}},{key:"rgba",value:function(obj){this.output.add(""+obj)}},{key:"colorstop",value:function(obj){var output=this.output,stop=obj.stop;this.visit(obj.color),stop&&(stop=stop.clone(),output.add(" "),stop.unit||(stop.value*=100,stop.unit="%"),this.visit(stop))}},{key:"lineargradient",value:function(obj){var output=this.output;output.add("linear-gradient("),obj.position&&(this.visit(obj.position),output.add(","),output.space()),this.visit(obj.stops),output.add(")")}},{key:"radialgradient",value:function(obj){var output=this.output;output.add("linear-gradient("),obj.position&&(this.visit(obj.position),output.add(","),output.space()),obj.shape&&(this.visit(obj.shape),output.add(","),output.space()),this.visit(obj.stops),output.add(")")}},{key:"toSource",value:function(obj,output){return this.output=output||new Output,this.visit(obj),this.output.get()}}],[{key:"toSource",value:function(obj,output){var sb=new SourceBuilder;return sb.toSource(obj,output)}}]),SourceBuilder}(TypeVisitor);Fashion.apply(SourceBuilder.prototype,{output:null}),module.exports=SourceBuilder},{"../Base.js":19,"../Output.js":20,"./TypeVisitor.js":41}],38:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=require("./Type.js"),Text=require("./Text.js"),Numeric=require("./Numeric.js"),Bool=require("./Bool.js"),True=Bool.True,False=Bool.False,Literal=require("./Literal.js"),Null=Literal.Null;module.exports={unboxType:function(expression){var val=expression;return val&&val.$isFashionType&&val.$canUnbox&&(val=val.value,expression.$isFashionString||expression.$isFashionLiteral?"none"!==val&&"null"!==val||(val=null):expression.$isFashionList&&(val=expression.items)),val},boxType:function(expression){if(expression&&expression.$isFashionType)return expression;if(null==expression)return Null;if(expression===!0)return True;if(expression===!1)return False;var typeOf=void 0===expression?"undefined":_typeof(expression);switch(typeOf){case"string":return new Text(expression);case"number":return new Numeric(expression)}return expression}},Fashion.apply(Type,{box:module.exports.boxType,unbox:module.exports.unboxType})},{"../Base.js":19,"./Bool.js":24,"./Literal.js":32,"./Numeric.js":34,"./Text.js":39,"./Type.js":40}],39:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Literal=require("./Literal.js"),Text=function(_Literal2){function Text(value,quoteChar){_classCallCheck(this,Text);var _this34=_possibleConstructorReturn(this,(Text.__proto__||Object.getPrototypeOf(Text)).call(this,value));return void 0!==quoteChar&&(Text.preferDoubleQuotes&&""===quoteChar?_this34.quoteChar="":_this34.quoteChar=quoteChar),_this34}return _inherits(Text,_Literal2),_createClass(Text,[{key:"doVisit",value:function(visitor){visitor.string(this)}},{key:"toString",value:function(){return this.quoteChar+this.value+this.quoteChar}},{key:"unquote",value:function(){return new Literal(this.value)}},{key:"copy",value:function(){return new Text(this.value,this.quoteChar)}},{key:"slice",value:function(start,end){return new Text(_get(Text.prototype.__proto__||Object.getPrototypeOf(Text.prototype),"slice",this).call(this,start,end).value,this.quoteChar)}},{key:"toUpperCase",value:function(){return new Text(this.value.toUpperCase(),this.quoteChar)}},{key:"toLowerCase",value:function(){return new Text(this.value.toLowerCase(),this.quoteChar)}},{key:"insert",value:function(str,startVal){return new Text(_get(Text.prototype.__proto__||Object.getPrototypeOf(Text.prototype),"insert",this).call(this,str,startVal).value,this.quoteChar)}}],[{key:"tryCoerce",value:function(obj){if(!obj.$isFashionNumber)return new Text(obj.$isFashionLiteral?obj.value:obj.getHash())}}]),Text}(Literal);Text.preferDoubleQuotes=!1,Fashion.apply(Text.prototype,{type:"string",$isFashionString:!0,value:null,quoteChar:'"',"+":function(right){return new Text(this.value+right.getHash())},"+.number":function(right){return new Text(this.value+(""+right))},"/":function(right){return new Text(this.value+"/"+right.getHash())}}),module.exports=Text},{"../Base.js":19,"./Literal.js":32}],40:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),Type=function(){function Type(){_classCallCheck(this,Type)}return _createClass(Type,[{key:"coerce",value:function(obj){var converted=this.tryCoerce(obj);return converted||obj}},{key:"_getHash",value:function(){return this.visitTarget?""+this.visitTarget:""+this}},{key:"getHash",value:function(){return null==this._hash&&(this._hash=this._getHash()),this._hash}},{key:"tryCoerce",value:function(obj){var me=this;return me.constructor===obj.constructor?obj:me.constructor.tryCoerce?me.constructor.tryCoerce(obj):void 0}},{key:"supports",value:function(prefix){return!1}},{key:"operate",value:function(operation,right){return this.performOperation(operation,this.coerce(right))}},{key:"performOperation",value:function(operation,right){var method=this[operation+"."+right.type]||this[operation];method||Fashion.raise("Failed to find method for operation "+operation+" on type "+right.type+" with value "+right+".");var res=method.call(this,right);return res&&res.$isFashionType||(res=Type.box(res)),res}},{key:"==",value:function(right){return this.getHash()===right.getHash()}},{key:"!=",value:function(right){return this.getHash()!==right.getHash()}},{key:">=",value:function(right){return this.getHash()>=right.getHash()}},{key:"<=",value:function(right){return this.getHash()<=right.getHash()}},{key:">",value:function(right){return this.getHash()>right.getHash()}},{key:"<",value:function(right){return this.getHash()<right.getHash()}},{key:"+",value:function(right){return this.getHash()+right.getHash()}},{key:"copy",value:function(){return this}},{key:"matches",value:function(match){return!(!match||match!=""+this)}},{key:"clone",value:function(match,replace){if(replace&&this.matches(match))return replace.copy();var copy=this.copy();return copy.ast=this.ast,copy.$referenceName=this.$referenceName,copy.$referenceBase=this.$referenceBase,copy.$previousReference=this.$previousReference,copy}},{key:"unquote",value:function(){return this}},{key:"toPrefixedString",value:function(prefix){return""+this}},{key:"doVisit",value:function(visitor){}},{key:"descend",value:function(visitoir){}},{key:"hasTag",value:function(tag,prefix,enable,disable){prefix=prefix||"fashion",enable=enable||RegExp("^\\s*//#\\s*"+prefix+"\\s*\\+?"+tag+"s*$"),disable=disable||RegExp("^\\s*//#\\s*"+prefix+"\\s*\\-"+tag+"\\s*$");var docs=this.docs;if(docs&&docs.length)for(var d=0;d<this.docs.length;d++){var doc=docs[d];if(enable.test(doc))return!0;if(disable.test(doc))return!1}return this.parentNode?this.parentNode.hasTag(tag,prefix,enable,disable):null}},{key:"toDisplayString",value:function(){return"["+this.constructor.name+" : "+this+"]"}}]),Type}();Fashion.apply(Type.prototype,{visitTarget:void 0,$isFashionType:!0,$canUnbox:!0,$isFashionLiteral:!1,$isFashionNumber:!1,$isFashionString:!1,$isFashionBool:!1,$constant:!1,$referenceName:void 0,$referenceBase:void 0,$previousReference:void 0,value:void 0,unit:void 0,parentNode:void 0,docs:void 0,ast:void 0}),module.exports=Type},{"../Base.js":19}],41:[function(require,module,exports){"use strict";var Fashion=require("../Base.js"),TypeVisitor=function(){function TypeVisitor(cfg){_classCallCheck(this,TypeVisitor),cfg&&Fashion.apply(this,cfg)}return _createClass(TypeVisitor,[{key:"literal",value:function(obj){obj.descend(this)}},{key:"bool",value:function(obj){obj.descend(this)}},{key:"string",value:function(obj){obj.descend(this)}},{key:"number",value:function(obj){obj.descend(this)}},{key:"map",value:function(obj){obj.descend(this)}},{key:"functioncall",value:function(obj){obj.descend(this)}},{key:"parenthetical",value:function(obj){obj.descend(this)}},{key:"list",value:function(obj){obj.descend(this)}},{key:"hsla",value:function(obj){obj.descend(this)}},{key:"rgba",value:function(obj){obj.descend(this)}},{key:"colorstop",value:function(obj){obj.descend(this)}},{key:"lineargradient",value:function(obj){obj.descend(this)}},{key:"radialgradient",value:function(obj){obj.descend(this)}},{key:"visitItem",value:function(obj){obj.doVisit(this)}},{key:"visit",value:function(obj){for(;obj&&void 0!==obj.visitTarget;)obj=obj.visitTarget;if(obj)if(Array.isArray(obj))for(var i=0;i<obj.length;i++)this.visit(obj[i]);else this.visitItem(obj)}},{key:"execute",value:function(obj,context){this.visit(obj)}}]),TypeVisitor}();TypeVisitor.prototype.context=null,module.exports=TypeVisitor},{"../Base.js":19}],42:[function(require,module,exports){"use strict";var Bool=require("./Bool.js"),Literal=require("./Literal.js"),Types={Bool:Bool,Literal:Literal,Text:require("./Text.js"),Numeric:require("./Numeric.js"),Color:require("./Color.js"),ColorRGBA:require("./ColorRGBA.js"),ColorHSLA:require("./ColorHSLA.js"),ColorStop:require("./ColorStop.js"),LinearGradient:require("./LinearGradient.js"),RadialGradient:require("./RadialGradient.js"),List:require("./List.js"),Map:require("./Map.js"),ParentheticalExpression:require("./ParentheticalExpression.js"),FunctionCall:require("./FunctionCall.js"),Null:Literal.Null,None:Literal.None,True:Bool.True,False:Bool.False};module.exports=Types},{"./Bool.js":24,"./Color.js":25,"./ColorHSLA.js":26,"./ColorRGBA.js":27,"./ColorStop.js":28,"./FunctionCall.js":29,"./LinearGradient.js":30,"./List.js":31,"./Literal.js":32,"./Map.js":33,"./Numeric.js":34,"./ParentheticalExpression.js":35,"./RadialGradient.js":36,"./Text.js":39}],43:[function(require,module,exports){
"use strict";var Color=require("../export/type/Color.js");module.exports={init:function(runtime){runtime.register({adjust_color:function(color,red,green,blue,hue,saturation,lightness,alpha){var adjusted=color.getRGBA().copy(),adjust=Color.adjust,comps=Color.comps;return red&&(adjusted[comps.red]+=red.value),blue&&(adjusted[comps.blue]+=blue.value),green&&(adjusted[comps.green]+=green.value),adjusted[comps.red]=Math.max(0,Math.min(adjusted[comps.red],255)),adjusted[comps.blue]=Math.max(0,Math.min(adjusted[comps.blue],255)),adjusted[comps.green]=Math.max(0,Math.min(adjusted[comps.green],255)),alpha&&(adjusted[comps.alpha]=Math.max(0,Math.min(1,adjusted[comps.alpha]+alpha.value))),hue&&(adjusted=adjust(adjusted,"hue",hue)),lightness&&(adjusted=adjust(adjusted,"lightness",lightness)),saturation&&(adjusted=adjust(adjusted,"saturation",saturation)),adjusted},scale_color:function(){},change_color:function(color,red,green,blue,hue,saturation,lightness,alpha){var adjusted=color.getRGBA().clone(),comps=(Color.adjust,Color.comps);return red&&(adjusted[comps.red]=red.value),blue&&(adjusted[comps.blue]=blue.value),green&&(adjusted[comps.green]=green.value),adjusted[comps.red]=Math.max(0,Math.min(adjusted[comps.red],255)),adjusted[comps.blue]=Math.max(0,Math.min(adjusted[comps.blue],255)),adjusted[comps.green]=Math.max(0,Math.min(adjusted[comps.green],255)),alpha&&(adjusted[comps.alpha]=Math.max(0,Math.min(1,alpha.value))),hue&&(adjusted=adjusted.getHSLA())&&(adjusted.h=hue.value),lightness&&(adjusted=adjusted.getHSLA())&&(adjusted.l=lightness.value),saturation&&(adjusted=adjusted.getHSLA())&&(adjusted.s=saturation.value),adjusted},ie_hex_str:function(color){if("hsla"!==color.type&&"rgba"!==color.type)throw color+" is not a color for 'ie-hex-str'";return color.toIeHexStr()}})}}},{"../export/type/Color.js":25}],44:[function(require,module,exports){"use strict";var LinearGradient=require("../export/type/LinearGradient.js"),RadialGradient=require("../export/type/RadialGradient.js"),List=require("../export/type/List.js"),ColorStop=require("../export/type/ColorStop.js");module.exports={init:function(runtime){runtime.register({linear_gradient:function(position,stops){return stops=this.tailArgs(1,arguments),stops&&1===stops.length&&(stops=stops[0]),"list"===position.type&&("rgba"===position.get(1).type||"hsla"===position.get(1).type)||"hsla"===position.type||"rgba"===position.type?(stops=this.color_stops.apply(this,arguments),position=null):"list"==position.type&&"colorstop"==position.get(1).type?(stops=position,position=null):stops="hsla"===stops.type||"rgba"===stops.type?this.color_stops.call(this,new List([stops])):this.color_stops.call(this,stops),new LinearGradient(position,stops)},radial_gradient:function(position,shape,stops){return stops=this.tailArgs(2,arguments),stops&&1===stops.length&&(stops=stops[0]),"list"===position.type&&("rgba"===position.get(1).type||"hsla"===position.get(1).type)||"hsla"===position.type||"rgba"===position.type?(stops=this.color_stops.apply(this,arguments),position=null):"list"==position.type&&"colorstop"==position.get(1).type?(stops=position,position=null):"list"===shape.type&&("rgba"===shape.get(1).type||"hsla"===shape.get(1).type)||"hsla"===shape.type||"rgba"===shape.type?(stops=this.color_stops.apply(this,arguments),shape=null):"list"==shape.type&&"colorstop"==shape.get(1).type?(stops=shape,shape=null):stops="hsla"===stops.type||"rgba"===stops.type?this.color_stops.call(this,new List([stops])):this.color_stops.call(this,stops),new RadialGradient(position,shape,stops)},color_stops:function(){var i,arg,args=this.tailArgs(0,arguments),mapped=this.handleArgs(args&&args.items||args,[["stops"]]),stops=mapped.stops.items,ln=stops.length,list=new List(null,", ");for(i=0;i<ln;i++)arg=stops[i],"list"===arg.type?2===arg.items.length?list.add(new ColorStop(arg.get(1),arg.get(2))):list.items.push.apply(list.items,arg.items):"rgba"===arg.type||"hsla"===arg.type?list.add(new ColorStop(arg)):Array.isArray(arg)?list.items.push.apply(list.items,arg):list.add(arg);return list}})}}},{"../export/type/ColorStop.js":28,"../export/type/LinearGradient.js":30,"../export/type/List.js":31,"../export/type/RadialGradient.js":36}],45:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Color=require("../export/type/Color.js"),ColorRGBA=require("../export/type/ColorRGBA.js"),ColorHSLA=require("../export/type/ColorHSLA.js"),Numeric=require("../export/type/Numeric.js"),Literal=require("../export/type/Literal.js");module.exports={init:function(runtime){runtime.register({hsla:function(hue,saturation,lightness,alpha){return 4!=arguments.length&&Fashion.raise("Wrong number of arguments ("+arguments.length+" for 4) for 'hsla'"),hue.$isFashionNumber||Fashion.raise(hue+" is not a number for 'hsla'"),saturation.$isFashionNumber||Fashion.raise(saturation+" is not a number for 'hsla'"),lightness.$isFashionNumber||Fashion.raise(lightness+" is not a number for 'hsla'"),alpha.$isFashionNumber||Fashion.raise(alpha+" is not a number for 'hsla'"),saturation.value!==Color.constrainPercentage(saturation.value)&&Fashion.raise("Saturation "+saturation+" must be between 0% and 100% for 'hsla'"),lightness.value!==Color.constrainPercentage(lightness.value)&&Fashion.raise("Lightness "+lightness+" must be between 0% and 100% for 'hsla'"),alpha.value!==Color.constrainAlpha(alpha.value)&&Fashion.raise("Alpha channel "+alpha+" must be between 0 and 1 for 'hsla'"),new ColorHSLA(hue.value,saturation.value,lightness.value,alpha.value)},hsl:function(hue,saturation,lightness){var len=arguments.length;return 3!=len&&Fashion.raise("Wrong number of arguments ("+len+" for 3) for 'hsl'"),this.hsla(hue,saturation,lightness,new Numeric(1))},hue:function(color){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'hue'"),Color.component(color,"hue"))},saturation:function(color){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'saturation'"),Color.component(color,"saturation"))},lightness:function(color){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'lightness'"),Color.component(color,"lightness"))},adjust_hue:function(color,degrees){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'adjust-hue'"),"number"!==degrees.type&&Fashion.raise(degrees+" is not a number for 'adjust-hue'"),Color.adjust(color,"hue",degrees))},lighten:function(color,amount){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'lighten'"),"number"!==amount.type&&Fashion.raise(amount+" is not a number for 'lighten'"),amount.value!==Color.constrainPercentage(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0% and 100% for 'lighten'"),Color.adjust(color,"lightness",amount))},darken:function(color,amount){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'darken'"),"number"!==amount.type&&Fashion.raise(amount+" is not a number for 'darken'"),amount.value!==Color.constrainPercentage(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0% and 100% for 'darken'"),amount=amount.clone(),amount.value*=-1,Color.adjust(color,"lightness",amount))},saturate:function(color,amount){return null==color||color.$isFashionNull?Literal.Null:amount?("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'saturate'"),"number"!==amount.type&&Fashion.raise(amount+" is not a number for 'saturate'"),amount.value!==Color.constrainPercentage(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0% and 100% for 'saturate'"),Color.adjust(color,"saturation",amount)):new Literal("saturate("+color+")")},desaturate:function(color,amount){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'desaturate'"),"number"!==amount.type&&Fashion.raise(amount+" is not a number for 'desaturate'"),amount.value!==Color.constrainPercentage(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0% and 100% for 'desaturate'"),amount.value*=-1,Color.adjust(color,"saturation",amount))},grayscale:function(color){return null==color||color.$isFashionNull?Literal.Null:color.$isFashionNumber?new Literal("grayscale("+color+")"):("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'grayscale'"),this.desaturate(color,new Numeric(100,"%")))},complement:function(color){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'complement'"),this.adjust_hue(color,new Numeric(180,"deg")))},invert:function(color){return null==color||color.$isFashionNull?Literal.Null:color.$isFashionNumber?new Literal("invert("+color+")"):("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'invert'"),color=color.getRGBA(),new ColorRGBA(255-color.r,255-color.g,255-color.b,color.a))}})}}},{"../export/Base.js":19,"../export/type/Color.js":25,"../export/type/ColorHSLA.js":26,"../export/type/ColorRGBA.js":27,"../export/type/Literal.js":32,"../export/type/Numeric.js":34}],46:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Literal=require("../export/type/Literal.js"),Text=require("../export/type/Text.js"),Bool=require("../export/type/Bool.js");module.exports={init:function(runtime){runtime.register({type_of:function(value){return new Literal(value===!0||value===!1?"bool":value===Literal.Null?"null":"hsla"==value.type||"rgba"==value.type?"color":"literal"==value.type||"string"==value.type?"string":value.type)},unit:function(number){return number.$isFashionNumber||Fashion.raise(number+" is not a number for 'unit'"),new Text(number.getUnitStr()||"")},unitless:function(number){return"number"!=number.type&&Fashion.raise(number+" is not a number for 'unitless'"),new Bool((!number.unit))},strip_unit:function(a){if(!a||!a.$isFashionNumber){var val=a?a.toDisplayString():"[null]";Fashion.raise(val+" is not a number for 'strip-unit'")}return new Fashion.Numeric(a.value)},comparable:function(number_1,number_2){return"number"!=number_1.type&&Fashion.raise(number_1+" is not a number for 'comparable'"),"number"!=number_2.type&&Fashion.raise(number_2+" is not a number for 'comparable'"),new Bool((!!number_1.comparable(number_2)))},variable_exists:function(name){var nameStr=name;(name.$isFashionString||name.$isFashionLiteral)&&(nameStr=name.value),nameStr=Fashion.getJsName(nameStr),0!==nameStr.indexOf("$")&&(nameStr="$"+nameStr);var scope=this.getRuntime().getCurrentScope();return!!scope.get(nameStr)},global_variable_exists:function(name){var nameStr=name;(name.$isFashionString||name.$isFashionLiteral)&&(nameStr=name.value),nameStr=Fashion.getJsName(nameStr),0!==nameStr.indexOf("$")&&(nameStr="$"+nameStr);var scope=this.getRuntime().getGlobalScope();return!!scope.get(nameStr)},function_exists:function(name){var nameStr=name;(name.$isFashionString||name.$isFashionLiteral)&&(nameStr=name.value),nameStr=Fashion.getJsName(nameStr);var extensions=this.getRuntime().getRegisteredFunctions(),functions=this.getRuntime().getFunctions();return nameStr in extensions||nameStr in functions},mixin_exists:function(name){var nameStr=name;(name.$isFashionString||name.$isFashionLiteral)&&(nameStr=name.value),nameStr=Fashion.getJsName(nameStr);var mixins=this.getRuntime().getMixins();return nameStr in mixins},call:function(name){name&&name.$isFashionLiteral||Fashion.raise(name+" is not a string or literal for 'call'");var args=this.sliceArgs(arguments,1),runtime=this.getRuntime(),functions=runtime.getFunctions(),extensions=runtime.getRegisteredFunctions(),funcName=getJsName(name.value);return functions[funcName]?functions[funcName].apply(functions,args):extensions[funcName]?extensions[funcName].apply(this,args):Literal.Null}})}}},{"../export/Base.js":19,"../export/type/Bool.js":24,"../export/type/Literal.js":32,"../export/type/Text.js":39}],47:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Numeric=require("../export/type/Numeric.js"),List=require("../export/type/List.js");module.exports={init:function(runtime){runtime.register({length:function(list){return new Numeric("list"!==list.type?arguments.length:list.items.length)},nth:function(list,index){"list"!==list.type&&(list=new List([list])),"number"==index.type&&index.value.toFixed(0)==index.value||Fashion.raise("List index "+index+" must be an integer for 'nth'");var value=index.value;return value<0&&(value=Math.max(1,list.items.length+value+1)),0===value&&Fashion.raise("List index "+value+" must be greater than or equal to 1 for 'nth'"),value-1>=list.items.length&&Fashion.raise("List index is "+value+" but list is only "+list.items.length+" item"+(1===list.items.length?"":"s")+" long for 'nth'"),list.get(value)},first_value_of:function(list){return"list"!==list.type&&(list=new List([list])),this.nth(list,new Numeric(1))},last_value_of:function(list){return"list"!==list.type&&(list=new List(list)),this.nth(list,new Numeric(list.items.length))},compact:function(){var items,list=arguments,sep=", ";"list"!==list.type&&(list=new List(list)),items=list.items,1==items.length&&"list"==items[0].type&&(list=items[0],items=list.items,sep=list.separator),list=new List(null,sep);for(var i=0;i<items.length;i++){var item=items[i];this.unbox(item)&&list.add(item)}return list},_compass_list_size:function(){var list=arguments;return"list"!==list.type&&(list=new List(list)),new Numeric(list.items.length)},join:function(list1,list2,separator){if("list"!==list1.type&&(list1=new List([list1]),list1.separator=null),"list"!==list2.type&&(list2=new List([list2]),list2.separator=null),separator||(separator=list1.items.length&&list1.separator||list2.items.length&&list2.separator||" "),"literal"===separator.type)switch(separator.value){case"comma":separator=", ";break;case"space":separator=" ";break;case"auto":separator=list1.separator||list2.separator||" ";break;default:Fashion.raise("Separator name must be space, comma, or auto for 'join'")}return"string"===separator.type&&(separator=separator.value),new List(list1.items.concat(list2.items),separator)},append:function(){return this.join.apply(this,arguments)},box:function(list,index){if(list instanceof List||(list=new List([list])),list=list.items.slice(),index>=list.length)switch(list.length){case 1:list[1]=list[2]=list[3]=list[0];break;case 2:list[2]=list[0],list[3]=list[1];break;case 3:list[3]=list[1]}return list[index-1]},zip:function(){for(var list,lists=this.sliceArgs(arguments),output=[],minLen=-1,i=0;i<lists.length;i++)list=lists[i].items,minLen===-1?minLen=list.length:list.length<minLen&&(minLen=list.length);for(var i=0;i<minLen;i++){for(var newList=[],j=0;j<lists.length;j++)newList.push(lists[j].items[i]);output.push(new List(newList," "))}return new List(output,", ")}})}}},{"../export/Base.js":19,"../export/type/List.js":31,"../export/type/Numeric.js":34}],48:[function(require,module,exports){"use strict";var Literal=require("../export/type/Literal.js"),Bool=require("../export/type/Bool.js");module.exports={init:function(runtime){runtime.register({__if:function(condition,if_true,if_false){return this.unbox(condition)?if_true:if_false},theme_image:function(theme,file){return new Literal('url("resources/images/'+theme.value+"/"+file.value+'")')},prefixed:function(prefix,items){if(arguments.length>2&&(items=Array.prototype.slice.call(arguments,1)),prefix=this.unbox(prefix),0===prefix.indexOf("-")&&(prefix=prefix.substring(1)),Array.isArray(items)){var i,arg,ln=items.length;for(i=0;i<ln;i++)if(arg=items[i],arg.supports&&arg.supports(prefix))return Bool.True}else if(items.supports&&items.supports(prefix))return Bool.True;return Bool.False},_owg:function(value){return new Literal(value.toPrefixedString("owg"))},_webkit:function(value){return new Literal(value.toPrefixedString("-webkit-"))},_o:function(value){return new Literal(value.toPrefixedString("-o-"))},_moz:function(value){return new Literal(value.toPrefixedString("-moz-"))}})}}},{"../export/type/Bool.js":24,"../export/type/Literal.js":32}],49:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Numeric=require("../export/type/Numeric.js"),Literal=require("../export/type/Literal.js");module.exports={init:function(runtime){runtime.register({percentage:function(value){return null==value||value.$isFashionNull?Literal.Null:(("number"!=value.type||value.getUnitStr())&&Fashion.raise(value+" is not a unitless number for 'percentage'"),new Numeric(100*value.value,"%"))},round:function(value){return null==value||value.$isFashionNull?Literal.Null:("number"!==value.type&&Fashion.raise(value+" is not a number for 'round'"),new Numeric(Math.round(value.value),value.unit))},ceil:function(value){return null==value||value.$isFashionNull?Literal.Null:("number"!==value.type&&Fashion.raise(value+" is not a number for 'ceil'"),new Numeric(Math.ceil(value.value),value.unit))},floor:function(value){return null==value||value.$isFashionNull?Literal.Null:("number"!==value.type&&Fashion.raise(value+" is not a number for 'floor'"),new Numeric(Math.floor(value.value),value.unit))},abs:function(value){return null==value||value.$isFashionNull?Literal.Null:("number"!==value.type&&Fashion.raise(value+" is not a number for 'abs'"),new Numeric(Math.abs(value.value),value.unit))},min:function min(){var arg,i,min,args=this.sliceArgs(arguments);for(i=0;i<args.length;i++){if(arg=args[i],null==arg||arg.$isFashionNull)return Literal.Null;arg&&arg.$isFashionNumber||Fashion.raise(arg+" is not a number for 'min'"),min&&!this.unbox(arg.operate("<",min))||(min=arg)}return min&&min.copy()},max:function max(a,b){var arg,i,max,args=this.sliceArgs(arguments);for(i=0;i<args.length;i++){if(arg=args[i],null==arg||arg.$isFashionNull)return Literal.Null;arg&&arg.$isFashionNumber||Fashion.raise(arg+" is not a number for 'max'"),max&&!this.unbox(arg.operate(">",max))||(max=arg)}return max&&max.copy()}})}}},{"../export/Base.js":19,"../export/type/Literal.js":32,"../export/type/Numeric.js":34}],50:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Literal=require("../export/type/Literal.js"),Color=require("../export/type/Color.js"),Numeric=require("../export/type/Numeric.js");module.exports={init:function(runtime){runtime.register({alpha:function(color){return color&&color.$isFashionNumber?new Literal("alpha("+color+")"):(color=Array.isArray(color)?color[0]:color,color&&color.$isFashionLiteral?color:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'alpha'"),Color.component(color,"alpha")))},opacity:function(color){return color&&color.$isFashionNumber?new Literal("opacity("+color+")"):(color=Array.isArray(color)?color[0]:color,color&&color.$isFashionLiteral?color:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'opacity'"),Color.component(color,"alpha")))},opacify:function(color,amount){"hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'opacify'"),"number"!==amount.type&&Fashion.raise(amount+" is not a number for 'opacify'"),"%"==amount.unit?(amount.value!==Color.constrainPercentage(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0% and 100% for 'opacify'"),amount=new Numeric(amount.value/100)):amount.value!==Color.constrainAlpha(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0 and 1 for 'opacify'");var rgba=color.getRGBA().clone();return rgba.a=Math.min((100*rgba.a+100*amount.value)/100,1),rgba},transparentize:function(color,amount){"hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'transparentize'"),"number"!==amount.type&&Fashion.raise(amount+" is not a number for 'transparentize'"),"%"==amount.unit?(amount.value!==Color.constrainPercentage(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0% and 100% for 'transparentize'"),amount=new Numeric(amount.value/100)):amount.value!==Color.constrainAlpha(amount.value)&&Fashion.raise("Amount "+amount+" must be between 0 and 1 for 'transparentize'");var rgba=color.getRGBA().clone();return rgba.a=Math.max((100*rgba.a-100*amount.value)/100,0),rgba},fade_in:function(color,amount){return this.opacify(color,amount)},fade_out:function(color,amount){return this.transparentize(color,amount)}})}}},{"../export/Base.js":19,"../export/type/Color.js":25,"../export/type/Literal.js":32,"../export/type/Numeric.js":34}],51:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Literal=require("../export/type/Literal.js"),Color=require("../export/type/Color.js"),ColorRGBA=require("../export/type/ColorRGBA.js"),Numeric=require("../export/type/Numeric.js");module.exports={init:function(runtime){runtime.register({rgba:function(red,green,blue,alpha,color){var colorInst;if(red&&color&&Fashion.raise("Unsupported arguments to RGBA"),color&&!red?color.$isFashionColor?colorInst=color:Fashion.raise("Unsupported arguments to RGBA"):red&&red.$isFashionColor&&(colorInst=red),colorInst&&(alpha=green||alpha,colorInst=colorInst.getRGBA(),red=new Numeric(colorInst.r),green=new Numeric(colorInst.g),blue=new Numeric(colorInst.b)),!red||!red.$isFashionNumber){if(null==red||red.$isFashionNull)return Literal.Null;Fashion.raise(red+" is not a number for 'rgba' red")}if(!green||!green.$isFashionNumber){if(null==green||green.$isFashionNull)return Literal.Null;Fashion.raise(green+" is not a number for 'rgba' green")}if(!blue||!blue.$isFashionNumber){if(null==blue||blue.$isFashionNull)return Literal.Null;Fashion.raise(blue+" is not a number for 'rgba' blue")}if(!alpha||!alpha.$isFashionNumber){if(null==alpha||alpha.$isFashionNull)return Literal.Null;Fashion.raise(alpha+" is not a number for 'rgba' alpha")}return"%"==red.unit?red=new Numeric(Color.constrainPercentage(red.value)/100*255):red.value!==Color.constrainChannel(red.value)&&Fashion.raise("Color value "+red+" must be between 0 and 255 inclusive for 'rgba'"),"%"==green.unit?green=new Numeric(Color.constrainPercentage(green.value)/100*255):green.value!==Color.constrainChannel(green.value)&&Fashion.raise("Color value "+green+" must be between 0 and 255 inclusive for 'rgba'"),"%"==blue.unit?blue=new Numeric(Color.constrainPercentage(blue.value)/100*255):blue.value!==Color.constrainChannel(blue.value)&&Fashion.raise("Color value "+blue+" must be between 0 and 255 inclusive for 'rgba'"),"%"==alpha.unit?alpha=new Numeric(Color.constrainPercentage(alpha.value)/100):alpha.value!==Color.constrainAlpha(alpha.value)&&Fashion.raise("Alpha channel "+alpha+" must be between 0 and 1 inclusive for 'rgba'"),new ColorRGBA(red.value,green.value,blue.value,alpha.value)},rgb:function(red,green,blue,color){return this.rgba(red,green,blue,new Numeric(1),color)},red:function(color){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'red'"),Color.component(color,"red"))},green:function(color){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'green'"),Color.component(color,"green"))},blue:function(color){return null==color||color.$isFashionNull?Literal.Null:("hsla"!==color.type&&"rgba"!==color.type&&Fashion.raise(color+" is not a color for 'blue'"),Color.component(color,"blue"))},mix:function(color_1,color_2,weight){if(null==color_1||color_1.$isFashionNull)return Literal.Null;if(null==color_2||color_2.$isFashionNull)return Literal.Null;weight=void 0!==weight?weight:new Numeric(50,"%"),"hsla"!==color_1.type&&"rgba"!==color_1.type&&Fashion.raise("arg 1 "+color_1+" is not a color for 'mix'"),"hsla"!==color_2.type&&"rgba"!==color_2.type&&Fashion.raise("arg 2 "+color_2+" is not a color for 'mix'"),"number"!==weight.type&&Fashion.raise("arg 3 "+weight+" is not a number for 'mix'"),weight.value!==Color.constrainPercentage(weight.value)&&Fashion.raise("Weight "+weight+" must be between 0% and 100% for 'mix'"),color_1=color_1.getRGBA(),color_2=color_2.getRGBA(),weight=weight.value/100;var factor=2*weight-1,alpha=color_1.a-color_2.a,weight1=((factor*alpha==-1?factor:(factor+alpha)/(1+factor*alpha))+1)/2,weight2=1-weight1;return new ColorRGBA(weight1*color_1.r+weight2*color_2.r,weight1*color_1.g+weight2*color_2.g,weight1*color_1.b+weight2*color_2.b,weight*color_1.a+(1-weight)*color_2.a)}})}}},{"../export/Base.js":19,"../export/type/Color.js":25,"../export/type/ColorRGBA.js":27,"../export/type/Literal.js":32,"../export/type/Numeric.js":34}],52:[function(require,module,exports){"use strict";var Text=require("../export/type/Text.js");module.exports={init:function(runtime){runtime.register({headers:function headers(from,to){var fromVal,toVal,h,headers=[];for(from.$isFashionLiteral&&"all"==from.value?(fromVal=1,toVal=6):(fromVal=this.unbox(from),toVal=this.unbox(to)),h=fromVal;h<toVal+1;h++)headers.push("h"+h);return new Text(headers.join(", "))},headings:function(from,to){return this.headers(from,to)}})}}},{"../export/type/Text.js":39}],53:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Text=require("../export/type/Text.js"),Literal=require("../export/type/Literal.js"),Numeric=require("../export/type/Numeric.js");module.exports={init:function(runtime){runtime.register({quote:function(string){return string.$isFashionString||string.$isFashionLiteral||Fashion.raise(string+" is not a string or literal for 'quote'"),new Text(string.value)},unquote:function(string){return string.$isFashionString?new Literal(Literal.deEscape(string.value)):string},str_slice:function(string,start_at,end_at){return string.$isFashionLiteral||string.$isFashionString||Fashion.raise(string+" is not a string or literal for 'str-slice'"),string.slice(start_at,end_at)},str_length:function(string){return string.$isFashionLiteral||string.$isFashionString||Fashion.raise(string+" is not a string or literal for 'str-slice'"),new Numeric(string.value.length)},to_upper_case:function(string){return string.$isFashionLiteral||string.$isFashionString||Fashion.raise(string+" is not a string or literal for 'to-lower-case'"),string.toUpperCase()},to_lower_case:function(string){return string.$isFashionLiteral||string.$isFashionString||Fashion.raise(string+" is not a string or literal for 'to-lower-case'"),string.toLowerCase()},str_index:function(string,substring){return string.$isFashionLiteral||string.$isFashionString||Fashion.raise(string+" is not a string or literal for 'str-insert'"),substring.$isFashionLiteral||substring.$isFashionString||Fashion.raise(substring+" is not a string or literal for 'str-insert'"),string.indexOf(substring)},str_insert:function(string,insert,index){return string.$isFashionLiteral||string.$isFashionString||Fashion.raise(string+" is not a string or literal for 'str-insert'"),insert.$isFashionLiteral||insert.$isFashionString||Fashion.raise(insert+" is not a string or literal for 'str-insert'"),string.insert(insert,index)}})}}},{"../export/Base.js":19,"../export/type/Literal.js":32,"../export/type/Numeric.js":34,"../export/type/Text.js":39}],54:[function(require,module,exports){"use strict";var Map=require("../export/type/Map.js"),Literal=require("../export/type/Literal.js"),Text=require("../export/type/Text.js"),List=require("../export/type/List.js"),Bool=require("../export/type/Bool.js"),Env=require("../Env.js");module.exports={init:function(runtime){runtime.register({parsebox:function(list,num){if(null==list||list.$isFashionNull)return Literal.Null;var ret,size,i,actual=[];for(num=this.unbox(num),"list"===list.type&&(list=list.items),this.isArray(list)||(list=[list]),size=list.length,i=0;i<size;i++)actual.push(list[i]);return num>=size&&(1===size?(actual.push(list[0]),actual.push(list[0]),actual.push(list[0])):2===size?(actual.push(list[0]),actual.push(list[1])):3===size&&actual.push(list[1])),ret=actual[num-1]},is_null:function(value){if(value===Literal.Null)return!0;switch(value.type){case"string":case"literal":return value=value.value,"null"==value||"none"==value||null===value;default:return!1}},file_join:function(value1,value2){value1=this.unbox(value1),value2=this.unbox(value2);var joined=value1?value1+"/"+value2:value2;return new Text(joined,"")},theme_image_exists:function(directory,path){directory=directory.value,path=path.value;var fullPath=Env.join(directory,path);return!!Env.isBrowser||Env.exists(fullPath)},map_create:function(){return new Map},map_put:function(map,key,value){map.put(key,value)},map_get:function(map,key){return map.get(key)},map_merge:function(map1,map2){var ret=new Fashion.Map(map1&&map1.items&&[].concat(map1.items));if(map2)for(var items=map2.items,i=0;i<items.length;i+=2){var key=items[i],value=items[i+1];key&&value&&ret.put(items[i],items[i+1])}return ret},map_remove:function(map,key){map&&map.$isFashionMap&&map.remove(key)},map_keys:function(map){if(map&&map.$isFashionMap)return new List(map.getKeys(),", ")},map_values:function(map){if(map&&map.$isFashionMap)return new List(map.getValues(),", ")},map_has_key:function(map,key){return map&&map.$isFashionMap&&map.hasKey(key)?Bool.True:Bool.False}})}}},{"../Env.js":9,"../export/type/Bool.js":24,"../export/type/List.js":31,"../export/type/Literal.js":32,"../export/type/Map.js":33,"../export/type/Text.js":39}],55:[function(require,module,exports){"use strict";function debug(message){}var Fashion=require("../export/Base.js"),Base=Fashion.Base,Scanner=require("./Scanner.js"),EOF=Scanner.EOF,Nodes=require("../parse/ast/Nodes.js"),Each=Nodes.Each,For=Nodes.For,While=Nodes.While,Charset=Nodes.Charset,FunctionNode=Nodes.Function,Ruleset=Nodes.Ruleset,Mixin=Nodes.Mixin,Block=Nodes.Block,Include=Nodes.Include,Assignment=Nodes.Assignment,Declaration=Nodes.Declaration,VariableAssignment=Nodes.VariableAssignment,If=Nodes.If,Else=Nodes.Else,Return=Nodes.Return,Parenthetical=Nodes.Parenthetical,SelectorPart=Nodes.SelectorPart,SelectorProperty=Nodes.SelectorProperty,CompoundSelector=Nodes.CompoundSelector,MultiPartSelector=Nodes.MultiPartSelector,SelectorList=Nodes.SelectorList,BinaryExpression=Nodes.BinaryExpression,UnaryExpression=Nodes.UnaryExpression,Variable=Nodes.Variable,Literal=Nodes.Literal,Number=Nodes.Number,String=Nodes.String,Length=Nodes.Length,Time=Nodes.Time,Angle=Nodes.Angle,Percentage=Nodes.Percentage,Color=Nodes.Color,FunctionCall=Nodes.FunctionCall,Extend=Nodes.Extend,List=Nodes.List,Warn=Nodes.Warn,Error=Nodes.Error,Debug=Nodes.Debug,Import=Nodes.Import,Require=Nodes.Require,Content=Nodes.Content,Debugger=Nodes.Debugger,Parser=function(_Base9){function Parser(lax){_classCallCheck(this,Parser);var _this35=_possibleConstructorReturn(this,(Parser.__proto__||Object.getPrototypeOf(Parser)).call(this));return _this35.lax=lax,Fashion.apply(_this35,{isSelector:!1,isParenthetical:!1,isSelectorPart:!1}),_this35}return _inherits(Parser,_Base9),_createClass(Parser,[{key:"nextValueIs",value:function(val,offset){var next=this.scanner.peek(offset);return next&&next.value===val}},{key:"parseConstant",value:function(){var scanner=this.scanner,t=scanner.peek();if(t===EOF||!t.isOperator){if(t.isNumber){if(t=scanner.next(),t.value.indexOf("\\")>-1){var t2=scanner.peek();if(t2.isNumber)return scanner.next(),new Literal(t,t1.value+t2.value)}return new Number(t)}return t.isString?(t=scanner.next(),new String(t)):t.isLength?(t=scanner.next(),new Length(t)):t.isTime?(t=scanner.next(),new Time(t)):t.isAngle?(t=scanner.next(),new Angle(t)):t.isPercentage?(t=scanner.next(),new Percentage(t)):t.isHash?(t=scanner.next(),new Color(t)):void 0;
}}},{key:"parseStylesheet",value:function(){for(var stat,statements=[];;){if(stat=this.parseStatement(),!stat)break;statements.push(stat)}return statements}},{key:"parseStatement",value:function(){var stat,me=this,scanner=me.scanner,t=scanner.peek();if(t!==EOF){if(t.isVariable)return me.parseVariableAssignment();if(t.isDirective&&"-"!==t.value[1])return stat=me.parseDirective(),t=scanner.peek(),t!==EOF&&t.isOperator&&";"===t.value&&scanner.next(),stat;if(t.isIdent){var start=t.startIdx,line=t.startLine,fn=me.parseFunctionCall();if(t=scanner.peek(),fn&&";"===t.value)return scanner.next(),fn;scanner.lineNumber=line,scanner.setIndex(start)}return me.parseRuleset()}}},{key:"parseDirective",value:function(){var me=this,scanner=me.scanner,t=scanner.peek();return"@charset"===t.value?me.parseCharset():"@debug"===t.value?me.parseDebug():"@each"===t.value?me.parseEach():"@for"===t.value?me.parseFor():"@function"===t.value?me.parseFunction():"@if"===t.value?me.parseIf():"@elseif"===t.value?me.parseElse():"@else"===t.value?me.parseElse():"@extend"===t.value?me.parseExtend():"@import"===t.value?me.parseImport():"@require"===t.value?me.parseRequire():"@debugger"===t.value?me.parseDebugger():"@content"===t.value?me.parseContent():"@mixin"===t.value?me.parseMixin():"@include"===t.value?me.parseInclude():"@return"===t.value?me.parseReturn():"@while"===t.value?me.parseWhile():"@warn"===t.value?me.parseWarn():"@error"===t.value?me.parseError():void Fashion.raiseAt("Unknown directive "+t.value,scanner)}},{key:"parseFunction",value:function(){var t,func,statements,me=this,scanner=me.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@function"===t.value)return func=me.parseFunctionCall(!0),statements=me.parseBlock().statements,new FunctionNode({func:func,statements:statements,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}},{key:"parseCharset",value:function(){var t,charset,me=this,scanner=me.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@charset"===t.value){if(t=scanner.next(),t!==EOF&&t.isString)return charset=t.value,new Charset({charset:charset,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile});Fashion.raiseAt("Expected a string after @charset",scanner)}}},{key:"parseDebug",value:function(){var t,expr,me=this,scanner=me.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@debug"===t.value){if(expr=me.parseExpression())return new Debug({expr:expr,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile});Fashion.raiseAt("Expected an expression after @debug",scanner)}}},{key:"parseWarn",value:function(){var t,expr,me=this,scanner=me.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@warn"===t.value){if(expr=me.parseExpression())return new Warn({expr:expr,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile});Fashion.raiseAt("Expected an expression after @debug",scanner)}}},{key:"parseError",value:function(){var t,expr,me=this,scanner=me.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@error"===t.value){if(expr=me.parseExpression())return new Error({expr:expr,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile});Fashion.raiseAt("Expected an expression after @debug",scanner)}}},{key:"parseEach",value:function(){var t,id,seq,stat,isMap,me=this,scanner=me.scanner,statements=[];if(t=scanner.next(),t!==EOF&&t.isDirective&&"@each"===t.value){for(t=scanner.next(),t!==EOF&&t.isVariable||Fashion.raiseAt("Expected variable name after @each",scanner),id=t.value,t=scanner.next(),t!==EOF&&","===t.value&&(t=scanner.next(),t!==EOF&&t.isVariable||Fashion.raiseAt('Expected variable name after "," in @each',scanner),id=new List(null,[id,t.value],", "),isMap=!0,t=scanner.next()),t!==EOF&&t.isIdent&&"in"===t.value||Fashion.raiseAt('Expected "in" after variable in @each',scanner),seq=me.parseSequence(),seq.items&&(seq=seq.items),seq||Fashion.raiseAt('Expected value sequence after "in" in @each',scanner),scanner.expect("{");;){if(debug("parsing each"),t=scanner.peek(),t!==EOF&&t.isOperator&&"}"===t.value)break;if(stat=me.parseScopedStatement(),!stat)break;statements.push(stat)}return scanner.expect("}"),new Each({variable:id,list:seq,statements:statements,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile,isMap:isMap})}}},{key:"parseFor",value:function(){var t,id,start,end,inclusive,stat,me=this,scanner=me.scanner,statements=[];if(t=scanner.next(),t!==EOF&&t.isDirective&&"@for"===t.value){for(t=scanner.next(),t!==EOF&&t.isVariable||Fashion.raiseAt("Expected variable name after @for",scanner),id=t.value,t=scanner.next(),t!==EOF&&t.isIdent&&"from"===t.value||Fashion.raiseAt('Expected "from" after variable in @for',scanner),start=me.parseExpression(),start||Fashion.raiseAt('Expected an expression after "from" in @for',scanner),t=scanner.next(),(t===EOF||!t.isIdent||"to"!==t.value&&"through"!==t.value)&&Fashion.raiseAt('Expected "to" or "through" in @for',scanner),inclusive="through"===t.value,end=me.parseExpression(),end||Fashion.raiseAt("Expected a terminating expression in @for",scanner),scanner.expect("{");;){if(debug("parse for"),t=scanner.peek(),t!==EOF&&t.isOperator&&"}"===t.value)break;if(stat=me.parseScopedStatement(),!stat)break;statements.push(stat)}return scanner.expect("}"),new For({variable:id,start:start,end:end,inclusive:inclusive,statements:statements,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}}},{key:"parseWhile",value:function(){var t,condition,stat,me=this,scanner=me.scanner,statements=[];if(t=scanner.next(),t!==EOF&&t.isDirective&&"@while"===t.value){for(condition=me.parseExpression(),scanner.expect("{");;){if(debug("parse while"),t=scanner.peek(),t!==EOF&&t.isOperator&&"}"===t.value)break;if(stat=me.parseScopedStatement(),!stat)break;statements.push(stat)}return scanner.expect("}"),new While({condition:condition,statements:statements,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}}},{key:"parseIf",value:function(){var t,condition,stat,me=this,scanner=me.scanner,statements=[];if(t=scanner.next(),t!==EOF&&t.isDirective&&"@if"===t.value){for(condition=me.parseSequence(),scanner.expect("{");;){if(debug("parse if"),t=scanner.peek(),t!==EOF&&t.isOperator&&"}"===t.value)break;if(stat=me.parseScopedStatement(),!stat)break;statements.push(stat)}return scanner.expect("}"),new If({condition:condition,statements:statements,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}}},{key:"parseElse",value:function(){var t,condition,stat,isElseIf,me=this,scanner=me.scanner,statements=[];if(t=scanner.next(),t!==EOF&&t.isDirective&&("@else"===t.value||"@elseif"==t.value)){for(isElseIf="@elseif"==t.value,t=scanner.peek(),isElseIf?condition=me.parseExpression():t.isIdent&&"if"===t.value&&(scanner.next(),condition=me.parseExpression()),scanner.expect("{");;){if(debug("parse else"),t=scanner.peek(),t!==EOF&&t.isOperator&&"}"===t.value)break;if(void 0===t||t===EOF)break;if(stat=me.parseScopedStatement(),!stat)break;statements.push(stat)}return scanner.expect("}"),new Else({condition:condition,statements:statements,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}}},{key:"parseExtend",value:function(){var t,selector,me=this,scanner=me.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@extend"===t.value){if(selector=me.parseSelectors())return new Extend({selector:selector,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile});Fashion.raiseAt("Expecting attribute name",scanner)}}},{key:"parseImport",value:function(){var expr,t2,scanner=this.scanner,t=scanner.next();if(t!==EOF&&t.isDirective&&"@import"===t.value)return t=scanner.peek(),t2=scanner.peek(2),t.isString&&";"==t2.value?(scanner.next(),new Import({source:new Literal(t),lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})):(expr=this.parseSelectorSequence(),new Import({source:expr,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile}))}},{key:"parseRequire",value:function(){var expr,t2,scanner=this.scanner,t=scanner.next();if(t!==EOF&&t.isDirective&&"@require"===t.value)return t=scanner.peek(),t2=scanner.peek(2),t.isString&&";"==t2.value?(scanner.next(),new Require({source:new Literal(t),lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})):(expr=this.parseSequence(),new Require({source:expr,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile}))}},{key:"parseDebugger",value:function(){var scanner=this.scanner,t=scanner.next();return new Debugger({lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}},{key:"parseContent",value:function(){var scanner=this.scanner,t=scanner.next();return new Content({type:"Content",lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}},{key:"parseMixin",value:function(){var t,mixin,scanner=this.scanner;return t=scanner.next(),t!==EOF&&t.isDirective&&"@mixin"===t.value&&(mixin=new Mixin({name:this.parseFunctionCall(!0),statements:[],docs:scanner.flushDocs(),token:t,file:scanner.currentFile}),mixin.statements=this.parseBlock().statements,t=scanner.peek(),t!==EOF&&t.isOperator&&";"===t.value&&scanner.next()),mixin}},{key:"parseInclude",value:function(){var t,inc,block,scanner=this.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@include"===t.value)return inc=this.parseFunctionCall(!0),this.nextValueIs("{")&&(block=this.parseBlock()),new Include({include:inc,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile,content:block})}},{key:"parseBlock",value:function(){var t,stat,scanner=this.scanner,statements=[];if(t=scanner.peek(),t&&t!==EOF){if(";"===t.value)return void scanner.next();for(scanner.expect("{");;){if(debug("parse block"),t=scanner.peek(),null===t||void 0===t)break;if(";"!==t.value){if(null===t||void 0===t)break;if(t!==EOF&&t.isOperator&&"}"===t.value)break;if(stat=this.parseScopedStatement(),!stat)break;statements.push(stat)}else scanner.next()}return debug("done parsing block"),scanner.expect("}"),new Block({statements:statements,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}}},{key:"parseReturn",value:function(){var t,expr,scanner=this.scanner;if(t=scanner.next(),t!==EOF&&t.isDirective&&"@return"===t.value)return expr=this.parseSequence(),new Return({expr:expr,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}},{key:"parseVariableAssignment",value:function(){var t,assignment,start,end,scanner=this.scanner;t=scanner.next(),assignment=new VariableAssignment(t,t.value);try{for(scanner.expect(":"),t=scanner.peek(),start=t?t.startIdx:-1,assignment.value=this.parseValue(),t=scanner.peek(),end=t?t.startIdx:start;t!==EOF&&t.isOperator&&"!"===t.value;)t=scanner.next(),t=scanner.next(),"default"===t.value?assignment["default"]=!0:"global"===t.value?assignment.global=!0:"dynamic"===t.value&&(assignment.dynamic=!0),end=t.startIdx,t=scanner.peek();start>-1&&(assignment.valueText=scanner.style.substring(start,end)),t=scanner.peek(),t!==EOF&&";"===t.value&&scanner.expect(";")}catch(e){if(!this.lax)throw e}return assignment}},{key:"parseRuleset",value:function(){var t,selectors,statements,block,scanner=this.scanner;return t=scanner.peek(),selectors=this.parseSelectors(),block=this.parseBlock(),statements=block&&block.statements,new Ruleset({selectors:selectors,statements:statements,blockDocs:block&&block.docs,lineNumber:t.lineNumber,docs:(selectors&&selectors.docs||[]).concat(scanner.flushDocs()||[]),token:t,file:scanner.currentFile})}},{key:"parseSelectors",value:function(){var selectors=this.parseSelectorSequence();return selectors}},{key:"tryParseSelectors",value:function(){var token,scanner=this.scanner,peek=scanner.peek(),index=peek.startIdx,line=peek.startLine,docs=scanner.docs;try{this.parseSelectors()}catch(e){this.isSelector=!1}return token=scanner.peek(),scanner.lineNumber=line,scanner.setIndex(index),scanner.docs=docs,token}},{key:"parseScopedStatement",value:function(){var stat,me=this,scanner=me.scanner,t=scanner.peek();if(t.isHash||t.isClass)return me.parseRuleset();if(t!==EOF&&t.isOperator&&("&"===t.value||">"===t.value||"~"===t.value||":"===t.value||"%"===t.value))return me.parseRuleset();if(t.isVariable)return me.parseVariableAssignment();if(t.isDirective)return stat=me.parseDirective(),t=scanner.peek(),t!==EOF&&t.isOperator&&";"===t.value&&scanner.next(),stat;if(t!==EOF&&t.isOperator&&"-"===t.value)return me.parseDeclaration();if(t.isIdent||t.isNumber||t.isPercentage||t.isOperator&&"}"!==t.value){for(var idx=1,skipRuleset=!1,directive=!1,tmp=scanner.peek(idx++);tmp&&!tmp.isEOF&&"{"!==tmp.value&&"}"!==tmp.value&&";"!==tmp.value;)0===tmp.value.indexOf("@")&&(directive=!0),":"===tmp.value&&(" "!==scanner.style.charAt(tmp.idx)||directive||(skipRuleset=!0),this.nextValueIs("{",idx)&&(skipRuleset=!0)),tmp=scanner.peek(idx++);return tmp&&"{"===tmp.value&&!skipRuleset?me.parseRuleset():me.parseDeclaration()}}},{key:"parseDeclaration",value:function(){var me=this,scanner=me.scanner,t=scanner.next(),decl=new Declaration({property:"",docs:scanner.flushDocs(),lineNumber:scanner.lineNumber,token:t,file:scanner.currentFile});if(t===EOF||!t.isOperator||"*"!==t.value&&"-"!==t.value||(decl.property=t.value,t=scanner.next(),t!==EOF&&t.isHash&&(t.type="ident")),t!==EOF&&t.isIdent){if(decl.property+=t.value,scanner.expect(":"),t=scanner.peek(),0===decl.property.indexOf("--")){var ch,start=t.startIdx,idx=start,end=start,brace=0,paren=0,bracket=0,quote=null;loop:for(idx=start;idx<scanner.style.length;idx++)switch(ch=scanner.style.charAt(idx)){case'"':case"'":quote?quote===ch&&(quote=null):quote=ch;break;case"{":brace++;break;case"(":paren++;break;case"[":bracket++;break;case"}":brace--;break;case")":paren--;break;case"]":bracket--;break;case";":if(0===bracket&&0===brace&&0===paren&&!quote){end=idx;break loop}}scanner.setIndex(end);var data={value:scanner.style.substring(start,end).trim()};decl.value=new Literal(t,JSON.stringify(data)),decl.value.jsonEncoded=!0}else"filter"===decl.property||"-ms-filter"===decl.property||"_filter"===decl.property?decl.value=me.parseFilterValue():decl.value=me.parseValue();return t=scanner.peek(),t!==EOF&&t.isOperator&&"!"===t.value&&(scanner.next(),t=scanner.next(),t.isIdent&&"important"===t.value&&(decl.important=!0)),t=scanner.peek(),t!==EOF&&t.isOperator&&";"===t.value&&scanner.next(),decl}var message="Property declaration: expected identifier but saw "+JSON.stringify(t)+" instead : "+scanner.lineNumber+":"+(scanner.index-scanner.start);Fashion.error(message),Fashion.raiseAt(message,scanner)}},{key:"parseValue",value:function(){var t,stat,sequence,ruleset,scanner=this.scanner,statements=[];if(sequence=this.parseSequence(),t=scanner.peek(),t!==EOF&&t.isOperator&&"{"==t.value){for(scanner.next();void 0!==(stat=this.parseScopedStatement());)statements.push(stat);scanner.expect("}"),ruleset=new Ruleset({statements:statements,selectors:[],lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}return ruleset&&(sequence.items?sequence.items.push(ruleset):sequence=sequence?new List(null,[sequence,ruleset]," "):ruleset),sequence}},{key:"parseFilterFunctionCall",value:function(){var t,peek,pos,scanner=this.scanner;if(t=scanner.peek(),t!==EOF&&"ident"==t.type&&("progid"==t.value||"chroma"==t.value)){for(pos=t.startIdx;;){if(peek=scanner.peek(),peek&&peek.isOperator&&")"===peek.value){t=scanner.next();break}if(peek&&";"===peek.value)break;t=scanner.next()}return new Literal(t,this.style.substring(pos,t.idx).replace(/\r/g,"").replace(/\n/g,"").replace(/\s+/g," ").trim())}}},{key:"parseFilterValue",value:function(){for(var t,args,scanner=this.scanner,value=[],separator=" ";;)if(debug("parse filter value"),t=scanner.peek(),","!=t.value){if(t===EOF)break;if("ident"!=t.type||"progid"!=t.value&&"chroma"!=t.value){if(t.isOperator&&(";"===t.value||"{"===t.value||"!"===t.value||"}"===t.value))break;if(args=this.parseSequence(),args.items?(separator=args.separator,args=args.items):args=[args],0===args.length)break;1===args.length?value.push(args[0]):value.push.apply(value,args)}else value.push(this.parseFilterFunctionCall())}else separator=",",scanner.next();if(0===value.length)return null;for(;1===value.length;)value=value[0];return value.length&&(value=new List(null,value,separator)),value}},{key:"parseExpression",value:function(){var id,scanner=this.scanner,t=scanner.peek();if(t.isIdent){if(t=scanner.peek(2),t!==EOF&&t.isOperator)switch(t.value){case"=":case"~=":case"|=":case"^=":case"$=":case"*=":return id=scanner.next().value,scanner.expect(t.value),new Assignment({id:id,expr:this.parseRelational(),operator:t.value,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}}else if(t!==EOF&&t.isOperator&&"!"===t.value){var t2=scanner.peek(2);if(t2&&"important"===t2.value)return t=scanner.next(),t=scanner.next(),new Literal(t,"!important")}return this.parseDisjunction()}},{key:"parseDisjunction",value:function(){var factor,or,t,scanner=this.scanner;for(or=this.parseConjunction(),factor=or;;){if(debug("parse disjunction"),t=scanner.peek(),t==EOF||!t.isOperator||"or"!==t.value||this.isSelector)break;if(t=scanner.next(),or=this.parseConjunction(),!or)break;factor=new BinaryExpression({operator:"or",left:factor,right:or,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}return factor}},{key:"parseConjunction",value:function(){var or,and,t,scanner=this.scanner;for(and=this.parseComplement(),or=and;;){if(debug("parse conjunction"),t=scanner.peek(),t===EOF||!t.isOperator||"and"!==t.value||this.isSelector)break;if(t=scanner.next(),and=this.parseComplement(),!and)break;or=new BinaryExpression({operator:"and",left:or,right:and,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}return or}},{key:"parseComplement",value:function(){var t,scanner=this.scanner;if(t=scanner.peek(),t!==EOF&&t.isOperator&&"not"===t.value){if(this.isSelectorParen)return scanner.next(),new Literal(t,"not");if(!this.isSelector)return scanner.next(),new UnaryExpression({operator:"not",expr:this.parseRelational(),lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}return this.parseRelational()}},{key:"parseRelational",value:function(){var cmp,expr,t,scanner=this.scanner;for(cmp=this.parseAdditive(),expr=cmp;;){if(debug("parse relational"),t=scanner.peek(),t===EOF||!t.isOperator||"=="!==t.value&&"!="!==t.value&&"<"!==t.value&&"<="!==t.value&&">="!==t.value&&(">"!==t.value||this.isSelector))break;if(t=scanner.next(),cmp=this.parseAdditive(),!cmp)break;expr=new BinaryExpression({operator:t.value,left:expr,right:cmp,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}return expr}},{key:"parseAdditive",value:function(){var term,cmp,t,scanner=this.scanner;for(term=this.parseMultiplicative(),cmp=term;;){if(debug("parse additive"),t=scanner.peek(),t===EOF||!t.isOperator||"+"!==t.value&&"-"!==t.value||this.isSelector)break;if(t=scanner.next(),term=this.parseMultiplicative(),!term)break;cmp=new BinaryExpression({operator:t.value,left:cmp,right:term,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}return cmp}},{key:"parseMultiplicative",value:function(){var term,factor,t;for(factor=this.parsePrimary(),term=factor;;){if(debug("parse multiplicative"),t=this.scanner.peek(),t===EOF||!t.isOperator||"*"!==t.value&&"/"!==t.value&&("%"!==t.value||this.isSelector))break;if(t=this.scanner.next(),factor=this.parsePrimary(),!factor)break;term=new BinaryExpression({operator:t.value,left:term,right:factor,docs:this.scanner.flushDocs()})}return term}},{key:"parsePrimary",value:function(){var t,t2,scanner=this.scanner;if(t=scanner.peek(),t2=scanner.peek(2),t!==EOF)return t!==EOF&&t.isOperator&&"("===t.value?this.parseParenthetical():t.isIdent?this.keywords[t.value]?(scanner.next(),new Literal(t)):"progid"===t.value&&":"===t2.value?this.parseFilterFunctionCall():this.parseFunctionCall():t.isVariable?(t=scanner.next(),t.negate?new BinaryExpression({operator:"-",right:new Variable(t,t.value),docs:scanner.flushDocs(),token:t,file:scanner.currentFile}):new Variable(t,t.value)):t=this.parseConstant()}},{key:"parseParenthetical",value:function(){var expr,scanner=this.scanner,t=scanner.next(),selWas=this.isSelector,parWas=this.isParenthetical,selParWas=this.isSelectorParen;return parWas&&(this.isSelector=!1),this.isParenthetical=!0,this.isSelectorParen=selWas,expr=this.isSelector?this.parseSelectorSequence(!0):this.parseSequence(),this.isSelector=selWas,this.isParenthetical=parWas,this.isSelectorParen=selParWas,scanner.expect(")"),expr&&expr.isKVP&&(expr=new List(null,[expr],", ")),new Parenthetical({expr:expr,lineNumber:t.lineNumber,docs:scanner.flushDocs(),token:t,file:scanner.currentFile})}},{key:"parseFunctionCall",value:function(allowSpaceBeforeParen){var end,prev,temp,twas,scanner=this.scanner,t=scanner.next(),id=t.value,start=t.idx,ch="",args=[],passThroughNames={expression:1,calc:1,"-moz-calc":1,"-webkit-calc":1,"-ms-calc":1};if(twas=t,t=scanner.peek(),t!==EOF&&(prev=scanner.style.charAt(start),t.isOperator&&"("===t.value&&(" "!==prev||allowSpaceBeforeParen))){if(scanner.next(),t=scanner.peek(),id in passThroughNames){start=t.startIdx,end=start;for(var parenCount=0;;){if(debug("parsing function call"),ch=scanner.style.charAt(end),end+=1,"("===ch&&parenCount++,!ch||!ch){end=start;break}if(")"===ch){if(0===parenCount)break;parenCount--}}if(debug("done parsing function call"),end!=start)return scanner.setIndex(end),args.push(new Literal(null,scanner.style.substring(start,end-1))),new FunctionCall(t,id,args)}else if(!("url"!==id&&"url-prefix"!==id||t===EOF||t.isOperator&&"/"!==t.value||t.isString)){start=t.startIdx,end=start;for(var ch2,tpl=0;;){if(ch=scanner.style.charAt(end),ch2=scanner.style.charAt(end+1),"#"===ch&&"{"===ch2&&tpl++,"}"===ch){if(!tpl){end=start;break}tpl--}if(("("===ch||"$"==ch)&&!tpl){end=start;break}if("+"===ch&&!tpl&&scanner.style.indexOf("data:",start)!=start&&scanner.style.indexOf("http:",start)!=start){end=start;break}if(!ch||")"===ch)break;if(!ch){end=start;break}end+=1}if(end!=start)return scanner.setIndex(end),args.push(new String(null,scanner.style.substring(start,end),"")),scanner.next(),new FunctionCall(t,id,args)}return temp=t===EOF||t.isOperator&&")"===t.value?args:this.isSelector?this.parseSelectorSequence():this.parseArguments(),t=scanner.peek(),scanner.expect(")"),new FunctionCall(t,id,temp)}return new Literal(twas,id)}},{key:"parseSelectorPart",value:function(){var t,scanner=this.scanner;if(t=scanner.peek()){if(t.isClass)return t=scanner.next(),new SelectorPart({selectorType:"class",value:new Literal(t)});if(t.isHash)return t=scanner.next(),new SelectorPart({selectorType:"id",value:new Literal(t)});if(t.isOperator)switch(t.value){case"and":return scanner.next(),new SelectorPart({selectorType:"and",value:new Literal(t)});case"or":return scanner.next(),new SelectorPart({selectorType:"or",value:new Literal(t)});case"*":return scanner.next(),new SelectorPart({selectorType:"wildcard",value:new Literal(t)});case"!":return scanner.next(),new SelectorPart({selectorType:"bang",value:new Literal(t)});case"|":return scanner.next(),new SelectorPart({selectorType:"pipe",value:new Literal(t)});case">":return scanner.next(),new SelectorPart({selectorType:"direct",value:new Literal(t)});case"+":return scanner.next(),new SelectorPart({selectorType:"after",value:new Literal(t)});case"~":return scanner.next(),new SelectorPart({selectorType:"before",value:new Literal(t)});case"&":return scanner.next(),new SelectorPart({selectorType:"parent",value:new Literal(t)});case"-":scanner.next();var expr=this.parseSelectorPart();return new SelectorPart({selectorType:"dash",value:expr});case"%":scanner.next();var expr=this.parseSelectorPart();return new SelectorPart({selectorType:"placeholder",value:expr});case"[":scanner.next();var expr=this.parseSelectorPart();return scanner.expect("]"),new SelectorPart({selectorType:"attribute",value:expr});case":":t=scanner.next();var idx=t.idx;if(t=scanner.peek(),t!==EOF&&"{"===t.value||" "===scanner.style.charAt(idx))return;return new SelectorPart({selectorType:"pseudo",value:this.parseSelectorPart()});case"not":return new SelectorPart({selectorType:"not",value:this.parseFunctionCall()})}}return this.parseExpression()}},{key:"parseSequence",value:function(){for(var arg,t,scanner=this.scanner,args=[];;){if(debug("parse sequence"),arg=this.parseTuple(),!arg)break;if(args.push(arg),t=scanner.peek(),!t||t===EOF)break;if(":"===t.value&&(scanner.next(),arg=this.parseTuple(),arg.variable=args.pop(),arg.isKVP=!0,args.push(arg),t=scanner.peek()),!t.isOperator||","!==t.value)break;scanner.next()}return 1===args.length?(null==args[0],args[0]):new List(t,args,", ")}},{key:"parseSelectorSequence",value:function(isParenthetical){for(var arg,t,t2,scanner=this.scanner,args=[],sequence=new SelectorList({items:args,separator:", "});;){if(debug("parse sequence"),arg=this.parseSelectorTuple(),!arg)break;if(!arg||arg.items&&!arg.items.length||args.push(arg),t=scanner.peek(),t===EOF)break;if(":"===t.value&&isParenthetical&&(t2=scanner.peek(2),t!==EOF&&"{"!==t.value&&";"!==t.value&&(scanner.next(),arg=new SelectorProperty({property:args.pop(),value:this.parseSelectorTuple()}),args.push(arg),t=scanner.peek())),!t.isOperator||","!==t.value)break;scanner.next()}return 1===args.length?args[0]:sequence}},{key:"parseSelectorTuple",value:function(){var expr,t,idx,ch,last,line,scanner=this.scanner,separator=" ",exprs=[],selectorWas=this.isSelector;for(this.isSelector=!0;;){if(debug("parse selector tuple"),t=scanner.peek(),t===EOF)break;if(idx=t.startIdx,line=t.startLine,last=exprs[exprs.length-1],expr=this.parseSelectorPart(),!expr){scanner.lineNumber=line,scanner.setIndex(idx);break}if(ch=scanner.style.charAt(idx)," "!==ch&&"\t"!==ch&&"\r"!==ch&&"\n"!==ch)if(last)if("CompoundSelector"!==last.type)last=new CompoundSelector({separator:"",items:[last,expr]}),exprs[exprs.length-1]=last;else{var items=last.items;items.push(expr)}else exprs.push(expr);else exprs.push(expr)}return this.isSelector=selectorWas,1===exprs.length?exprs[0]:new MultiPartSelector({items:exprs,separator:separator})}},{key:"parseTuple",value:function(){for(var expr,t,idx,ch,last,scanner=this.scanner,separator=" ",exprs=[];;){if(debug("parse tuple"),t=scanner.peek(),t===EOF)break;if(idx=t.startIdx,last=exprs[exprs.length-1],expr=this.parseExpression(),!expr)break;if(ch=scanner.style.charAt(idx)," "!==ch&&"\t"!==ch&&"\r"!==ch&&"\n"!==ch)if(last)if("List"!==last.type)last=new List(null,[exprs.pop(),expr],""),exprs.push(last);else{var items=last.items;items.push(expr)}else exprs.push(new List(null,[expr],""));else exprs.push(expr)}return 1===exprs.length?(exprs=exprs[0],exprs.items&&1===exprs.items.length?exprs.items[0]:exprs):exprs.length?new List(null,exprs,separator):void 0}},{key:"parseArguments",value:function(){for(var arg,t,scanner=this.scanner,args=[];;){if(debug("parse arguments"),arg=this.parseArgument(),!arg)break;if(args.push(arg),t=scanner.peek(),t===EOF)break;if(!t.isOperator||","!==t.value)break;scanner.next()}return new List(t,args,", ")}},{key:"parseVarArgs",value:function(expr){var t,t2,t3,scanner=this.scanner;return t=scanner.peek(),t!==EOF&&"."===t.value&&(t2=scanner.peek(2),t3=scanner.peek(3),t2&&"."===t2.value&&t3&&"."===t3.value&&(expr.varArgs=!0,scanner.next(),scanner.next(),scanner.next())),expr}},{key:"parseArgument",value:function(){for(var expr,t,scanner=this.scanner,arg=[];;){if(debug("parse argument"),t=scanner.peek(),t===EOF)break;if((t.isVariable||t.isIdent)&&(t=scanner.peek(2),t!==EOF&&t.isOperator&&":"===t.value))t=scanner.next(),scanner.next(),expr=this.parseTuple(),expr&&(expr.variable=t.value),arg.push(expr);else{if(expr=this.parseExpression(),!expr)break;this.parseVarArgs(expr),arg.push(expr)}}return 1==arg.length?arg[0]:new List(null,arg," ")}},{key:"parse",value:function(content,file){var scanner,me=this;me.scanner=scanner=new Scanner(content,file),me.style=scanner.style;var result=me.parseStylesheet();return me.scanner=me.style=null,result}}]),Parser}(Base);Fashion.apply(Parser.prototype,{lax:!1,keywords:{"no-repeat":!0},scanner:void 0,style:void 0}),module.exports=Parser},{"../export/Base.js":19,"../parse/ast/Nodes.js":60,"./Scanner.js":56}],56:[function(require,module,exports){"use strict";function isAlpha(ch){return 1&_chars[ch.charCodeAt(0)]}function isDigit(ch){return 2&_chars[ch.charCodeAt(0)]}function isNameChar(ch){return 4&_chars[ch.charCodeAt(0)]}function isHexDigit(ch){return 8&_chars[ch.charCodeAt(0)]}function isLength(unit){var ch1=unit.charAt(0).toLowerCase(),ch2=unit.charAt(1).toLowerCase(),ch3=unit.charAt(2).toLowerCase(),ch4=unit.charAt(3).toLowerCase();if("p"===ch1)return"x"===ch2||"t"===ch2||"c"===ch2;if("m"===ch2&&("c"===ch1||"m"===ch1||"e"===ch1))return 2;if("x"===ch2)return"e"===ch1;if("m"===ch3&&"r"===ch1&&"e"===ch2)return 3;if("x"===ch1&&isHexDigit(ch2)){for(var len=1;isHexDigit(unit[len]);)len++;return len}if("v"===ch1){if("w"===ch2||"h"===ch2)return 2;if("m"===ch2){if("i"===ch3&&"n"===ch4)return 4;if("a"===ch3&&"x"===ch4)return 4}}return!1}function isTime(unit){return 1===unit.length?"s"===unit:2===unit.length&&"ms"===unit}function isAngle(unit){var ch=unit[0];return"d"===ch||"D"===ch?"deg"===unit.toLowerCase():("r"===ch||"R"===ch)&&"rad"===unit.toLowerCase()}for(var Fashion=require("../export/Base.js"),Base=Fashion.Base,Tokens=require("./Tokens.js"),Operator=Tokens.Operator,Ident=Tokens.Ident,StringLiteral=Tokens.StringLiteral,Percentage=Tokens.Percentage,Length=Tokens.Length,Time=Tokens.Time,Angle=Tokens.Angle,NumberLiteral=Tokens.NumberLiteral,Class=Tokens.Class,Hash=Tokens.Hash,Variable=Tokens.Variable,Directive=Tokens.Directive,_limit=(Tokens.EOF,255),_chars=Array(_limit),_EOF=null,c=0;c<_limit;c++){var ch=String.fromCharCode(c),mask=0;(ch>="a"&&ch<="z"||ch>="A"&&ch<="Z")&&(mask|=1),ch>="0"&&ch<="9"&&(mask|=2),(ch>="a"&&ch<="z"||ch>="A"&&ch<="Z"||ch>="0"&&ch<="9"||"-"===ch||"_"===ch||c>=128&&c<=_limit&&215!==c&&247!==c||"\\"===ch)&&(mask|=4),(ch>="0"&&ch<="9"||ch>="a"&&ch<="f"||ch>="A"&&ch<="F")&&(mask|=8),_chars[c]=mask}var Scanner=function(_Base10){function Scanner(style,file){_classCallCheck(this,Scanner);var _this36=_possibleConstructorReturn(this,(Scanner.__proto__||Object.getPrototypeOf(Scanner)).call(this));return _this36.style=style,_this36.lineNumber=_this36.style.length?1:0,_this36.currentFile=file||Fashion.currentFile,_this36.docs=[],_this36.tokenBuff=[],_this36}return _inherits(Scanner,_Base10),_createClass(Scanner,[{key:"next",value:function(advance){var me=this,start=me.index,startLine=me.lineNumber,token=!advance&&me.tokenBuff.shift();return token||(token=me._advance(),token&&(token.startIdx=start,token.startLine=startLine)),token}},{key:"_advance",value:function(){for(var ch,ch2,ch3,start,str,level,negate,charOffset,value,me=this,style=me.style,length=style.length;;){for(ch=style[me.index];me.index<length&&(ch<=" "||ch>=128);)"\n"===ch&&(me.lineNumber+=1,me.start=me.index),me.index+=1,ch=style[me.index];if(ch2=style[me.index+1],"/"!==ch||"*"!==ch2){if("/"!==ch||"/"!==ch2)break;for(me.index+=1,start=me.index;me.index<length&&(ch=style[me.index],"\r"!==ch&&"\n"!==ch);)me.index+=1;me.docs.push(style.substring(start-1,me.index))}else{for(me.index+=1,start=me.index+1;me.index<length;){if(ch=style[me.index],ch2=style[me.index+1],"\n"===ch&&(me.lineNumber+=1,me.start=me.index),"*"===ch&&"/"===ch2){me.index+=2;break}me.index+=1}me.docs.push(style.substring(start-2,me.index))}}if(start=me.index,start>=length)return _EOF;if(ch=style[me.index],ch2=style[me.index+1],ch3=style[me.index+2],isNameChar(ch)&&!isDigit(ch)&&"-"!==ch||"-"===ch&&isNameChar(ch2)&&!isDigit(ch2)||"#"===ch&&"{"===ch2){for(level=0,me.index+=1,"#"===ch&&"{"===ch2&&(level+=1,me.index+=1),"\\"===ch&&(me.index+=1);me.index<length;)if(ch=style[me.index],ch2=style[me.index+1],
isNameChar(ch))me.index+=1;else if("\\"!==ch)if(">"!=ch)if("#"!==ch||"{"!==ch2){if(!(level>0))break;me.index+=1,"}"===ch&&(level-=1)}else level+=1,me.index+=2;else me.index+=1;else me.index+=2;return str=style.substring(start,me.index).toLowerCase(),"or"===str||"and"===str||"not"===str?new Operator(me,str):new Ident(me,style.substring(start,me.index))}if("'"===ch||'"'===ch||"\\"===ch&&("'"===ch2||'"'===ch2)){charOffset="\\"===ch?2:1,me.index+=charOffset,start=me.index;var openCh="\\"===ch?ch2:ch;level=0;for(var buff="";me.index<length;){if(ch=style[me.index],me.index++,"\\"===ch){if(ch2=style[me.index],"\n"===ch2||"\r"===ch2){me.index++;continue}if(buff+=ch,ch=style[me.index],me.index++,!level&&2===charOffset&&openCh===style[me.index])break}else if("#"===ch)"{"===style[me.index]&&level++;else if("}"===ch)level&&level--;else if(!level&&ch===openCh)break;buff+=ch}return new StringLiteral(me,buff,style[start-1])}if(isDigit(ch)||"."===ch&&isDigit(ch2)||"-"===ch&&isDigit(ch2)||"-"===ch&&"."===ch2&&isDigit(ch3)){for("-"===ch&&(me.index+=1),me.index+=1;me.index<length&&(ch=style[me.index],!(ch<"0"||ch>"9"));)me.index+=1;if("\\"===ch&&(me.index+=1,ch=style[me.index]),"."===ch)for(me.index+=1;me.index<length&&(ch=style[me.index],!(ch<"0"||ch>"9"));)me.index+=1;if("%"===ch){me.index+=1;var pcnt=new Percentage(me,style.substring(start,me.index));return pcnt.start=start,pcnt.end=me.index,pcnt}if(" "!==ch){var unitLen=isLength(style.substr(me.index,10));if(unitLen)return me.index+=unitLen===!0?2:unitLen,new Length(me,style.substring(start,me.index));if(isTime(style.substr(me.index,1)))return me.index+=1,new Time(me,style.substring(start,me.index));if(isTime(style.substr(me.index,2)))return me.index+=2,new Time(me,style.substring(start,me.index));if(isAngle(style.substr(me.index,3)))return me.index+=3,new Angle(me,style.substring(start,me.index))}return new NumberLiteral(me,style.substring(start,me.index))}if("."===ch){for(level=0,me.index+=1,ch=style[me.index],"{"===ch&&(level+=1,me.index+=1);me.index<length;)if(ch=style[me.index],ch2=style[me.index+1],isNameChar(ch))me.index+=1;else if("#"!==ch||"{"!==ch2){if(!(level>0))break;me.index+=1,"}"===ch&&(level-=1)}else level+=1,me.index+=2;return new Class(me,style.substring(start,me.index))}if("#"===ch){for(level=0,me.index+=1,ch=style[me.index],"{"===ch&&(level+=1,me.index+=1);me.index<length;)if(ch=style[me.index],ch2=style[me.index+1],isNameChar(ch))me.index+=1;else if("#"!==ch||"{"!==ch2){if(!(level>0))break;me.index+=1,"}"===ch&&(level-=1)}else level+=1,me.index+=2;return new Hash(me,style.substring(start,me.index))}if("$"===ch||"-"===ch&&"$"===ch2){for("-"===ch&&(negate=!0,start+=1,me.index+=1),me.index+=1;me.index<length&&(ch=style[me.index],isNameChar(ch));)me.index+=1;return new Variable(me,style.substring(start,me.index),negate)}if("@"===ch){for(me.index+=1;me.index<length&&(ch=style[me.index],isAlpha(ch)||"-"===ch);)me.index+=1;return value=style.substring(start,me.index),me.directives[value]?new Directive(me,value):new Ident(me,value)}return me.index+=1,str=ch,"="===ch&&"="===ch2&&(str="==",me.index+=1),"~"===ch&&"="===ch2&&(str="~=",me.index+=1),"|"===ch&&"="===ch2&&(str="|=",me.index+=1),"^"===ch&&"="===ch2&&(str="^=",me.index+=1),"$"===ch&&"="===ch2&&(str="$=",me.index+=1),"*"===ch&&"="===ch2&&(str="*=",me.index+=1),"!"===ch&&"="===ch2&&(str="!=",me.index+=1),"<"===ch&&"="===ch2&&(str="<=",me.index+=1),">"===ch&&"="===ch2&&(str=">=",me.index+=1),new Operator(me,str)}},{key:"flushDocs",value:function(){if(this.docs.length>0){var docs=this.docs;return this.docs=[],docs}return null}},{key:"peek",value:function(i){var buff=this.tokenBuff,len=buff.length;i=i||1;for(var x=len;x<i;x++)buff.push(this.next(!0));return buff[i-1]||_EOF}},{key:"setIndex",value:function(index){this.index=index,this.tokenBuff=[]}},{key:"expect",value:function(op){var token=this.next(),lineNo=this.lineNumber-1,fileName=this.currentFile||"sass-content",message="Expected '"+op+"' but saw '"+(token?token.value:"(null token)")+"' => "+fileName+":"+(lineNo+1)+":"+(this.index-this.start+1);token||Fashion.raise(message),token.isOperator&&token.value===op||Fashion.raise(message)}}]),Scanner}(Base);Fashion.apply(Scanner.prototype,{isFashionScanner:!0,directives:{"@charset":!0,"@import":!0,"@extend":!0,"@debug":!0,"@warn":!0,"@error":!0,"@if":!0,"@else":!0,"@for":!0,"@each":!0,"@while":!0,"@mixin":!0,"@include":!0,"@function":!0,"@return":!0,"@debugger":!0,"@elseif":!0,"@content":!0,"@require":!0},index:0,docs:void 0,start:void 0,style:void 0,currentFile:void 0,lineNumber:void 0}),Scanner.EOF=_EOF,module.exports=Scanner},{"../export/Base.js":19,"./Tokens.js":58}],57:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Base=Fashion.Base,Scanner=require("./Scanner.js"),Tokenizer=function(_Base11){function Tokenizer(){return _classCallCheck(this,Tokenizer),_possibleConstructorReturn(this,(Tokenizer.__proto__||Object.getPrototypeOf(Tokenizer)).apply(this,arguments))}return _inherits(Tokenizer,_Base11),_createClass(Tokenizer,[{key:"tokenize",value:function(config){var token,scanner=new Scanner(config),tokens=this.tokens;if(!tokens)for(this.tokens=tokens=[];void 0!==(token=scanner.next());)tokens.push(token);return tokens}}]),Tokenizer}(Base);Tokenizer.prototype.tokens=void 0,module.exports=Tokenizer},{"../export/Base.js":19,"./Scanner.js":56}],58:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Token=function Token(scanner){_classCallCheck(this,Token),this.scanner=scanner,scanner&&(this.idx=scanner.index,this.lineNumber=scanner.lineNumber,this.file=scanner.currentFile)};Fashion.apply(Token.prototype,{$isToken:!0,lineNumber:void 0,file:void 0,idx:void 0,startIdx:void 0,startLine:void 0,value:void 0,start:void 0,end:void 0});var Operator=function(_Token){function Operator(scanner,value){_classCallCheck(this,Operator);var _this38=_possibleConstructorReturn(this,(Operator.__proto__||Object.getPrototypeOf(Operator)).call(this,scanner));return _this38.value=value,_this38}return _inherits(Operator,_Token),Operator}(Token);Fashion.apply(Operator.prototype,{isOperator:!0,type:"operator"});var Ident=function(_Token2){function Ident(scanner,value){_classCallCheck(this,Ident);var _this39=_possibleConstructorReturn(this,(Ident.__proto__||Object.getPrototypeOf(Ident)).call(this,scanner));return _this39.value=value,_this39}return _inherits(Ident,_Token2),Ident}(Token);Fashion.apply(Ident.prototype,{isIdent:!0,type:"ident"});var StringLiteral=function(_Token3){function StringLiteral(scanner,value,quoteChar){_classCallCheck(this,StringLiteral);var _this40=_possibleConstructorReturn(this,(StringLiteral.__proto__||Object.getPrototypeOf(StringLiteral)).call(this,scanner));return _this40.value=value,_this40.quoteChar=quoteChar,_this40}return _inherits(StringLiteral,_Token3),StringLiteral}(Token);Fashion.apply(StringLiteral.prototype,{isString:!0,type:"string",quoteChar:void 0});var Percentage=function(_Token4){function Percentage(scanner,value){_classCallCheck(this,Percentage);var _this41=_possibleConstructorReturn(this,(Percentage.__proto__||Object.getPrototypeOf(Percentage)).call(this,scanner));return _this41.value=value,_this41}return _inherits(Percentage,_Token4),Percentage}(Token);Fashion.apply(Percentage.prototype,{isPercentage:!0,type:"percentage"});var Length=function(_Token5){function Length(scanner,value){_classCallCheck(this,Length);var _this42=_possibleConstructorReturn(this,(Length.__proto__||Object.getPrototypeOf(Length)).call(this,scanner));return _this42.value=value,_this42}return _inherits(Length,_Token5),Length}(Token);Fashion.apply(Length.prototype,{isLength:!0,type:"length"});var Time=function(_Token6){function Time(scanner,value){_classCallCheck(this,Time);var _this43=_possibleConstructorReturn(this,(Time.__proto__||Object.getPrototypeOf(Time)).call(this,scanner));return _this43.value=value,_this43}return _inherits(Time,_Token6),Time}(Token);Fashion.apply(Time.prototype,{isTime:!0,type:"time"});var Angle=function(_Token7){function Angle(scanner,value){_classCallCheck(this,Angle);var _this44=_possibleConstructorReturn(this,(Angle.__proto__||Object.getPrototypeOf(Angle)).call(this,scanner));return _this44.value=value,_this44}return _inherits(Angle,_Token7),Angle}(Token);Fashion.apply(Angle.prototype,{isAngle:!0,type:"angle"});var NumberLiteral=function(_Token8){function NumberLiteral(scanner,value){_classCallCheck(this,NumberLiteral);var _this45=_possibleConstructorReturn(this,(NumberLiteral.__proto__||Object.getPrototypeOf(NumberLiteral)).call(this,scanner));return _this45.value=value,_this45}return _inherits(NumberLiteral,_Token8),NumberLiteral}(Token);Fashion.apply(NumberLiteral.prototype,{isNumber:!0,type:"number"});var Class=function(_Token9){function Class(scanner,value){_classCallCheck(this,Class);var _this46=_possibleConstructorReturn(this,(Class.__proto__||Object.getPrototypeOf(Class)).call(this,scanner));return _this46.value=value,_this46}return _inherits(Class,_Token9),Class}(Token);Fashion.apply(Class.prototype,{isClass:!0,type:"class"});var Hash=function(_Token10){function Hash(scanner,value){_classCallCheck(this,Hash);var _this47=_possibleConstructorReturn(this,(Hash.__proto__||Object.getPrototypeOf(Hash)).call(this,scanner));return _this47.value=value,_this47}return _inherits(Hash,_Token10),Hash}(Token);Fashion.apply(Hash.prototype,{isHash:!0,type:"hash"});var Variable=function(_Token11){function Variable(scanner,value,negate){_classCallCheck(this,Variable);var _this48=_possibleConstructorReturn(this,(Variable.__proto__||Object.getPrototypeOf(Variable)).call(this,scanner));return _this48.value=value,_this48.negate=negate,_this48}return _inherits(Variable,_Token11),Variable}(Token);Fashion.apply(Variable.prototype,{isVariable:!0,type:"variable",negate:void 0});var Directive=function(_Token12){function Directive(scanner,value){_classCallCheck(this,Directive);var _this49=_possibleConstructorReturn(this,(Directive.__proto__||Object.getPrototypeOf(Directive)).call(this,scanner));return _this49.value=value,_this49}return _inherits(Directive,_Token12),Directive}(Token);Fashion.apply(Directive.prototype,{isDirective:!0,type:"directive"});var EOF=function(_Token13){function EOF(scanner){_classCallCheck(this,EOF);var _this50=_possibleConstructorReturn(this,(EOF.__proto__||Object.getPrototypeOf(EOF)).call(this,scanner));return _this50.value="",_this50}return _inherits(EOF,_Token13),EOF}(Token);Fashion.apply(EOF.prototype,{isEOF:!0,type:"eof"}),module.exports={Token:Token,Operator:Operator,Ident:Ident,StringLiteral:StringLiteral,Percentage:Percentage,Length:Length,Time:Time,Angle:Angle,NumberLiteral:NumberLiteral,Class:Class,Hash:Hash,Variable:Variable,Directive:Directive,EOF:EOF}},{"../export/Base.js":19}],59:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseNode=function(){function BaseNode(token,file,line,docs){if(_classCallCheck(this,BaseNode),token)if(token.$isToken){this.token=token,this.lineNumber=token.lineNumber,this.file=token.file;var scanner=token.scanner;this.acceptsDocs&&(this.docs=scanner.flushDocs())}else Fashion.apply(this,token)}return _createClass(BaseNode,[{key:"doVisit",value:function(visitor){}},{key:"descend",value:function(visitor){}}]),BaseNode}();Fashion.apply(BaseNode.prototype,{visitTarget:void 0,docs:void 0,file:void 0,token:void 0,lienNumber:void 0,acceptsDocs:!1}),module.exports=BaseNode},{"../../export/Base.js":19}],60:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseNode=require("./BaseNode.js"),Each=function(_BaseNode){function Each(cfg){return _classCallCheck(this,Each),_possibleConstructorReturn(this,(Each.__proto__||Object.getPrototypeOf(Each)).call(this,cfg))}return _inherits(Each,_BaseNode),_createClass(Each,[{key:"doVisit",value:function(visitor){visitor.Each(this)}},{key:"descend",value:function(visitor){visitor.visit(this.list),visitor.visit(this.statements)}}]),Each}(BaseNode);Fashion.apply(Each.prototype,{type:"Each",variable:void 0,list:void 0,statements:void 0});var For=function(_BaseNode2){function For(cfg){return _classCallCheck(this,For),_possibleConstructorReturn(this,(For.__proto__||Object.getPrototypeOf(For)).call(this,cfg))}return _inherits(For,_BaseNode2),_createClass(For,[{key:"doVisit",value:function(visitor){visitor.For(this)}},{key:"descend",value:function(visitor){visitor.visit(this.start),visitor.visit(this.end),visitor.visit(this.statements)}}]),For}(BaseNode);Fashion.apply(For.prototype,{type:"For",variable:void 0,start:void 0,end:void 0,statements:void 0});var While=function(_BaseNode3){function While(cfg){return _classCallCheck(this,While),_possibleConstructorReturn(this,(While.__proto__||Object.getPrototypeOf(While)).call(this,cfg))}return _inherits(While,_BaseNode3),_createClass(While,[{key:"doVisit",value:function(visitor){visitor.While(this)}},{key:"descend",value:function(visitor){visitor.visit(this.condition),visitor.visit(this.statements)}}]),While}(BaseNode);Fashion.apply(While.prototype,{type:"While",condition:void 0,statements:void 0});var Charset=function(_BaseNode4){function Charset(cfg){return _classCallCheck(this,Charset),_possibleConstructorReturn(this,(Charset.__proto__||Object.getPrototypeOf(Charset)).call(this,cfg))}return _inherits(Charset,_BaseNode4),_createClass(Charset,[{key:"doVisit",value:function(visitor){visitor.Charset(this)}}]),Charset}(BaseNode);Fashion.apply(Charset.prototype,{type:"Charset"});var FunctionNode=function(_BaseNode5){function FunctionNode(cfg){return _classCallCheck(this,FunctionNode),_possibleConstructorReturn(this,(FunctionNode.__proto__||Object.getPrototypeOf(FunctionNode)).call(this,cfg))}return _inherits(FunctionNode,_BaseNode5),_createClass(FunctionNode,[{key:"doVisit",value:function(visitor){visitor.Function(this)}},{key:"descend",value:function(visitor){visitor.visit(this.func),visitor.visit(this.statements)}}]),FunctionNode}(BaseNode);Fashion.apply(FunctionNode.prototype,{type:"Function",func:void 0,statements:void 0});var Ruleset=function(_BaseNode6){function Ruleset(cfg){return _classCallCheck(this,Ruleset),_possibleConstructorReturn(this,(Ruleset.__proto__||Object.getPrototypeOf(Ruleset)).call(this,cfg))}return _inherits(Ruleset,_BaseNode6),_createClass(Ruleset,[{key:"doVisit",value:function(visitor){visitor.Ruleset(this)}},{key:"descend",value:function(visitor){visitor.visit(this.selectors),visitor.visit(this.statements)}}]),Ruleset}(BaseNode);Fashion.apply(Ruleset.prototype,{type:"Ruleset",selectors:void 0,statements:void 0,acceptsDocs:!0});var Mixin=function(_BaseNode7){function Mixin(cfg){return _classCallCheck(this,Mixin),_possibleConstructorReturn(this,(Mixin.__proto__||Object.getPrototypeOf(Mixin)).call(this,cfg))}return _inherits(Mixin,_BaseNode7),_createClass(Mixin,[{key:"doVisit",value:function(visitor){visitor.Mixin(this)}},{key:"descend",value:function(visitor){visitor.visit(this.name),visitor.visit(this.statements)}}]),Mixin}(BaseNode);Fashion.apply(Mixin.prototype,{type:"Mixin",name:void 0,statements:void 0});var Block=function(_BaseNode8){function Block(cfg){return _classCallCheck(this,Block),_possibleConstructorReturn(this,(Block.__proto__||Object.getPrototypeOf(Block)).call(this,cfg))}return _inherits(Block,_BaseNode8),_createClass(Block,[{key:"doVisit",value:function(visitor){visitor.Block(this)}},{key:"descend",value:function(visitor){visitor.visit(this.statements)}}]),Block}(BaseNode);Fashion.apply(Block.prototype,{type:"Block",statements:void 0});var Include=function(_BaseNode9){function Include(cfg){return _classCallCheck(this,Include),_possibleConstructorReturn(this,(Include.__proto__||Object.getPrototypeOf(Include)).call(this,cfg))}return _inherits(Include,_BaseNode9),_createClass(Include,[{key:"doVisit",value:function(visitor){visitor.Include(this)}},{key:"descend",value:function(visitor){visitor.visit(this.include),this.content&&visitor.visit(this.content)}}]),Include}(BaseNode);Fashion.apply(Include.prototype,{type:"Include",include:void 0,content:void 0});var Assignment=function(_BaseNode10){function Assignment(cfg){return _classCallCheck(this,Assignment),_possibleConstructorReturn(this,(Assignment.__proto__||Object.getPrototypeOf(Assignment)).call(this,cfg))}return _inherits(Assignment,_BaseNode10),_createClass(Assignment,[{key:"doVisit",value:function(visitor){visitor.Assignment(this)}},{key:"descend",value:function(visitor){visitor.visit(this.expr)}}]),Assignment}(BaseNode);Fashion.apply(Assignment.prototype,{type:"Assignment",expr:void 0});var Declaration=function(_BaseNode11){function Declaration(cfg){return _classCallCheck(this,Declaration),_possibleConstructorReturn(this,(Declaration.__proto__||Object.getPrototypeOf(Declaration)).call(this,cfg))}return _inherits(Declaration,_BaseNode11),_createClass(Declaration,[{key:"doVisit",value:function(visitor){visitor.Declaration(this)}},{key:"descend",value:function(visitor){visitor.visit(this.value)}}]),Declaration}(BaseNode);Fashion.apply(Declaration.prototype,{type:"Declaration",property:void 0,value:void 0,acceptsDocs:!0});var VariableAssignment=function(_BaseNode12){function VariableAssignment(token,name,value){_classCallCheck(this,VariableAssignment);var _this62=_possibleConstructorReturn(this,(VariableAssignment.__proto__||Object.getPrototypeOf(VariableAssignment)).call(this,token));return _this62.name=name,_this62.value=value,_this62}return _inherits(VariableAssignment,_BaseNode12),_createClass(VariableAssignment,[{key:"doVisit",value:function(visitor){visitor.VariableAssignment(this)}},{key:"descend",value:function(visitor){visitor.visit(this.value)}}]),VariableAssignment}(BaseNode);Fashion.apply(VariableAssignment.prototype,{type:"VariableAssignment",name:void 0,value:void 0,valueText:void 0,acceptsDocs:!0});var If=function(_BaseNode13){function If(cfg){return _classCallCheck(this,If),_possibleConstructorReturn(this,(If.__proto__||Object.getPrototypeOf(If)).call(this,cfg))}return _inherits(If,_BaseNode13),_createClass(If,[{key:"doVisit",value:function(visitor){visitor.If(this)}},{key:"descend",value:function(visitor){visitor.visit(this.condition),visitor.visit(this.statements)}}]),If}(BaseNode);Fashion.apply(If.prototype,{type:"If",condition:void 0,statements:void 0});var Else=function(_BaseNode14){function Else(cfg){return _classCallCheck(this,Else),_possibleConstructorReturn(this,(Else.__proto__||Object.getPrototypeOf(Else)).call(this,cfg))}return _inherits(Else,_BaseNode14),_createClass(Else,[{key:"doVisit",value:function(visitor){visitor.Else(this)}},{key:"descend",value:function(visitor){visitor.visit(this.condition),visitor.visit(this.statements)}}]),Else}(BaseNode);Fashion.apply(Else.prototype,{type:"Else",condition:void 0,statements:void 0});var Return=function(_BaseNode15){function Return(cfg){return _classCallCheck(this,Return),_possibleConstructorReturn(this,(Return.__proto__||Object.getPrototypeOf(Return)).call(this,cfg))}return _inherits(Return,_BaseNode15),_createClass(Return,[{key:"doVisit",value:function(visitor){visitor.Return(this)}},{key:"descend",value:function(visitor){visitor.visit(this.expr)}}]),Return}(BaseNode);Fashion.apply(Return.prototype,{type:"Return",expr:void 0});var Parenthetical=function(_BaseNode16){function Parenthetical(cfg){return _classCallCheck(this,Parenthetical),_possibleConstructorReturn(this,(Parenthetical.__proto__||Object.getPrototypeOf(Parenthetical)).call(this,cfg))}return _inherits(Parenthetical,_BaseNode16),_createClass(Parenthetical,[{key:"doVisit",value:function(visitor){visitor.ParentheticalExpression(this)}},{key:"descend",value:function(visitor){visitor.visit(this.expr)}}]),Parenthetical}(BaseNode);Fashion.apply(Parenthetical.prototype,{type:"Parenthetical",expr:void 0});var SelectorPart=function(_BaseNode17){function SelectorPart(cfg){return _classCallCheck(this,SelectorPart),_possibleConstructorReturn(this,(SelectorPart.__proto__||Object.getPrototypeOf(SelectorPart)).call(this,cfg))}return _inherits(SelectorPart,_BaseNode17),_createClass(SelectorPart,[{key:"doVisit",value:function(visitor){visitor.SelectorPart(this)}},{key:"descend",value:function(visitor){visitor.visit(this.value)}}]),SelectorPart}(BaseNode);Fashion.apply(SelectorPart.prototype,{type:"SelectorPart",value:void 0});var SelectorProperty=function(_BaseNode18){function SelectorProperty(cfg){return _classCallCheck(this,SelectorProperty),_possibleConstructorReturn(this,(SelectorProperty.__proto__||Object.getPrototypeOf(SelectorProperty)).call(this,cfg))}return _inherits(SelectorProperty,_BaseNode18),_createClass(SelectorProperty,[{key:"doVisit",value:function(visitor){visitor.SelectorProperty(this)}},{key:"descend",value:function(visitor){visitor.visit(this.property),visitor.visit(this.value)}}]),SelectorProperty}(BaseNode);Fashion.apply(SelectorProperty.prototype,{type:"SelectorProperty",property:void 0,value:void 0});var CompoundSelector=function(_BaseNode19){function CompoundSelector(cfg){return _classCallCheck(this,CompoundSelector),_possibleConstructorReturn(this,(CompoundSelector.__proto__||Object.getPrototypeOf(CompoundSelector)).call(this,cfg))}return _inherits(CompoundSelector,_BaseNode19),_createClass(CompoundSelector,[{key:"doVisit",value:function(visitor){visitor.CompoundSelector(this)}},{key:"descend",value:function(visitor){visitor.visit(this.items)}}]),CompoundSelector}(BaseNode);Fashion.apply(CompoundSelector.prototype,{type:"CompoundSelector",items:void 0});var MultiPartSelector=function(_BaseNode20){function MultiPartSelector(cfg){return _classCallCheck(this,MultiPartSelector),_possibleConstructorReturn(this,(MultiPartSelector.__proto__||Object.getPrototypeOf(MultiPartSelector)).call(this,cfg))}return _inherits(MultiPartSelector,_BaseNode20),_createClass(MultiPartSelector,[{key:"doVisit",value:function(visitor){visitor.MultiPartSelector(this)}},{key:"descend",value:function(visitor){visitor.visit(this.items)}}]),MultiPartSelector}(BaseNode);Fashion.apply(MultiPartSelector.prototype,{type:"MultiPartSelector",items:void 0});var SelectorList=function(_BaseNode21){function SelectorList(cfg){return _classCallCheck(this,SelectorList),_possibleConstructorReturn(this,(SelectorList.__proto__||Object.getPrototypeOf(SelectorList)).call(this,cfg))}return _inherits(SelectorList,_BaseNode21),_createClass(SelectorList,[{key:"doVisit",value:function(visitor){visitor.SelectorList(this)}},{key:"descend",value:function(visitor){visitor.visit(this.items)}}]),SelectorList}(BaseNode);Fashion.apply(SelectorList.prototype,{type:"SelectorList",items:void 0});var BinaryExpression=function(_BaseNode22){function BinaryExpression(cfg){return _classCallCheck(this,BinaryExpression),_possibleConstructorReturn(this,(BinaryExpression.__proto__||Object.getPrototypeOf(BinaryExpression)).call(this,cfg))}return _inherits(BinaryExpression,_BaseNode22),_createClass(BinaryExpression,[{key:"doVisit",value:function(visitor){visitor.BinaryExpression(this)}},{key:"descend",value:function(visitor){visitor.visit(this.left),visitor.visit(this.right)}}]),BinaryExpression}(BaseNode);Fashion.apply(BinaryExpression.prototype,{type:"BinaryExpression",left:void 0,right:void 0});var UnaryExpression=function(_BaseNode23){function UnaryExpression(cfg){return _classCallCheck(this,UnaryExpression),_possibleConstructorReturn(this,(UnaryExpression.__proto__||Object.getPrototypeOf(UnaryExpression)).call(this,cfg))}return _inherits(UnaryExpression,_BaseNode23),_createClass(UnaryExpression,[{key:"doVisit",value:function(visitor){visitor.UnaryExpression(this)}},{key:"descend",value:function(visitor){visitor.visit(this.expr)}}]),UnaryExpression}(BaseNode);Fashion.apply(UnaryExpression.prototype,{type:"UnaryExpression",expr:void 0});var Variable=function(_BaseNode24){function Variable(token,name){_classCallCheck(this,Variable);var _this74=_possibleConstructorReturn(this,(Variable.__proto__||Object.getPrototypeOf(Variable)).call(this,token));return _this74.name=name||token.value,_this74}return _inherits(Variable,_BaseNode24),_createClass(Variable,[{key:"doVisit",value:function(visitor){visitor.Variable(this)}}]),Variable}(BaseNode);Fashion.apply(Variable.prototype,{type:"Variable"});var Constant=function(_BaseNode25){function Constant(token,value){_classCallCheck(this,Constant);var _this75=_possibleConstructorReturn(this,(Constant.__proto__||Object.getPrototypeOf(Constant)).call(this,token));return _this75.value=value||token.value,_this75}return _inherits(Constant,_BaseNode25),_createClass(Constant,[{key:"doVisit",value:function(visitor){visitor.Constant(this)}}]),Constant}(BaseNode);Fashion.apply(Constant.prototype,{type:"Constant",value:void 0});var Literal=function(_Constant){function Literal(token,value){return _classCallCheck(this,Literal),_possibleConstructorReturn(this,(Literal.__proto__||Object.getPrototypeOf(Literal)).call(this,token,value))}return _inherits(Literal,_Constant),Literal}(Constant);Fashion.apply(Literal.prototype,{dataType:"Literal"});var Number=function(_Constant2){function Number(token,value){return _classCallCheck(this,Number),_possibleConstructorReturn(this,(Number.__proto__||Object.getPrototypeOf(Number)).call(this,token,value))}return _inherits(Number,_Constant2),Number}(Constant);Fashion.apply(Number.prototype,{dataType:"Number"});var String=function(_Constant3){function String(token,value,quoteChar){_classCallCheck(this,String);var _this78=_possibleConstructorReturn(this,(String.__proto__||Object.getPrototypeOf(String)).call(this,token,value));return _this78.quoteChar=void 0!==quoteChar?quoteChar:token.quoteChar,_this78}return _inherits(String,_Constant3),String}(Constant);Fashion.apply(String.prototype,{dataType:"String",quoteChar:void 0});var Length=function(_Constant4){function Length(token,value,quoteChar){return _classCallCheck(this,Length),_possibleConstructorReturn(this,(Length.__proto__||Object.getPrototypeOf(Length)).call(this,token,value))}return _inherits(Length,_Constant4),Length}(Constant);Fashion.apply(Length.prototype,{dataType:"Length",quoteChar:void 0});var Time=function(_Constant5){function Time(token,value,quoteChar){return _classCallCheck(this,Time),_possibleConstructorReturn(this,(Time.__proto__||Object.getPrototypeOf(Time)).call(this,token,value))}return _inherits(Time,_Constant5),Time}(Constant);Fashion.apply(Time.prototype,{dataType:"Time",quoteChar:void 0});var Angle=function(_Constant6){function Angle(token,value,quoteChar){return _classCallCheck(this,Angle),_possibleConstructorReturn(this,(Angle.__proto__||Object.getPrototypeOf(Angle)).call(this,token,value))}return _inherits(Angle,_Constant6),Angle}(Constant);Fashion.apply(Angle.prototype,{dataType:"Angle",quoteChar:void 0});var Percentage=function(_Constant7){function Percentage(token,value,quoteChar){return _classCallCheck(this,Percentage),_possibleConstructorReturn(this,(Percentage.__proto__||Object.getPrototypeOf(Percentage)).call(this,token,value))}return _inherits(Percentage,_Constant7),Percentage}(Constant);Fashion.apply(Percentage.prototype,{dataType:"Percentage",quoteChar:void 0});var Color=function(_Constant8){function Color(token,value,quoteChar){return _classCallCheck(this,Color),_possibleConstructorReturn(this,(Color.__proto__||Object.getPrototypeOf(Color)).call(this,token,value))}return _inherits(Color,_Constant8),Color}(Constant);Fashion.apply(Color.prototype,{dataType:"Color",quoteChar:void 0});var FunctionCall=function(_BaseNode26){function FunctionCall(token,id,args){_classCallCheck(this,FunctionCall);var _this84=_possibleConstructorReturn(this,(FunctionCall.__proto__||Object.getPrototypeOf(FunctionCall)).call(this,token));return _this84.id=id,_this84.args=args,_this84}return _inherits(FunctionCall,_BaseNode26),_createClass(FunctionCall,[{key:"doVisit",value:function(visitor){visitor.FunctionCall(this)}},{key:"descend",value:function(visitor){visitor.visit(this.args)}}]),FunctionCall}(BaseNode);Fashion.apply(FunctionCall.prototype,{type:"FunctionCall",id:void 0,args:void 0});var Extend=function(_BaseNode27){function Extend(cfg){return _classCallCheck(this,Extend),_possibleConstructorReturn(this,(Extend.__proto__||Object.getPrototypeOf(Extend)).call(this,cfg))}return _inherits(Extend,_BaseNode27),_createClass(Extend,[{key:"doVisit",value:function(visitor){visitor.Extend(this)}}]),Extend}(BaseNode);Fashion.apply(Extend.prototype,{type:"Extend"});var List=function(_BaseNode28){function List(token,items,separator){_classCallCheck(this,List);var _this86=_possibleConstructorReturn(this,(List.__proto__||Object.getPrototypeOf(List)).call(this,token));return _this86.items=items,_this86.separator=separator,_this86}return _inherits(List,_BaseNode28),_createClass(List,[{key:"doVisit",value:function(visitor){visitor.List(this)}},{key:"descend",value:function(visitor){visitor.visit(this.items)}}]),List}(BaseNode);Fashion.apply(List.prototype,{type:"List",items:void 0,separator:void 0,isFashionListAst:!0});var Warn=function(_BaseNode29){function Warn(cfg){return _classCallCheck(this,Warn),_possibleConstructorReturn(this,(Warn.__proto__||Object.getPrototypeOf(Warn)).call(this,cfg))}return _inherits(Warn,_BaseNode29),_createClass(Warn,[{key:"doVisit",value:function(visitor){visitor.Warn(this)}}]),Warn}(BaseNode);Fashion.apply(Warn.prototype,{type:"Warn"});var Error=function(_BaseNode30){function Error(cfg){return _classCallCheck(this,Error),_possibleConstructorReturn(this,(Error.__proto__||Object.getPrototypeOf(Error)).call(this,cfg))}return _inherits(Error,_BaseNode30),_createClass(Error,[{key:"doVisit",value:function(visitor){visitor.Error(this)}}]),Error}(BaseNode);Fashion.apply(Error.prototype,{type:"Error"});var Debug=function(_BaseNode31){function Debug(cfg){return _classCallCheck(this,Debug),_possibleConstructorReturn(this,(Debug.__proto__||Object.getPrototypeOf(Debug)).call(this,cfg))}return _inherits(Debug,_BaseNode31),_createClass(Debug,[{key:"doVisit",value:function(visitor){visitor.Debug(this)}},{key:"descend",value:function(visitor){visitor.visit(this.expr)}}]),Debug}(BaseNode);Fashion.apply(Debug.prototype,{type:"Debug",expr:void 0});var Import=function(_BaseNode32){function Import(cfg){return _classCallCheck(this,Import),_possibleConstructorReturn(this,(Import.__proto__||Object.getPrototypeOf(Import)).call(this,cfg))}return _inherits(Import,_BaseNode32),_createClass(Import,[{key:"doVisit",value:function(visitor){visitor.Import(this)}}]),Import}(BaseNode);Fashion.apply(Import.prototype,{type:"Import",source:void 0});var Require=function(_BaseNode33){function Require(cfg){return _classCallCheck(this,Require),_possibleConstructorReturn(this,(Require.__proto__||Object.getPrototypeOf(Require)).call(this,cfg))}return _inherits(Require,_BaseNode33),_createClass(Require,[{key:"doVisit",value:function(visitor){visitor.Require(this)}},{key:"descend",value:function(visitor){visitor.visit(this.source)}}]),Require}(BaseNode);Fashion.apply(Require.prototype,{type:"Require",source:void 0});var Content=function(_BaseNode34){function Content(cfg){return _classCallCheck(this,Content),_possibleConstructorReturn(this,(Content.__proto__||Object.getPrototypeOf(Content)).call(this,cfg))}return _inherits(Content,_BaseNode34),_createClass(Content,[{key:"doVisit",value:function(visitor){visitor.Content(this)}}]),Content}(BaseNode);Fashion.apply(Content.prototype,{type:"Content"});var Debugger=function(_BaseNode35){function Debugger(cfg){return _classCallCheck(this,Debugger),_possibleConstructorReturn(this,(Debugger.__proto__||Object.getPrototypeOf(Debugger)).call(this,cfg))}return _inherits(Debugger,_BaseNode35),_createClass(Debugger,[{key:"doVisit",value:function(visitor){visitor.Debugger(this)}}]),Debugger}(BaseNode);Fashion.apply(Debugger.prototype,{type:"Debugger"}),module.exports={Each:Each,For:For,While:While,Charset:Charset,Function:FunctionNode,Ruleset:Ruleset,Mixin:Mixin,Block:Block,Include:Include,Assignment:Assignment,Declaration:Declaration,VariableAssignment:VariableAssignment,If:If,Else:Else,Return:Return,Parenthetical:Parenthetical,
SelectorPart:SelectorPart,SelectorProperty:SelectorProperty,CompoundSelector:CompoundSelector,MultiPartSelector:MultiPartSelector,SelectorList:SelectorList,BinaryExpression:BinaryExpression,UnaryExpression:UnaryExpression,Variable:Variable,Constant:Constant,Literal:Literal,Number:Number,String:String,Length:Length,Time:Time,Angle:Angle,Percentage:Percentage,Color:Color,FunctionCall:FunctionCall,Extend:Extend,List:List,Warn:Warn,Error:Error,Debug:Debug,Import:Import,Require:Require,Content:Content,Debugger:Debugger}},{"../../export/Base.js":19,"./BaseNode.js":59}],61:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),FunctionCall=require("../export/type/FunctionCall.js"),Literal=require("../export/type/Literal.js"),Declaration=require("../type/Declaration.js"),Ruleset=require("../type/Ruleset.js"),SelectorList=require("../type/selectors/SelectorList.js"),ExportBuilder=(require("../Preprocessor.js"),require("../parse/ast/Nodes.js"),require("./ExportBuilder.js"));module.exports={init:function(runtime){runtime.register({create_css_variable:function(name,value,base){for(;base&&base.$previousReference;)base=base.$previousReference;return value.$referenceName=this.unbox(name),value.$referenceBase=base||value,value},name_of:function(refNode){for(;refNode&&refNode.$referenceBase;)refNode=refNode.$referenceBase;return refNode&&refNode.$referenceName}}),runtime.registerProcessor({enable:!0,execute:function(obj,ctx){var me=this,config=runtime.context.getConfig("cssVars");config&&Fashion.apply(this,config),me.enable&&(me.ctx=ctx,ctx.exportedVariables={},ctx.exportRuleset=new Ruleset({selectors:new SelectorList([new Literal("html")])}),me.visit(obj),"all"===me["export"]&&me.exportAllGlobals(obj))},exportAllGlobals:function(css){var globals=runtime.getGlobalScope().getEntries(),me=this,exportRuleset=me.ctx.exportRuleset;for(var key in globals){var entry=globals[key],value=entry;if(value&&value.ast&&value.$referenceName){var name=value.$referenceName,jsName=Fashion.getJsName(name.replace(/^--/g,"$")),varName=name.replace(/^\$/,""),dynamics=runtime._dynamics;dynamics[jsName]&&!entry.exported&&0!==varName.indexOf("include-")&&(exportRuleset.addDeclaration(new Declaration({property:"--"+varName,value:new Literal("export")})),entry.exported=!0)}}this.visit(exportRuleset)},declaration:function(decl){var name=decl.property,val=decl.value,exportedVariables=this.ctx.exportedVariables;if(0==name.indexOf("--")&&val&&val.$isFashionLiteral&&val.value&&"export"===val.value.trim()){var jsName=Fashion.getJsName(name.replace(/^--/g,"$")),globals=runtime.getGlobalScope(),dynamics=runtime._dynamics,variable=globals.get(jsName),baseName=name.replace(/^--/g,""),key=Fashion.getJsName(baseName),exported=exportedVariables[key]||{name:baseName,rulesets:[]};variable&&(dynamics[jsName]?(val&&(val.visitTarget=variable.clone()),exported.declaration=decl,exported.variable=variable,variable.exported=!0,exported.rulesets.push(decl.ruleset),exportedVariables[key]=exported):Fashion.log("cannot export "+jsName+" because it is not dynamic"))}this.visit(val)}}),runtime.registerProcessor({currDecl:null,referenceNodes:null,enable:!0,execute:function(obj,ctx){var me=this,config=runtime.context.getConfig("cssVars");if(config&&Fashion.apply(me,config),me.enable){me.ctx=ctx,me.visit(obj);var exportedVariables=me.ctx.exportedVariables;if(Object.getOwnPropertyNames(exportedVariables).length){var exportRuleset=me.ctx.exportRuleset,builder=new ExportBuilder(exportRuleset);builder["export"]=me["export"];var exportFn=builder.buildExportFunction(exportedVariables,runtime);exportRuleset.declarations.length&&(obj.push(exportRuleset),me.ctx.exportRuleset=new Ruleset({selectors:new SelectorList([new Literal("html")])})),exportFn&&(ctx.exportFn=exportFn)}}},visitItem:function(item){item.$referenceName?this.referenceNodes.push(item):item.doVisit(this)},declaration:function(decl){this.currDecl=decl,this.referenceNodes=[];var copy=decl.clone(),refNodes=this.referenceNodes,addNewDecl=!1,exportedVariables=this.ctx.exportedVariables;this.visit(copy.value);for(var i=0;i<refNodes.length;i++){for(var refBase,referenceNode=refNodes[i],refNode=referenceNode;refNode;){if(refNode.$referenceBase){refBase=refNode.$referenceBase;break}refNode=refNode.$previousReference}if(refBase){var newName,exported,visitTarget,exDecl,keyName,base=refBase,baseName=base.$referenceName.replace(/^\$/,"");if(baseName=Fashion.getJsName(baseName),newName=refNode.$referenceName.replace(/^\$/,""),keyName=Fashion.getJsName(newName),exportedVariables[baseName]?(exported=exportedVariables[baseName],exDecl=exported.declaration):exDecl=copy,!exportedVariables[keyName]){var d=new Declaration({property:"--"+newName,value:refNode.clone()});exportedVariables[keyName]={declaration:d,name:newName,rulesets:[exDecl.ruleset],variable:{$isWrapper:!0,value:d.value}},visitTarget=exDecl.visitTarget,visitTarget||(exDecl.visitTarget=visitTarget=[new Declaration({property:exDecl.property,important:exDecl.important,sourceInfo:exDecl.sourceInfo,value:exDecl.value})]),visitTarget.push(d)}}refNode=referenceNode;inner:for(;refNode;){var refName=refNode.$referenceName.replace(/^\$/,""),keyName=Fashion.getJsName(refName);if(exportedVariables[keyName]){referenceNode.visitTarget=new FunctionCall("var",[new Literal("--"+refName)]),addNewDecl=!0;break inner}refNode=refNode.$previousReference&&refNode.$previousReference.$referenceName?refNode.$previousReference:null}}addNewDecl&&(decl.visitTarget=[decl.clone(),copy]),this.currDecl=null,this.referenceNodes=null}})}}},{"../Preprocessor.js":13,"../export/Base.js":19,"../export/type/FunctionCall.js":29,"../export/type/Literal.js":32,"../parse/ast/Nodes.js":60,"../type/Declaration.js":65,"../type/Ruleset.js":66,"../type/selectors/SelectorList.js":74,"./ExportBuilder.js":63}],62:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Env=require("../Env.js"),Literal=require("../export/type/Literal.js"),FunctionCall=require("../export/type/FunctionCall.js");module.exports={init:function(runtime){var mimeTypeMap={otf:"font-opentype",eot:"application/vnd.ms-fontobject",ttf:"font/truetype",svg:"image/svg+xml",woff:"application/x-font-woff",woff2:"application/x-font-woff2",gif:"image/gif",png:"image/png"},report=!1,excludes=[],includes=[],maxItemSize=-1;runtime.registerProcessor({getSourceFromCall:function(obj){var source,args=obj.args;return args.items&&(args=args.items),Array.isArray(args)||(args=[args]),1===args.length&&(source=args[0]),source=source.value?source.value:""+source},getSubstring:function(source,char){var idx=source.indexOf(char);return idx>-1&&(source=source.substring(0,idx)),source},detectExtension:function(source){source=this.getSubstring(source,"#"),source=this.getSubstring(source,"?");var idx=source.lastIndexOf("."),extension=source.substring(idx+1);return extension},detectMimeType:function(source){var extension=this.detectExtension(source),mapped=mimeTypeMap[extension];return mapped||"application/octet-stream"},encodeBytes:function(bytes){if(Env.isNode)return bytes.toString("base64");for(var str="",i=0;i<bytes.length;i++)str+=String.fromCharCode(bytes[i]);return btoa(str)},isMatch:function(source,filters){for(var f=0;f<filters.length;f++)if(filters[f].test(source))return!0;return!1},isExcluded:function(source){return this.isMatch(source,excludes)},isIncluded:function(source){return this.isMatch(source,includes)},inlineUrl:function(obj,mimeType,charset){var url,queue,extension,inlineTag,inlineExtensionTag,skip,me=this,context=me.context,cache=context.cache||(context.cache={}),source=me.getSourceFromCall(obj);source&&(mimeType=mimeType||me.detectMimeType(source),charset=charset||"UTF-8",url=me.basePath+"/"+source,extension=this.detectExtension(url),inlineTag=obj.hasTag("inline"),inlineExtensionTag=obj.hasTag("inline\\:"+extension),skip=!1,this.isExcluded(source)?skip=!0:this.isIncluded(source)?skip=!1:inlineExtensionTag===!1?skip=!0:null===inlineExtensionTag&&inlineTag===!1&&(skip=!0),skip||(queue=cache[url]||function(){function inlineData(bytes){var data,arg,optNode;try{data=me.encodeBytes(bytes),arg=new Literal(encodeURI("data:"+mimeType+(charset?";charset="+charset:"")+";base64,"+data)),Fashion.debug("creating inline data node for : "+url),optNode=new FunctionCall("url",[arg])}catch(e){Fashion.error(e)}if(maxItemSize>-1&&arg.value.length>maxItemSize&&(optNode=null),optNode&&report){var size=data.length,num=token.nodes.length;Fashion.log(num+" * "+size+" bytes for "+url+".")}for(var n=0;n<token.nodes.length;n++){if(optNode){var node=token.nodes[n];node.visitTarget=optNode}context.ready.unblock()}}var token={nodes:[],url:url};if(Env.isBrowser)Env.doRequest({url:url,async:!0,binary:!0,params:{_dc:(new Date).getTime()},onComplete:function(options,xhr){try{inlineData(xhr.getBinaryData())}catch(err){Fashion.error(err)}},onError:function(options,xhr){for(var n=0;n<token.nodes.length;n++)context.ready.unblock()}});else{var fs=Env.fs;fs.readFile(url,function(err,data){err?(Fashion.error(err),context.ready.unblock()):inlineData(data)})}return token}(),queue.nodes.push(obj),context.ready.block()))},functioncall:function(obj){var name=obj.name;if("url"===name)if(this.fontFace)this.inlineUrl(obj);else if(this.currDeclaration){var name=this.currDeclaration.property;"background-image"===name&&this.inlineUrl(obj)}},declaration:function(obj){var declWas=this.declaration;this.currDeclaration=obj,obj.descend(this),this.currDeclaration=declWas},ruleset:function(obj){var ffWas=this.fontFace,rulesetWas=this.currRuleset;this.currRuleset=obj,obj.isAtRule()&&"@font-face"===obj.getFirstSelectorStr()&&(this.fontFace=obj),obj.descend(this),this.currRuleset=rulesetWas,this.fontFace=ffWas},execute:function(obj,ctx){this.context=ctx,this.basePath=runtime.context.getConfig("basePath");var config=runtime.context.getConfig("inliner");if(config&&config.enable){if(config.report&&(report=config.report),config.excludes)for(var i=0;i<config.excludes.length;i++)excludes.push(RegExp(config.excludes[i]));if(config.includes)for(var i=0;i<config.includes.length;i++)includes.push(RegExp(config.includes[i]));maxItemSize=config.maxItemSize||-1,this.visit(obj)}}})}}},{"../Env.js":9,"../export/Base.js":19,"../export/type/FunctionCall.js":29,"../export/type/Literal.js":32}],63:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Preprocessor=require("../Preprocessor.js"),Nodes=require("../parse/ast/Nodes.js"),ExportTypes=require("../export/type/Types.js"),ExportRuntime=require("../export/Runtime.js"),CssVariableManager=require("../export/css/CssVariableManager.js");CssVariableManager=new CssVariableManager;for(var IndexGenerator=function(){function IndexGenerator(){_classCallCheck(this,IndexGenerator),this.ids=[],this.index=0}return _createClass(IndexGenerator,[{key:"_getIndexes",value:function(ids){for(var prefix,len=ids.length||1,chars=this.chars,clen=1==len?chars.length-10:chars.length,out=[],i=0;i<len;i++)for(var j=0;j<clen;j++)prefix=(ids[i]||"")+chars[j],"as"!==prefix&&"do"!==prefix&&"if"!==prefix&&"in"!==prefix&&out.push(prefix);return out}},{key:"next",value:function(){var me=this;return me.index<me.ids.length?me.ids[me.index++]:(me.index=0,me.ids=me._getIndexes(me.ids),me.next())}}]),IndexGenerator}(),chars=IndexGenerator.prototype.chars=["_","$"],i=65;i<91;i++)chars.push(String.fromCharCode(i)),chars.push(String.fromCharCode(i+32));chars.push.call(chars,"0","1","2","3","4","5","6","7","8","9");var ExportBuilder=function(){function ExportBuilder(defaultRuleset){_classCallCheck(this,ExportBuilder),this.defaultRuleset=defaultRuleset}return _createClass(ExportBuilder,[{key:"instrumentObject",value:function(registered,called,isFn){var instrumented={};return Object.getOwnPropertyNames(registered).forEach(function(key){var fn=registered[key];instrumented[key]=function(){return called[key]={func:fn,isFn:isFn},fn.apply(registered,arguments)}}),instrumented}},{key:"buildExportFn",value:function(variables){var setterVariables,sortedAst,settersCode,settersFunc,me=this,runtime=this.runtime,setterAst=me.createSettersAst(variables),preprocessor=new Preprocessor({runtime:runtime}),newContext=new runtime.context.constructor({preprocessor:preprocessor}),allVariables=Fashion.chain(runtime.context.preprocessor.variables);preprocessor.enableElevationWarning=!1,preprocessor.sortAllVariables="all"===this["export"],preprocessor.loadPreprocessorCache(runtime.context.preprocessor),preprocessor.reset=function(){},preprocessor.preprocess(setterAst,!0),setterVariables=preprocessor.getVariables(),Fashion.apply(allVariables,setterVariables),preprocessor.variables=allVariables,newContext.dynamicsMap=preprocessor.getDynamicsMap(),sortedAst=preprocessor.getSortedDynamicAstNodes(),settersCode=newContext.transpiler.transpile(sortedAst),newContext.runtime.setCaches(newContext.transpiler);var origGet=runtime.constructor.prototype.get,origRegistered=runtime.registered,origFunctions=runtime.functions,registered=origRegistered,functions=origFunctions,called={},read={};runtime.registered=me.instrumentObject(registered,called,!1),runtime.functions=me.instrumentObject(functions,called,!0),runtime.constructor.prototype.get=function(name){var result=origGet.apply(this,arguments),jsName=Fashion.getJsName(name).replace(/^\$/,"");return variables[jsName]||(read[jsName]={name:jsName,variable:result}),result},newContext.runtime.copyRuntimeState(runtime),settersFunc=newContext.compile(settersCode),settersFunc(newContext.runtime,null,newContext.dynamicsMap),runtime.registered=origRegistered,runtime.functions=origFunctions,runtime.constructor.prototype.get=origGet;var keys=Object.getOwnPropertyNames(read);if(keys.length){for(var k=0;k<keys.length;k++){var key=keys[k];variables[key]=read[key]}return me.buildExportFn(variables)}var registered=[],functions=[];Object.getOwnPropertyNames(called).forEach(function(key){var value=called[key],func=called[key].func,fn=func+"";fn=fn.replace(/^.*?\(/g," function ("),value.isFn?functions.push("    "+key+": "+fn):registered.push("    "+key+": "+fn)});var fnPrefix="(function(Fashion){\n\tvar __udf = undefined,\n\t    Types = Fashion.Types,\n\t    __strings = {},\n\n\t    __names = Fashion.css.buildNames(__strings),\n\n\t    __jsNames = Fashion.css.buildJsNames(__strings);\n";fnPrefix+=runtime.createTypesBlock(ExportTypes);var fnBody=fnPrefix+"\n\tFashion.css.register(function(__rt) {\n";return fnBody+="__rt.register({\n",fnBody+=registered.join(",\n"),fnBody+="\n});\n",fnBody+=runtime.createMethodBlock(ExportRuntime.prototype),fnBody+=runtime.createPropertyBlock(),fnBody+="Fashion.apply(__rt.functions, {\n",fnBody+=functions.join(",\n").replace(/__rt\.registered/,"__rt_registered").replace(/__rt\.functions/,"__rt_functions").replace(/__rt\.mixins/,"__rt_mixins"),fnBody+="\n});\n",fnBody+="},\n",fnBody+=" function(__rt) {\n",fnBody+=runtime.createMethodBlock(ExportRuntime.prototype),fnBody+=runtime.createPropertyBlock(),fnBody+=settersCode.replace(/__rt\.registered/,"__rt_registered").replace(/__rt\.functions/,"__rt_functions").replace(/__rt\.mixins/,"__rt_mixins")+"\n",fnBody+="},\n"}},{key:"createSettersAst",value:function(exportedVariables){var setters=[];return Object.getOwnPropertyNames(exportedVariables).forEach(function(key){var ast,exported=exportedVariables[key],value=exported.variable;value.$isWrapper&&(value=value.value),ast=value.ast,ast&&setters.push(new Nodes.VariableAssignment(null,"$"+exported.name,ast))}),setters}},{key:"buildExportFunction",value:function(exportedVariables,runtime){var fnBody,keys,i,j,rs,selector,setters,setter,vars,variable,entry,me=this,selectorMap={};for(me.runtime=runtime,fnBody=me.buildExportFn(exportedVariables),keys=Object.getOwnPropertyNames(exportedVariables),i=0;i<keys.length;i++){var key=keys[i],exported=exportedVariables[key],rulesets=exported.rulesets;for(!rulesets&&me.defaultRuleset&&(rulesets=[me.defaultRuleset]),j=0;j<rulesets.length;j++)rs=rulesets[j],selector=Fashion.SourceBuilder.toSource(rs.selectors),entry=selectorMap[selector]||(selectorMap[selector]={vars:[],name:exported.name}),entry.vars.push(exported)}for(keys=Object.getOwnPropertyNames(selectorMap),fnBody+=" {\n",setters=[],i=0;i<keys.length;i++){for(setter="",key=keys[i],entry=selectorMap[key],vars=entry.vars,setter+="\t"+JSON.stringify(key)+": [\n",j=0;j<vars.length;j++)j>0&&(setter+=",\n"),variable=vars[j],setter+="\t\t"+JSON.stringify(variable.name);setter+="\n\t]",setters.push(setter)}fnBody+=setters.join(",\n"),fnBody+="});\n})(Fashion);";for(var name,jsName,match,keys=[],regex=/__rt_set\("(.+?)"/g;match=regex.exec(fnBody);)keys.push(match[1]);keys.sort(function(a,b){return a.length-b.length});for(var prefix,strings={},map={},idGen=new IndexGenerator,i=0;i<keys.length;i++)if(key=keys[i],!map[key]){map[key]=!0,prefix=idGen.next(),strings[prefix]=key,name=CssVariableManager.buildName(key),jsName=CssVariableManager.buildJsName(key);var keyRx=RegExp('"\\'+key+"\"|'\\"+key+"'","g"),nameRx=RegExp('"'+name+"\"|'"+name+"'","g"),jsNameRx=RegExp('"\\'+jsName+"\"|'\\"+jsName+"'","g");fnBody=fnBody.replace(keyRx,"__strings."+prefix).replace(nameRx,"__names."+prefix).replace(jsNameRx,"__jsNames."+prefix)}return map=JSON.stringify(strings,null,4),map=map.replace(/"(.*?)":(.*?)(,?)/g,"$1:$2$3"),fnBody=fnBody.replace("__strings = {},","__strings = "+map+",")}}]),ExportBuilder}();module.exports=ExportBuilder},{"../Preprocessor.js":13,"../export/Base.js":19,"../export/Runtime.js":21,"../export/css/CssVariableManager.js":22,"../export/type/Types.js":42,"../parse/ast/Nodes.js":60}],64:[function(require,module,exports){"use strict";var SelectorList=require("../type/selectors/SelectorList.js");module.exports={init:function(runtime){function register(){registered||(registered=!0,runtime.registerProcessor({runHooks:function(obj,hooks){if(hooks)for(var h=0;h<hooks.length;h++)hooks[h].call(this,obj,this.context)},functioncall:function(obj){this.runHooks(obj,functionCallHooks[obj.name])},declaration:function(obj){this.runHooks(obj,styleHooks[obj.property]),obj.descend(this)},ruleset:function(obj){var me=this;me.currRuleset=obj;for(var selectors=obj.selectors,selectorsStr=""+selectors,len=toPrune.length,filter=void 0,i=0;i<len;i++)if(filter=toPrune[i],filter.test(selectorsStr)){if(selectors.$isFashionSelectorPart||selectors.$isFashionMultiPartSelector||selectors.$isFashionCompoundSelector)obj.selectors=null;else if(selectors.$isFashionSelectorList){selectors=selectors.items;for(var j=selectors.length-1;j>=0;j--)filter.test(""+selectors[j])&&selectors.splice(j--,1);if(0==selectors.length)obj.selectors=null;else{if(1==selectors.length){selectors=obj.selectors=selectors[0],selectorsStr=""+selectors;continue}obj.selectors=new SelectorList(selectors)}}break}null!=obj.selectors&&(me.visit(obj.selectors),obj.isAtRule()&&me.runHooks(obj,atRuleHooks[obj.getFirstSelectorStr()]),me.visit(obj.declarations),me.visit(obj.children)),me.currRuleset=null},selector:function(obj){this.runHooks(this.currRuleset,selectorHooks[""+obj])},execute:function(obj,ctx){this.context=ctx,this.visit(obj),this.context=null}}))}function registerHooks(map,obj){register();var hooks;for(var key in obj)hooks=map[key],hooks||(hooks=map[key]=[]),hooks.push(obj[key])}var selectorHooks={},styleHooks={},atRuleHooks={},functionCallHooks={},toPrune=[],registered=!1;runtime.registerSelectorHooks=function(obj){registerHooks(selectorHooks,obj)},runtime.registerAtRuleHook=function(obj){registerHooks(atRuleHooks,obj)},runtime.registerStyleHooks=function(obj){registerHooks(styleHooks,obj)},runtime.registerFunctionCallHooks=function(obj){registerHooks(functionCallHooks,obj)},null!=runtime.context.getConfig("prune")&&(toPrune=runtime.context.getConfig("prune").map(function(s){return s=s.replace(/[\-\[\]\/{}()*+?.\\\^$|]/g,"\\$&"),RegExp("^"+s+"$|"+s+"\\b")}),register())}}},{"../type/selectors/SelectorList.js":74}],65:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Type=require("./../export/type/Type.js"),Declaration=function(_Type11){function Declaration(cfg){_classCallCheck(this,Declaration);var _this94=_possibleConstructorReturn(this,(Declaration.__proto__||Object.getPrototypeOf(Declaration)).call(this));return cfg&&Fashion.apply(_this94,cfg),_this94}return _inherits(Declaration,_Type11),_createClass(Declaration,[{key:"doVisit",value:function(visitor){visitor.declaration(this)}},{key:"descend",value:function(visitor){visitor.visit(this.value)}},{key:"copy",value:function(){return new Declaration({property:this.property,important:this.important,sourceInfo:this.sourceInfo,value:this.value.clone()})}},{key:"clone",value:function(match,replace){return replace&&this.matches(match)?replace.clone():new Declaration({property:this.property,important:this.important,sourceInfo:this.sourceInfo,ruleset:this.ruleset,value:this.value.clone(match,replace)})}}]),Declaration}(Type);Fashion.apply(Declaration.prototype,{type:"declaration",$isFashionDeclaration:!0,$canUnbox:!1,property:null,value:null,important:null,sourceInfo:null,ruleset:null}),module.exports=Declaration},{"../export/Base.js":19,"./../export/type/Type.js":40}],66:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),Type=require("./../export/type/Type.js"),MultiPartSelector=require("./selectors/MultiPartSelector.js"),SelectorList=require("./selectors/SelectorList.js"),Ruleset=function(_Type12){function Ruleset(cfg){_classCallCheck(this,Ruleset);var _this95=_possibleConstructorReturn(this,(Ruleset.__proto__||Object.getPrototypeOf(Ruleset)).call(this));return cfg&&Fashion.apply(_this95,cfg),_this95.children=[],_this95.selectors=_this95.selectors||new SelectorList([]),_this95.declarations=_this95.declarations||[],_this95}return _inherits(Ruleset,_Type12),_createClass(Ruleset,[{key:"doVisit",value:function(visitor){visitor.ruleset(this)}},{key:"descend",value:function(visitor){visitor.visit(this.selectors),visitor.visit(this.declarations),visitor.visit(this.children)}},{key:"addDeclaration",value:function(declaration,index){declaration.ruleset=this,void 0===index?this.declarations.push(declaration):this.declarations.splice(index,0,declaration)}},{key:"getDeclarationIndex",value:function(decl){for(var i=0;i<this.declarations.length;i++)if(this.declarations[i]===decl)return i;return-1}},{key:"removeDeclaration",value:function(decl){this.declarations=Fashion.filter(this.declarations,function(d){return d!==decl})}},{key:"lastDeclaration",value:function(){return this.declarations.length&&this.declarations[this.declarations.length-1]||null}},{key:"addChildRuleset",value:function(ruleset){this.children.push(ruleset)}},{key:"removeChildRuleset",value:function(child){this.children=Fashion.filter(this.children,function(item){return item!==child})}},{key:"getFirstSelector",value:function(){var selectors=this.selectors;return selectors instanceof SelectorList&&(selectors=selectors.items[0]),selectors instanceof MultiPartSelector&&(selectors=selectors.items[0]),selectors}},{key:"getFirstSelectorStr",value:function(){return void 0===this._firstSelectorStr&&(this._firstSelectorStr=this.getFirstSelector()+""),this._firstSelectorStr}},{key:"isAtRule",value:function(){return 0===this.getFirstSelectorStr().indexOf("@")}},{key:"isMedia",value:function(){return 0===this.getFirstSelectorStr().indexOf("@media")}},{key:"isKeyFrames",value:function(){return 0===this.getFirstSelectorStr().indexOf("@keyframes")||0===this.getFirstSelectorStr().indexOf("@-webkit-keyframes")}},{key:"isPage",value:function(){return this.isAtRule()&&0===this.getFirstSelectorStr().indexOf("@page")}},{key:"isAtRoot",value:function(){return this.isAtRule()&&0===this.getFirstSelectorStr().indexOf("@at-root")}},{key:"isDirective",value:function(){return this.isAtRule()&&!this.isMedia()&&0===this.declarations.length&&0===this.children.length}},{key:"printAtRoot",value:function(){return this.isMedia()||this.isAtRoot()}}]),Ruleset}(Type);Fashion.apply(Ruleset.prototype,{type:"ruleset",$isFashionRuleset:!0,$canUnbox:!1,declarations:null,selectors:null,sourceInfo:null,blockDocs:null,parent:null,isNamespaced:null,children:null,extend:null,isAtDirective:null,atDirectiveName:null,atDirectiveValue:null,isMediaRoot:null,hasBlock:null,_firstSelectorStr:void 0}),module.exports=Ruleset},{"../export/Base.js":19,"./../export/type/Type.js":40,"./selectors/MultiPartSelector.js":73,"./selectors/SelectorList.js":74}],67:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),BaseSourceBuilder=(require("./TypeVisitor.js"),require("../export/Output.js"),require("../export/type/SourceBuilder.js")),SourceBuilder=function(_BaseSourceBuilder){function SourceBuilder(cfg){_classCallCheck(this,SourceBuilder);var _this96=_possibleConstructorReturn(this,(SourceBuilder.__proto__||Object.getPrototypeOf(SourceBuilder)).call(this,cfg));return _this96.nullFound=!1,_this96}return _inherits(SourceBuilder,_BaseSourceBuilder),_createClass(SourceBuilder,[{key:"selectorlist",value:function(obj){var i,items=obj.items,len=items.length,output=this.output;for(i=0;i<len;i++)this.visit(items[i]),i<len-1&&(output.add(","),output.addln(),this.selectorCount++)}},{key:"selectorproperty",value:function(obj){this.visit(obj.property),this.output.add(": "),this.visit(obj.value)}},{key:"multipartselector",value:function(obj){this.list(obj)}},{key:"compoundselector",value:function(obj){this.list(obj.sort())}},{key:"selector",value:function(obj){var parentSelector=obj.parent,output=this.output;switch(obj.selectorType){case"parent":if(parentSelector)return this.visit(parent),!1;this.visit(obj.value);break;case"placeholder":output.add("%"),this.visit(obj.value);break;case"dash":output.add("-"),this.visit(obj.value);break;case"attribute":output.add("["),this.visit(obj.value),output.add("]");break;case"pseudo":output.add(":"),this.visit(obj.value);break;default:this.visit(obj.value)}}},{key:"declaration",value:function(obj){var prev,output=this.output,currDeclarationWas=this.currDeclaration,start=output.output,nullFoundWas=this.nullFound;if(obj.docs&&obj.docs.length)for(var d=0;d<obj.docs.length;d++)output.addCommentLn(obj.docs[d]);this.currDeclaration=obj,output.addln(),output.add(obj.property),output.add(":"),output.space(),prev=output.output.length,this.nullFound=!1,this.visit(obj.value),this.nullFound||output.output.length===prev&&0!==obj.property.indexOf("--")?output.output=start:(obj.important&&output.add(" !important"),output.isCompressed?obj.ruleset&&obj===obj.ruleset.lastDeclaration()||output.add(";"):output.add(";")),this.nullFound=nullFoundWas,this.currDeclaration=currDeclarationWas}},{key:"ruleset",value:function(obj){var emptyStart,output=this.output,start=output.output;if(obj.isAtDirective)return output.addln(),output.add(obj.atDirectiveName),output.add(" "),void(obj.atDirectiveValue?(this.visit(obj.atDirectiveValue),output.add(";")):output.add("{}"));if(obj.selectors){if(output.addln(),obj.sourceInfo&&(output.addComment("/* "+obj.sourceInfo+" */"),output.addln()),obj.docs&&obj.docs.length)for(var d=0;d<obj.docs.length;d++)output.addCommentLn(obj.docs[d]);if(this.selectorCount++,this.visit(obj.selectors),obj.isAtRule()&&0===obj.declarations.length&&0===obj.children.length&&!obj.hasBlock)return void output.add(";");output.space(),output.add("{"),output.indent(),emptyStart=output.output.length,this.visit(obj.declarations),obj.isAtRule()&&!obj.isAtRoot()?(this.visit(obj.children),output.unindent(),output.addln("}")):(output.unindent(),output.output.length===emptyStart?output.output=start:output.addln("}"),this.visit(obj.children))}}},{key:"visit",value:function(obj){null==obj||obj.$isFashionNull?this.nullFound=!0:_get(SourceBuilder.prototype.__proto__||Object.getPrototypeOf(SourceBuilder.prototype),"visit",this).call(this,obj)}}]),SourceBuilder}(BaseSourceBuilder);SourceBuilder.toSource=function(obj,output){var sb=new SourceBuilder;return sb.toSource(obj,output)},Fashion.apply(SourceBuilder.prototype,{output:null,selectorCount:0,currDeclaration:null}),module.exports=SourceBuilder},{"../export/Base.js":19,"../export/Output.js":20,"../export/type/SourceBuilder.js":37,"./TypeVisitor.js":68}],68:[function(require,module,exports){"use strict";var BaseTypeVisitor=require("../export/type/TypeVisitor.js"),TypeVisitor=function(_BaseTypeVisitor){function TypeVisitor(cfg){return _classCallCheck(this,TypeVisitor),_possibleConstructorReturn(this,(TypeVisitor.__proto__||Object.getPrototypeOf(TypeVisitor)).call(this,cfg))}return _inherits(TypeVisitor,_BaseTypeVisitor),_createClass(TypeVisitor,[{key:"selector",value:function(obj){obj.descend(this)}},{key:"selectorproperty",value:function(obj){obj.descend(this)}},{key:"compoundselector",value:function(obj){obj.descend(this)}},{key:"multipartselector",value:function(obj){obj.descend(this)}},{key:"selectorlist",value:function(obj){obj.descend(this)}},{key:"declaration",value:function(obj){obj.descend(this)}},{key:"ruleset",value:function(obj){obj.descend(this)}}]),TypeVisitor}(BaseTypeVisitor);TypeVisitor.prototype.context=null,module.exports=TypeVisitor},{"../export/type/TypeVisitor.js":41}],69:[function(require,module,exports){"use strict";var Fashion=require("../export/Base.js"),BaseTypes=require("../export/type/Types.js"),Types=Fashion.apply(BaseTypes,{Ruleset:require("./Ruleset.js"),Declaration:require("./Declaration.js"),SelectorPart:require("./selectors/SelectorPart.js"),CompoundSelector:require("./selectors/CompoundSelector.js"),MultiPartSelector:require("./selectors/MultiPartSelector.js"),SelectorList:require("./selectors/SelectorList.js"),SelectorProperty:require("./selectors/SelectorProperty.js")});module.exports=Types},{"../export/Base.js":19,"../export/type/Types.js":42,"./Declaration.js":65,"./Ruleset.js":66,"./selectors/CompoundSelector.js":72,"./selectors/MultiPartSelector.js":73,"./selectors/SelectorList.js":74,"./selectors/SelectorPart.js":75,"./selectors/SelectorProperty.js":76}],70:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),Type=require("../../export/type/Type.js"),BaseSelector=function(_Type13){function BaseSelector(){return _classCallCheck(this,BaseSelector),_possibleConstructorReturn(this,(BaseSelector.__proto__||Object.getPrototypeOf(BaseSelector)).call(this))}return _inherits(BaseSelector,_Type13),_createClass(BaseSelector,[{key:"clone",value:function(match,replace){if(match&&match===""+this)return replace.clone();var cloned=_get(BaseSelector.prototype.__proto__||Object.getPrototypeOf(BaseSelector.prototype),"clone",this).call(this);return this.parent&&cloned.setParent(this.parent.clone(match,replace)),cloned}},{key:"hasHash",value:function(hash){return""+this===hash}},{key:"setParent",value:function(parent){this.parent=parent}}]),BaseSelector}(Type);Fashion.apply(BaseSelector.prototype,{parent:null,position:null,$canUnbox:!1,skipParentPrepend:null}),module.exports=BaseSelector},{"../../export/Base.js":19,"../../export/type/Type.js":40}],71:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseSelector=require("./BaseSelector.js"),BaseSelectorList=function(_BaseSelector){function BaseSelectorList(items,separator){_classCallCheck(this,BaseSelectorList);var _this99=_possibleConstructorReturn(this,(BaseSelectorList.__proto__||Object.getPrototypeOf(BaseSelectorList)).call(this));return _this99.items=items,_this99.separator=separator,_this99}return _inherits(BaseSelectorList,_BaseSelector),_createClass(BaseSelectorList,[{key:"toString",value:function(){return this.items.join(this.separator)}},{key:"cloneItems",value:function(match,replace){for(var cloned=[],i=0;i<this.items.length;i++)cloned.push(this.items[i].clone(match,replace));return cloned}},{key:"unquote",value:function(){for(var items=[],i=0;i<this.items.length;i++)this.items[i]&&items.push(this.items[i].unquote());return new List(items,this.separator)}},{key:"_getHash",value:function(){for(var item,items=[],tItems=this.items,i=0;i<tItems.length;i++)item=tItems[i],
items.push(item&&item.getHash()||"");return items=items.sort(),items.join(this.separator)}},{key:"setItems",value:function(items){this.items=items,this._hash=null}}]),BaseSelectorList}(BaseSelector);Fashion.apply(BaseSelectorList.prototype,{separator:null,$isFashionBaseSelectorList:!0}),Fashion.mixin(BaseSelectorList,Fashion.BaseSet),module.exports=BaseSelectorList},{"../../export/Base.js":19,"./BaseSelector.js":70}],72:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseSelector=require("./BaseSelector.js"),BaseSelectorList=require("./BaseSelectorList.js"),SelectorPart=require("./SelectorPart.js"),Literal=require("../../export/type/Literal.js"),CompoundSelector=function(_BaseSelector2){function CompoundSelector(items,preserve){_classCallCheck(this,CompoundSelector);var _this100=_possibleConstructorReturn(this,(CompoundSelector.__proto__||Object.getPrototypeOf(CompoundSelector)).call(this));return _this100.items=items,_this100.preserve=preserve,_this100._superSelectorMap={},_this100}return _inherits(CompoundSelector,_BaseSelector2),_createClass(CompoundSelector,[{key:"doVisit",value:function(visitor){visitor.compoundselector(this)}},{key:"descend",value:function(visitor){for(var i=0;i<this.items.length;i++){var item=this.items[i];item&&visitor.visit(item)}}},{key:"cloneItems",value:function(match,replace){for(var cloned=[],i=0;i<this.items.length;i++)cloned.push(this.items[i].clone(match,replace));return cloned}},{key:"clone",value:function(match,replace){if(match&&match===""+this)return replace.clone();var cloned=new CompoundSelector(this.cloneItems(match,replace));return this.parent&&cloned.setParent(this.parent.clone(match,replace)),cloned}},{key:"setItems",value:function(items){this.items=items,this._hash=null}},{key:"toString",value:function(){return this.items.join("")}},{key:"hasPlaceholder",value:function(){for(var i=0;i<this.items.length;i++){var item=this.items[i];if(item instanceof SelectorPart&&"placeholder"===item.selectorType)return!0}if(this.parent){var parent=this.parent;return parent.hasPlaceholder&&parent.hasPlaceholder()}return!1}},{key:"flatten",value:function(){if(!this.flattened){this.flattened=!0;for(var flattened=[],map={},i=0;i<this.items.length;i++){var item=this.items[i];if(item instanceof CompoundSelector)for(var sel=item,selItems=sel.flatten()&&sel.items,s=0;s<selItems.length;s++){var sItem=selItems[s];sItem.position=flattened.length,map[""+sItem]||(flattened.push(sItem),map[""+sItem]=!0)}else if(item instanceof BaseSelectorList){var list=item;if(1==list.items.length){var sItem=list.items[0];sItem.position=flattened.length,map[""+sItem]||(flattened.push(sItem),map[""+sItem]=!0)}else{var sItem=item;item.position=flattened.length,map[""+sItem]||(flattened.push(sItem),map[""+sItem]=!0)}}else{var sItem=item;sItem.position=flattened.length,(!map[""+sItem]||item.$isFashionLiteral||item.$isFashionNumber)&&(flattened.push(sItem),map[""+sItem]=!0)}}this.items=flattened}return this._hash=null,this}},{key:"sort",value:function(){return this.sorted||(this.sorted=!0,this.flatten(),this.items.sort(function(a,b){var aPart,bPart,aIsPart=a instanceof SelectorPart,bIsPart=b instanceof SelectorPart,aIsSelector=a instanceof BaseSelector,bIsSelector=b instanceof BaseSelector,aVal=""+a,bVal=""+b;if(CompoundSelector.excludeSortOps[aVal]||CompoundSelector.excludeSortOps[bVal])return a.position-b.position;if(bIsSelector){if(!aIsSelector){if(a instanceof Fashion.Literal&&0===(""+a).indexOf("-"))return 1;if(!CompoundSelector.excludeSortOps[bVal])return-1}if(bIsPart){if(!aIsPart)return-1;aPart=a,bPart=b;var res=aPart.getTypePriority()-bPart.getTypePriority();return 0===res?aPart.position-bPart.position:res}if(aIsPart)return 1}else if(aIsSelector&&!CompoundSelector.excludeSortOps[aVal])return 1;return a.position-b.position})),this._hash=null,this}},{key:"base",value:function(){var first=this.first();return first instanceof Literal?first:first instanceof SelectorPart&&"wildcard"===first.selectorType?first:null}},{key:"_getHash",value:function(){for(var base=this.base(),rest=this.rest(),parts=[],r=0;r<rest.length;r++)parts.push(rest[r].getHash());return parts=parts.sort(),base&&parts.unshift(base.getHash()),parts.join("")}},{key:"rest",value:function rest(){var base=this.base(),rest=Fashion.filter(this.items,function(item){return!base||item!==base});return rest}},{key:"isSuperSelector",value:function(selector){var key=selector,map=this._superSelectorMap,result=map[key];return void 0===result&&(result=this.isSubset(selector),map[key]=result),result}},{key:"isSubset",value:function(selector){var item,items=this.items,sItems=selector.items,longItemMap={},shortList=items,longList=sItems,res=1;items.length>sItems.length&&(shortList=sItems,longList=items,res=-1);for(var i=0;i<longList.length;i++)item=longList[i],longItemMap[""+item]=item;for(var i=0;i<shortList.length;i++)if(item=shortList[i],!longItemMap[""+item])return 0;return res}}]),CompoundSelector}(BaseSelector);CompoundSelector.excludeSortOps={"&":!0,"*":!0,"~":!0,">":!0,"|":!0,"+":!0},Fashion.mixin(CompoundSelector,Fashion.BaseSet),Fashion.apply(CompoundSelector.prototype,{type:"compoundselector",$isFashionCompoundSelector:!0,$canUnbox:!1,items:null,preserve:!1,flattened:!1,sorted:!1,_superSelectorMap:null}),module.exports=CompoundSelector},{"../../export/Base.js":19,"../../export/type/Literal.js":32,"./BaseSelector.js":70,"./BaseSelectorList.js":71,"./SelectorPart.js":75}],73:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseSelectorList=require("./BaseSelectorList.js"),MultiPartSelector=function(_BaseSelectorList){function MultiPartSelector(items,parent){_classCallCheck(this,MultiPartSelector);var _this101=_possibleConstructorReturn(this,(MultiPartSelector.__proto__||Object.getPrototypeOf(MultiPartSelector)).call(this,items," "));return parent&&_this101.setParent(parent),_this101._superSelectorMap={},_this101}return _inherits(MultiPartSelector,_BaseSelectorList),_createClass(MultiPartSelector,[{key:"doVisit",value:function(visitor){visitor.multipartselector(this)}},{key:"descend",value:function(visitor){for(var i=0;i<this.items.length;i++){var item=this.items[i];item&&visitor.visit(item)}}},{key:"clone",value:function(match,replace){if(match&&match===""+this)return replace.clone();var cloned=new MultiPartSelector(this.cloneItems(match,replace));return this.parent&&cloned.setParent(this.parent.clone(match,replace)),cloned.skipParentPrepend=this.skipParentPrepend,cloned}},{key:"calcIsSuperSelector",value:function(selector){var tmpRes,items=this.items,sItems=selector.items,shortList=items,longList=sItems,res=1;if(items.length>sItems.length&&(shortList=sItems,longList=items,res=-1),this.parent){if(!selector.parent)return 0;if(tmpRes=this.parent.isSuperSelector(selector.parent),res!==tmpRes)return 0}else if(selector.parent)return 0;for(var i=0;i<shortList.length;i++){var tmpRes;if(0===tmpRes)return 0;if(tmpRes!==res)return 0}return res}},{key:"isSuperSelector",value:function(selector){var key=selector,map=this._superSelectorMap,result=map[key];return void 0===result&&(result=this.calcIsSuperSelector(selector),map[key]=result),result}},{key:"removeAtRoot",value:function(){var items=Fashion.filter(this.items,function(item){return""+item!="@at-root"});return items.length?(this.items=items,this):null}},{key:"flatten",value:function(){for(var item,items=this.items,len=items.length,newItems=[],i=0;i<len;i++){for(item=items[i];item&&item.visitTarget;)item=item.visitTarget;item&&(item.$isFashionMultiPartSelector?newItems.push.apply(newItems,item.flatten()):(item.$isFashionCompoundSelector&&item.flatten(),newItems.push(item)))}return this.items=newItems,newItems}}]),MultiPartSelector}(BaseSelectorList);Fashion.apply(MultiPartSelector.prototype,{$isFashionMultiPartSelector:!0,type:"multipartselector",parent:null,_superSelectorMap:null}),module.exports=MultiPartSelector},{"../../export/Base.js":19,"./BaseSelectorList.js":71}],74:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseSelectorList=require("./BaseSelectorList.js"),SelectorList=function(_BaseSelectorList2){function SelectorList(list){return _classCallCheck(this,SelectorList),_possibleConstructorReturn(this,(SelectorList.__proto__||Object.getPrototypeOf(SelectorList)).call(this,list,","))}return _inherits(SelectorList,_BaseSelectorList2),_createClass(SelectorList,[{key:"doVisit",value:function(visitor){visitor.selectorlist(this)}},{key:"descend",value:function(visitor){for(var i=0;i<this.items.length;i++){var item=this.items[i];item&&visitor.visit(item)}}},{key:"clone",value:function(match,replace){var cloned=new SelectorList(this.cloneItems());return this.parent&&cloned.setParent(this.parent.clone(match,replace)),cloned}},{key:"applyInterpolations",value:function(){if(!this.interpolated){this.interpolated=!0;for(var selector,str,items,interpolated=[],selectors=this.items,s=0;s<selectors.length;s++)selector=selectors[s],str=""+selector,str.indexOf(",")===-1?interpolated.push(selector):(items=str.split(","),interpolated.push.apply(interpolated,items));this.items=interpolated}}},{key:"flatten",value:function(){for(var item,items=this.items,len=items.length,newItems=[],i=0;i<len;i++){for(item=items[i];item&&item.visitTarget;)item=item.visitTarget;item.$isFashionSelectorList?newItems.push.apply(newItems,item.flatten()):((item.$isFashionMultiPartSelector||item.$isFashionCompoundSelector)&&item.flatten(),newItems.push(item))}return this.items=newItems,newItems}}]),SelectorList}(BaseSelectorList);Fashion.apply(SelectorList.prototype,{$isFashionSelectorList:!0,type:"selectorlist",ruleset:null,interpolated:null}),module.exports=SelectorList},{"../../export/Base.js":19,"./BaseSelectorList.js":71}],75:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseSelector=require("./BaseSelector.js"),SelectorPart=function(_BaseSelector3){function SelectorPart(value,type){_classCallCheck(this,SelectorPart);var _this103=_possibleConstructorReturn(this,(SelectorPart.__proto__||Object.getPrototypeOf(SelectorPart)).call(this));return _this103.value=value,_this103.selectorType=type,_this103}return _inherits(SelectorPart,_BaseSelector3),_createClass(SelectorPart,[{key:"doVisit",value:function(visitor){visitor.selector(this)}},{key:"descend",value:function(visitor){this.value&&visitor.visit(this.value)}},{key:"toString",value:function(){switch(this.selectorType){case"placeholder":return"%"+this.value;case"dash":return"-"+this.value;case"attribute":return"["+this.value+"]";case"pseudo":return":"+this.value;default:return""+this.value}}},{key:"clone",value:function(match,replace){if(match&&match===""+this)return replace.clone();var cloned=new SelectorPart(this.value,this.selectorType);return this.parent&&cloned.setParent(this.parent.clone(match,replace)),"parent"==this.selectorType&&this.visitTarget&&(cloned.visitTarget=this.visitTarget),cloned}},{key:"getTypePriority",value:function(){switch(this.selectorType){case"class":return 0;case"id":return 1;case"pseudo":var str=""+this.value;return 0===str.indexOf(":")?21:0===str.indexOf("not")?19:20;case"attribute":return 0;case"placeholder":return-100;default:return-50}}}]),SelectorPart}(BaseSelector);Fashion.apply(SelectorPart.prototype,{type:"selector",$isFashionSelectorPart:!0,value:null,selectorType:null}),module.exports=SelectorPart},{"../../export/Base.js":19,"./BaseSelector.js":70}],76:[function(require,module,exports){"use strict";var Fashion=require("../../export/Base.js"),BaseSelector=require("./BaseSelector.js"),SelectorProperty=function(_BaseSelector4){function SelectorProperty(property,value){_classCallCheck(this,SelectorProperty);var _this104=_possibleConstructorReturn(this,(SelectorProperty.__proto__||Object.getPrototypeOf(SelectorProperty)).call(this));return _this104.property=property,_this104.value=value,_this104}return _inherits(SelectorProperty,_BaseSelector4),_createClass(SelectorProperty,[{key:"toString",value:function(){return""+this.property+": "+this.value}},{key:"doVisit",value:function(visitor){visitor.selectorproperty(this)}},{key:"descend",value:function(visitor){this.value&&visitor.visit(this.value)}}]),SelectorProperty}(BaseSelector);Fashion.apply(SelectorProperty.prototype,{type:"selectorproperty",property:null,value:null}),module.exports=SelectorProperty},{"../../export/Base.js":19,"./BaseSelector.js":70}]},{},[1])(1)});