functionca(a){a=["object"==typeofglobalThis&&globalThis,a,"object"==typeofwindow&&window,"object"==typeofself&&self,"object"==typeofglobal&&global];for(varb=0;b<a.length;++b){varc=a[b];if(c&&c.Math==Math)returnc}throwError("Cannot find global object");}varea=ca(this);functionfa(a,b){if(b)a:{varc=ea;a=a.split(".");for(vard=0;d<a.length-1;d++){vare=a[d];if(!(einc))breaka;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&ba(c,a,{configurable:!0,writable:!0,value:b})}}
fa("Symbol",function(a){functionb(e){if(thisinstanceofb)thrownewTypeError("Symbol is not a constructor");returnnewc("jscomp_symbol_"+(e||"")+"_"+d++,e)}functionc(e,f){this.g=e;ba(this,"description",{configurable:!0,writable:!0,value:f})}if(a)returna;c.prototype.toString=function(){returnthis.g};vard=0;returnb});
functionEb(a,b,c){if(a.g==Db){a===c&&(b=Hb,c=newTypeError("Promise cannot resolve to itself"));a.g=1;a:{vard=c,e=a.aa,f=a.ba;if(dinstanceofw){Qb(d,Kb(e||la,f||null,a));varg=!0}elseif(sa(d))d.then(e,f,a),g=!0;else{if(pa(d))try{varh=d.then;if("function"===typeofh){Sb(d,h,e,f,a);g=!0;breaka}}catch(k){f.call(a,k);g=!0;breaka}g=!1}}g||(a.u=c,a.g=b,a.i=null,Rb(a),b!=Hb||cinstanceofGb||Tb(a,c))}}
functionPb(a,b,c,d){if(c==Hb&&b.h&&!b.m)for(;a&&a.m;a=a.i)a.m=!1;if(b.g)b.g.i=null,Ub(b,c,d);elsetry{b.m?b.j.call(b.i):Ub(b,c,d)}catch(e){Vb.call(null,e)}xa(Jb,b)}functionUb(a,b,c){b==Fb?a.j.call(a.i,c):a.h&&a.h.call(a.i,c)}functionTb(a,b){a.m=!0;yb(function(){a.m&&Vb.call(null,b)})}varVb=xb;functionGb(a){ta.call(this,a)}t(Gb,ta);Gb.prototype.name="cancel";functionWb(a){a:{varb=["window","location","href"];for(varc=p,d=0;d<b.length;d++)if(c=c[b[d]],null==c){b=null;breaka}b=c}null==a&&(a='Unknown Error of type "null/undefined"');if("string"===typeofa)return{message:a,name:"Unknown error",lineNumber:"Not available",fileName:b,stack:"Not available"};c=!1;try{vare=a.lineNumber||a.line||"Not available"}catch(g){e="Not available",c=!0}try{varf=a.fileName||a.filename||a.sourceURL||p.$googDebugFname||b}catch(g){f="Not available",c=!0}b=Xb(a);if(!(!c&&
a.lineNumber&&a.fileName&&a.stack&&a.message&&a.name))returnc=a.message,null==c&&(a.constructor&&a.constructorinstanceofFunction?(a.constructor.name?c=a.constructor.name:(c=a.constructor,Yb[c]?c=Yb[c]:(c=String(c),Yb[c]||(d=/function\s+([^\(]+)/m.exec(c),Yb[c]=d?d[1]:"[Anonymous]"),c=Yb[c])),c='Unknown Error of type "'+c+'"'):c="Unknown Error of unknown type","function"===typeofa.toString&&Object.prototype.toString!==a.toString&&(c+=": "+a.toString())),{message:c,name:a.name||"UnknownError",lineNumber:e,
1;f<=c;f++){d.push("> ");if(a[f]){e=d;g=e.push;varh=a[f],k=[h.h?vc(h.h)+".":"",h.g?vc(uc(h.g)):"anonymous",h.i?" [as "+vc(uc(h.i))+"]":""];h.j&&(k.push(" at "),k.push(vc(h.j)));g.call(e,k.join(""))}elsed.push("(unknown)");d.push("\n")}this.g=b||"";Error.captureStackTrace?Error.captureStackTrace(this,xc):this.stack=Error().stack||""}t(xc,Error);xc.prototype.toString=function(){returnthis.message||this.g};functionyc(a,b){returna==b}functionzc(a,b){returna.toString()===b.toString()}varAc="String Boolean Number Array RegExp Date Function".split(" ");"function"===typeofArrayBuffer&&Ac.push("ArrayBuffer");varBc={String:yc,Number:yc,Bigint:yc,Boolean:yc,Date:function(a,b){returna.getTime()==b.getTime()},RegExp:zc,Function:zc};functionCc(a,b,c){returnMath.abs(a-b)<=c}varDc={Number:Cc};
functionFc(a){y("Call to fail()",!1,a)}functionA(a,b){returnb.length==a+1?b[0]:null}functionD(a,b,c){returnc.length==b+1?c[a]:c[a-1]}functionE(a,b){b.length==a||b.length==a+1&&"string"===typeofb[0]||Gc("Incorrect arguments passed to assert function.\nExpected "+a+" argument(s) plus optional comment; got "+b.length+".")}
functionF(a,b){varc=x(a),d=x(b);c=["Expected",c,"but was",d].join(40<c.length||40<d.length?"\n":" ");if("string"==typeofa&&"string"==typeofb){d=Math.min(a.length,b.length);for(vare=0;e<d&&a.charAt(e)==b.charAt(e);)e++;for(varf=0;f<d&&a.charAt(a.length-f-1)==b.charAt(b.length-f-1);)f++;e+f>d&&(f=0);if(2<e||2<f)d=function(g){varh=Math.max(0,e-2),k=Math.min(g.length,g.length-(f-2));return(0<h?"...":"")+g.substring(h,k)+(k<g.length?"...":"")},a=d(a),b=d(b),c+="\nDifference was at position "+e+
". "+["Expected","["+a+"]","vs. actual","["+b+"]"].join(40<a.length||40<b.length?"\n":" ")}returnc}functionKc(a,b){E(1,arguments);varc=A(1,arguments),d=D(1,1,arguments);y(c,"boolean"===typeofd,"Bad argument to assert(boolean): "+x(d));y(c,d,"Call to assert(boolean) with false")}functionLc(a){if(pa(a)&&"string"===typeofa.stacktrace&&"string"===typeofa.message){varb=a.message.length-a.stacktrace.length;a.message.indexOf(a.stacktrace,b)==b&&(a.message=a.message.substr(0,b-14))}}
functionMc(a,b){E(1,arguments);varc=A(1,arguments),d=D(1,1,arguments);y(c,"boolean"===typeofd,"Bad argument to assertTrue(boolean): "+x(d));y(c,d,"Call to assertTrue(boolean) with false")}functionNc(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments);y(A(2,arguments),d===e,F(d,e))}functionOc(a,b){E(1,arguments);y(A(1,arguments),null!==D(1,1,arguments),"Expected not to be "+x(null))}
functionPc(a,b){E(1,arguments);y(A(1,arguments),void0!==D(1,1,arguments),"Expected not to be "+x(void0))}varQc={Array:!0,Float32Array:!0,Float64Array:!0,Int8Array:!0,Int16Array:!0,Int32Array:!0,Uint8Array:!0,Uint8ClampedArray:!0,Uint16Array:!0,Uint32Array:!0,BigInt64Array:!0,BigUint64Array:!0};
functionRc(a,b,c){functiond(n,v,z){for(varC=0;C<h.length;++C){varM=h[C]===n,I=k[C]===v;if(M||I){M&&I||f.push("Asymmetric cycle detected at "+z);return}}h.push(n);k.push(v);e(n,v,z);h.pop();k.pop()}functione(n,v,z){if(n!==v){varC=Ec(n),M=Ec(v);if(C===M){varI="ArrayBuffer"===C;I&&(n=newUint8Array(n),v=newUint8Array(v));I=I||Qc[C];varCa=l(C,n,v);if(null!=Ca)""!=Ca&&(z?f.push(z+": "+Ca):g=!0);elseif(I&&n.length!=v.length)f.push((z?z+": ":"")+"Expected "+n.length+"-element array but got a "+
v.length+"-element array");elseif("String"==C)n!=v&&(z?f.push(z+": "+F(n,v)):g=!0);else{varDa=z+(I?"[%s]":z?".%s":"%s");if("undefined"!=typeofMap&&ninstanceofMap||"undefined"!=typeofSet&&ninstanceofSet)n.forEach(function(ha,da){v.has(da)?v.get&&d(ha,v.get(da),Da.replace("%s",String(da))):f.push(da+" not present in actual "+(z||M))}),v.forEach(function(ha,da){n.has(da)||f.push(da+" not present in expected "+(z||C))});elseif(n.__iterator__)"function"===typeofn.ma?n.ma(v)||f.push("equals() returned false for "+
(z||C)):n.Ga?d(n.Ga,v.Ga,Da.replace("%s","map_")):f.push("unable to check "+(z||C)+" for equality: it has an iterator we do not know how to handle. please add an equals method");else{for(varBinn)I&&("0"===B||/^[1-9][0-9]*$/.test(B))||(Binv?d(n[B],v[B],Da.replace("%s",B)):f.push("property "+B+" not present in actual "+(z||M)));for(Binv)I&&("0"===B||/^[1-9][0-9]*$/.test(B))||Binn||f.push("property "+B+" not present in expected "+(z||C));if(I)for(B=0;B<n.length;B++)d(n[B],v[B],Da.replace("%s",
functionTc(a,b,c,d){E(3,arguments);vare=D(1,3,arguments),f=D(2,3,arguments),g=D(3,3,arguments);y(A(3,arguments),Cc(e,f,g),"Expected "+e+", but got "+f+" which was more than "+g+" away")}functionUc(a){varb=[];if(Vc(a))for(Vc(a)||Gc("parameter iterable is not iterable"),a=a[Symbol.iterator]();;){varc=a.next();if(c.done)returnb;b.push(c.value)}for(c=0;c<a.length;c++)b[c]=a[c];returnb}functionVc(a){return!("undefined"===typeofSymbol||!Symbol.iterator||!a[Symbol.iterator])}
functionWc(a,b){if("function"==typeofa.indexOf)returna.indexOf(b);for(varc=0;c<a.length;c++)if(a[c]===b)returnc;return-1}functionXc(a){varb=document.createElement("div");b.innerHTML=a;returnb.innerHTML.replace(/^\s+|\s+$/g,"")}functionGc(a,b){a=newxc(a,b);(b=Hc())?b.ia.push(a):p.console.error("Failed to save thrown exception: no test case is installed.");throwa;}r("fail",Fc);r("assert",Kc);
r("assertThrows",function(a,b){E(1,arguments);varc=D(1,1,arguments),d=A(1,arguments);y(d,"function"==typeofc,"Argument passed to assertThrows is not a function");try{c()}catch(e){returnLc(e),c=Hc(),e&&e.isJsUnitException&&c&&Gc(d,"Function passed to assertThrows caught a JsUnitException (usually from an assert or call to fail()). If this is expected, use assertThrowsJsUnitException instead."),e}Gc(d,"No exception thrown from function passed to assertThrows");throwError("Should have thrown an error.");
});r("assertNotThrows",function(a,b){E(1,arguments);varc=A(1,arguments),d=D(1,1,arguments);y(c,"function"==typeofd,"Argument passed to assertNotThrows is not a function");try{returnd()}catch(e){Gc((c?c+"\n":"")+"A non expected exception was thrown from function passed to assertNotThrows",e.stack||e.stacktrace||e.toString())}});
r("assertThrowsJsUnitException",function(a,b){try{a()}catch(c){return(a=Hc())?Ka(a.ia,c):p.console.error("Failed to remove expected exception: no test case is installed."),c.Wa||Fc("Expected a JsUnitException, got '"+c+"' instead"),"undefined"!=typeofb&&c.message!=b&&Fc("Expected message ["+b+"] but got ["+c.message+"]"),c}a="Expected a failure";"undefined"!=typeofb&&(a+=": "+b);thrownewxc(a);});
r("assertRejects",function(a,b){E(1,arguments);varc=D(1,1,arguments),d=A(1,arguments);y(d,pa(c)&&"function"===typeofc.then,"Argument passed to assertRejects is not an IThenable");returnc.then(function(){Gc(d,"IThenable passed into assertRejects did not reject")},function(e){Lc(e);returne})});r("assertTrue",Mc);r("assertFalse",function(a,b){E(1,arguments);varc=A(1,arguments),d=D(1,1,arguments);y(c,"boolean"===typeofd,"Bad argument to assertFalse(boolean): "+x(d));y(c,!d,"Call to assertFalse(boolean) with true")});
r("assertEquals",Nc);r("assertNotEquals",function(a,b,c){E(2,arguments);vard=D(2,2,arguments);y(A(2,arguments),D(1,2,arguments)!==d,"Expected not to be "+x(d))});r("assertNull",function(a,b){E(1,arguments);varc=D(1,1,arguments);y(A(1,arguments),null===c,F(null,c))});r("assertNotNull",Oc);r("assertUndefined",function(a,b){E(1,arguments);varc=D(1,1,arguments);y(A(1,arguments),void0===c,F(void0,c))});r("assertNotUndefined",Pc);
r("assertNullOrUndefined",function(a,b){E(1,arguments);varc=D(1,1,arguments);y(A(1,arguments),null==c,"Expected "+x(null)+" or "+x(void0)+" but was "+x(c))});r("assertNotNullNorUndefined",function(a,b){E(1,arguments);Oc.apply(null,arguments);Pc.apply(null,arguments)});r("assertNonEmptyString",function(a,b){E(1,arguments);varc=D(1,1,arguments);y(A(1,arguments),void0!==c&&null!==c&&"string"==typeofc&&""!==c,"Expected non-empty string but was "+x(c))});
r("assertNaN",function(a,b){E(1,arguments);varc=D(1,1,arguments);y(A(1,arguments),c!==c,"Expected NaN but was "+x(c))});r("assertNotNaN",function(a,b){E(1,arguments);y(A(1,arguments),!isNaN(D(1,1,arguments)),"Expected not NaN")});r("assertObjectEquals",Sc);
r("assertObjectRoughlyEquals",function(a,b,c,d){E(3,arguments);vare=D(3,3,arguments),f=A(3,arguments)?A(3,arguments):"",g=Rc(D(1,3,arguments),D(2,3,arguments),function(h,k,l){return(h=Dc[h])?h(k,l,e)?"":F(k,l)+" which was more than "+e+" away":null});y(f,!g,g)});r("assertObjectNotEquals",function(a,b,c){E(2,arguments);vard=A(2,arguments)?A(2,arguments):"",e=Rc(D(1,2,arguments),D(2,2,arguments));y(d,e,"Objects should not be equal")});
r("assertArrayEquals",function(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments),f=A(2,arguments)?A(2,arguments):"",g=Ec(d);y(f,"Array"==g,"Expected an array for assertArrayEquals but found a "+g);g=Ec(e);y(f,"Array"==g,"Expected an array for assertArrayEquals but found a "+g);Sc(f,Array.prototype.concat.call(d),Array.prototype.concat.call(e))});
r("assertElementsEquals",function(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments),f=A(2,arguments)?A(2,arguments):"";if(d){Nc("length mismatch: "+f,d.length,e.length);for(varg=0;g<d.length;++g)Nc("mismatch at index "+g+": "+f,d[g],e[g])}elseKc(f,!e)});
r("assertSameElements",function(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments),f=A(2,arguments);Mc("Value of 'expected' should be array-like or iterable",oa(d)||Vc(d));Mc("Value of 'actual' should be array-like or iterable",oa(e)||Vc(e));d=Uc(d);e=Uc(e);y(f,d.length==e.length,"Expected "+d.length+" elements: ["+d+"], got "+e.length+" elements: ["+e+"]");for(varg=Uc(d),h=0;h<e.length;h++){vark=Wc(g,e[h]);y(f,-1!=k,"Expected ["+d+"], got ["+e+"]");g.splice(k,1)}});
r("assertEvaluatesToTrue",function(a,b){E(1,arguments);D(1,1,arguments)||y(A(1,arguments),!1,"Expected to evaluate to true")});r("assertEvaluatesToFalse",function(a,b){E(1,arguments);D(1,1,arguments)&&y(A(1,arguments),!1,"Expected to evaluate to false")});r("assertHTMLEquals",function(a,b,c){E(2,arguments);vard=D(2,2,arguments),e=Xc(D(1,2,arguments));d=Xc(d);y(A(2,arguments),e===d,F(e,d))});
r("assertHashEquals",function(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments),f=A(2,arguments),g;for(gind)y(f,gine,"Expected hash had key "+g+" that was not found"),y(f,d[g]==e[g],"Value for key "+g+" mismatch - expected = "+d[g]+", actual = "+e[g]);for(gine)y(f,gind,"Actual hash had key "+g+" that was not expected")});r("assertRoughlyEquals",Tc);
r("assertContains",function(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments);y(A(2,arguments),-1!=Wc(e,d),"Expected '"+e+"' to contain '"+d+"'")});r("assertNotContains",function(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments);y(A(2,arguments),-1==Wc(e,d),"Expected '"+e+"' not to contain '"+d+"'")});
r("assertRegExp",function(a,b,c){E(2,arguments);vard=D(1,2,arguments),e=D(2,2,arguments);"string"==typeofd&&(d=newRegExp(d));y(A(2,arguments),d.test(e),"Expected '"+e+"' to match RegExp "+d.toString())});functionIc(a){this.j=a||"Untitled Test Case";this.i=[];this.m=null;this.ca=Yc;this.aa=la;this.h=null;this.g=newZc(this);this.ia=[];this.$=[];this.ba=0;this.s=new$b}varYc="sorted",$c=p.setTimeout,ad=p.clearTimeout,bd=Date,cd="undefined"!==typeofwindow&&window.performance&&window.performance.now?performance:null,dd=null;m=Ic.prototype;m.ja=!1;m.ea=!1;m.Aa=0;m.ha=0;m.sa=0;m.add=function(a){if(this.ja)throwError("Tests cannot be added after execute() has been called. Test: "+a.name);this.i.push(a)};
functioned(a){a.ja=!0;a.reset();a.Aa=G();a.ea=!0;a.g.s=a.i.length;a.s.start();if(!a.fa())returna.log("shouldRunTests() returned false, skipping these tests."),a.g.da=!0,id(a),!1;jd(a,"shouldRunTests");return!0}
functionrd(a,b){varc=bc(),d=a.na(a.Ia,b,function(e){this.u=e;b.call(this)},"setUpPage");0<c.length&&(a.u="One or more Content Security Policy violations occurred on the page before the first test was run: "+cc(c));returnd}
m.oa=function(){this.h=this.next();if(!this.h||!this.ea)returnid(this),newtd(q(this.aa,this,this.g));vara=!0;try{a=ud(this)}catch(b){returnthis.h.name="shouldRunTests for "+this.h.name,newtd(q(this.ka,this,b))}if(!a)returnnewtd(q(this.ka,this));a=this.s;window.ReportingObserver&&!0!==a.i&&(a.h=[],a.g&&a.g.observe(),a.i=!0);this.g.i++;this.log("Running test: "+this.h.name);a=this.h;this.u?(a.name="setUpPage for "+a.name,vd(this,a.name,this.u),a=!0):a=!1;if(a)returnnewtd(q(this.ka,this));dd=
m.na=function(a,b,c,d){vare=this;this.ia=[];try{this.s.start();varf=a.call(this);if(sa(f)||f&&"function"===typeoff.then){varg=Lb(f);g=yd(this,g,"Timed out while waiting for a promise returned from "+d+" to resolve. Set goog.testing.TestCase.getActiveTestCase().promiseTimeout to adjust the timeout.");g.then(function(){e.ha=G();jd(e,d);0==e.ia.length?hd(b.call(e)):hd(c.call(e,zd(e,d)))},function(h){zd(e,d,h);e.ha=G();jd(e,d);hd(c.call(e,h))});returnnull}jd(this,d);return0==this.ia.length?newtd(q(b,
this)):newtd(q(c,this,zd(this,d)))}catch(h){returnjd(this,d),zd(this,d,h),newtd(q(c,this,h))}};functionzd(a,b,c){vard=a.ia.slice();Ka(d,c);vare=d.length;e&&c&&(c=e+" additional exceptions were swallowed by the test:",a.log(c),gd(a,c));for(c=0;c<e;c++)vd(a,b,d[c]);returnnewxc("One or more assertions were raised but not caught by the testing framework. These assertions may have been unintentionally captured by a catch block or a thenCatch resolution of a Promise.")}
this),0),null):newtd(q(this.oa,this))};functionjd(a,b){varc=ac(a.s);0!=c.length&&(c="One or more Content Security Policy violations occurred during execution of this test: "+cc(c),a.ja?vd(a,b,c):a.u=c)}m.ab=function(){this.ha=G();hd(this.oa())};functionAd(a){switch(a.ca){case"random":for(varb=a.i.length;1<b;){varc=Math.floor(Math.random()*b);b--;vard=a.i[b];a.i[b]=a.i[c];a.i[c]=d}break;caseYc:a.i.sort(function(e,f){returne.name==f.name?0:e.name<f.name?-1:1})}}varJc=null;m=Ic.prototype;
functionld(a){varb=a.i+" of "+a.s+" tests run in "+a.j+"ms.\n";if(a.da)b+="Tests not run because shouldRunTests() returned false.";else{varc=a.s-a.m-a.h,d="";a.h&&(d+=", "+a.h+" skipped by shouldRunTests()");vare=a.ga;if(e.m){varf=0,g;for(gine.m)f++;e=f}elsee=0;e&&(c=e-a.m-a.h,d+=", "+(a.s-e)+" suppressed by querystring");b+=a.m+" passed, "+c+" failed"+d+".\n"+Math.round(a.j/a.i)+" ms/test. "+a.$+" files loaded."}returnb}
functionyd(a,b,c){vard=G();returnneww(function(e,f){varg=a.timeout(function(){f(Error(c+"\nElapsed time: "+(G()-d)+"ms."))},1E3);b.then(e,f);e=q(a.Ka,a,g);b.then(e,e)})}functionFd(a,b,c){this.source=a;this.message=b;this.stack=null;if(c)this.stack=c;elseif(Error.captureStackTrace)Error.captureStackTrace(this,Fd);elseif(a=Error().stack)this.stack=a}Fd.prototype.toString=function(){return"ERROR in "+this.source+"\n"+this.message+(this.stack&&"Not available"!==this.stack?"\n"+this.stack:"")};
functionJd(a,b){b.push('"',a.replace(Ld,function(c){vard=Kd[c];d||(d="\\u"+(c.charCodeAt(0)|65536).toString(16).substr(1),Kd[c]=d);returnd}),'"')};functionMd(){this.g=[];this.o=null;this.h=!1;this.j=this.i=null;this.m=!0;this.u=Gd;this.s=(1E9*Math.random()>>>0)+"-"+window.location.pathname.replace(/.*\//,"").replace(/\.html.*$/,"");if(!fb||ob(11)){vara=this;window.addEventListener("pagehide",function(){a.s="pagehide"})}}m=Md.prototype;m.Ta=function(){returnthis.s};m.Fa=function(a){if(this.o&&this.o.ea)throwError("The test runner is already waiting for a test to complete");this.o=a;this.h=!0};m.$a=function(a){this.m=a};m.Va=function(){returnthis.h};
m.Ua=function(){return0<this.g.length||this.h&&!!this.o&&this.o.ja&&!this.o.ea};m.Qa=function(){vara;if(a=!(0<this.g.length)&&!!this.o)a=this.o,a=!!a.g&&md(a.g);returna};functionNd(a,b){a.h&&a.o&&a.o.ja&&!a.o.ea?a.log("Error after test completed: "+b):a.j&&!a.j.call(null,b)||a.g.push(b)}m.Xa=function(a){varb=dd;if(this.o)Ed(this.o,b,a);elsethrowError("Test runner not initialized with a test case. Original exception: "+a.message);};
m.Na=function(a){varb=[];this.o&&b.push(pd(this.o,a));0<this.g.length&&(b.push("JavaScript errors detected by test runner:"),b.push.apply(b,this.g),b.push("\n"));returnb.join("\n")};m.Oa=function(){returnthis.o?this.o.g.j:0};m.Ma=function(){returnthis.o?this.o.g.$:0};
functionOd(a){if(!a.o)throwError("The test runner must be initialized with a test case before execute can be called.");if(a.m&&0==a.o.i.length)throwError("No tests found in given test case: "+a.o.j+". By default, the test runner fails if a test case has no tests. To modify this behavior, see goog.testing.TestRunner's setStrict() method, or G_testRunner.setStrict()");varb=q(a.Ya,a);a.o.$.push(b);a.o.constructor===Ic?sd(a.o):a.o.Ha()}
m.Ya=function(){vara=pd(this.o,!0);0<this.g.length&&(a+="\n"+this.g.join("\n"));if(!this.i){varb=document.getElementById("closureTestRunnerLog");null==b&&(b=qb("DIV"),b.id="closureTestRunnerLog",b.dir="ltr",document.body.appendChild(b));this.i=b}Pd(this,a);a=qb("A");a.style.display="inline-block";a.style.fontSize="small";a.style.marginBottom="16px";a.href="";a.onclick=q(function(){Od(this);return!1},this);a.textContent="Run again without reloading";this.i.appendChild(a)};
kinstanceofz.Element))){varC=k;if(pa(C))try{varM=C.constructor.displayName||C.constructor.name||Object.prototype.toString.call(C)}catch(I){M="<object could not be stringified>"}elseM=void0===C?"undefined":null===C?"null":typeofC;va("Argument is not a %s (or a non-Element, non-Location mock); got: %s","HTMLAnchorElement",M)}linstanceofZa||linstanceofZa||(l="object"==typeofl&&l.h?l.g.toString():String(l),ab.test(l)||(l="about:invalid#zClosurez"),l=newZa(l,$a));linstanceofZa&&l.constructor===
Za?l=l.g:(va("expected object of type SafeUrl, got '"+l+"' of type "+na(l)),l="type_error:SafeUrl");k.href=l;h.appendChild(document.createTextNode(" "));h.appendChild(d)}h.style.color=f;h.style.font="normal 100% monospace";h.style.wordWrap="break-word";0==c&&(h.style.padding="20px",h.style.marginBottom="10px",e?(h.style.border="1px solid "+f,h.style.backgroundColor="#eeffee"):g?(h.style.border="5px solid "+f,h.style.backgroundColor="#ffeeee"):(h.style.border="1px solid black",h.style.backgroundColor=
b.Pa);r("G_testRunner.getTestResultsAsJson",b.Sa);p.debug||r("debug",q(b.log,b));p.G_errorFilter&&(b.j=p.G_errorFilter);varc=window.onerror;window.onerror=function(f,g,h){vark=arguments[3],l=arguments[4];c&&c!=window.__onerror_at_boot&&c.apply(window,arguments);l=(l=l||f)&&l.stack;(l="string"===typeofl?l:"")?Nd(b,String(f)+"\n"+l):"object"==typeoff?(k=f,k.target&&"SCRIPT"==k.target.tagName?Nd(b,"UNKNOWN ERROR: Script "+k.target.src):Nd(b,"UNKNOWN ERROR: No error information available.")):Nd(b,
ke.prototype.g=function(a,b){return8==a.h&&"number"===typeofb?!!b:ke.za.g.call(this,a,b)};ke.prototype.m=function(a,b){varc=a.v(),d;for(dinb){vare=b[d],f=!/[^0-9]/.test(d);if(f)varg=c.g[parseInt(d,10)]||null;else2==this.s&&(d=String(d).replace(/([A-Z])/g,"-$1").toLowerCase().replace(/\-/g,"_")),g=be(c,d);if(g)if(g.i)for(f=0;f<e.length;f++)a.add(g,this.g(g,e[f]));elsea.set(g,this.g(g,e));elsef?(g=a,f=Number(d),g.h[f]=e,g.g&&deleteg.g[f]):this.u||va("Failed to find field: "+d)}};functionR(a,b){null!=a&&this.g.apply(this,arguments)}R.prototype.h="";R.prototype.set=function(a){this.h=""+a};R.prototype.g=function(a,b,c){this.h+=String(a);if(null!=b)for(vard=1;d<arguments.length;d++)this.h+=arguments[d];returnthis};functionS(a){a.h=""}R.prototype.toString=function(){returnthis.h};/*
ProtocolBuffer2Copyright2008GoogleInc.
Allothercodecopyrightitsrespectiveowners.
@ -24,12 +121,14 @@ function y(a,b){return ya(a,b)||[]}function A(a,b){return a.f[b].f?v(a,b)?a.b[b]
varE={1:"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI".split(" "),7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],
varU={1:"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI".split(" "),7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],
functionlb(a,b){a=U(a,b);if(null==a)throwError("Invalid region code: "+b);returnz(a,10)}functionwb(a,b,c,d){vare=rb(c,d),f=0==A(e,9)?y(w(c,1),9):y(e,9);e=y(e,10);if(2==d)if(eb(rb(c,0)))a=rb(c,1),eb(a)&&(f=f.concat(0==A(a,9)?y(w(c,1),9):y(a,9)),ha(f),0==e.length?e=y(a,10):(e=e.concat(y(a,10)),ha(e)));elsereturnwb(a,b,c,1);if(-1==f[0])return5;b=b.length;if(-1<q(e,b))return4;c=f[0];returnc==b?0:c>b?2:f[f.length-1]<b?3:-1<q(f,b,1)?0:5}
functionzb(a,b,c,d,e,f){if(0==b.length)return0;b=newl(b);varg;null!=c&&(g=w(c,11));null==g&&(g="NonMatch");varh=b.toString();if(0==h.length)g=20;elseif(J.test(h))h=h.replace(J,""),n(b),b.a(cb(h)),g=1;else{h=newRegExp(g);db(b);g=b.toString();if(0==g.search(h)){h=g.match(h)[0].length;varm=g.substring(h).match(Oa);m&&null!=m[1]&&0<m[1].length&&"0"==M(m[1],I)?g=!1:(n(b),b.a(g.substring(h)),g=!0)}elseg=!1;g=g?5:20}e&&x(f,6,g);if(20!=g){if(2>=b.b.length)throwError("Phone number too short after IDD");
a=yb(b,d);if(0!=a)returnx(f,1,a),a;throwError("Invalid country calling code");}if(null!=c&&(g=z(c,10),h=""+g,m=b.toString(),0==m.lastIndexOf(h,0)&&(h=newl(m.substring(h.length)),m=w(c,1),m=newRegExp(z(m,2)),Ab(h,c,null),h=h.toString(),!L(m,b.toString())&&L(m,h)||3==wb(a,b.toString(),c,-1))))returnd.a(h),e&&x(f,6,10),x(f,1,g),g;x(f,1,0);return0}
functionpb(a,b,c,d){if(null==b)throwError("The string supplied did not seem to be a phone number");if(250<b.length)throwError("The string supplied is too long to be a phone number");vare=newl,f=b.indexOf(";phone-context=");if(0<=f){varg=f+15;if("+"==b.charAt(g)){varh=b.indexOf(";",g);0<h?e.a(b.substring(g,h)):e.a(b.substring(g))}g=b.indexOf("tel:");e.a(b.substring(0<=g?g+4:0,f))}elsee.a(ab(b));f=e.toString();g=f.indexOf(";isub=");0<g&&(n(e),e.a(f.substring(0,g)));if(!bb(e.toString()))throwError("The string supplied did not seem to be a phone number");
f=e.toString();if(!(gb(c)||null!=f&&0<f.length&&J.test(f)))throwError("Invalid country calling code");f=newF;d&&x(f,5,b);a:{b=e.toString();g=b.search(Ua);if(0<=g&&bb(b.substring(0,g))){h=b.match(Ua);for(varm=h.length,u=1;u<m;++u)if(null!=h[u]&&0<h[u].length){n(e);e.a(b.substring(0,g));b=h[u];breaka}}b=""}0<b.length&&x(f,3,b);g=U(a,c);b=newl;h=0;m=e.toString();try{h=zb(a,m,g,b,d,f)}catch(N){if("Invalid country calling code"==N.message&&J.test(m)){if(m=m.replace(J,""),h=zb(a,m,g,b,d,f),0==h)throwN;
}elsethrowN;}0!=h?(e=S(h),e!=c&&(g=R(a,h,e))):(db(e),b.a(e.toString()),null!=c?(h=z(g,10),x(f,1,h)):d&&za(f,6));if(2>b.b.length)throwError("The string supplied is too short to be a phone number");null!=g&&(c=newl,e=newl(b.toString()),Ab(e,g,c),a=wb(a,e.toString(),g,-1),2!=a&&4!=a&&5!=a&&(b=e,d&&0<c.toString().length&&x(f,7,c.toString())));d=b.toString();a=d.length;if(2>a)throwError("The string supplied is too short to be a phone number");if(17<a)throwError("The string supplied is too long to be a phone number");
functionyf(a,b){a=wf(a,b);if(null==a)throwError("Invalid region code: "+b);returnP(a,10)}functionGf(a,b,c,d){vare=Bf(c,d),f=0==Q(e,9)?N(K(c,1),9):N(e,9);e=N(e,10);if(2==d)if(of(Bf(c,0)))a=Bf(c,1),of(a)&&(f=f.concat(0==Q(a,9)?N(K(c,1),9):N(a,9)),La(f),0==e.length?e=N(a,10):(e=e.concat(N(a,10)),La(e)));elsereturnGf(a,b,c,1);if(-1==f[0])return5;b=b.length;if(-1<Fa(e,b))return4;c=f[0];returnc==b?0:c>b?2:f[f.length-1]<b?3:-1<Fa(f,b,1)?0:5}
functionJf(a,b,c,d,e,f){if(0==b.length)return0;b=newR(b);varg;null!=c&&(g=K(c,11));null==g&&(g="NonMatch");varh=b.toString();if(0==h.length)g=20;elseif(Ve.test(h))h=h.replace(Ve,""),S(b),b.g(lf(h)),g=1;else{h=newRegExp(g);nf(b);g=b.toString();if(0==g.search(h)){h=g.match(h)[0].length;vark=g.substring(h).match(We);k&&null!=k[1]&&0<k[1].length&&"0"==mf(k[1],Qe)?g=!1:(S(b),b.g(g.substring(h)),g=!0)}elseg=!1;g=g?5:20}e&&L(f,6,g);if(20!=g){if(2>=b.h.length)throwError("Phone number too short after IDD");
a=If(b,d);if(0!=a)returnL(f,1,a),a;throwError("Invalid country calling code");}if(null!=c&&(g=P(c,10),h=""+g,k=b.toString(),0==k.lastIndexOf(h,0)&&(h=newR(k.substring(h.length)),k=K(c,1),k=newRegExp(P(k,2)),Kf(h,c,null),h=h.toString(),!V(k,b.toString())&&V(k,h)||3==Gf(a,b.toString(),c,-1))))returnd.g(h),e&&L(f,6,10),L(f,1,g),g;L(f,1,0);return0}
functionLf(a,b,c,d){if(null==b)throwError("The string supplied did not seem to be a phone number");if(250<b.length)throwError("The string supplied is too long to be a phone number");vare=newR,f=b.indexOf(";phone-context=");if(0<=f){varg=f+15;if("+"==b.charAt(g)){varh=b.indexOf(";",g);0<h?e.g(b.substring(g,h)):e.g(b.substring(g))}g=b.indexOf("tel:");e.g(b.substring(0<=g?g+4:0,f))}elsef=e.g,g=b.search(Xe),0<=g?(g=b.substring(g),g=g.replace(Ze,""),h=g.search(Ye),0<=h&&(g=g.substring(0,h))):g=
"",f.call(e,g);f=e.toString();g=f.indexOf(";isub=");0<g&&(S(e),e.g(f.substring(0,g)));if(!kf(e.toString()))throwError("The string supplied did not seem to be a phone number");f=e.toString();if(!(qf(c)||null!=f&&0<f.length&&Ve.test(f)))throwError("Invalid country calling code");f=newse;d&&L(f,5,b);a:{b=e.toString();g=b.search(cf);if(0<=g&&kf(b.substring(0,g))){h=b.match(cf);for(vark=h.length,l=1;l<k;++l)if(null!=h[l]&&0<h[l].length){S(e);e.g(b.substring(0,g));b=h[l];breaka}}b=""}0<b.length&&L(f,
3,b);g=wf(a,c);b=newR;h=0;k=e.toString();try{h=Jf(a,k,g,b,d,f)}catch(n){if("Invalid country calling code"==n.message&&Ve.test(k)){if(k=k.replace(Ve,""),h=Jf(a,k,g,b,d,f),0==h)thrown;}elsethrown;}0!=h?(e=tf(h),e!=c&&(g=sf(a,h,e))):(nf(e),b.g(e.toString()),null!=c?(h=P(g,10),L(f,1,h)):d&&ge(f,6));if(2>b.h.length)throwError("The string supplied is too short to be a phone number");null!=g&&(c=newR,e=newR(b.toString()),Kf(e,g,c),a=Gf(a,e.toString(),g,-1),2!=a&&4!=a&&5!=a&&(b=e,d&&0<c.toString().length&&
L(f,7,c.toString())));d=b.toString();a=d.length;if(2>a)throwError("The string supplied is too short to be a phone number");if(17<a)throwError("The string supplied is too long to be a phone number");if(1<d.length&&"0"==d.charAt(0)){L(f,4,!0);for(a=1;a<d.length-1&&"0"==d.charAt(a);)a++;1!=a&&L(f,8,a)}L(f,2,parseInt(d,10));returnf}functionV(a,b){return(a="string"==typeofa?b.match("^(?:"+a+")$"):b.match(a))&&a[0].length==b.length?!0:!1};functionMf(a){this.ra=/\u2008/;this.Ca="";this.$=newR;this.da="";this.s=newR;this.aa=newR;this.u=!0;this.ga=this.ba=this.Ea=!1;this.ta=Pe.wa();this.ca=0;this.h=newR;this.ua=!1;this.m="";this.g=newR;this.i=[];this.Da=a;this.j=Nf(this,this.Da)}varOf=newoe;L(Of,11,"NA");
W.prototype.a=function(a,b){return8==a.b&&"number"===typeofb?!!b:W.ga.a.call(this,a,b)};W.prototype.i=function(a,b){varc=a.h(),d;for(dinb){vare=b[d],f=!/[^0-9]/.test(d);if(f)varg=c.a[parseInt(d,10)]||null;else2==this.j&&(d=String(d).replace(/([A-Z])/g,"-$1").toLowerCase().replace(/\-/g,"_")),g=ma(c,d);if(g)if(g.f)for(f=0;f<e.length;f++)a.add(g,this.a(g,e[f]));elsea.set(g,this.a(g,e));elsef?(g=a,f=Number(d),g.b[f]=e,g.a&&deleteg.a[f]):this.l||da("Failed to find field: "+d)}};functioncc(a){varb=[];dc(newec,a,b);returnb.join("")}functionec(){}
functionkc(){vara=ic("phoneNumber").value,b=ic("defaultCountry").value.toUpperCase(),c=ic("carrierCode").value,d=newl;try{vare=T;if(!gb(b)&&0<a.length&&"+"!=a.charAt(0))throwError("Invalid country calling code");varf=pb(e,a,b,!0);d.a("****Parsing Result:****\n");d.a(cc((newW(1)).g(f)));d.a("\n\n****Validation Results:****");varg=xb(f);varh=0==g||4==g;d.a("\nResult from isPossibleNumber(): ");d.a(h);varm=xb(f);e=b&&"ZZ"!=b;if(h)if(4==m)d.a("\nResult from isPossibleNumberWithReason(): "),
d.a("IS_POSSIBLE_LOCAL_ONLY"),d.a("\nNumber is considered invalid as it is not a possible national number.");else{varu=ob(T,f);d.a("\nResult from isValidNumber(): ");d.a(u);u&&e&&(d.a("\nResult from isValidNumberForRegion(): "),d.a(vb(T,f,b)));d.a("\nPhone Number region: ");d.a(ub(T,f));d.a("\nResult from getNumberType(): ");d.a(jc(f))}else{d.a("\nResult from isPossibleNumberWithReason(): ");switch(m){case1:d.a("INVALID_COUNTRY_CODE");break;case2:d.a("TOO_SHORT");break;case3:d.a("TOO_LONG");break;
case5:d.a("INVALID_LENGTH")}d.a("\nNote: Numbers that are not possible have type UNKNOWN, an unknown region, and are considered invalid.")}if(!u){varN=Cb.ea();d.a("\n\n****ShortNumberInfo Results:****");d.a("\nResult from isPossibleShortNumber: ");d.a(Hb(N,f));d.a("\nResult from isValidShortNumber: ");d.a(Kb(N,f));e&&(d.a("\nResult from isPossibleShortNumberForRegion: "),d.a(Eb(N,f,b)),d.a("\nResult from isValidShortNumberForRegion: "),d.a(Ib(N,f,b)))}d.a("\n\n****Formatting Results:**** ");d.a("\nE164 format: ");
d.a(u?O(T,f,0):"invalid");d.a("\nOriginal format: ");d.a(mb(f,b));d.a("\nNational format: ");d.a(O(T,f,2));d.a("\nInternational format: ");d.a(u?O(T,f,1):"invalid");d.a("\nOut-of-country format from US: ");d.a(u?kb(T,f,"US"):"invalid");d.a("\nOut-of-country format from Switzerland: ");d.a(u?kb(T,f,"CH"):"invalid");0<c.length&&(d.a("\nNational format with carrier code: "),d.a(jb(f,c)));d.a("\n\n****AsYouTypeFormatter Results****");varlc=newLb(b),mc=a.length;for(b=0;b<mc;++b){vartb=a.charAt(b);d.a("\nChar entered: ");
r("phoneNumberParser",function(){vara=pb("phoneNumber").value,b=pb("defaultCountry").value.toUpperCase(),c=pb("carrierCode").value,d=newR;try{vare=Z;if(!qf(b)&&0<a.length&&"+"!=a.charAt(0))throwError("Invalid country calling code");varf=Lf(e,a,b,!0);d.g("****Parsing Result:****\n");d.g(Gd((newke(1)).j(f)));d.g("\n\n****Validation Results:****");varg=Hf(f);varh=0==g||4==g;d.g("\nResult from isPossibleNumber(): ");d.g(h);vark=Hf(f);e=b&&"ZZ"!=b;if(h)if(4==k)d.g("\nResult from isPossibleNumberWithReason(): "),
d.g("IS_POSSIBLE_LOCAL_ONLY"),d.g("\nNumber is considered invalid as it is not a possible national number.");else{varl=Df(Z,f);d.g("\nResult from isValidNumber(): ");d.g(l);l&&e&&(d.g("\nResult from isValidNumberForRegion(): "),d.g(Ff(Z,f,b)));d.g("\nPhone Number region: ");d.g(Ef(Z,f));d.g("\nResult from getNumberType(): ");d.g(jg(f))}else{d.g("\nResult from isPossibleNumberWithReason(): ");switch(k){case1:d.g("INVALID_COUNTRY_CODE");break;case2:d.g("TOO_SHORT");break;case3:d.g("TOO_LONG");break;
case5:d.g("INVALID_LENGTH")}d.g("\nNote: Numbers that are not possible have type UNKNOWN, an unknown region, and are considered invalid.")}if(!l){varn=dg.wa();d.g("\n\n****ShortNumberInfo Results:****");d.g("\nResult from isPossibleShortNumber: ");varv=d.g;a:{varz=eg(P(f,1)),C=hg(f).length;for(h=0;h<z.length;h++){varM=gg(n,z[h]);if(M){varI=N(K(M,1),9);if(Ja(I,C)){varCa=!0;breaka}}}Ca=!1}v.call(d,Ca);d.g("\nResult from isValidShortNumber: ");varDa=d.g,B=eg(P(f,1));a:if(0===B.length)varha=
null;elseif(1===B.length)ha=B[0];else{varda=hg(f);for(v=0;v<B.length;v++){varte=B[v],ue=gg(n,te);if(ue&&ig(da,K(ue,29))){ha=te;breaka}}ha=null}varkg=1<B.length&&null!=ha?!0:fg(n,f,ha);Da.call(d,kg);if(e){d.g("\nResult from isPossibleShortNumberForRegion: ");varlg=d.g;varmg=eg(P(f,1));if(Ja(mg,b)){varve=gg(n,b);if(ve){varng=hg(f).length;varlc=Ja(N(K(ve,1),9),ng)}elselc=!1}elselc=!1;lg.call(d,lc);d.g("\nResult from isValidShortNumberForRegion: ");d.g(fg(n,f,b))}}d.g("\n\n****Formatting Results:**** ");
ub;else{varqc=pc.clone(),vb=P(pc,4);if(0<vb.length){varHe=P(Fe,12);0<He.length?(vb=vb.replace(ff,He).replace(gf,"$1"),L(qc,4,vb)):ge(qc,4)}Ge=Af(ub,qc,2)}vartg=uf(f,Fe,2);O=rf(tb,2,Ge,tg)}elseO=ub}}}}}varrc=P(f,5);if(null!=O&&0<rc.length){varug=mf(O,Re),vg=mf(rc,Re);ug!=vg&&(O=rc)}mc=O}elsemc=W(n,f,2);og.call(d,mc);d.g("\nNational format: ");d.g(W(Z,f,2));d.g("\nInternational format: ");d.g(l?W(Z,f,1):"invalid");d.g("\nOut-of-country format from US: ");d.g(l?xf(Z,f,"US"):"invalid");d.g("\nOut-of-country format from Switzerland: ");
d.g(l?xf(Z,f,"CH"):"invalid");if(0<c.length){d.g("\nNational format with carrier code: ");varwg=d.g;l=Z;varwb=P(f,1),Ie=X(f);if(wbinU){varJe=sf(l,wb,tf(wb)),xg=uf(f,Je,2),yg=vf(Ie,Je,2,c);varKe=rf(wb,2,yg,xg)}elseKe=Ie;wg.call(d,Ke)}d.g("\n\n****AsYouTypeFormatter Results****");varzg=newMf(b),Ag=a.length;for(b=0;b<Ag;++b){varLe=a.charAt(b);d.g("\nChar entered: ");d.g(Le);d.g(" Output: ");c=d;varBg=c.g;f=zg;f.Ca=Tf(f,Le);Bg.call(c,f.Ca)}}catch(Ce){d.g("\n"+Ce.toString())}pb("output").value=