if(Array.prototype.indexOf===undefined){Array.prototype.indexOf=function(C){var A=this.length;for(var B=0;B<A;B+=1){if(this[B]===C){return B}}return -1}}if(Array.prototype.lastIndexOf===undefined){Array.prototype.lastIndexOf=function(B){for(var A=this.length;--A>=0;){if(this[A]===B){return A}}return -1}}if(Date.prototype.toISOString===undefined){Date.prototype.toISOString=function(){function A(B){return B<10?"0"+B:B}return(this.getUTCFullYear()+"-"+A(this.getUTCMonth()+1)+"-"+A(this.getUTCDate())+"T"+A(this.getUTCHours())+":"+A(this.getUTCMinutes())+":"+A(this.getUTCSeconds())+"Z")}}var caja;var ___;(function(X){var Ae=function(Ao,An){};function K(){return Ae}function t(An){Ae=An}function E(An){Ae(String(An))}function B(Ao){var An=Array.prototype.slice.call(arguments,0).join("");Ae(An,true);throw new Error(An)}function AI(Ao,An){return Ao||B.apply({},Array.prototype.slice.call(arguments,1))}function m(Ap,An,Ao){if(typeof Ap!==An){B("expected ",An," instead of ",typeof Ap,": ",(Ao||Ap))}return Ap}function AQ(An){m(An,"number");if(Math.floor(An)!==An){B("Must be integral: ",An)}if(An<0){B("Must not be negative: ",An)}if(Math.floor(An-1)!==An-1){B("Beyond precision limit: ",An)}if(Math.floor(An-1)>=An){B("Must not be infinite: ",An)}return An}var AN={toString:function(){return"<Logging Keeper>"},handleRead:function(Ao,An){E("Not readable: ("+Ao+")."+An);return undefined},handleCall:function(Ap,Ao,An){B("Not callable: (",Ap,").",Ao)},handleSet:function(Ao,An,Ap){B("Not settable: (",Ao,").",An)},handleDelete:function(Ao,An){B("Not deletable: (",Ao,").",An)}};function z(){return AN}function L(An){AN=An}Object.prototype.handleRead___=function(Ao){var An=Ao+"_getter___";if(this[An]){return this[An]()}return AN.handleRead(this,Ao)};Object.prototype.handleCall___=function(Ap,Ao){var An=Ap+"_handler___";if(this[An]){return this[An].call(this,Ao)}return AN.handleCall(this,Ap,Ao)};Object.prototype.handleSet___=function(Ao,Ap){var An=Ao+"_setter___";if(this[An]){return this[An](Ap)}return AN.handleSet(this,Ao,Ap)};Object.prototype.handleDelete___=function(Ao){var An=Ao+"_deleter___";if(this[An]){return this[An]()}return AN.handleDelete(this,Ao)};var W=function(An){return true};if(typeof X.HTMLDivElement==="function"){W=function(An){return !(An instanceof X.HTMLDivElement)}}var y=Object.prototype.hasOwnProperty;function AW(Ap,An){var Ao=typeof Ap;if(Ao!=="object"&&Ao!=="function"){return false}if(W(Ap)){return y.call(Ap,An)}else{return false}}function I(Aq,Ap){m(Aq,"string");m(Ap,"string");var Ao=Aq.length;var An=Ap.length;return Ao>=An&&(Aq.substring(Ao-An,Ao)===Ap)}function AP(Ap){if(Ap===null){return undefined}if(typeof Ap!=="object"){return undefined}if(AW(Ap,"__proto__")){if(Ap.__proto__===null){return undefined}return Ap.__proto__.constructor}var An;if(!AW(Ap,"constructor")){An=Ap.constructor}else{var Ao=Ap.constructor;if(!(delete Ap.constructor)){return undefined}An=Ap.constructor;Ap.constructor=Ao}if(An.prototype.constructor===An){Ap.__proto__=An.prototype}return An}function AY(Ao){var An=AP(Ao);return An===Object||An===Array}function F(Ao){var An=typeof Ao;if(An!=="object"&&An!=="function"){return true}return AW(Ao,"___FROZEN___")}function AV(As){if(null===As){return As}if(F(As)){return As}var Ar=typeof As;if(Ar!=="object"&&Ar!=="function"){return As}var Ap=[];for(var Ao in As){if(I(Ao,"_canSet___")||I(Ao,"_canDelete___")){if(As[Ao]){Ap.push(Ao)}}}for(var Aq=0;Aq<Ap.length;Aq++){var An=Ap[Aq];if(AW(As,An)){if(!(delete As[An])){B("internal: failed delete: ",As,".",An)}}if(As[An]){As[An]=false}}As.___FROZEN___=true;if(Ar==="function"){AV(As.prototype)}return As}function AC(An){if(!AY(An)){B("caja.freeze(obj) applies only to JSON Containers: ",An)}return AV(An)}function d(Ao){if(!AY(Ao)){B("caja.copy(obj) applies only to JSON Containers: ",Ao)}var An=(Ao instanceof Array)?[]:{};Am(Ao,x(function(Aq,Ap){An[Aq]=Ap}));return An}function N(An){return AV(d(An))}function r(Ao,An){return !!Ao[An+"_canRead___"]}function AA(Ao,An){return !!Ao[An+"_canEnum___"]}function g(Ao,An){return !!Ao[An+"_canCall___"]}function s(Ao,An){return !!Ao[An+"_canSet___"]}function Ak(Ao,An){return !!Ao[An+"_canDelete___"]}function O(Ao,An){Ao[An+"_canRead___"]=true}function Z(Ao,An){O(Ao,An);Ao[An+"_canEnum___"]=true}function D(Ao,An){Ao[An+"_canCall___"]=true}function w(Ao,An){if(F(Ao)){B("Can't set .",An," on frozen (",Ao,")")}Z(Ao,An);Ao[An+"_canSet___"]=true}function v(Ao,An){if(F(Ao)){B("Can't delete .",An," on frozen (",Ao,")")}B("TODO(erights): allowDelete() not yet implemented");Ao[An+"_canDelete___"]=true}function U(An){return !!An.___CONSTRUCTOR___}function AT(An){return"___METHOD_OF___" in An}function J(An){return !!An.___SIMPLE_FUNC___}function i(An,Ap,Ao){m(An,"function",Ao);if(AT(An)){B("Methods can't be constructors: ",An)}if(J(An)){B("Simple functions can't be constructors: ",An)}An.___CONSTRUCTOR___=true;if(Ap){Ap=Ai(Ap);if(AW(An,"Super")){if(An.Super!==Ap){B("Can't inherit twice: ",An,",",Ap)}}else{if(F(An)){B("Derived constructor already frozen: ",An)}An.Super=Ap}}return An}function T(Ao,An,Ap){m(An,"function",Ap);if(U(An)){B("constructors can't be methods: ",An)}if(J(An)){B("Simple functions can't be methods: ",An)}An.___METHOD_OF___=A(Ao);return AV(An)}function x(An,Ao){m(An,"function",Ao);if(U(An)){B("Constructors can't be simple functions: ",An)}if(AT(An)){B("Methods can't be simple function: ",An)}An.___SIMPLE_FUNC___=true;An.apply_canCall___=true;An.call_canCall___=true;return An}function A(An){if(U(An)||J(An)){return An}m(An,"function");if(AT(An)){B("Methods can't be called as constructors: ",An)}B("Untamed functions can't be called as constructors: ",An)}function Ai(An){return AV(A(An))}function Aj(An){if(J(An)||AT(An)){if(!F(An)){B("internal: non-frozen func stored as method: ",An)}return An}m(An,"function");if(U(An)){B("Constructors can't be called as methods: ",An)}B("Untamed functions can't be called as methods: ",An)}function Y(An){if(J(An)){return AV(An)}m(An,"function");if(U(An)){if(An===Number||An===String||An===Boolean){return An}B("Constructors can't be called as simple functions: ",An)}if(AT(An)){B("Methods can't be called as simple functions: ",An)}B("Untamed functions can't be called as simple functions: ",An)}function H(Ap,An,Aq){An=String(An);if(I(An,"__")){B("Reserved name: ",An)}var Ao=AS(A(Ap),"prototype");if(!M(Ao,An)){B("not settable: ",An)}if(Aq.___METHOD_OF___===Ap){D(Ao,An)}else{if(J(Aq)){D(Ao,An);w(Ao,An)}else{w(Ao,An)}}Ao[An]=Aq}function l(Ao,An){An=String(An);if(I(An,"__")){return false}return r(Ao,An)}function n(Ao,An){An=String(An);return l(Ao,An)?Ao[An]:Ao.handleRead___(An)}function AM(Ao,An){An=String(An);if(I(An,"_")){return false}if(r(Ao,An)){return true}if(!AY(Ao)){return false}if(!AW(Ao,An)){return false}O(Ao,An);return true}function AS(Ao,An){An=String(An);return AM(Ao,An)?Ao[An]:Ao.handleRead___(An)}function S(Ao,An){An=String(An);if(I(An,"___")){return false}return true}function P(Ao,An){An=String(An);if(I(An,"__")){return false}return AA(Ao,An)}function AX(Ao,An){An=String(An);if(I(An,"_")){return false}if(AA(Ao,An)){return true}if(!AY(Ao)){return false}if(!AW(Ao,An)){return false}Z(Ao,An);return true}function u(Ao,An){An=String(An);return AW(Ao,An)&&AX(Ao,An)}var AG={};function Am(Ar,Aq){Aq=Y(Aq);if(Ar instanceof Array){var An=Ar.length;for(var Ap=0;Ap<An;Ap++){if(Aq(Ap,AS(Ar,Ap))===AG){return }}}else{for(var Ao in Ar){if(u(Ar,Ao)){if(Aq(Ao,AS(Ar,Ao))===AG){return }}}}}function f(Ap,An){An=String(An);if(I(An,"__")){return false}if(g(Ap,An)){return true}if(!l(Ap,An)){return false}var Ao=Ap[An];if(!J(Ao)){return false}D(Ap,An);return true}function j(Aq,Ap,Ao){Ap=String(Ap);if(f(Aq,Ap)){var An=Aq[Ap];return An.apply(Aq,Ao)}else{return Aq.handleCall___(Ap,Ao)}}function Aa(Ap,An){An=String(An);if(I(An,"_")){return false}if(g(Ap,An)){return true}if(!AM(Ap,An)){return false}var Ao=Ap[An];if(!J(Ao)){return false}D(Ap,An);return true}function Ad(Aq,Ap,Ao){Ap=String(Ap);if(Aa(Aq,Ap)){var An=Aq[Ap];return An.apply(Aq,Ao)}else{return Aq.handleCall___(Ap,Ao)}}function M(Ao,An){An=String(An);if(I(An,"__")){return false}if(s(Ao,An)){return true}return !F(Ao)}function h(Ao,An,Ap){An=String(An);if(M(Ao,An)){w(Ao,An);Ao[An]=Ap;return Ap}else{return Ao.handleSet___(An,Ap)}}function Af(Ao,An){An=String(An);if(I(An,"_")){return false}if(s(Ao,An)){return true}return !F(Ao)&&AY(Ao)}function Ag(Ao,An,Ap){An=String(An);if(Af(Ao,An)){w(Ao,An);Ao[An]=Ap;return Ap}else{return Ao.handleSet___(An,Ap)}}function Q(Ao,An){B("TODO(erights): deletion not yet supported");return false}function AH(Ao,An){An=String(An);if(Q(Ao,An)){B("TODO(erights): deletion not yet supported");return(delete Ao[An])||B("not deleted: ",An)}else{return Ao.handleDelete___(An)}}function p(Ao,An){B("TODO(erights): deletion not yet supported");return false}function e(Ao,An){An=String(An);if(p(Ao,An)){if(!AY(Ao)){B("unable to delete: ",An)}B("TODO(erights): deletion not yet supported");return(delete Ao[An])||B("not deleted: ",An)}else{return Ao.handleDelete___(An)}}function AK(An){return AV(Array.prototype.slice.call(An,0))}function Al(Ao,An){Am(An,x(function(Ap,Aq){H(Ao,Ap,Aq)}))}function Ah(Aq,As,Ar,Ap){var Ao=As||Object;var An=Ar||{};var Au=Ap||{};if("Super" in Au){B('The static name "Super" is reserved ',"for the super-constructor")}i(Aq,Ao);function At(){}At.prototype=Ao.prototype;Aq.prototype=new At();Aq.prototype.constructor=Aq;Al(Aq,An);Am(Au,x(function(Av,Aw){Ag(Aq,Av,Aw)}))}function AB(Ap,An,Ao){Ap[An+"_getter___"]=Ao}function G(Ao,An,Ap){Ao[An+"_handler___"]=Ap}function AF(Ap,Ao,An){G(Ap,Ao,function(Aq){return An.apply(this,Aq)})}function Ac(Ap,An,Ao){Ap[An+"_setter___"]=Ao}function C(Ap,An,Ao){Ap[An+"_deleter___"]=Ao}function R(Ao,An){x(Ao[An],An);D(Ao,An);O(Ao,An)}function AZ(Ao,An){T(Ao,Ao.prototype[An],An);D(Ao.prototype,An)}function o(Ap,An){var Ao=Ap.prototype[An];G(Ap.prototype,An,function(Aq){if(F(this)){B("Can't .",An," a frozen object")}return Ao.apply(this,Aq)})}function Ab(An){if(An instanceof RegExp){if(F(An)){B("Can't match with frozen RegExp: ",An)}}}function k(Ao,Ap,Ar){var An=Ar.length;for(var Aq=0;Aq<An;Aq+=1){Ao(Ap,Ar[Aq])}}k(O,Math,["E","LN10","LN2","LOG2E","LOG10E","PI","SQRT1_2","SQRT2"]);k(R,Math,["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","random","round","sin","sqrt","tan"]);i(Object,undefined,"Object");k(AZ,Object,["toString","toLocaleString","valueOf","isPrototypeOf"]);O(Object.prototype,"length");AF(Object.prototype,"hasOwnProperty",function(An){An=String(An);return AM(this,An)&&AW(this,An)});var AU=Object.prototype.propertyIsEnumerable;AF(Object.prototype,"propertyIsEnumerable",function(An){An=String(An);return AM(this,An)&&AU.call(this,An)});AF(Object.prototype,"freeze_",function(){return AV(this)});i(Function,Object,"Function");O(Function.prototype,"prototype");AF(Function.prototype,"apply",function(Ao,An){return Y(this).apply(Ao,An[0])});AF(Function.prototype,"call",function(Ao,An){return Y(this).apply(Ao,An)});i(Array,Object,"Array");k(AZ,Array,["concat","join","slice","indexOf","lastIndexOf"]);k(o,Array,["pop","push","reverse","shift","sort","splice","unshift"]);i(String,Object,"String");R(String,"fromCharCode");k(AZ,String,["charAt","charCodeAt","concat","indexOf","lastIndexOf","localeCompare","slice","substring","toLowerCase","toLocaleLowerCase","toUpperCase","toLocaleUpperCase"]);AF(String.prototype,"match",function(An){Ab(An);return this.match(An)});AF(String.prototype,"replace",function(Ao,An){Ab(Ao);return this.replace(Ao,An)});AF(String.prototype,"search",function(An){Ab(An);return this.search(An)});AF(String.prototype,"split",function(Ao,An){Ab(Ao);return this.split(Ao,An)});i(Boolean,Object,"Boolean");i(Number,Object,"Number");k(O,Number,["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"]);k(AZ,Number,["toFixed","toExponential","toPrecision"]);i(Date,Object,"Date");R(Date,"parse");R(Date,"UTC");k(AZ,Date,["toDateString","toTimeString","toUTCString","toLocaleString","toLocaleDateString","toLocaleTimeString","toISOString","getDay","getUTCDay","getTimezoneOffset","getTime","getFullYear","getUTCFullYear","getMonth","getUTCMonth","getDate","getUTCDate","getHours","getUTCHours","getMinutes","getUTCMinutes","getSeconds","getUTCSeconds","getMilliseconds","getUTCMilliseconds"]);k(o,Date,["setTime","setFullYear","setUTCFullYear","setMonth","setUTCMonth","setDate","setUTCDate","setHours","setUTCHours","setMinutes","setUTCMinutes","setSeconds","setUTCSeconds","setMilliseconds","setUTCMilliseconds"]);i(RegExp,Object,"RegExp");o(RegExp,"exec");o(RegExp,"test");k(O,RegExp,["source","global","ignoreCase","multiline","lastIndex"]);i(Error,Object,"Error");O(Error,"name");O(Error,"message");i(EvalError,Error,"EvalError");i(RangeError,Error,"RangeError");i(ReferenceError,Error,"ReferenceError");i(SyntaxError,Error,"SyntaxError");i(TypeError,Error,"TypeError");i(URIError,Error,"URIError");var AJ;var AL;function AE(){return AL}function q(An){AL=An}var b=AC({handle:x(function(An){})});function AO(){var An=d(AJ);return AC({getOuters:x(function(){return An}),setOuters:x(function(Ao){An=Ao}),handle:x(function(Ao){Ao(An)})})}function AD(An){Ad(AL,"handle",[AV(x(An))]);return An}var c=[];function V(An){m(An,"object","outers");var Ao;if("id___" in An){Ao=m(An.id___,"number","id")}else{Ao=An.id___=c.length}c[Ao]=An;return Ao}function AR(Ao){var An=c[m(Ao,"number","id")];if(An===undefined){B("outers#",Ao," unregistered")}return An}function a(An){m(An,"object","outers");if("id___" in An){var Ao=m(An.id___,"number","id");c[Ao]=undefined}}caja={getLogFunc:K,setLogFunc:t,log:E,fail:B,enforce:AI,enforceType:m,enforceNat:AQ,isJSONContainer:AY,freeze:AC,copy:d,snapshot:N,canReadPub:AM,readPub:AS,canEnumPub:AX,canEnumOwn:u,BREAK:AG,each:Am,canCallPub:Aa,callPub:Ad,canSetPub:Af,setPub:Ag,canDeletePub:p,deletePub:e,def:Ah};AJ={caja:caja,"null":null,"false":false,"true":true,"NaN":NaN,"Infinity":Infinity,"undefined":undefined,parseInt:parseInt,parseFloat:parseFloat,isNaN:isNaN,isFinite:isFinite,decodeURI:decodeURI,decodeURIComponent:decodeURIComponent,encodeURI:encodeURI,encodeURIComponent:encodeURIComponent,Math:Math,Object:Object,Array:Array,String:String,Boolean:Boolean,Number:Number,Date:Date,RegExp:RegExp,Error:Error,EvalError:EvalError,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError,URIError:URIError};Am(AJ,x(function(Ao,An){switch(typeof An){case"object":if(An!==null){AV(An)}break;case"function":AV(An);break}}));AV(AJ);___={getKeeper:z,setKeeper:L,directConstructor:AP,isFrozen:F,primFreeze:AV,canRead:r,allowRead:O,canEnum:AA,allowEnum:Z,canCall:g,allowCall:D,canSet:s,allowSet:w,canDelete:Ak,allowDelete:v,isCtor:U,isMethod:AT,isSimpleFunc:J,ctor:i,asCtorOnly:A,asCtor:Ai,method:T,asMethod:Aj,simpleFunc:x,asSimpleFunc:Y,setMember:H,setMemberMap:Al,canReadProp:l,readProp:n,canInnocentEnum:S,canEnumProp:P,canCallProp:f,callProp:j,canSetProp:M,setProp:h,canDeleteProp:Q,deleteProp:AH,hasOwnProp:AW,args:AK,useGetHandler:AB,useApplyHandler:G,useCallHandler:AF,useSetHandler:Ac,useDeleteHandler:C,allowSimpleFunc:R,allowMethod:AZ,allowMutator:o,enforceMatchable:Ab,all2:k,sharedOuters:AJ,getNewModuleHandler:AE,setNewModuleHandler:q,ignoreNewModule:b,makeNormalNewModuleHandler:AO,loadModule:AD,getId:V,getOuters:AR,unregister:a};Am(caja,x(function(Ao,An){if(Ao in ___){B("internal: initialization conflict: ",Ao)}if(typeof An==="function"){x(An);D(caja,Ao)}___[Ao]=An}));AV(caja);q(AO())})(this);