-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathcaterwaul.min.js
1 lines (1 loc) · 18.1 KB
/
caterwaul.min.js
1
(function(a){return a(a)})(function(f,z,p){var ag=function(ao){return ao.split(/\s+/)},C=function(ao,ap){return ap&&ap.call(ao,ao)||ao},o=function(ao){throw new Error(ao)},c=z||(function(){for(var ao=[],aq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_",ap=21,ar;ap>=0;--ap){ao.push(aq.charAt(Math.random()*64>>>0))}return ao.join("")})(),X=(function(ao){return function(ap){return[ap||"",(++ao).toString(36),c].join("_")}})(0),W=function(ao){return ao.substr(ao.length-22)===c},i=function(ap,ao){return function(){return ap.apply(ao,arguments)}},O=function(at,ap){for(var aq=0,ar=[],ao=ap.length;aq<ao;++aq){ar.push(at(ap[aq],aq))}return ar},w=function(ap,ao){return O(function(aq){return aq instanceof Array?w(ap,aq):ap(aq)})},ae=function(ar){for(var aq=0,ap=ag(ar),at={},ao=ap.length;aq<ao;++aq){at[ap[aq]]=true}return s(at)},ac=(function(ap){for(var ao in ap){if(ap.hasOwnProperty(ao)){return true}}})({toString:true})?function(at){for(var ar=1,ao=arguments.length,aq;ar<ao;++ar){if(aq=arguments[ar]){for(var ap in aq){if(g(aq,ap)){at[ap]=aq[ap]}}}}return at}:function(at){for(var ar=1,ao=arguments.length,aq;ar<ao;++ar){if(aq=arguments[ar]){for(var ap in aq){if(g(aq,ap)){at[ap]=aq[ap]}}if(aq.toString&&!/\[native code\]/.test(aq.toString.toString())){at.toString=aq.toString}}}return at},ab=X("hash"),s=function(aq){var ao=0;for(var ap in aq){l.call(aq,ap)&&(ao=ap.length>ao?ap.length:ao)}aq[ab]=ao;return aq},g=function(ap,ao){return ao!=null&&!(ao.length>ap[ab])&&l.call(ap,ao)},l=Object.prototype.hasOwnProperty,af=function(){var ao=function(){return ao.init.apply(ao,arguments)};return ao},ah=typeof caterwaul==="undefined"?p:caterwaul,an=C(af(),function(){this.deglobalize=function(){caterwaul=ah;return an};ac(this,{merge:ac,map:O,rmap:w,gensym:X,is_gensym:W})}),am=ae(". new ++ -- u++ u-- u+ u- typeof u~ u! ! * / % + - << >> >>> < > <= >= instanceof in == != === !== & ^ | && || ? = += -= *= /= %= &= |= ^= <<= >>= >>>= : , return throw case var const break continue void else u; ;"),T=function(ar){for(var aq=0,ap=[false];aq<8;++aq){ap.push.apply(ap,ap)}for(var aq=0,ao=ar.length;aq<ao;++aq){ap[ar.charCodeAt(aq)]=true}return ap},ak=T(".0123456789"),V=T("0123456789"),y=T("0123456789abcdefABCDEFx"),L=T("eE"),j=T(" \n\r\t"),t=T("()[]{}?:"),r=T("([{?:"),x=T("+-*/%&|^!~=<>?:;.,"),J=T("\n\r"),k=T("gims"),P=T("'\"/"),n="/".charCodeAt(0),S="*".charCodeAt(0),m="\\".charCodeAt(0),aa="x".charCodeAt(0),N=".".charCodeAt(0),U="0".charCodeAt(0),aj=ae("++ --"),Y=T("$_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"),K=O(ae,["function","( [ . [] ()","new delete","u++ u-- ++ -- typeof u~ u! u+ u-","* / %","+ -","<< >> >>>","< > <= >= instanceof in","== != === !==","&","^","|","&&","||","case","? = += -= *= /= %= &= |= ^= <<= >>= >>>=",":",",","return throw break continue void","var const","if else try catch finally for switch with while do",";"]),H=ae("= += -= *= /= %= &= ^= |= <<= >>= >>>= ~ ! new typeof u+ u- -- ++ u-- u++ ? if else function try catch finally for switch case with while do"),F=(function(aq){for(var at={},ar=0,ao=aq.length;ar<ao;++ar){for(var ap in aq[ar]){g(aq[ar],ap)&&(at[ap]=ar)}}return s(at)})(K),v=(function(aq){for(var at=[],au=0,ao=aq.length,ar=null;ar=aq[au],at[au]=true,au<ao;++au){for(var ap in ar){if(g(ar,ap)&&(at[au]=at[au]&&!g(H,ap))){break}}}return at})(K),B=ae("[] . () * / % + - << >> >>> < > <= >= instanceof in == != === !== & ^ | && || = += -= *= /= %= &= |= ^= <<= >>= >>>= , : ;"),Z=s({"function":2,"if":1,"do":1,"catch":1,"try":1,"for":1,"while":1,"with":1,"switch":1}),R=s({"if":"else","do":"while","catch":"finally","try":"catch"}),D=ae("[] ()"),ai=ae("return throw break continue else"),E=ae("u+ u- u! u~ u++ u-- new typeof finally case var const void delete"),h=ae("; {"),ad=ae("i;"),I=ae("++ --"),q=s({"(":")","[":"]","{":"}","?":":"}),G=ae("[ ("),Q=ae("?"),e=ae("function if for while catch void delete new typeof in instanceof"),A=ae("function"),u=an.syntax_common={_replace:function(ao){return(ao.l=this.l)&&(this.l.r=ao),(ao.r=this.r)&&(this.r.l=ao),this},_append_to:function(ao){return ao&&ao._append(this),this},_reparent:function(ao){return this.p&&this.p[0]===this&&(this.p[0]=ao),this},_fold_l:function(ao){return this._append(this.l&&this.l._unlink(this)||a)},_append:function(ao){return(this[this.length++]=ao)&&(ao.p=this),this},_fold_r:function(ao){return this._append(this.r&&this.r._unlink(this)||a)},_sibling:function(ao){return ao.p=this.p,(this.r=ao).l=this},_fold_lr:function(){return this._fold_l()._fold_r()},_fold_rr:function(){return this._fold_r()._fold_r()},_wrap:function(ao){return ao.p=this._replace(ao).p,this._reparent(ao),delete this.l,delete this.r,this._append_to(ao)},_unlink:function(ao){return this.l&&(this.l.r=this.r),this.r&&(this.r.l=this.l),delete this.l,delete this.r,this._reparent(ao)},pop:function(){return --this.length,this},push:function(ao){return this[this.length++]=ao||a,this},id:function(){var ao=X("id");return(this.id=function(){return ao})()},is_caterwaul_syntax:true,each:function(aq){for(var ap=0,ao=this.length;ap<ao;++ap){aq(this[ap],ap)}return this},map:function(aq){for(var ar=new this.constructor(this),ap=0,ao=this.length;ap<ao;++ap){ar.push(aq(this[ap],ap)||this[ap])}return ar},reach:function(ao){ao(this);this.each(function(ap){ap.reach(ao)});return this},rmap:function(ap){var ao=ap(this);return !ao||ao===this?this.map(function(aq){return aq.rmap(ap)}):ao===true?this:ao.rmap===p?new this.constructor(ao):ao},peach:function(ao){this.each(function(ap){ap.peach(ao)});ao(this);return this},pmap:function(ap){var ao=this.map(function(aq){return aq.pmap(ap)});return ap(ao)},clone:function(){return this.rmap(function(){return false})},collect:function(ap){var ao=[];this.reach(function(aq){ap(aq)&&ao.push(aq)});return ao},replace:function(ao){var ap;return l.call(ao,this.data)&&(ap=ao[this.data])?ap.constructor===String?C(this.map(function(aq){return aq.replace(ao)}),function(){this.data=ap}):ap:this.map(function(aq){return aq.replace(ao)})},repopulated_with:function(ao){return new this.constructor(this.data,ao)},with_data:function(ao){return new this.constructor(ao,Array.prototype.slice.call(this))},change:function(ap,ao){return C(new this.constructor(this.data,Array.prototype.slice.call(this)),function(aq){aq[ap]=ao})},compose_single:function(ao,ap){return this.change(ao,ap(this[ao]))},slice:function(ap,ao){return new this.constructor(this.data,Array.prototype.slice.call(this,ap,ao))},traverse:function(ao){ao({entering:this});ao({exiting:this.each(function(ap){ap.traverse(ao)})});return this},flatten:function(ao){ao=ao||this.data;return ao!==this.data?this.as(ao):!(g(B,ao)&&this.length)?this:g(H,ao)?C(new this.constructor(ao),i(function(aq){for(var ap=this;ap&&ap.data===ao;ap=ap[1]){aq.push(ap[0])}aq.push(ap)},this)):C(new this.constructor(ao),i(function(ar){for(var ap=this,aq=[];ap.data===ao;ap=ap[0]){ap[1]&&aq.push(ap[1])}aq.push(ap);for(ap=aq.length-1;ap>=0;--ap){ar.push(aq[ap])}},this))},unflatten:function(){var ap=this,ao=g(H,this.data);return this.length<=2?this:C(new this.constructor(this.data),function(at){if(ao){for(var ar=0,aq=ap.length-1;ar<aq;++ar){at=at.push(ap[ar]).push(ar<aq-2?new ap.constructor(ap.data):ap[ar])[1]}}else{for(var ar=ap.length-1;ar>=1;--ar){at=at.push(ar>1?new ap.constructor(ap.data):ap[0]).push(ap[ar])[0]}}})},as:function(ao){return this.data===ao?this:new this.constructor(ao).push(this)},bindings:function(ap){var ao=ap||{};this.reach(function(aq){if(aq.binds_a_value){ao[aq.data]=aq.value}});return ao},contains:function(ar){var ao=ar(this);if(ao){return ao}for(var aq=0,ap=this.length;aq<ap;++aq){if(ao=this[aq].contains(ar)){return ao}}},match:function(aq,ar){aq=aq.constructor===String?an.parse(aq):aq;ar||(ar={_:aq});if(this.is_wildcard()){return ar[this.data]=aq,ar}else{if(this.length===aq.length&&this.data===aq.data){for(var ap=0,ao=this.length;ap<ao;++ap){if(!this[ap].match(aq[ap],ar)){return null}}return ar}}},toString:function(){var ao=[""];this.serialize(ao);return ao.join("")},structure:function(){if(this.length){return"("+['"'+this.data+'"'].concat(O(function(ao){return ao.structure()},this)).join(" ")+")"}else{return this.data}}};an.syntax_subclass=function(aq){var ap=Array.prototype.slice.call(arguments,1),ao=function(){return aq.apply(this,arguments)};ac.apply(this,[ao.prototype,u].concat(ap));ao.prototype.constructor=ao;return ao};var b=an.parse_hex=function(ar){for(var ao=0,aq=0,ap=ar.length,at;aq<ap;++aq){ao*=16,ao+=(at=ar.charCodeAt(aq))<=58?at-48:(at&95)-55}return ao},al=an.parse_octal=function(ar){for(var ao=0,aq=0,ap=ar.length;aq<ap;++aq){ao*=8,ao+=ar.charCodeAt(aq)-48}return ao},d=an.unescape_string=function(at){for(var ar=0,au,ap=at.length,ao=[],aq=false;ar<ap;++ar){if(aq){aq=false,ao.push((au=at.charAt(ar))==="\\"?"\\":au==="n"?"\n":au==="r"?"\r":au==="b"?"\b":au==="f"?"\f":au==="0"?"\u0000":au==="t"?"\t":au==="v"?"\v":au==='"'||au==="'"?au:au==="x"?String.fromCharCode(b(at.substring(ar,++ar+1))):au==="u"?String.fromCharCode(b(at.substring(ar,(ar+=3)+1))):String.fromCharCode(al(at.substring(ar,(ar+=2)+1))))}else{if((au=at.charAt(ar))==="\\"){aq=true}else{ao.push(au)}}}return ao.join("")};an.javascript_tree_type_methods={is_string:function(){return/['"]/.test(this.data.charAt(0))},as_escaped_string:function(){return this.data.substr(1,this.data.length-2)},is_number:function(){return/^-?(0x|\d|\.\d+)/.test(this.data)},as_number:function(){return Number(this.data)},is_boolean:function(){return this.data==="true"||this.data==="false"},as_boolean:function(){return this.data==="true"},is_regexp:function(){return/^\/./.test(this.data)},as_escaped_regexp:function(){return this.data.substring(1,this.data.lastIndexOf("/"))},is_array:function(){return this.data==="["},as_unescaped_string:function(){return d(this.as_escaped_string())},is_wildcard:function(){return this.data.charCodeAt(0)===95},is_identifier:function(){return this.length===0&&/^[A-Za-z_$]\w*$/.test(this.data)&&!this.is_boolean()&&!this.is_null_or_undefined()&&!g(am,this.data)},has_grouped_block:function(){return g(Z,this.data)},is_block:function(){return g(h,this.data)},is_blockless_keyword:function(){return g(ai,this.data)},is_null_or_undefined:function(){return this.data==="null"||this.data==="undefined"},is_constant:function(){return this.is_number()||this.is_string()||this.is_boolean()||this.is_regexp()||this.is_null_or_undefined()},left_is_lvalue:function(){return/=$/.test(this.data)||/\+\+$/.test(this.data)||/--$/.test(this.data)},is_empty:function(){return !this.length},has_parameter_list:function(){return this.data==="function"||this.data==="catch"},has_lvalue_list:function(){return this.data==="var"||this.data==="const"},is_dereference:function(){return this.data==="."||this.data==="[]"},is_invocation:function(){return this.data==="()"},is_contextualized_invocation:function(){return this.is_invocation()&&this[0].is_dereference()},is_invisible:function(){return g(ad,this.data)},is_binary_operator:function(){return g(B,this.data)},is_prefix_unary_operator:function(){return g(E,this.data)},is_postfix_unary_operator:function(){return g(I,this.data)},is_unary_operator:function(){return this.is_prefix_unary_operator()||this.is_postfix_unary_operator()},accepts:function(ao){return g(R,this.data)&&R[this.data]===(ao.data||ao)}};an.javascript_tree_serialization_methods={ends_with_block:function(){var ao=this[Z[this.data]];return this.data==="{"||g(Z,this.data)&&(this.data!=="function"||this.length===3)&&ao&&ao.ends_with_block()},serialize:function(ar){var ap=this.length,at=this.data,ao=";\n",aq=function(au){if(Y[ar[ar.length-1].charCodeAt(0)]===Y[au.charCodeAt(0)]){ar.push(" ",au)}else{ar.push(au)}};switch(ap){case 0:if(g(ai,at)){return aq(at.replace(/^u/,""))}else{if(g(q,at)){return aq(at),aq(q[at])}else{return aq(at)}}case 1:if(g(E,at)||g(ai,at)){return aq(at.replace(/^u/,"")),this[0].serialize(ar)}else{if(g(q,at)){return aq(at),this[0].serialize(ar),aq(q[at])}else{if(g(B,at)){return aq("/* unary "+at+" node */"),this[0].serialize(ar)}else{return this[0].serialize(ar),aq(at)}}}case 2:if(g(D,at)){return this[0].serialize(ar),aq(at.charAt(0)),this[1].serialize(ar),aq(at.charAt(1))}else{if(g(Z,at)){return aq(at),this[0].serialize(ar),this[1].serialize(ar)}else{if(g(ad,at)){return this[0].serialize(ar),this[1].serialize(ar)}else{if(at===";"){return this[0].serialize(ar),aq(ao),this[1].serialize(ar)}else{return this[0].serialize(ar),aq(at),this[1].serialize(ar)}}}}default:if(g(Q,at)){return this[0].serialize(ar),aq(at),this[1].serialize(ar),aq(":"),this[2].serialize(ar)}else{if(g(Z,at)){return this.accepts(this[2])&&!this[1].ends_with_block()?(aq(at),this[0].serialize(ar),this[1].serialize(ar),aq(ao),this[2].serialize(ar)):(aq(at),this[0].serialize(ar),this[1].serialize(ar),this[2].serialize(ar))}else{return this.unflatten().serialize(ar)}}}}};an.ref=an.syntax_subclass(function(ap,ao){if(ap instanceof this.constructor){this.value=ap.value,this.data=ap.data}else{this.value=ap,this.data=X(ao&&ao.constructor===String?ao:"ref")}},an.javascript_tree_type_methods,an.javascript_tree_serialization_methods,{binds_a_value:true,length:0},{replace:function(ao){var ap;return l.call(ao,this.data)&&(ap=ao[this.data])?ap.constructor===String?C(new this.constructor(this.value),function(){this.data=ap}):ap:this}});an.syntax=an.syntax_subclass(function(au){if(au instanceof this.constructor){this.data=au.data,this.length=0}else{this.data=au&&au.toString();this.length=0;for(var ar=1,ao=arguments.length,aq;aq=arguments[ar],ar<ao;++ar){for(var ap=0,aw=aq.length,at,av;aq instanceof Array?(at=aq[ap],ap<aw):(at=aq,!ap);++ap){this._append((av=at.constructor)===String||av===Number||av===Boolean?new this.constructor(at):at)}}}},an.javascript_tree_type_methods,an.javascript_tree_serialization_methods);var a=an.empty=new an.syntax("");an.parse=function(ao){if(ao.constructor===an.syntax){return ao}var aK=ao.toString(),au=0,aW=0,aH=true,aG=false,aY=false,aX=false,aL=0,aI="",aT=0,aQ=aK.length,aB=function(a0){return aK.charCodeAt(a0)},az=[],aP=null,ax=null,av=null,ap=O(function(){return[]},K),aw=[],aJ=[a],aR=function(a0){return aJ.push(a0),a0},aM=function(a0){return ax?ax._sibling(ax=a0):(ax=a0._append_to(av)),aR(a0)},aq=this.syntax,ay=[];if(aQ===0){return a}while((au=aT)<aQ){while(j[aW=aB(aT)]&&aT<aQ){au=++aT}aG=aX=aY=aI=false;if(t[aW]){aI=!!++aT;aH=r[aW]}else{if(aW===n&&aB(aT+1)===S&&(aT+=2)){while(++aT<aQ&&aB(aT)!==n||aB(aT-1)!==S){}aI=!++aT}else{if(aW===n&&aB(aT+1)===n){while(++aT<aQ&&!J[aB(aT)]){}aI=false}else{if(P[aW]&&(aL=aW)&&aH&&!(aH=!(aI=aK.charAt(aT)))){while(++aT<aQ&&(aW=aB(aT))!==aL||aG){aG=!aG&&aW===m}while(++aT<aQ&&k[aB(aT)]){}aI=true}else{if(aW===U&&y[aB(aT+1)]){while(++aT<aQ&&y[aB(aT)]){}aH=!(aI=true)}else{if(ak[aW]&&(aW!==N||V[aB(aT+1)])){while(++aT<aQ&&(V[aW=aB(aT)]||(aY^(aY|=aW===N))||(aX^(aX|=L[aW]&&++aT)))){}while(aT<aQ&&V[aB(aT)]){++aT}aH=!(aI=true)}else{if(x[aW]&&(aI=aH?"u":"",aH=true)){while(aT<aQ&&x[aB(aT)]&&g(am,aI+aK.charAt(aT))){aI+=aK.charAt(aT++)}aH=!g(aj,aI)}else{while(++aT<aQ&&(Y[aW=aB(aT)]||aW>127)){}aH=g(am,aI=aK.substring(au,aT))}}}}}}}if(aT===au){throw new Error('Caterwaul lex error at "'+aK.substr(au,40)+'" with leading context "'+aK.substr(au-40,40)+'" (probably a Caterwaul bug)')}if(aI===false){continue}aI=aI===true?aK.substring(au,aT):aI==="u;"?";":aI;aI===aP?(az.pop(),aP=az[az.length-1],ax=ax?ax.p:av,av=null):(g(q,aI)?(az.push(aP=q[aI]),av=aM(aR(new aq(aI))),ax=null):aM(aR(new aq(aI))),g(F,aI)&&ap[F[aI]].push(ax||av));aH|=aI===")"&&ax.l&&g(Z,ax.l.data)}for(var aT=0,aQ=ap.length,aF,aZ;aZ=ap[aT],aF=v[aT],aT<aQ;++aT){for(var aS=aF?0:aZ.length-1,aE=aZ.length,aU=aF?1:-1,aC,aV,aD;aF?aS<aE:aS>=0;aS+=aU){if(g(B,aV=(aC=aZ[aS]).data)){aC._fold_lr()}else{if(g(G,aV)&&aC.l&&!((aD=aC.l.l)&&g(Z,aD.data))&&(aC.l.data==="."||(aC.l.data==="function"&&aC.l.length===2)||!(g(am,aC.l.data)||g(e,aC.l.data)))){aw.push(aC.l._wrap(aR(new aq(aV+q[aV]))).p._fold_r())}else{if(g(I,aV)){aC._fold_l()}else{if(g(E,aV)){aC._fold_r()}else{if(g(Q,aV)){aC._fold_lr(),ay.push(aC)}else{if(g(Z,aV)&&aC.r&&aC.r.data!==":"){for(var aN=0,aA=Z[aV];aN<aA&&aC.r&&!g(h,aC.r.data);++aN){aC._fold_r()}aC.r&&(aC.r.data===";"?aC.push(a):aC._fold_r());if(g(R,aV)&&R[aV]===(aC.r&&aC.r.r&&aC.r.r.data)){aC._fold_r().pop()._fold_r()}else{if(g(R,aV)&&R[aV]===(aC.r&&aC.r.data)){aC._fold_r()}}}else{if(g(ai,aV)){aC.r&&aC.r.data!==";"&&aC._fold_r()}}}}}}}}}for(var aT=aJ.length-1,aZ;aT>=0;--aT){(aZ=aJ[aT]).r&&aZ._wrap(aR(new aq("i;"))).p._fold_r()}for(var aT=0,aQ=aw.length,aZ,ar;aT<aQ;++aT){(ar=(aZ=aw[aT])[1]=aZ[1][0]||a)&&(ar.p=aZ)}for(var aT=0,aQ=ay.length,aZ,aO,at;aT<aQ;++aT){aO=(aZ=ay[aT]).length,at=aZ[0],aZ[0]=aZ[aO-2],aZ[1]=at,aZ[2]=aZ[aO-1],aZ.length=3}while(ax.p){ax=ax.p}for(var aT=aJ.length-1,aZ;aT>=0;--aT){delete (aZ=aJ[aT]).p,delete aZ.l,delete aZ.r}return ax};(function(){var ao=an.parse("var _bindings; return(_expression)"),aq=an.parse("_variable = _base._variable"),ap=an.parse("undefined = void(0)");an.compile=function(aD,ax,aC){aC=ac({gensym_renaming:true},aC);var au=ac({},this._environment||{},ax||{},aD.bindings()),az=[ap],aB=X("base");for(var aw in au){if(l.call(au,aw)&&aw!=="this"){az.push(aq.replace({_variable:aw,_base:aB}))}}var aA=new this.syntax(",",az).unflatten(),ar=ao.replace({_bindings:aA,_expression:aD});if(aC.gensym_renaming){var av=this.gensym_rename_table(ar);for(var aw in au){l.call(au,aw)&&(au[av[aw]||aw]=au[aw])}ar=ar.replace(av);aB=av[aB]}var at=ar.toString();try{return(new Function(aB,at)).call(au["this"],au)}catch(ay){throw new Error((ay.message||ay)+" while compiling "+at)}};an.gensym_rename_table=function(aA){var az={},ax=[];aA.reach(function(aB){var aC=aB.data;if(W(aC)){az[aC]||ax.push(aC)}az[aC]=aC.replace(/^(.*)_[a-z0-9]+_.{22}$/,"$1")||"anon"});var ar={},ay=function(aB){if(!(aB in az)){return aB}var aC=ar[aB]||0;while(az[aB+(++aC).toString(36)]){}return aB+(ar[aB]=aC).toString(36)};for(var at={},av=0,au=ax.length,aw;av<au;++av){at[aw=ax[av]]||(az[at[aw]=ay(az[aw])]=true)}return at}})();var M=function(ap){for(var aq=ap.split(/\s+/),ar=1,ao=aq.length,at=an[aq[0]]();ar<ao;++ar){at=an[aq[ar]](at)}return at};an.init=function(ap){ap||(ap=function(aq){return true});ap.constructor===Function||(ap=M(ap));var ao=function(at,aq,ar){return at.constructor===Function||at.constructor===String?an.compile(ao.call(ao,an.parse(at)),aq,ar):at.rmap(function(au){return ap.call(ao,au,aq,ar)})};ao.global=an;ao.macroexpander=ap;return ao};an.initializer=f;an.clone=function(){return C(f(f,c).deglobalize(),function(){for(var ao in an){this[ao]||(this[ao]=an[ao])}})};return caterwaul=an});