function phi4z(n,t,i,r,u,f,e,o,s){var l,c,p,h,a,w,b,k,v,y;for(s=f,y=1;y<=15;y++)if(l=Math.sin(s),p=Math.tan(s),o=p*Math.sqrt(1-n*l*l),c=Math.sin(2*s),h=t*s-i*c+r*Math.sin(4*s)-u*Math.sin(6*s),a=t-2*i*Math.cos(2*s)+4*r*Math.cos(4*s)-6*u*Math.cos(6*s),w=2*h+o*(h*h+e)-2*f*(o*h+1),b=n*c*(h*h+e-2*f*h)/(2*o),k=2*(f-h)*(o*a-2/c)-2*a,v=w/(b+k),s+=v,Math.abs(v)<=1e-10)return s;return Proj4js.reportError("phi4z: No convergence"),null}function e4fn(n){var t,i;return t=1+n,i=1-n,Math.sqrt(Math.pow(t,t)*Math.pow(i,i))}var Proj4js={defaultDatum:"WGS84",transform:function(n,t,i){if(!n.readyToUse)return this.reportError("Proj4js initialization for:"+n.srsCode+" not yet complete"),i;if(!t.readyToUse)return this.reportError("Proj4js initialization for:"+t.srsCode+" not yet complete"),i;if(n.datum&&t.datum&&((n.datum.datum_type==Proj4js.common.PJD_3PARAM||n.datum.datum_type==Proj4js.common.PJD_7PARAM)&&t.datumCode!="WGS84"||(t.datum.datum_type==Proj4js.common.PJD_3PARAM||t.datum.datum_type==Proj4js.common.PJD_7PARAM)&&n.datumCode!="WGS84")){var r=Proj4js.WGS84;this.transform(n,r,i),n=r}return n.axis!="enu"&&this.adjust_axis(n,!1,i),n.projName=="longlat"?(i.x*=Proj4js.common.D2R,i.y*=Proj4js.common.D2R):(n.to_meter&&(i.x*=n.to_meter,i.y*=n.to_meter),n.inverse(i)),n.from_greenwich&&(i.x+=n.from_greenwich),i=this.datum_transform(n.datum,t.datum,i),t.from_greenwich&&(i.x-=t.from_greenwich),t.projName=="longlat"?(i.x*=Proj4js.common.R2D,i.y*=Proj4js.common.R2D):(t.forward(i),t.to_meter&&(i.x/=t.to_meter,i.y/=t.to_meter)),t.axis!="enu"&&this.adjust_axis(t,!0,i),i},datum_transform:function(n,t,i){return n.compare_datums(t)?i:n.datum_type==Proj4js.common.PJD_NODATUM||t.datum_type==Proj4js.common.PJD_NODATUM?i:((n.es!=t.es||n.a!=t.a||n.datum_type==Proj4js.common.PJD_3PARAM||n.datum_type==Proj4js.common.PJD_7PARAM||t.datum_type==Proj4js.common.PJD_3PARAM||t.datum_type==Proj4js.common.PJD_7PARAM)&&(n.geodetic_to_geocentric(i),(n.datum_type==Proj4js.common.PJD_3PARAM||n.datum_type==Proj4js.common.PJD_7PARAM)&&n.geocentric_to_wgs84(i),(t.datum_type==Proj4js.common.PJD_3PARAM||t.datum_type==Proj4js.common.PJD_7PARAM)&&t.geocentric_from_wgs84(i),t.geocentric_to_geodetic(i)),i)},adjust_axis:function(n,t,i){for(var e=i.x,o=i.y,s=i.z||0,r,u,f=0;f<3;f++)if(!t||f!=2||i.z!==undefined){f==0?(r=e,u="x"):f==1?(r=o,u="y"):(r=s,u="z");switch(n.axis[f]){case"e":i[u]=r;break;case"w":i[u]=-r;break;case"n":i[u]=r;break;case"s":i[u]=-r;break;case"u":i[u]!==undefined&&(i.z=r);break;case"d":i[u]!==undefined&&(i.z=-r);break;default:return alert("ERROR: unknow axis ("+n.axis[f]+") - check definition of "+n.projName),null}}return i},reportError:function(){},extend:function(n,t){var i,r;if(n=n||{},t)for(i in t)r=t[i],r!==undefined&&(n[i]=r);return n},Class:function(){for(var i=function(){this.initialize.apply(this,arguments)},r={},t,n=0;n<arguments.length;++n)t=typeof arguments[n]=="function"?arguments[n].prototype:arguments[n],Proj4js.extend(r,t);return i.prototype=r,i},bind:function(n,t){var i=Array.prototype.slice.apply(arguments,[2]);return function(){var r=i.concat(Array.prototype.slice.apply(arguments,[0]));return n.apply(t,r)}},scriptName:"proj4js.js",defsLookupService:"http://spatialreference.org/ref",libPath:null,getScriptLocation:function(){var t,n,i;if(this.libPath)return this.libPath;var r=this.scriptName,u=r.length,f=document.getElementsByTagName("script");for(t=0;t<f.length;t++)if(n=f[t].getAttribute("src"),n&&(i=n.lastIndexOf(r),i>-1&&i+u==n.length)){this.libPath=n.slice(0,-u);break}return this.libPath||""},loadScript:function(n,t,i,r){var u=document.createElement("script");u.defer=!1,u.type="text/javascript",u.id=n,u.src=n,u.onload=t,u.onerror=i,u.loadCheck=r,/MSIE/.test(navigator.userAgent)&&(u.onreadystatechange=this.checkReadyState),document.getElementsByTagName("head")[0].appendChild(u)},checkReadyState:function(){this.readyState=="loaded"&&(this.loadCheck()?this.onload():this.onerror())}};Proj4js.Proj=Proj4js.Class({readyToUse:!1,title:null,projName:null,units:null,datum:null,x0:0,y0:0,localCS:!1,queue:null,initialize:function(n,t){var i,r;if(this.srsCodeInput=n,this.queue=[],t&&this.queue.push(t),n.indexOf("GEOGCS")>=0||n.indexOf("GEOCCS")>=0||n.indexOf("PROJCS")>=0||n.indexOf("LOCAL_CS")>=0){this.parseWKT(n),this.deriveConstants(),this.loadProjCode(this.projName);return}n.indexOf("urn:")==0?(i=n.split(":"),(i[1]=="ogc"||i[1]=="x-ogc")&&i[2]=="def"&&i[3]=="crs"&&(n=i[4]+":"+i[i.length-1])):n.indexOf("http://")==0&&(r=n.split("#"),r[0].match(/epsg.org/)?n="EPSG:"+r[1]:r[0].match(/RIG.xml/)&&(n="IGNF:"+r[1])),this.srsCode=n.toUpperCase(),this.srsCode.indexOf("EPSG")==0?(this.srsCode=this.srsCode,this.srsAuth="epsg",this.srsProjNumber=this.srsCode.substring(5)):this.srsCode.indexOf("IGNF")==0?(this.srsCode=this.srsCode,this.srsAuth="IGNF",this.srsProjNumber=this.srsCode.substring(5)):this.srsCode.indexOf("CRS")==0?(this.srsCode=this.srsCode,this.srsAuth="CRS",this.srsProjNumber=this.srsCode.substring(4)):(this.srsAuth="",this.srsProjNumber=this.srsCode),this.loadProjDefinition()},loadProjDefinition:function(){if(Proj4js.defs[this.srsCode]){this.defsLoaded();return}var n=Proj4js.getScriptLocation()+"defs/"+this.srsAuth.toUpperCase()+this.srsProjNumber+".js";Proj4js.loadScript(n,Proj4js.bind(this.defsLoaded,this),Proj4js.bind(this.loadFromService,this),Proj4js.bind(this.checkDefsLoaded,this))},loadFromService:function(){var n=Proj4js.defsLookupService+"/"+this.srsAuth+"/"+this.srsProjNumber+"/proj4js/";Proj4js.loadScript(n,Proj4js.bind(this.defsLoaded,this),Proj4js.bind(this.defsFailed,this),Proj4js.bind(this.checkDefsLoaded,this))},defsLoaded:function(){this.parseDefs(),this.loadProjCode(this.projName)},checkDefsLoaded:function(){return Proj4js.defs[this.srsCode]?!0:!1},defsFailed:function(){Proj4js.reportError("failed to load projection definition for: "+this.srsCode),Proj4js.defs[this.srsCode]=Proj4js.defs.WGS84,this.defsLoaded()},loadProjCode:function(n){if(Proj4js.Proj[n]){this.initTransforms();return}var t=Proj4js.getScriptLocation()+"projCode/"+n+".js";Proj4js.loadScript(t,Proj4js.bind(this.loadProjCodeSuccess,this,n),Proj4js.bind(this.loadProjCodeFailure,this,n),Proj4js.bind(this.checkCodeLoaded,this,n))},loadProjCodeSuccess:function(n){Proj4js.Proj[n].dependsOn?this.loadProjCode(Proj4js.Proj[n].dependsOn):this.initTransforms()},loadProjCodeFailure:function(n){Proj4js.reportError("failed to find projection file for: "+n)},checkCodeLoaded:function(n){return Proj4js.Proj[n]?!0:!1},initTransforms:function(){if(Proj4js.extend(this,Proj4js.Proj[this.projName]),this.init(),this.readyToUse=!0,this.queue)for(var n;n=this.queue.shift();)n.call(this,this)},wktRE:/^(\w+)\[(.*)\]$/,parseWKT:function(n){var h=n.match(this.wktRE),f,e,s,t,u;if(h){var c=h[1],v=h[2],l=v.split(","),i;i=c.toUpperCase()=="TOWGS84"?c:l.shift(),i=i.replace(/^\"/,""),i=i.replace(/\"$/,"");var r=[],a=0,o="";for(u=0;u<l.length;++u){for(f=l[u],e=0;e<f.length;++e)f.charAt(e)=="["&&++a,f.charAt(e)=="]"&&--a;o+=f,a===0?(r.push(o),o=""):o+=","}switch(c){case"LOCAL_CS":this.projName="identity",this.localCS=!0,this.srsCode=i;break;case"GEOGCS":this.projName="longlat",this.geocsCode=i,this.srsCode||(this.srsCode=i);break;case"PROJCS":this.srsCode=i;break;case"PROJECTION":this.projName=Proj4js.wktProjections[i];break;case"DATUM":this.datumName=i;break;case"LOCAL_DATUM":this.datumCode="none";break;case"SPHEROID":this.ellps=i,this.a=parseFloat(r.shift()),this.rf=parseFloat(r.shift());break;case"PRIMEM":this.from_greenwich=parseFloat(r.shift());break;case"UNIT":this.units=i,this.unitsPerMeter=parseFloat(r.shift());break;case"PARAMETER":s=i.toLowerCase(),t=parseFloat(r.shift());switch(s){case"false_easting":this.x0=t;break;case"false_northing":this.y0=t;break;case"scale_factor":this.k0=t;break;case"central_meridian":this.long0=t*Proj4js.common.D2R;break;case"latitude_of_origin":this.lat0=t*Proj4js.common.D2R}break;case"TOWGS84":this.datum_params=r;break;case"AXIS":s=i.toLowerCase(),t=r.shift();switch(t){case"EAST":t="e";break;case"WEST":t="w";break;case"NORTH":t="n";break;case"SOUTH":t="s";break;case"UP":t="u";break;case"DOWN":t="d";break;case"OTHER":default:t=" "}this.axis||(this.axis="enu");switch(s){case"x":this.axis=t+this.axis.substr(1,2);break;case"y":this.axis=this.axis.substr(0,1)+t+this.axis.substr(2,1);break;case"z":this.axis=this.axis.substr(0,2)+t}}for(u=0;u<r.length;++u)this.parseWKT(r[u])}},parseDefs:function(){var f,n,r,t,u,i;if(this.defData=Proj4js.defs[this.srsCode],this.defData){for(r=this.defData.split("+"),t=0;t<r.length;t++){u=r[t].split("="),f=u[0].toLowerCase(),n=u[1];switch(f.replace(/\s/gi,"")){case"title":this.title=n;break;case"proj":this.projName=n.replace(/\s/gi,"");break;case"units":this.units=n.replace(/\s/gi,"");break;case"datum":this.datumCode=n.replace(/\s/gi,"");break;case"nadgrids":this.nagrids=n.replace(/\s/gi,"");break;case"ellps":this.ellps=n.replace(/\s/gi,"");break;case"a":this.a=parseFloat(n);break;case"b":this.b=parseFloat(n);break;case"rf":this.rf=parseFloat(n);break;case"lat_0":this.lat0=n*Proj4js.common.D2R;break;case"lat_1":this.lat1=n*Proj4js.common.D2R;break;case"lat_2":this.lat2=n*Proj4js.common.D2R;break;case"lat_ts":this.lat_ts=n*Proj4js.common.D2R;break;case"lon_0":this.long0=n*Proj4js.common.D2R;break;case"alpha":this.alpha=parseFloat(n)*Proj4js.common.D2R;break;case"lonc":this.longc=n*Proj4js.common.D2R;break;case"x_0":this.x0=parseFloat(n);break;case"y_0":this.y0=parseFloat(n);break;case"k_0":this.k0=parseFloat(n);break;case"k":this.k0=parseFloat(n);break;case"r_a":this.R_A=!0;break;case"zone":this.zone=parseInt(n,10);break;case"south":this.utmSouth=!0;break;case"towgs84":this.datum_params=n.split(",");break;case"to_meter":this.to_meter=parseFloat(n);break;case"from_greenwich":this.from_greenwich=n*Proj4js.common.D2R;break;case"pm":n=n.replace(/\s/gi,""),this.from_greenwich=Proj4js.PrimeMeridian[n]?Proj4js.PrimeMeridian[n]:parseFloat(n),this.from_greenwich*=Proj4js.common.D2R;break;case"axis":n=n.replace(/\s/gi,""),i="ewnsud",n.length==3&&i.indexOf(n.substr(0,1))!=-1&&i.indexOf(n.substr(1,1))!=-1&&i.indexOf(n.substr(2,1))!=-1&&(this.axis=n)}}this.deriveConstants()}},deriveConstants:function(){var n,t;this.nagrids=="@null"&&(this.datumCode="none"),this.datumCode&&this.datumCode!="none"&&(n=Proj4js.Datum[this.datumCode],n&&(this.datum_params=n.towgs84?n.towgs84.split(","):null,this.ellps=n.ellipse,this.datumName=n.datumName?n.datumName:this.datumCode)),this.a||(t=Proj4js.Ellipsoid[this.ellps]?Proj4js.Ellipsoid[this.ellps]:Proj4js.Ellipsoid.WGS84,Proj4js.extend(this,t)),this.rf&&!this.b&&(this.b=(1-1/this.rf)*this.a),(this.rf===0||Math.abs(this.a-this.b)<Proj4js.common.EPSLN)&&(this.sphere=!0,this.b=this.a),this.a2=this.a*this.a,this.b2=this.b*this.b,this.es=(this.a2-this.b2)/this.a2,this.e=Math.sqrt(this.es),this.R_A&&(this.a*=1-this.es*(Proj4js.common.SIXTH+this.es*(Proj4js.common.RA4+this.es*Proj4js.common.RA6)),this.a2=this.a*this.a,this.b2=this.b*this.b,this.es=0),this.ep2=(this.a2-this.b2)/this.b2,this.k0||(this.k0=1),this.axis||(this.axis="enu"),this.datum=new Proj4js.datum(this)}}),Proj4js.Proj.longlat={init:function(){},forward:function(n){return n},inverse:function(n){return n}},Proj4js.Proj.identity=Proj4js.Proj.longlat,Proj4js.defs={WGS84:"+title=long/lat:WGS84 +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees","EPSG:4326":"+title=long/lat:WGS84 +proj=longlat +a=6378137.0 +b=6356752.31424518 +ellps=WGS84 +datum=WGS84 +units=degrees","EPSG:4269":"+title=long/lat:NAD83 +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees","EPSG:3875":"+title= Google Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"},Proj4js.defs["EPSG:3785"]=Proj4js.defs["EPSG:3875"],Proj4js.defs.GOOGLE=Proj4js.defs["EPSG:3875"],Proj4js.defs["EPSG:900913"]=Proj4js.defs["EPSG:3875"],Proj4js.defs["EPSG:102113"]=Proj4js.defs["EPSG:3875"],Proj4js.common={PI:3.1415926535897931,HALF_PI:1.5707963267948966,TWO_PI:6.2831853071795862,FORTPI:.78539816339744828,R2D:57.295779513082323,D2R:.017453292519943295,SEC_TO_RAD:484813681109536e-20,EPSLN:1e-10,MAX_ITER:20,COS_67P5:.38268343236508978,AD_C:1.0026,PJD_UNKNOWN:0,PJD_3PARAM:1,PJD_7PARAM:2,PJD_GRIDSHIFT:3,PJD_WGS84:4,PJD_NODATUM:5,SRS_WGS84_SEMIMAJOR:6378137,SIXTH:.16666666666666666,RA4:.047222222222222221,RA6:.022156084656084655,RV4:.069444444444444448,RV6:.042438271604938273,msfnz:function(n,t,i){var r=n*t;return i/Math.sqrt(1-r*r)},tsfnz:function(n,t,i){var r=n*i,u=.5*n;return r=Math.pow((1-r)/(1+r),u),Math.tan(.5*(this.HALF_PI-t))/r},phi2z:function(n,t){for(var e=.5*n,r,u,i=this.HALF_PI-2*Math.atan(t),f=0;f<=15;f++)if(r=n*Math.sin(i),u=this.HALF_PI-2*Math.atan(t*Math.pow((1-r)/(1+r),e))-i,i+=u,Math.abs(u)<=1e-10)return i;return alert("phi2z has NoConvergence"),-9999},qsfnz:function(n,t){var i;return n>1e-7?(i=n*t,(1-n*n)*(t/(1-i*i)-.5/n*Math.log((1-i)/(1+i)))):2*t},asinz:function(n){return Math.abs(n)>1&&(n=n>1?1:-1),Math.asin(n)},e0fn:function(n){return 1-.25*n*(1+n/16*(3+1.25*n))},e1fn:function(n){return.375*n*(1+.25*n*(1+.46875*n))},e2fn:function(n){return.05859375*n*n*(1+.75*n)},e3fn:function(n){return n*n*n*(35/3072)},mlfn:function(n,t,i,r,u){return n*u-t*Math.sin(2*u)+i*Math.sin(4*u)-r*Math.sin(6*u)},srat:function(n,t){return Math.pow((1-n)/(1+n),t)},sign:function(n){return n<0?-1:1},adjust_lon:function(n){return n=Math.abs(n)<this.PI?n:n-this.sign(n)*this.TWO_PI},adjust_lat:function(n){return n=Math.abs(n)<this.HALF_PI?n:n-this.sign(n)*this.PI},latiso:function(n,t,i){if(Math.abs(t)>this.HALF_PI)return+Number.NaN;if(t==this.HALF_PI)return Number.POSITIVE_INFINITY;if(t==-1*this.HALF_PI)return-1*Number.POSITIVE_INFINITY;var r=n*i;return Math.log(Math.tan((this.HALF_PI+t)/2))+n*Math.log((1-r)/(1+r))/2},fL:function(n,t){return 2*Math.atan(n*Math.exp(t))-this.HALF_PI},invlatiso:function(n,t){var i=this.fL(1,t),r=0,u=0;do r=i,u=n*Math.sin(r),i=this.fL(Math.exp(n*Math.log((1+u)/(1-u))/2),t);while(Math.abs(i-r)>1e-12);return i},sinh:function(n){var t=Math.exp(n);return t=(t-1/t)/2},cosh:function(n){var t=Math.exp(n);return t=(t+1/t)/2},tanh:function(n){var t=Math.exp(n);return t=(t-1/t)/(t+1/t)},asinh:function(n){var t=n>=0?1:-1;return t*Math.log(Math.abs(n)+Math.sqrt(n*n+1))},acosh:function(n){return 2*Math.log(Math.sqrt((n+1)/2)+Math.sqrt((n-1)/2))},atanh:function(n){return Math.log((n-1)/(n+1))/2},gN:function(n,t,i){var r=t*i;return n/Math.sqrt(1-r*r)},pj_enfn:function(n){var t=[],i;return t[0]=this.C00-n*(this.C02+n*(this.C04+n*(this.C06+n*this.C08))),t[1]=n*(this.C22-n*(this.C04+n*(this.C06+n*this.C08))),i=n*n,t[2]=i*(this.C44-n*(this.C46+n*this.C48)),i*=n,t[3]=i*(this.C66-n*this.C68),t[4]=i*n*this.C88,t},pj_mlfn:function(n,t,i,r){return i*=t,t*=t,r[0]*n-i*(r[1]+t*(r[2]+t*(r[3]+t*r[4])))},pj_inv_mlfn:function(n,t,i){for(var o=1/(1-t),r=n,f,u,e=Proj4js.common.MAX_ITER;e;--e)if(f=Math.sin(r),u=1-t*f*f,u=(this.pj_mlfn(r,f,Math.cos(r),i)-n)*u*Math.sqrt(u)*o,r-=u,Math.abs(u)<Proj4js.common.EPSLN)return r;return Proj4js.reportError("cass:pj_inv_mlfn: Convergence error"),r},C00:1,C02:.25,C04:.046875,C06:.01953125,C08:.01068115234375,C22:.75,C44:.46875,C46:.013020833333333334,C48:.007120768229166667,C66:.36458333333333331,C68:.005696614583333333,C88:.3076171875},Proj4js.datum=Proj4js.Class({initialize:function(n){if(this.datum_type=Proj4js.common.PJD_WGS84,n.datumCode&&n.datumCode=="none"&&(this.datum_type=Proj4js.common.PJD_NODATUM),n&&n.datum_params){for(var t=0;t<n.datum_params.length;t++)n.datum_params[t]=parseFloat(n.datum_params[t]);(n.datum_params[0]!=0||n.datum_params[1]!=0||n.datum_params[2]!=0)&&(this.datum_type=Proj4js.common.PJD_3PARAM),n.datum_params.length>3&&(n.datum_params[3]!=0||n.datum_params[4]!=0||n.datum_params[5]!=0||n.datum_params[6]!=0)&&(this.datum_type=Proj4js.common.PJD_7PARAM,n.datum_params[3]*=Proj4js.common.SEC_TO_RAD,n.datum_params[4]*=Proj4js.common.SEC_TO_RAD,n.datum_params[5]*=Proj4js.common.SEC_TO_RAD,n.datum_params[6]=n.datum_params[6]/1e6+1)}n&&(this.a=n.a,this.b=n.b,this.es=n.es,this.ep2=n.ep2,this.datum_params=n.datum_params)},compare_datums:function(n){return this.datum_type!=n.datum_type?!1:this.a!=n.a||Math.abs(this.es-n.es)>5e-11?!1:this.datum_type==Proj4js.common.PJD_3PARAM?this.datum_params[0]==n.datum_params[0]&&this.datum_params[1]==n.datum_params[1]&&this.datum_params[2]==n.datum_params[2]:this.datum_type==Proj4js.common.PJD_7PARAM?this.datum_params[0]==n.datum_params[0]&&this.datum_params[1]==n.datum_params[1]&&this.datum_params[2]==n.datum_params[2]&&this.datum_params[3]==n.datum_params[3]&&this.datum_params[4]==n.datum_params[4]&&this.datum_params[5]==n.datum_params[5]&&this.datum_params[6]==n.datum_params[6]:this.datum_type==Proj4js.common.PJD_GRIDSHIFT||n.datum_type==Proj4js.common.PJD_GRIDSHIFT?(alert("ERROR: Grid shift transformations are not implemented."),!1):!0},geodetic_to_geocentric:function(n){var i=n.x,t=n.y,f=n.z?n.z:0,o,s,h,l=0,r,u,c,e;if(t<-Proj4js.common.HALF_PI&&t>-1.001*Proj4js.common.HALF_PI)t=-Proj4js.common.HALF_PI;else if(t>Proj4js.common.HALF_PI&&t<1.001*Proj4js.common.HALF_PI)t=Proj4js.common.HALF_PI;else if(t<-Proj4js.common.HALF_PI||t>Proj4js.common.HALF_PI)return Proj4js.reportError("geocent:lat out of range:"+t),null;return i>Proj4js.common.PI&&(i-=2*Proj4js.common.PI),u=Math.sin(t),e=Math.cos(t),c=u*u,r=this.a/Math.sqrt(1-this.es*c),o=(r+f)*e*Math.cos(i),s=(r+f)*e*Math.sin(i),h=(r*(1-this.es)+f)*u,n.x=o,n.y=s,n.z=h,l},geocentric_to_geodetic:function(n){var e=1e-12,tt=e*e,it=30,o,s,w,i,r,h,c,l,t,a,v,b,nt,k,u=n.x,f=n.y,y=n.z?n.z:0,d,g,p;if(nt=!1,o=Math.sqrt(u*u+f*f),s=Math.sqrt(u*u+f*f+y*y),o/this.a<e){if(nt=!0,d=0,s/this.a<e){g=Proj4js.common.HALF_PI,p=-this.b;return}}else d=Math.atan2(f,u);w=y/s,i=o/s,r=1/Math.sqrt(1-this.es*(2-this.es)*i*i),l=i*(1-this.es)*r,t=w*r,k=0;do k++,c=this.a/Math.sqrt(1-this.es*t*t),p=o*l+y*t-c*(1-this.es*t*t),h=this.es*c/(c+p),r=1/Math.sqrt(1-h*(2-h)*i*i),a=i*(1-h)*r,v=w*r,b=v*l-a*t,l=a,t=v;while(b*b>tt&&k<it);return g=Math.atan(v/Math.abs(a)),n.x=d,n.y=g,n.z=p,n},geocentric_to_geodetic_noniter:function(n){var r=n.x,t=n.y,i=n.z?n.z:0,f,e,o,s,w,c,l,b,k,a,g,v,h,u,y,p,d;if(r=parseFloat(r),t=parseFloat(t),i=parseFloat(i),d=!1,r!=0)f=Math.atan2(t,r);else if(t>0)f=Proj4js.common.HALF_PI;else if(t<0)f=-Proj4js.common.HALF_PI;else if(d=!0,f=0,i>0)e=Proj4js.common.HALF_PI;else if(i<0)e=-Proj4js.common.HALF_PI;else{e=Proj4js.common.HALF_PI,o=-this.b;return}return w=r*r+t*t,s=Math.sqrt(w),c=i*Proj4js.common.AD_C,b=Math.sqrt(c*c+w),a=c/b,v=s/b,g=a*a*a,l=i+this.b*this.ep2*g,p=s-this.a*this.es*v*v*v,k=Math.sqrt(l*l+p*p),h=l/k,u=p/k,y=this.a/Math.sqrt(1-this.es*h*h),o=u>=Proj4js.common.COS_67P5?s/u-y:u<=-Proj4js.common.COS_67P5?s/-u-y:i/h+y*(this.es-1),d==!1&&(e=Math.atan(h/u)),n.x=f,n.y=e,n.z=o,n},geocentric_to_wgs84:function(n){if(this.datum_type==Proj4js.common.PJD_3PARAM)n.x+=this.datum_params[0],n.y+=this.datum_params[1],n.z+=this.datum_params[2];else if(this.datum_type==Proj4js.common.PJD_7PARAM){var f=this.datum_params[0],e=this.datum_params[1],o=this.datum_params[2],i=this.datum_params[3],r=this.datum_params[4],u=this.datum_params[5],t=this.datum_params[6],s=t*(n.x-u*n.y+r*n.z)+f,h=t*(u*n.x+n.y-i*n.z)+e,c=t*(-r*n.x+i*n.y+n.z)+o;n.x=s,n.y=h,n.z=c}},geocentric_from_wgs84:function(n){if(this.datum_type==Proj4js.common.PJD_3PARAM)n.x-=this.datum_params[0],n.y-=this.datum_params[1],n.z-=this.datum_params[2];else if(this.datum_type==Proj4js.common.PJD_7PARAM){var s=this.datum_params[0],h=this.datum_params[1],c=this.datum_params[2],f=this.datum_params[3],e=this.datum_params[4],o=this.datum_params[5],t=this.datum_params[6],i=(n.x-s)/t,r=(n.y-h)/t,u=(n.z-c)/t;n.x=i+o*r-e*u,n.y=-o*i+r+f*u,n.z=e*i-f*r+u}}}),Proj4js.Point=Proj4js.Class({initialize:function(n,t,i){if(typeof n=="object")this.x=n[0],this.y=n[1],this.z=n[2]||0;else if(typeof n=="string"&&typeof t=="undefined"){var r=n.split(",");this.x=parseFloat(r[0]),this.y=parseFloat(r[1]),this.z=parseFloat(r[2])||0}else this.x=n,this.y=t,this.z=i||0},clone:function(){return new Proj4js.Point(this.x,this.y,this.z)},toString:function(){return"x="+this.x+",y="+this.y},toShortString:function(){return this.x+", "+this.y}}),Proj4js.PrimeMeridian={greenwich:0,lisbon:-9.131906111111,paris:2.337229166667,bogota:-74.080916666667,madrid:-3.687938888889,rome:12.452333333333,bern:7.439583333333,jakarta:106.807719444444,ferro:-17.666666666667,brussels:4.367975,stockholm:18.058277777778,athens:23.7163375,oslo:10.722916666667},Proj4js.Ellipsoid={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563.396,b:6356256.91,ellipseName:"Airy 1830"},"APL4.":{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340.189,b:6356034.446,ellipseName:"Modified Airy"},andrae:{a:6377104.43,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397.155,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483.865,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:6378206.4,b:6356583.8,ellipseName:"Clarke 1866"},clrk80:{a:6378249.145,rf:293.4663,ellipseName:"Clarke 1880 mod."},CPM:{a:6375738.7,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:6378136.05,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276.345,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304.063,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301.243,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295.664,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298.556,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:6378157.5,b:6356772.2,ellipseName:"New International 1967"},plessis:{a:6376523,rf:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:6356773.3205,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:6355834.8467,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS72:{a:6378135,rf:298.26,ellipseName:"WGS 72"},WGS84:{a:6378137,rf:298.257223563,ellipseName:"WGS 84"},sphere:{a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},Proj4js.Datum={WGS84:{towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},GGRS87:{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},NAD83:{towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},NAD27:{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},potsdam:{towgs84:"606.0,23.0,413.0",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},carthage:{towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"},hermannskogel:{towgs84:"653.0,-212.0,449.0",ellipse:"bessel",datumName:"Hermannskogel"},ire65:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},nzgd49:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},OSGB36:{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Airy 1830"}},Proj4js.WGS84=new Proj4js.Proj("WGS84"),Proj4js.Datum.OSB36=Proj4js.Datum.OSGB36,Proj4js.wktProjections={"Lambert Tangential Conformal Conic Projection":"lcc",Mercator:"merc","Popular Visualisation Pseudo Mercator":"merc",Mercator_1SP:"merc",Transverse_Mercator:"tmerc","Transverse Mercator":"tmerc","Lambert Azimuthal Equal Area":"laea","Universal Transverse Mercator System":"utm"},Proj4js.defs["EPSG:102067"]="+title=Krovak +proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +towgs84=570.8,85.7,462.8,4.998,1.587,5.261,3.56 +czech +no_defs",Proj4js.defs["EPSG:102757"]="+title=NAD 1983 StatePlane Wyoming West Central FIPS 4903 Feet +proj=tmerc +lat_0=40.5 +lon_0=-108.75 +x_0=600000.0 +y_0=0 +k=0.999938 +a=6378137.0  +b=6356752.3141403 +to_meter=0.3048006096012192",Proj4js.defs["EPSG:102758"]="+title=NAD 1983 StatePlane Wyoming West FIPS 4904 Feet +proj=tmerc +lat_0=40.5  +lon_0=-110.0833333333333 +x_0=800000  +y_0=100000  +k=0.999938 +a=6378137.0 +b=6356752.3141403 +to_meter=0.3048006096012192",Proj4js.defs["EPSG:21781"]="+title=CH1903 / LV03 +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs",Proj4js.defs["EPSG:26591"]="+title= Monte Mario (Rome) / Italy zone 1 EPSG:26591 +proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +from_greenwich=12.45233333333333 +k=0.999600 +x_0=1500000 +y_0=0 +a=6378388.0, +b=6356911.94612795 +units=m",Proj4js.defs.EPSG26912="+title=NAD83 / UTM zone 12N +proj=utm +zone=12 +a=6378137.0 +b=6356752.3141403",Proj4js.defs["EPSG:27200"]="+title=New Zealand Map Grid  +proj=nzmg   +lat_0=-41 +lon_0=173   +x_0=2510000 +y_0=6023150   +ellps=intl +datum=nzgd49 +units=m +no_defs",Proj4js.defs["EPSG:27563"]="+title=NTF (Paris)/Lambert Sud France +proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.9998774990000001 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs ",Proj4js.defs["EPSG:41001"]="+title=simple mercator EPSG:41001 +proj=merc +lat_ts=0 +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m",Proj4js.defs["EPSG:4139"]="+title=Puerto Rico EPSG:4139 (3 param datum shift) +proj=longlat +towgs84 = 11,72,-101,0,0,0,0 +a=6378206.4 +b=6356583.8",Proj4js.defs["EPSG:4181"]="+title=Luxembourg 1930 EPSG:4181 (7 param datum shift) +proj=longlat +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +a=6378388.0, +b=6356911.94612795",Proj4js.defs["EPSG:42304"]="+title=Atlas of Canada, LCC +proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs",Proj4js.defs["EPSG:4269"]="+proj=longlat +ellps=GRS80 +datum=NAD83 +units=degrees +no_defs",Proj4js.defs["EPSG:4272"]="+title=NZGD49 +proj=longlat +ellps=intl +datum=nzgd49 +no_defs ",Proj4js.defs["EPSG:4302"]="+title=Trinidad 1903 EPSG:4302 (7 param datum shift) +proj=longlat +a=6378293.63683822 +b=6356617.979337744 +towgs84=-61.702,284.488,472.052,0,0,0,0",Proj4js.defs["EPSG:900913"]="+title=GoogleMercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs",Proj4js.defs.GOOGLE="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs",Proj4js.defs["EPSG:900913"]=Proj4js.defs.GOOGLE,Proj4js.Proj.aea={init:function(){if(Math.abs(this.lat1+this.lat2)<Proj4js.common.EPSLN){Proj4js.reportError("aeaInitEqualLatitudes");return}this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e3=Math.sqrt(this.es),this.sin_po=Math.sin(this.lat1),this.cos_po=Math.cos(this.lat1),this.t1=this.sin_po,this.con=this.sin_po,this.ms1=Proj4js.common.msfnz(this.e3,this.sin_po,this.cos_po),this.qs1=Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po),this.sin_po=Math.sin(this.lat2),this.cos_po=Math.cos(this.lat2),this.t2=this.sin_po,this.ms2=Proj4js.common.msfnz(this.e3,this.sin_po,this.cos_po),this.qs2=Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po),this.sin_po=Math.sin(this.lat0),this.cos_po=Math.cos(this.lat0),this.t3=this.sin_po,this.qs0=Proj4js.common.qsfnz(this.e3,this.sin_po,this.cos_po),this.ns0=Math.abs(this.lat1-this.lat2)>Proj4js.common.EPSLN?(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0},forward:function(n){var u=n.x,t=n.y;this.sin_phi=Math.sin(t),this.cos_phi=Math.cos(t);var f=Proj4js.common.qsfnz(this.e3,this.sin_phi,this.cos_phi),i=this.a*Math.sqrt(this.c-this.ns0*f)/this.ns0,r=this.ns0*Proj4js.common.adjust_lon(u-this.long0),e=i*Math.sin(r)+this.x0,o=this.rh-i*Math.cos(r)+this.y0;return n.x=e,n.y=o,n},inverse:function(n){var u,i,t,f,e,r;return n.x-=this.x0,n.y=this.rh-n.y+this.y0,this.ns0>=0?(u=Math.sqrt(n.x*n.x+n.y*n.y),t=1):(u=-Math.sqrt(n.x*n.x+n.y*n.y),t=-1),f=0,u!=0&&(f=Math.atan2(t*n.x,t*n.y)),t=u*this.ns0/this.a,i=(this.c-t*t)/this.ns0,this.e3>=1e-10?(t=1-.5*(1-this.es)*Math.log((1-this.e3)/(1+this.e3))/this.e3,r=Math.abs(Math.abs(t)-Math.abs(i))>1e-10?this.phi1z(this.e3,i):i>=0?.5*Proj4js.common.PI:-.5*Proj4js.common.PI):r=this.phi1z(this.e3,i),e=Proj4js.common.adjust_lon(f/this.ns0+this.long0),n.x=e,n.y=r,n},phi1z:function(n,t){var f,s,r,u,e,i=Proj4js.common.asinz(.5*t),h,o;if(n<Proj4js.common.EPSLN)return i;for(h=n*n,o=1;o<=25;o++)if(f=Math.sin(i),s=Math.cos(i),r=n*f,u=1-r*r,e=.5*u*u/s*(t/(1-h)-f/u+.5/n*Math.log((1-r)/(1+r))),i=i+e,Math.abs(e)<=1e-7)return i;return Proj4js.reportError("aea:phi1z:Convergence error"),null}},Proj4js.Proj.aeqd={init:function(){this.sin_p12=Math.sin(this.lat0),this.cos_p12=Math.cos(this.lat0)},forward:function(n){var s=n.x,h=n.y,t,f=Math.sin(n.y),i=Math.cos(n.y),e=Proj4js.common.adjust_lon(s-this.long0),o=Math.cos(e),r=this.sin_p12*f+this.cos_p12*i*o,u;if(Math.abs(Math.abs(r)-1)<Proj4js.common.EPSLN){if(t=1,r<0){Proj4js.reportError("aeqd:Fwd:PointError");return}}else u=Math.acos(r),t=u/Math.sin(u);return n.x=this.x0+this.a*t*i*Math.sin(e),n.y=this.y0+this.a*t*(this.cos_p12*f-this.sin_p12*i*o),n},inverse:function(n){var t,i,s;if(n.x-=this.x0,n.y-=this.y0,t=Math.sqrt(n.x*n.x+n.y*n.y),t>2*Proj4js.common.HALF_PI*this.a){Proj4js.reportError("aeqdInvDataError");return}var e=t/this.a,f=Math.sin(e),o=Math.cos(e),r=this.long0,u;return Math.abs(t)<=Proj4js.common.EPSLN?u=this.lat0:(u=Proj4js.common.asinz(o*this.sin_p12+n.y*f*this.cos_p12/t),i=Math.abs(this.lat0)-Proj4js.common.HALF_PI,Math.abs(i)<=Proj4js.common.EPSLN?r=this.lat0>=0?Proj4js.common.adjust_lon(this.long0+Math.atan2(n.x,-n.y)):Proj4js.common.adjust_lon(this.long0-Math.atan2(-n.x,n.y)):(i=o-this.sin_p12*Math.sin(u),Math.abs(i)<Proj4js.common.EPSLN&&Math.abs(n.x)<Proj4js.common.EPSLN||(s=Math.atan2(n.x*f*this.cos_p12,i*t),r=Proj4js.common.adjust_lon(this.long0+Math.atan2(n.x*f*this.cos_p12,i*t))))),n.x=r,n.y=u,n}},Proj4js.Proj.cass={init:function(){this.sphere||(this.en=Proj4js.common.pj_enfn(this.es),this.m0=Proj4js.common.pj_mlfn(this.lat0,Math.sin(this.lat0),Math.cos(this.lat0),this.en))},C1:.16666666666666666,C2:.0083333333333333332,C3:.041666666666666664,C4:.33333333333333331,C5:.066666666666666666,forward:function(n){var u,r,i=n.x,t=n.y;return i=Proj4js.common.adjust_lon(i-this.long0),this.sphere?(u=Math.asin(Math.cos(t)*Math.sin(i)),r=Math.atan2(Math.tan(t),Math.cos(i))-this.phi0):(this.n=Math.sin(t),this.c=Math.cos(t),r=Proj4js.common.pj_mlfn(t,this.n,this.c,this.en),this.n=1/Math.sqrt(1-this.es*this.n*this.n),this.tn=Math.tan(t),this.t=this.tn*this.tn,this.a1=i*this.c,this.c*=this.es*this.c/(1-this.es),this.a2=this.a1*this.a1,u=this.n*this.a1*(1-this.a2*this.t*(this.C1-(8-this.t+8*this.c)*this.a2*this.C2)),r-=this.m0-this.n*this.tn*this.a2*(.5+(5-this.t+6*this.c)*this.a2*this.C3)),n.x=this.a*u+this.x0,n.y=this.a*r+this.y0,n},inverse:function(n){var i,r,u,f,t;return n.x-=this.x0,n.y-=this.y0,i=n.x/this.a,r=n.y/this.a,this.sphere?(this.dd=r+this.lat0,u=Math.asin(Math.sin(this.dd)*Math.cos(i)),f=Math.atan2(Math.tan(i),Math.cos(this.dd))):(t=Proj4js.common.pj_inv_mlfn(this.m0+r,this.es,this.en),this.tn=Math.tan(t),this.t=this.tn*this.tn,this.n=Math.sin(t),this.r=1/(1-this.es*this.n*this.n),this.n=Math.sqrt(this.r),this.r*=(1-this.es)*this.n,this.dd=i/this.n,this.d2=this.dd*this.dd,u=t-this.n*this.tn/this.r*this.d2*(.5-(1+3*this.t)*this.d2*this.C3),f=this.dd*(1+this.t*this.d2*(-this.C4+(1+3*this.t)*this.d2*this.C5))/Math.cos(t)),n.x=Proj4js.common.adjust_lon(this.long0+f),n.y=u,n}},Proj4js.Proj.cea={init:function(){},forward:function(n){var t=n.x,i=n.y,r=Proj4js.common.adjust_lon(t-this.long0),u=this.x0+this.a*r*Math.cos(this.lat_ts),f=this.y0+this.a*Math.sin(i)/Math.cos(this.lat_ts);return n.x=u,n.y=f,n},inverse:function(n){n.x-=this.x0,n.y-=this.y0;var t=Proj4js.common.adjust_lon(this.long0+n.x/this.a/Math.cos(this.lat_ts)),i=Math.asin(n.y/this.a*Math.cos(this.lat_ts));return n.x=t,n.y=i,n}},Proj4js.Proj.eqc={init:function(){this.x0||(this.x0=0),this.y0||(this.y0=0),this.lat0||(this.lat0=0),this.long0||(this.long0=0),this.lat_ts||(this.lat_ts=0),this.title||(this.title="Equidistant Cylindrical (Plate Carre)"),this.rc=Math.cos(this.lat_ts)},forward:function(n){var t=n.x,i=n.y,r=Proj4js.common.adjust_lon(t-this.long0),u=Proj4js.common.adjust_lat(i-this.lat0);return n.x=this.x0+this.a*r*this.rc,n.y=this.y0+this.a*u,n},inverse:function(n){var t=n.x,i=n.y;return n.x=Proj4js.common.adjust_lon(this.long0+(t-this.x0)/(this.a*this.rc)),n.y=Proj4js.common.adjust_lat(this.lat0+(i-this.y0)/this.a),n}},Proj4js.Proj.eqdc={init:function(){this.mode||(this.mode=0),this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Proj4js.common.e0fn(this.es),this.e1=Proj4js.common.e1fn(this.es),this.e2=Proj4js.common.e2fn(this.es),this.e3=Proj4js.common.e3fn(this.es),this.sinphi=Math.sin(this.lat1),this.cosphi=Math.cos(this.lat1),this.ms1=Proj4js.common.msfnz(this.e,this.sinphi,this.cosphi),this.ml1=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat1),this.mode!=0?(Math.abs(this.lat1+this.lat2)<Proj4js.common.EPSLN&&Proj4js.reportError("eqdc:Init:EqualLatitudes"),this.sinphi=Math.sin(this.lat2),this.cosphi=Math.cos(this.lat2),this.ms2=Proj4js.common.msfnz(this.e,this.sinphi,this.cosphi),this.ml2=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat2),this.ns=Math.abs(this.lat1-this.lat2)>=Proj4js.common.EPSLN?(this.ms1-this.ms2)/(this.ml2-this.ml1):this.sinphi):this.ns=this.sinphi,this.g=this.ml1+this.ms1/this.ns,this.ml0=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0),this.rh=this.a*(this.g-this.ml0)},forward:function(n){var r=n.x,u=n.y,f=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,u),t=this.a*(this.g-f),i=this.ns*Proj4js.common.adjust_lon(r-this.long0),e=this.x0+t*Math.sin(i),o=this.y0+this.rh-t*Math.cos(i);return n.x=e,n.y=o,n},inverse:function(n){var t,i,r;n.x-=this.x0,n.y=this.rh-n.y+this.y0,this.ns>=0?(i=Math.sqrt(n.x*n.x+n.y*n.y),t=1):(i=-Math.sqrt(n.x*n.x+n.y*n.y),t=-1),r=0,i!=0&&(r=Math.atan2(t*n.x,t*n.y));var u=this.g-i/this.a,f=this.phi3z(u,this.e0,this.e1,this.e2,this.e3),e=Proj4js.common.adjust_lon(this.long0+r/this.ns);return n.x=e,n.y=f,n},phi3z:function(n,t,i,r,u){for(var e,f=n,o=0;o<15;o++)if(e=(n+i*Math.sin(2*f)-r*Math.sin(4*f)+u*Math.sin(6*f))/t-f,f+=e,Math.abs(e)<=1e-10)return f;return Proj4js.reportError("PHI3Z-CONV:Latitude failed to converge after 15 iterations"),null}},Proj4js.Proj.equi={init:function(){this.x0||(this.x0=0),this.y0||(this.y0=0),this.lat0||(this.lat0=0),this.long0||(this.long0=0)},forward:function(n){var i=n.x,r=n.y,u=Proj4js.common.adjust_lon(i-this.long0),t=this.x0+this.a*u*Math.cos(this.lat0),f=this.y0+this.a*r;return this.t1=t,this.t2=Math.cos(this.lat0),n.x=t,n.y=f,n},inverse:function(n){var t,i;n.x-=this.x0,n.y-=this.y0,t=n.y/this.a,Math.abs(t)>Proj4js.common.HALF_PI&&Proj4js.reportError("equi:Inv:DataError"),i=Proj4js.common.adjust_lon(this.long0+n.x/(this.a*Math.cos(this.lat0))),n.x=i,n.y=t}},Proj4js.Proj.gauss={init:function(){var n=Math.sin(this.lat0),t=Math.cos(this.lat0);t*=t,this.rc=Math.sqrt(1-this.es)/(1-this.es*n*n),this.C=Math.sqrt(1+this.es*t*t/(1-this.es)),this.phic0=Math.asin(n/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+Proj4js.common.FORTPI)/(Math.pow(Math.tan(.5*this.lat0+Proj4js.common.FORTPI),this.C)*Proj4js.common.srat(this.e*n,this.ratexp))},forward:function(n){var i=n.x,t=n.y;return n.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*t+Proj4js.common.FORTPI),this.C)*Proj4js.common.srat(this.e*Math.sin(t),this.ratexp))-Proj4js.common.HALF_PI,n.x=this.C*i,n},inverse:function(n){for(var r=1e-14,u=n.x/this.C,t=n.y,f=Math.pow(Math.tan(.5*t+Proj4js.common.FORTPI)/this.K,1/this.C),i=Proj4js.common.MAX_ITER;i>0;--i){if(t=2*Math.atan(f*Proj4js.common.srat(this.e*Math.sin(n.y),-.5*this.e))-Proj4js.common.HALF_PI,Math.abs(t-n.y)<r)break;n.y=t}return i?(n.x=u,n.y=t,n):(Proj4js.reportError("gauss:inverse:convergence failed"),null)}},Proj4js.Proj.gnom={init:function(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0),this.infinity_dist=1e3*this.a,this.rc=1},forward:function(n){var r,t,u,f,e,i,o,s,c=n.x,h=n.y;return u=Proj4js.common.adjust_lon(c-this.long0),r=Math.sin(h),t=Math.cos(h),f=Math.cos(u),i=this.sin_p14*r+this.cos_p14*t*f,e=1,i>0||Math.abs(i)<=Proj4js.common.EPSLN?(o=this.x0+this.a*e*t*Math.sin(u)/i,s=this.y0+this.a*e*(this.cos_p14*r-this.sin_p14*t*f)/i):(Proj4js.reportError("orthoFwdPointError"),o=this.x0+this.infinity_dist*t*Math.sin(u),s=this.y0+this.infinity_dist*(this.cos_p14*r-this.sin_p14*t*f)),n.x=o,n.y=s,n},inverse:function(n){var i,o,r,u,f,t,e;return n.x=(n.x-this.x0)/this.a,n.y=(n.y-this.y0)/this.a,n.x/=this.k0,n.y/=this.k0,(i=Math.sqrt(n.x*n.x+n.y*n.y))?(f=Math.atan2(i,this.rc),r=Math.sin(f),u=Math.cos(f),e=Proj4js.common.asinz(u*this.sin_p14+n.y*r*this.cos_p14/i),t=Math.atan2(n.x*r,i*this.cos_p14*u-n.y*this.sin_p14*r),t=Proj4js.common.adjust_lon(this.long0+t)):(e=this.phic0,t=0),n.x=t,n.y=e,n}},Proj4js.Proj.gstmerc={init:function(){var i=this.b/this.a;this.e=Math.sqrt(1-i*i),this.lc=this.long0,this.rs=Math.sqrt(1+this.e*this.e*Math.pow(Math.cos(this.lat0),4)/(1-this.e*this.e));var n=Math.sin(this.lat0),t=Math.asin(n/this.rs),r=Math.sin(t);this.cp=Proj4js.common.latiso(0,t,r)-this.rs*Proj4js.common.latiso(this.e,this.lat0,n),this.n2=this.k0*this.a*Math.sqrt(1-this.e*this.e)/(1-this.e*this.e*n*n),this.xs=this.x0,this.ys=this.y0-this.n2*t,this.title||(this.title="Gauss Schreiber transverse mercator")},forward:function(n){var f=n.x,t=n.y,i=this.rs*(f-this.lc),r=this.cp+this.rs*Proj4js.common.latiso(this.e,t,Math.sin(t)),u=Math.asin(Math.sin(i)/Proj4js.common.cosh(r)),e=Proj4js.common.latiso(0,u,Math.sin(u));return n.x=this.xs+this.n2*e,n.y=this.ys+this.n2*Math.atan(Proj4js.common.sinh(r)/Math.cos(i)),n},inverse:function(n){var t=n.x,i=n.y,u=Math.atan(Proj4js.common.sinh((t-this.xs)/this.n2)/Math.cos((i-this.ys)/this.n2)),r=Math.asin(Math.sin((i-this.ys)/this.n2)/Proj4js.common.cosh((t-this.xs)/this.n2)),f=Proj4js.common.latiso(0,r,Math.sin(r));return n.x=this.lc+u/this.rs,n.y=Proj4js.common.invlatiso(this.e,(f-this.cp)/this.rs),n}},Proj4js.Proj.krovak={init:function(){this.a=6377397.155,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.74176493209759009-.308341501185665),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq},forward:function(n){var o,t,i,r,s,u,f,h=n.x,e=n.y,c=Proj4js.common.adjust_lon(h-this.long0);return o=Math.pow((1+this.e*Math.sin(e))/(1-this.e*Math.sin(e)),this.alfa*this.e/2),t=2*(Math.atan(this.k*Math.pow(Math.tan(e/2+this.s45),this.alfa)/o)-this.s45),i=-c*this.alfa,r=Math.asin(Math.cos(this.ad)*Math.sin(t)+Math.sin(this.ad)*Math.cos(t)*Math.cos(i)),s=Math.asin(Math.cos(t)*Math.sin(i)/Math.cos(r)),u=this.n*s,f=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(r/2+this.s45),this.n),n.y=f*Math.cos(u)/1,n.x=f*Math.sin(u)/1,this.czech&&(n.y*=-1,n.x*=-1),n},inverse:function(n){var i,o,r,f,s,h,t,e,c=n.x,u;n.x=n.y,n.y=c,this.czech&&(n.y*=-1,n.x*=-1),h=Math.sqrt(n.x*n.x+n.y*n.y),s=Math.atan2(n.y,n.x),f=s/Math.sin(this.s0),r=2*(Math.atan(Math.pow(this.ro0/h,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),i=Math.asin(Math.cos(this.ad)*Math.sin(r)-Math.sin(this.ad)*Math.cos(r)*Math.cos(f)),o=Math.asin(Math.cos(r)*Math.sin(f)/Math.cos(i)),n.x=this.long0-o/this.alfa,t=i,e=0,u=0;do n.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(i/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(t))/(1-this.e*Math.sin(t)),this.e/2))-this.s45),Math.abs(t-n.y)<1e-10&&(e=1),t=n.y,u+=1;while(e==0&&u<15);return u>=15?(Proj4js.reportError("PHI3Z-CONV:Latitude failed to converge after 15 iterations"),null):n}},Proj4js.Proj.laea={S_POLE:1,N_POLE:2,EQUIT:3,OBLIQ:4,init:function(){var t=Math.abs(this.lat0),n;if(this.mode=Math.abs(t-Proj4js.common.HALF_PI)<Proj4js.common.EPSLN?this.lat0<0?this.S_POLE:this.N_POLE:Math.abs(t)<Proj4js.common.EPSLN?this.EQUIT:this.OBLIQ,this.es>0){this.qp=Proj4js.common.qsfnz(this.e,1),this.mmf=.5/(1-this.es),this.apa=this.authset(this.es);switch(this.mode){case this.N_POLE:case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp),n=Math.sin(this.lat0),this.sinb1=Proj4js.common.qsfnz(this.e,n)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*n*n)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd}}else this.mode==this.OBLIQ&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))},forward:function(n){var o,t,f=n.x,e=n.y,i,l,s;if(f=Proj4js.common.adjust_lon(f-this.long0),this.sphere){s=Math.sin(e),l=Math.cos(e),i=Math.cos(f);switch(this.mode){case this.OBLIQ:case this.EQUIT:if(t=this.mode==this.EQUIT?1+l*i:1+this.sinph0*s+this.cosph0*l*i,t<=Proj4js.common.EPSLN)return Proj4js.reportError("laea:fwd:y less than eps"),null;t=Math.sqrt(2/t),o=t*l*Math.sin(f),t*=this.mode==this.EQUIT?s:this.cosph0*s-this.sinph0*l*i;break;case this.N_POLE:i=-i;case this.S_POLE:if(Math.abs(e+this.phi0)<Proj4js.common.EPSLN)return Proj4js.reportError("laea:fwd:phi < eps"),null;t=Proj4js.common.FORTPI-e*.5,t=2*(this.mode==this.S_POLE?Math.cos(t):Math.sin(t)),o=t*Math.sin(f),t*=i}}else{var i,a,s,u,h=0,c=0,r=0;i=Math.cos(f),a=Math.sin(f),s=Math.sin(e),u=Proj4js.common.qsfnz(this.e,s),(this.mode==this.OBLIQ||this.mode==this.EQUIT)&&(h=u/this.qp,c=Math.sqrt(1-h*h));switch(this.mode){case this.OBLIQ:r=1+this.sinb1*h+this.cosb1*c*i;break;case this.EQUIT:r=1+c*i;break;case this.N_POLE:r=Proj4js.common.HALF_PI+e,u=this.qp-u;break;case this.S_POLE:r=e-Proj4js.common.HALF_PI,u=this.qp+u}if(Math.abs(r)<Proj4js.common.EPSLN)return Proj4js.reportError("laea:fwd:b < eps"),null;switch(this.mode){case this.OBLIQ:case this.EQUIT:r=Math.sqrt(2/r),t=this.mode==this.OBLIQ?this.ymf*r*(this.cosb1*h-this.sinb1*c*i):(r=Math.sqrt(2/(1+c*i)))*h*this.ymf,o=this.xmf*r*c*a;break;case this.N_POLE:case this.S_POLE:u>=0?(o=(r=Math.sqrt(u))*a,t=i*(this.mode==this.S_POLE?r:-r)):o=t=0}}return n.x=this.a*o+this.x0,n.y=this.a*t+this.y0,n},inverse:function(n){var r,t,a,i,h,f,s,l,e,c,o,u;if(n.x-=this.x0,n.y-=this.y0,r=n.x/this.a,t=n.y/this.a,this.sphere){if(h=0,s=0,f=Math.sqrt(r*r+t*t),i=f*.5,i>1)return Proj4js.reportError("laea:Inv:DataError"),null;i=2*Math.asin(i),(this.mode==this.OBLIQ||this.mode==this.EQUIT)&&(s=Math.sin(i),h=Math.cos(i));switch(this.mode){case this.EQUIT:i=Math.abs(f)<=Proj4js.common.EPSLN?0:Math.asin(t*s/f),r*=s,t=h*f;break;case this.OBLIQ:i=Math.abs(f)<=Proj4js.common.EPSLN?this.phi0:Math.asin(h*this.sinph0+t*s*this.cosph0/f),r*=s*this.cosph0,t=(h-Math.sin(i)*this.sinph0)*f;break;case this.N_POLE:t=-t,i=Proj4js.common.HALF_PI-i;break;case this.S_POLE:i-=Proj4js.common.HALF_PI}a=t==0&&(this.mode==this.EQUIT||this.mode==this.OBLIQ)?0:Math.atan2(r,t)}else{u=0;switch(this.mode){case this.EQUIT:case this.OBLIQ:if(r/=this.dd,t*=this.dd,o=Math.sqrt(r*r+t*t),o<Proj4js.common.EPSLN)return n.x=0,n.y=this.phi0,n;e=2*Math.asin(.5*o/this.rq),l=Math.cos(e),r*=e=Math.sin(e),this.mode==this.OBLIQ?(u=l*this.sinb1+t*e*this.cosb1/o,c=this.qp*u,t=o*this.cosb1*l-t*this.sinb1*e):(u=t*e/o,c=this.qp*u,t=o*l);break;case this.N_POLE:t=-t;case this.S_POLE:if(c=r*r+t*t,!c)return n.x=0,n.y=this.phi0,n;u=1-c/this.qp,this.mode==this.S_POLE&&(u=-u)}a=Math.atan2(r,t),i=this.authlat(Math.asin(u),this.apa)}return n.x=Proj4js.common.adjust_lon(this.long0+a),n.y=i,n},P00:.33333333333333331,P01:.17222222222222222,P02:.10257936507936508,P10:.063888888888888884,P11:.0664021164021164,P20:.016415012942191543,authset:function(n){var t,i=[];return i[0]=n*this.P00,t=n*n,i[0]+=t*this.P01,i[1]=t*this.P10,t*=n,i[0]+=t*this.P02,i[1]+=t*this.P11,i[2]=t*this.P20,i},authlat:function(n,t){var i=n+n;return n+t[0]*Math.sin(i)+t[1]*Math.sin(i+i)+t[2]*Math.sin(i+i+i)}},Proj4js.Proj.lcc={init:function(){var n;if(this.lat2||(this.lat2=this.lat0),this.k0||(this.k0=1),Math.abs(this.lat1+this.lat2)<Proj4js.common.EPSLN){Proj4js.reportError("lcc:init: Equal Latitudes");return}n=this.b/this.a,this.e=Math.sqrt(1-n*n);var t=Math.sin(this.lat1),f=Math.cos(this.lat1),i=Proj4js.common.msfnz(this.e,t,f),r=Proj4js.common.tsfnz(this.e,this.lat1,t),u=Math.sin(this.lat2),e=Math.cos(this.lat2),o=Proj4js.common.msfnz(this.e,u,e),s=Proj4js.common.tsfnz(this.e,this.lat2,u),h=Proj4js.common.tsfnz(this.e,this.lat0,Math.sin(this.lat0));this.ns=Math.abs(this.lat1-this.lat2)>Proj4js.common.EPSLN?Math.log(i/o)/Math.log(r/s):t,this.f0=i/(this.ns*Math.pow(r,this.ns)),this.rh=this.a*this.f0*Math.pow(h,this.ns),this.title||(this.title="Lambert Conformal Conic")},forward:function(n){var i=n.x,t=n.y,r,e,u,f;if(!(t<=90)||!(t>=-90)||!(i<=180)||!(i>=-180))return Proj4js.reportError("lcc:forward: llInputOutOfRange: "+i+" : "+t),null;if(r=Math.abs(Math.abs(t)-Proj4js.common.HALF_PI),r>Proj4js.common.EPSLN)e=Proj4js.common.tsfnz(this.e,t,Math.sin(t)),u=this.a*this.f0*Math.pow(e,this.ns);else{if(r=t*this.ns,r<=0)return Proj4js.reportError("lcc:forward: No Projection"),null;u=0}return f=this.ns*Proj4js.common.adjust_lon(i-this.long0),n.x=this.k0*u*Math.sin(f)+this.x0,n.y=this.k0*(this.rh-u*Math.cos(f))+this.y0,n},inverse:function(n){var i,t,o,f,s,r=(n.x-this.x0)/this.k0,u=this.rh-(n.y-this.y0)/this.k0,e;if(this.ns>0?(i=Math.sqrt(r*r+u*u),t=1):(i=-Math.sqrt(r*r+u*u),t=-1),e=0,i!=0&&(e=Math.atan2(t*r,t*u)),i!=0||this.ns>0){if(t=1/this.ns,o=Math.pow(i/(this.a*this.f0),t),f=Proj4js.common.phi2z(this.e,o),f==-9999)return null}else f=-Proj4js.common.HALF_PI;return s=Proj4js.common.adjust_lon(e/this.ns+this.long0),n.x=s,n.y=f,n}},Proj4js.Proj.merc={init:function(){this.lat_ts&&(this.k0=this.sphere?Math.cos(this.lat_ts):Proj4js.common.msfnz(this.es,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))},forward:function(n){var i=n.x,t=n.y,r,u,f,e;return t*Proj4js.common.R2D>90&&t*Proj4js.common.R2D<-90&&i*Proj4js.common.R2D>180&&i*Proj4js.common.R2D<-180?(Proj4js.reportError("merc:forward: llInputOutOfRange: "+i+" : "+t),null):Math.abs(Math.abs(t)-Proj4js.common.HALF_PI)<=Proj4js.common.EPSLN?(Proj4js.reportError("merc:forward: ll2mAtPoles"),null):(this.sphere?(r=this.x0+this.a*this.k0*Proj4js.common.adjust_lon(i-this.long0),u=this.y0+this.a*this.k0*Math.log(Math.tan(Proj4js.common.FORTPI+.5*t))):(f=Math.sin(t),e=Proj4js.common.tsfnz(this.e,t,f),r=this.x0+this.a*this.k0*Proj4js.common.adjust_lon(i-this.long0),u=this.y0-this.a*this.k0*Math.log(e)),n.x=r,n.y=u,n)},inverse:function(n){var f=n.x-this.x0,i=n.y-this.y0,r,t,u;if(this.sphere)t=Proj4js.common.HALF_PI-2*Math.atan(Math.exp(-i/this.a*this.k0));else if(u=Math.exp(-i/(this.a*this.k0)),t=Proj4js.common.phi2z(this.e,u),t==-9999)return Proj4js.reportError("merc:inverse: lat = -9999"),null;return r=Proj4js.common.adjust_lon(this.long0+f/(this.a*this.k0)),n.x=r,n.y=t,n}},Proj4js.Proj.mill={init:function(){},forward:function(n){var t=n.x,i=n.y,r=Proj4js.common.adjust_lon(t-this.long0),u=this.x0+this.a*r,f=this.y0+this.a*Math.log(Math.tan(Proj4js.common.PI/4+i/2.5))*1.25;return n.x=u,n.y=f,n},inverse:function(n){n.x-=this.x0,n.y-=this.y0;var t=Proj4js.common.adjust_lon(this.long0+n.x/this.a),i=2.5*(Math.atan(Math.exp(.8*n.y/this.a))-Proj4js.common.PI/4);return n.x=t,n.y=i,n}},Proj4js.Proj.moll={init:function(){},forward:function(n){for(var s=n.x,i=n.y,f=Proj4js.common.adjust_lon(s-this.long0),t=i,h=Proj4js.common.PI*Math.sin(i),u,e,o,r=0;;r++){if(u=-(t+Math.sin(t)-h)/(1+Math.cos(t)),t+=u,Math.abs(u)<Proj4js.common.EPSLN)break;r>=50&&Proj4js.reportError("moll:Fwd:IterationError")}return t/=2,Proj4js.common.PI/2-Math.abs(i)<Proj4js.common.EPSLN&&(f=0),e=.900316316158*this.a*f*Math.cos(t)+this.x0,o=1.4142135623731*this.a*Math.sin(t)+this.y0,n.x=e,n.y=o,n},inverse:function(n){var t,r,i,u;return n.x-=this.x0,t=n.y/(1.4142135623731*this.a),Math.abs(t)>.999999999999&&(t=.999999999999),r=Math.asin(t),i=Proj4js.common.adjust_lon(this.long0+n.x/(.900316316158*this.a*Math.cos(r))),i<-Proj4js.common.PI&&(i=-Proj4js.common.PI),i>Proj4js.common.PI&&(i=Proj4js.common.PI),t=(2*r+Math.sin(2*r))/Proj4js.common.PI,Math.abs(t)>1&&(t=1),u=Math.asin(t),n.x=i,n.y=u,n}},Proj4js.Proj.nzmg={iterations:1,init:function(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=.00067,this.A[10]=-.00034,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013},forward:function(n){for(var a=n.x,v=n.y,y=v-this.lat0,p=a-this.long0,w=y/Proj4js.common.SEC_TO_RAD*1e-5,b=p,u=1,f=0,t=1;t<=10;t++)u=u*w,f=f+this.A[t]*u;var s=f,h=b,i=1,r=0,c,l,e=0,o=0;for(t=1;t<=6;t++)c=i*s-r*h,l=r*s+i*h,i=c,r=l,e=e+this.B_re[t]*i-this.B_im[t]*r,o=o+this.B_im[t]*i+this.B_re[t]*r;return n.x=o*this.a+this.x0,n.y=e*this.a+this.y0,n},inverse:function(n){for(var rt=n.x,ut=n.y,ft=rt-this.x0,et=ut-this.y0,y=et/this.a,p=ft/this.a,s=1,h=0,g,nt,u=0,f=0,w,e,o,b,tt,it,t=1;t<=6;t++)g=s*y-h*p,nt=h*y+s*p,s=g,h=nt,u=u+this.C_re[t]*s-this.C_im[t]*h,f=f+this.C_im[t]*s+this.C_re[t]*h;for(w=0;w<this.iterations;w++){var i=u,r=f,c,l,a=y,v=p;for(t=2;t<=6;t++)c=i*u-r*f,l=r*u+i*f,i=c,r=l,a=a+(t-1)*(this.B_re[t]*i-this.B_im[t]*r),v=v+(t-1)*(this.B_im[t]*i+this.B_re[t]*r);for(i=1,r=0,e=this.B_re[1],o=this.B_im[1],t=2;t<=6;t++)c=i*u-r*f,l=r*u+i*f,i=c,r=l,e=e+t*(this.B_re[t]*i-this.B_im[t]*r),o=o+t*(this.B_im[t]*i+this.B_re[t]*r);b=e*e+o*o,u=(a*e+v*o)/b,f=(v*e-a*o)/b}var ot=u,st=f,k=1,d=0;for(t=1;t<=9;t++)k=k*ot,d=d+this.D[t]*k;return tt=this.lat0+d*Proj4js.common.SEC_TO_RAD*1e5,it=this.long0+st,n.x=it,n.y=tt,n}},Proj4js.Proj.omerc={init:function(){this.mode||(this.mode=0),this.lon1||(this.lon1=0,this.mode=1),this.lon2||(this.lon2=0),this.lat2||(this.lat2=0);var t=this.b/this.a,n=1-Math.pow(t,2),i=Math.sqrt(n);this.sin_p20=Math.sin(this.lat0),this.cos_p20=Math.cos(this.lat0),this.con=1-this.es*this.sin_p20*this.sin_p20,this.com=Math.sqrt(1-n),this.bl=Math.sqrt(1+this.es*Math.pow(this.cos_p20,4)/(1-n)),this.al=this.a*this.bl*this.k0*this.com/this.con,Math.abs(this.lat0)<Proj4js.common.EPSLN?(this.ts=1,this.d=1,this.el=1):(this.ts=Proj4js.common.tsfnz(this.e,this.lat0,this.sin_p20),this.con=Math.sqrt(this.con),this.d=this.bl*this.com/(this.cos_p20*this.con),this.f=this.d*this.d-1>0?this.lat0>=0?this.d+Math.sqrt(this.d*this.d-1):this.d-Math.sqrt(this.d*this.d-1):this.d,this.el=this.f*Math.pow(this.ts,this.bl)),this.mode!=0?(this.g=.5*(this.f-1/this.f),this.gama=Proj4js.common.asinz(Math.sin(this.alpha)/this.d),this.longc=this.longc-Proj4js.common.asinz(this.g*Math.tan(this.gama))/this.bl,this.con=Math.abs(this.lat0),this.con>Proj4js.common.EPSLN&&Math.abs(this.con-Proj4js.common.HALF_PI)>Proj4js.common.EPSLN?(this.singam=Math.sin(this.gama),this.cosgam=Math.cos(this.gama),this.sinaz=Math.sin(this.alpha),this.cosaz=Math.cos(this.alpha),this.u=this.lat0>=0?this.al/this.bl*Math.atan(Math.sqrt(this.d*this.d-1)/this.cosaz):-(this.al/this.bl)*Math.atan(Math.sqrt(this.d*this.d-1)/this.cosaz)):Proj4js.reportError("omerc:Init:DataError")):(this.sinphi=Math.sin(this.at1),this.ts1=Proj4js.common.tsfnz(this.e,this.lat1,this.sinphi),this.sinphi=Math.sin(this.lat2),this.ts2=Proj4js.common.tsfnz(this.e,this.lat2,this.sinphi),this.h=Math.pow(this.ts1,this.bl),this.l=Math.pow(this.ts2,this.bl),this.f=this.el/this.h,this.g=.5*(this.f-1/this.f),this.j=(this.el*this.el-this.l*this.h)/(this.el*this.el+this.l*this.h),this.p=(this.l-this.h)/(this.l+this.h),this.dlon=this.lon1-this.lon2,this.dlon<-Proj4js.common.PI&&(this.lon2=this.lon2-2*Proj4js.common.PI),this.dlon>Proj4js.common.PI&&(this.lon2=this.lon2+2*Proj4js.common.PI),this.dlon=this.lon1-this.lon2,this.longc=.5*(this.lon1+this.lon2)-Math.atan(this.j*Math.tan(.5*this.bl*this.dlon)/this.p)/this.bl,this.dlon=Proj4js.common.adjust_lon(this.lon1-this.longc),this.gama=Math.atan(Math.sin(this.bl*this.dlon)/this.g),this.alpha=Proj4js.common.asinz(this.d*Math.sin(this.gama)),Math.abs(this.lat1-this.lat2)<=Proj4js.common.EPSLN?Proj4js.reportError("omercInitDataError"):this.con=Math.abs(this.lat1),this.con<=Proj4js.common.EPSLN||Math.abs(this.con-Proj4js.common.HALF_PI)<=Proj4js.common.EPSLN?Proj4js.reportError("omercInitDataError"):Math.abs(Math.abs(this.lat0)-Proj4js.common.HALF_PI)<=Proj4js.common.EPSLN&&Proj4js.reportError("omercInitDataError"),this.singam=Math.sin(this.gam),this.cosgam=Math.cos(this.gam),this.sinaz=Math.sin(this.alpha),this.cosaz=Math.cos(this.alpha),this.u=this.lat0>=0?this.al/this.bl*Math.atan(Math.sqrt(this.d*this.d-1)/this.cosaz):-(this.al/this.bl)*Math.atan(Math.sqrt(this.d*this.d-1)/this.cosaz))},forward:function(n){var w,c,b,k,d,l,g,f,nt,tt,r,t,o,i,s,h,e,a,p=n.x,u=n.y,v,y;return c=Math.sin(u),e=Proj4js.common.adjust_lon(p-this.longc),o=Math.sin(this.bl*e),Math.abs(Math.abs(u)-Proj4js.common.HALF_PI)>Proj4js.common.EPSLN?(a=Proj4js.common.tsfnz(this.e,u,c),r=this.el/Math.pow(a,this.bl),h=.5*(r-1/r),l=.5*(r+1/r),i=(h*this.singam-o*this.cosgam)/l,f=Math.cos(this.bl*e),Math.abs(f)<1e-7?t=this.al*this.bl*e:(t=this.al*Math.atan((h*this.cosgam+o*this.singam)/f)/this.bl,f<0&&(t=t+Proj4js.common.PI*this.al/this.bl))):(i=u>=0?this.singam:-this.singam,t=this.al*u/this.bl),Math.abs(Math.abs(i)-1)<=Proj4js.common.EPSLN&&Proj4js.reportError("omercFwdInfinity"),s=.5*this.al*Math.log((1-i)/(1+i))/this.bl,t=t-this.u,v=this.x0+s*this.cosaz+t*this.sinaz,y=this.y0+t*this.cosaz-s*this.sinaz,n.x=v,n.y=y,n},inverse:function(n){var y,h,p,w,b,k,d,c,g,f,nt,tt,l,r,t,e,a,o,i,it,s,u,v;return n.x-=this.x0,n.y-=this.y0,v=0,l=n.x*this.cosaz-n.y*this.sinaz,r=n.y*this.cosaz+n.x*this.sinaz,r=r+this.u,t=Math.exp(-this.bl*l/this.al),e=.5*(t-1/t),c=.5*(t+1/t),o=Math.sin(this.bl*r/this.al),i=(o*this.cosgam+e*this.singam)/c,Math.abs(Math.abs(i)-1)<=Proj4js.common.EPSLN?(s=this.longc,u=i>=0?Proj4js.common.HALF_PI:-Proj4js.common.HALF_PI):(f=1/this.bl,a=Math.pow(this.el/Math.sqrt((1+i)/(1-i)),f),u=Proj4js.common.phi2z(this.e,a),h=this.longc-Math.atan2(e*this.cosgam-o*this.singam,f)/this.bl,s=Proj4js.common.adjust_lon(h)),n.x=s,n.y=u,n}},Proj4js.Proj.ortho={init:function(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)},forward:function(n){var i,t,r,u,f,e,c=n.x,o=n.y,s,h;return r=Proj4js.common.adjust_lon(c-this.long0),i=Math.sin(o),t=Math.cos(o),u=Math.cos(r),e=this.sin_p14*i+this.cos_p14*t*u,f=1,e>0||Math.abs(e)<=Proj4js.common.EPSLN?(s=this.a*f*t*Math.sin(r),h=this.y0+this.a*f*(this.cos_p14*i-this.sin_p14*t*u)):Proj4js.reportError("orthoFwdPointError"),n.x=s,n.y=h,n},inverse:function(n){var t,u,o,f,s,e,i,r;return n.x-=this.x0,n.y-=this.y0,t=Math.sqrt(n.x*n.x+n.y*n.y),t>this.a+1e-7&&Proj4js.reportError("orthoInvDataError"),u=Proj4js.common.asinz(t/this.a),o=Math.sin(u),f=Math.cos(u),i=this.long0,Math.abs(t)<=Proj4js.common.EPSLN&&(r=this.lat0),r=Proj4js.common.asinz(f*this.sin_p14+n.y*o*this.cos_p14/t),e=Math.abs(this.lat0)-Proj4js.common.HALF_PI,Math.abs(e)<=Proj4js.common.EPSLN&&(i=this.lat0>=0?Proj4js.common.adjust_lon(this.long0+Math.atan2(n.x,-n.y)):Proj4js.common.adjust_lon(this.long0-Math.atan2(-n.x,n.y))),e=f-this.sin_p14*Math.sin(r),n.x=i,n.y=r,n}},Proj4js.Proj.poly={init:function(){var n;this.lat0==0&&(this.lat0=90),this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Proj4js.common.e0fn(this.es),this.e1=Proj4js.common.e1fn(this.es),this.e2=Proj4js.common.e2fn(this.es),this.e3=Proj4js.common.e3fn(this.es),this.ml0=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0)},forward:function(n){var t,o,c,l,i,s,u,f,e,h=n.x,r=n.y;return i=Proj4js.common.adjust_lon(h-this.long0),Math.abs(r)<=1e-7?(f=this.x0+this.a*i,e=this.y0-this.a*this.ml0):(t=Math.sin(r),o=Math.cos(r),s=Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,r),u=Proj4js.common.msfnz(this.e,t,o),i=t,f=this.x0+this.a*u*Math.sin(i)/t,e=this.y0+this.a*(s-this.ml0+u*(1-Math.cos(i))/t)),n.x=f,n.y=e,n},inverse:function(n){var o,s,t,f,e,h,c,i,u,r;if(n.x-=this.x0,n.y-=this.y0,t=this.ml0+n.y/this.a,i=0,Math.abs(t)<=1e-7)u=n.x/this.a+this.long0,r=0;else{if(f=t*t+n.x/this.a*(n.x/this.a),i=phi4z(this.es,this.e0,this.e1,this.e2,this.e3,this.al,f,e,r),i!=1)return i;u=Proj4js.common.adjust_lon(Proj4js.common.asinz(n.x*e/this.a)/Math.sin(r)+this.long0)}return n.x=u,n.y=r,n}},Proj4js.Proj.sinu={init:function(){this.sphere?(this.n=1,this.m=0,this.es=0,this.C_y=Math.sqrt((this.m+1)/this.n),this.C_x=this.C_y/(this.m+1)):this.en=Proj4js.common.pj_enfn(this.es)},forward:function(n){var u,f,c,i=n.x,t=n.y,h,e,o,r,s;if(i=Proj4js.common.adjust_lon(i-this.long0),this.sphere){if(this.m){for(h=this.n*Math.sin(t),e=Proj4js.common.MAX_ITER;e;--e)if(o=(this.m*t+Math.sin(t)-h)/(this.m+Math.cos(t)),t-=o,Math.abs(o)<Proj4js.common.EPSLN)break}else t=this.n!=1?Math.asin(this.n*Math.sin(t)):t;u=this.a*this.C_x*i*(this.m+Math.cos(t)),f=this.a*this.C_y*t}else r=Math.sin(t),s=Math.cos(t),f=this.a*Proj4js.common.pj_mlfn(t,r,s,this.en),u=this.a*i*s/Math.sqrt(1-this.es*r*r);return n.x=u,n.y=f,n},inverse:function(n){var t,u,r,i;return n.x-=this.x0,n.y-=this.y0,t=n.y/this.a,this.sphere?(n.y/=this.C_y,t=this.m?Math.asin((this.m*n.y+Math.sin(n.y))/this.n):this.n!=1?Math.asin(Math.sin(n.y)/this.n):n.y,r=n.x/(this.C_x*(this.m+Math.cos(n.y)))):(t=Proj4js.common.pj_inv_mlfn(n.y/this.a,this.es,this.en),i=Math.abs(t),i<Proj4js.common.HALF_PI?(i=Math.sin(t),u=this.long0+n.x*Math.sqrt(1-this.es*i*i)/(this.a*Math.cos(t)),r=Proj4js.common.adjust_lon(u)):i-Proj4js.common.EPSLN<Proj4js.common.HALF_PI&&(r=this.long0)),n.x=r,n.y=t,n}},Proj4js.Proj.somerc={init:function(){var i=this.lat0;this.lambda0=this.long0;var t=Math.sin(i),f=this.a,e=this.rf,u=1/e,n=2*u-Math.pow(u,2),r=this.e=Math.sqrt(n);this.R=this.k0*f*Math.sqrt(1-n)/(1-n*Math.pow(t,2)),this.alpha=Math.sqrt(1+n/(1-n)*Math.pow(Math.cos(i),4)),this.b0=Math.asin(t/this.alpha),this.K=Math.log(Math.tan(Math.PI/4+this.b0/2))-this.alpha*Math.log(Math.tan(Math.PI/4+i/2))+this.alpha*r/2*Math.log((1+r*t)/(1-r*t))},forward:function(n){var u=Math.log(Math.tan(Math.PI/4-n.y/2)),f=this.e/2*Math.log((1+this.e*Math.sin(n.y))/(1-this.e*Math.sin(n.y))),e=-this.alpha*(u+f)+this.K,t=2*(Math.atan(Math.exp(e))-Math.PI/4),i=this.alpha*(n.x-this.lambda0),o=Math.atan(Math.sin(i)/(Math.sin(this.b0)*Math.tan(t)+Math.cos(this.b0)*Math.cos(i))),r=Math.asin(Math.cos(this.b0)*Math.sin(t)-Math.sin(this.b0)*Math.cos(t)*Math.cos(i));return n.y=this.R/2*Math.log((1+Math.sin(r))/(1-Math.sin(r)))+this.y0,n.x=this.R*o+this.x0,n},inverse:function(n){for(var o=n.x-this.x0,s=n.y-this.y0,i=o/this.R,r=2*(Math.atan(Math.exp(s/this.R))-Math.PI/4),u=Math.asin(Math.cos(this.b0)*Math.sin(r)+Math.sin(this.b0)*Math.cos(r)*Math.cos(i)),h=Math.atan(Math.sin(i)/(Math.cos(this.b0)*Math.cos(i)-Math.sin(this.b0)*Math.tan(r))),c=this.lambda0+h/this.alpha,f=0,t=u,e=-1e3,l=0;Math.abs(t-e)>1e-7;){if(++l>20){Proj4js.reportError("omercFwdInfinity");return}f=1/this.alpha*(Math.log(Math.tan(Math.PI/4+u/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(t))/2)),e=t,t=2*Math.atan(Math.exp(f))-Math.PI/2}return n.x=c,n.y=t,n}},Proj4js.Proj.stere={ssfn_:function(n,t,i){return t*=i,Math.tan(.5*(Proj4js.common.HALF_PI+n))*Math.pow((1-t)/(1+t),.5*i)},TOL:1e-8,NITER:8,CONV:1e-10,S_POLE:0,N_POLE:1,OBLIQ:2,EQUIT:3,init:function(){var n,t;if(this.phits=this.lat_ts?this.lat_ts:Proj4js.common.HALF_PI,n=Math.abs(this.lat0),this.mode=Math.abs(n)-Proj4js.common.HALF_PI<Proj4js.common.EPSLN?this.lat0<0?this.S_POLE:this.N_POLE:n>Proj4js.common.EPSLN?this.OBLIQ:this.EQUIT,this.phits=Math.abs(this.phits),this.es)switch(this.mode){case this.N_POLE:case this.S_POLE:Math.abs(this.phits-Proj4js.common.HALF_PI)<Proj4js.common.EPSLN?this.akm1=2*this.k0/Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)):(n=Math.sin(this.phits),this.akm1=Math.cos(this.phits)/Proj4js.common.tsfnz(this.e,this.phits,n),n*=this.e,this.akm1/=Math.sqrt(1-n*n));break;case this.EQUIT:this.akm1=2*this.k0;break;case this.OBLIQ:n=Math.sin(this.lat0),t=2*Math.atan(this.ssfn_(this.lat0,n,this.e))-Proj4js.common.HALF_PI,n*=this.e,this.akm1=2*this.k0*Math.cos(this.lat0)/Math.sqrt(1-n*n),this.sinX1=Math.sin(t),this.cosX1=Math.cos(t)}else switch(this.mode){case this.OBLIQ:this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0);case this.EQUIT:this.akm1=2*this.k0;break;case this.S_POLE:case this.N_POLE:this.akm1=Math.abs(this.phits-Proj4js.common.HALF_PI)>=Proj4js.common.EPSLN?Math.cos(this.phits)/Math.tan(Proj4js.common.FORTPI-.5*this.phits):2*this.k0}},forward:function(n){var e=n.x,r,u,t,f,o,i,s,l,h,a,c;if(e=Proj4js.common.adjust_lon(e-this.long0),r=n.y,this.sphere){f=Math.sin(r),o=Math.cos(r),i=Math.cos(e),s=Math.sin(e);switch(this.mode){case this.EQUIT:t=1+o*i,t<=Proj4js.common.EPSLN&&Proj4js.reportError("stere:forward:Equit"),t=this.akm1/t,u=t*o*s,t*=f;break;case this.OBLIQ:t=1+this.sinph0*f+this.cosph0*o*i,t<=Proj4js.common.EPSLN&&Proj4js.reportError("stere:forward:Obliq"),t=this.akm1/t,u=t*o*s,t*=this.cosph0*f-this.sinph0*o*i;break;case this.N_POLE:i=-i,r=-r;case this.S_POLE:Math.abs(r-Proj4js.common.HALF_PI)<this.TOL&&Proj4js.reportError("stere:forward:S_POLE"),t=this.akm1*Math.tan(Proj4js.common.FORTPI+.5*r),u=s*t,t*=i}}else{i=Math.cos(e),s=Math.sin(e),f=Math.sin(r),(this.mode==this.OBLIQ||this.mode==this.EQUIT)&&(a=2*Math.atan(this.ssfn_(r,f,this.e)),l=Math.sin(a-Proj4js.common.HALF_PI),h=Math.cos(a));switch(this.mode){case this.OBLIQ:c=this.akm1/(this.cosX1*(1+this.sinX1*l+this.cosX1*h*i)),t=c*(this.cosX1*l-this.sinX1*h*i),u=c*h;break;case this.EQUIT:c=2*this.akm1/(1+h*i),t=c*l,u=c*h;break;case this.S_POLE:r=-r,i=-i,f=-f;case this.N_POLE:u=this.akm1*Proj4js.common.tsfnz(this.e,r,f),t=-u*i}u=u*s}return n.x=u*this.a+this.x0,n.y=t*this.a+this.y0,n},inverse:function(n){var r=(n.x-this.x0)/this.a,t=(n.y-this.y0)/this.a,f,i,v,e,o=0,s=0,c,y=0,p=0,w,l,u,a,h;if(this.sphere){u=Math.sqrt(r*r+t*t),l=2*Math.atan(u/this.akm1),a=Math.sin(l),h=Math.cos(l),f=0;switch(this.mode){case this.EQUIT:i=Math.abs(u)<=Proj4js.common.EPSLN?0:Math.asin(t*a/u),(h!=0||r!=0)&&(f=Math.atan2(r*a,h*u));break;case this.OBLIQ:i=Math.abs(u)<=Proj4js.common.EPSLN?this.phi0:Math.asin(h*this.sinph0+t*a*this.cosph0/u),l=h-this.sinph0*Math.sin(i),(l!=0||r!=0)&&(f=Math.atan2(r*a*this.cosph0,l*u));break;case this.N_POLE:t=-t;case this.S_POLE:i=Math.abs(u)<=Proj4js.common.EPSLN?this.phi0:Math.asin(this.mode==this.S_POLE?-h:h),f=r==0&&t==0?0:Math.atan2(r,t)}n.x=Proj4js.common.adjust_lon(f+this.long0),n.y=i}else{c=Math.sqrt(r*r+t*t);switch(this.mode){case this.OBLIQ:case this.EQUIT:o=2*Math.atan2(c*this.cosX1,this.akm1),v=Math.cos(o),e=Math.sin(o),s=c==0?Math.asin(v*this.sinX1):Math.asin(v*this.sinX1+t*e*this.cosX1/c),o=Math.tan(.5*(Proj4js.common.HALF_PI+s)),r*=e,t=c*this.cosX1*v-t*this.sinX1*e,p=Proj4js.common.HALF_PI,y=.5*this.e;break;case this.N_POLE:t=-t;case this.S_POLE:o=-c/this.akm1,s=Proj4js.common.HALF_PI-2*Math.atan(o),p=-Proj4js.common.HALF_PI,y=-.5*this.e}for(w=this.NITER;w--;s=i)if(e=this.e*Math.sin(s),i=2*Math.atan(o*Math.pow((1+e)/(1-e),y))-p,Math.abs(s-i)<this.CONV)return this.mode==this.S_POLE&&(i=-i),f=r==0&&t==0?0:Math.atan2(r,t),n.x=Proj4js.common.adjust_lon(f+this.long0),n.y=i,n}}},Proj4js.Proj.sterea={dependsOn:"gauss",init:function(){if(Proj4js.Proj.gauss.init.apply(this),!this.rc){Proj4js.reportError("sterea:init:E_ERROR_0");return}this.sinc0=Math.sin(this.phic0),this.cosc0=Math.cos(this.phic0),this.R2=2*this.rc,this.title||(this.title="Oblique Stereographic Alternative")},forward:function(n){var i,t,r,u;return n.x=Proj4js.common.adjust_lon(n.x-this.long0),Proj4js.Proj.gauss.forward.apply(this,[n]),i=Math.sin(n.y),t=Math.cos(n.y),r=Math.cos(n.x),u=this.k0*this.R2/(1+this.sinc0*i+this.cosc0*t*r),n.x=u*t*Math.sin(n.x),n.y=u*(this.cosc0*i-this.sinc0*t*r),n.x=this.a*n.x+this.x0,n.y=this.a*n.y+this.y0,n},inverse:function(n){var t,r,u,f,i,e;return n.x=(n.x-this.x0)/this.a,n.y=(n.y-this.y0)/this.a,n.x/=this.k0,n.y/=this.k0,(i=Math.sqrt(n.x*n.x+n.y*n.y))?(e=2*Math.atan2(i,this.R2),t=Math.sin(e),r=Math.cos(e),f=Math.asin(r*this.sinc0+n.y*t*this.cosc0/i),u=Math.atan2(n.x*t,i*this.cosc0*r-n.y*this.sinc0*t)):(f=this.phic0,u=0),n.x=u,n.y=f,Proj4js.Proj.gauss.inverse.apply(this,[n]),n.x=Proj4js.common.adjust_lon(n.x+this.long0),n}},Proj4js.Proj.tmerc={init:function(){this.e0=Proj4js.common.e0fn(this.es),this.e1=Proj4js.common.e1fn(this.es),this.e2=Proj4js.common.e2fn(this.es),this.e3=Proj4js.common.e3fn(this.es),this.ml0=this.a*Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,this.lat0)},forward:function(n){var p=n.x,u=n.y,s=Proj4js.common.adjust_lon(p-this.long0),t,h,c,w=Math.sin(u),o=Math.cos(u),i,l,y;if(this.sphere){if(i=o*Math.sin(s),Math.abs(Math.abs(i)-1)<1e-10)return Proj4js.reportError("tmerc:forward: Point projects into infinity"),93;h=.5*this.a*this.k0*Math.log((1+i)/(1-i)),t=Math.acos(o*Math.cos(s)/Math.sqrt(1-i*i)),u<0&&(t=-t),c=this.a*this.k0*(t-this.lat0)}else{var a=o*s,f=Math.pow(a,2),e=this.ep2*Math.pow(o,2),v=Math.tan(u),r=Math.pow(v,2);t=1-this.es*Math.pow(w,2),l=this.a/Math.sqrt(t),y=this.a*Proj4js.common.mlfn(this.e0,this.e1,this.e2,this.e3,u),h=this.k0*l*a*(1+f/6*(1-r+e+f/20*(5-18*r+Math.pow(r,2)+72*e-58*this.ep2)))+this.x0,c=this.k0*(y-this.ml0+l*v*f*(.5+f/24*(5-r+9*e+4*Math.pow(e,2)+f/30*(61-58*r+Math.pow(r,2)+600*e-330*this.ep2))))+this.y0}return n.x=h,n.y=c,n},inverse:function(n){var i,t,c,l,tt=6,r,u,b,a;if(this.sphere){var p=Math.exp(n.x/(this.a*this.k0)),s=.5*(p-1/p),w=this.lat0+n.y/(this.a*this.k0),h=Math.cos(w);i=Math.sqrt((1-h*h)/(1+s*s)),r=Proj4js.common.asinz(i),w<0&&(r=-r),u=s==0&&h==0?this.long0:Proj4js.common.adjust_lon(Math.atan2(s,h)+this.long0)}else{for(b=n.x-this.x0,a=n.y-this.y0,i=(this.ml0+a/this.k0)/this.a,t=i,l=0;;l++){if(c=(i+this.e1*Math.sin(2*t)-this.e2*Math.sin(4*t)+this.e3*Math.sin(6*t))/this.e0-t,t+=c,Math.abs(c)<=Proj4js.common.EPSLN)break;if(l>=tt)return Proj4js.reportError("tmerc:inverse: Latitude failed to converge"),95}if(Math.abs(t)<Proj4js.common.HALF_PI){var it=Math.sin(t),k=Math.cos(t),d=Math.tan(t),f=this.ep2*Math.pow(k,2),v=Math.pow(f,2),e=Math.pow(d,2),g=Math.pow(e,2);i=1-this.es*Math.pow(it,2);var y=this.a/Math.sqrt(i),rt=y*(1-this.es)/i,nt=b/(y*this.k0),o=Math.pow(nt,2);r=t-y*d*o/rt*(.5-o/24*(5+3*e+10*f-4*v-9*this.ep2-o/30*(61+90*e+298*f+45*g-252*this.ep2-3*v))),u=Proj4js.common.adjust_lon(this.long0+nt*(1-o/6*(1+2*e+f-o/20*(5-2*f+28*e-3*v+8*this.ep2+24*g)))/k)}else r=Proj4js.common.HALF_PI*Proj4js.common.sign(a),u=this.long0}return n.x=u,n.y=r,n}},Proj4js.Proj.utm={dependsOn:"tmerc",init:function(){if(!this.zone){Proj4js.reportError("utm:init: zone must be specified for UTM");return}this.lat0=0,this.long0=(6*Math.abs(this.zone)-183)*Proj4js.common.D2R,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,Proj4js.Proj.tmerc.init.apply(this),this.forward=Proj4js.Proj.tmerc.forward,this.inverse=Proj4js.Proj.tmerc.inverse}},Proj4js.Proj.vandg={init:function(){this.R=6370997},forward:function(n){var y=n.x,f=n.y,e=Proj4js.common.adjust_lon(y-this.long0),h,i,o;Math.abs(f)<=Proj4js.common.EPSLN&&(h=this.x0+this.R*e,i=this.y0),o=Proj4js.common.asinz(2*Math.abs(f/Proj4js.common.PI)),(Math.abs(e)<=Proj4js.common.EPSLN||Math.abs(Math.abs(f)-Proj4js.common.HALF_PI)<=Proj4js.common.EPSLN)&&(h=this.x0,i=f>=0?this.y0+Proj4js.common.PI*this.R*Math.tan(.5*o):this.y0+Proj4js.common.PI*this.R*-Math.tan(.5*o));var s=.5*Math.abs(Proj4js.common.PI/e-e/Proj4js.common.PI),c=s*s,l=Math.sin(o),a=Math.cos(o),r=a/(l+a-1),p=r*r,v=r*(2/l-1),u=v*v,t=Proj4js.common.PI*this.R*(s*(r-u)+Math.sqrt(c*(r-u)*(r-u)-(u+c)*(p-u)))/(u+c);return e<0&&(t=-t),h=this.x0+t,t=Math.abs(t/(Proj4js.common.PI*this.R)),i=f>=0?this.y0+Proj4js.common.PI*this.R*Math.sqrt(1-t*t-2*s*t):this.y0-Proj4js.common.PI*this.R*Math.sqrt(1-t*t-2*s*t),n.x=h,n.y=i,n},inverse:function(n){var h,c,r,t,e,o,u,i,y,p,l,s,f,a,v;return n.x-=this.x0,n.y-=this.y0,f=Proj4js.common.PI*this.R,r=n.x/f,t=n.y/f,e=r*r+t*t,o=-Math.abs(t)*(1+e),u=o-2*t*t+r*r,i=-2*o+1+2*t*t+e*e,v=t*t/i+(2*u*u*u/i/i/i-9*o*u/i/i)/27,l=(o-u*u/3/i)/i,s=2*Math.sqrt(-l/3),f=3*v/l/s,Math.abs(f)>1&&(f=f>=0?1:-1),a=Math.acos(f)/3,c=n.y>=0?(-s*Math.cos(a+Proj4js.common.PI/3)-u/3/i)*Proj4js.common.PI:-(-s*Math.cos(a+Proj4js.common.PI/3)-u/3/i)*Proj4js.common.PI,Math.abs(r)<Proj4js.common.EPSLN&&(h=this.long0),h=Proj4js.common.adjust_lon(this.long0+Proj4js.common.PI*(e-1+Math.sqrt(1+2*(r*r-t*t)+e*e))/2/r),n.x=h,n.y=c,n}},window.Proj4js&&!Proj4js.util&&(Proj4js.util={}),(window.Proj4js?Proj4js.util:window).MGRS=function(){function a(n,t){return t=t||5,w(y({lat:n.lat,lon:n.lon}),t)}function v(n){var t=c(d(n.toUpperCase()));return[t.left,t.bottom,t.right,t.top]}function f(n){return n*(Math.PI/180)}function h(n){return 180*(n/Math.PI)}function y(n){var s=n.lat,r=n.lon,v=6378137,t=.00669438,y=.9996,w,c,l,e,h,i,b,u=f(s),g=f(r),k,o,d,a;return o=Math.floor((r+180)/6)+1,r==180&&(o=60),s>=56&&s<64&&r>=3&&r<12&&(o=32),s>=72&&s<84&&(r>=0&&r<9?o=31:r>=9&&r<21?o=33:r>=21&&r<33?o=35:r>=33&&r<42&&(o=37)),w=(o-1)*6-177,k=f(w),c=t/(1-t),l=v/Math.sqrt(1-t*Math.sin(u)*Math.sin(u)),e=Math.tan(u)*Math.tan(u),h=c*Math.cos(u)*Math.cos(u),i=Math.cos(u)*(g-k),b=v*((1-t/4-3*t*t/64-5*t*t*t/256)*u-(3*t/8+3*t*t/32+45*t*t*t/1024)*Math.sin(2*u)+(15*t*t/256+45*t*t*t/1024)*Math.sin(4*u)-35*t*t*t/3072*Math.sin(6*u)),d=y*l*(i+(1-e+h)*i*i*i/6+(5-18*e+e*e+72*h-58*c)*i*i*i*i*i/120)+5e5,a=y*(b+l*Math.tan(u)*(i*i/2+(5-e+9*h+4*h*h)*i*i*i*i/24+(61-58*e+e*e+600*h-330*c)*i*i*i*i*i*i/720)),s<0&&(a+=1e7),{northing:Math.round(a),easting:Math.round(d),zoneNumber:o,zoneLetter:p(s)}}function c(n){var it=n.northing,rt=n.easting,ut=n.zoneLetter,v=n.zoneNumber,l,a,w,b;if(v<0||v>60)return null;var k=.9996,y=6378137,i=.00669438,o,r=(1-Math.sqrt(1-i))/(1+Math.sqrt(1-i)),p,e,f,d,t,g,nt,s,u,ft=rt-5e5,tt=it;return ut=="S"&&(tt-=1e7),nt=(v-1)*6-177,o=i/(1-i),g=tt/k,s=g/(y*(1-i/4-3*i*i/64-5*i*i*i/256)),u=s+(3*r/2-27*r*r*r/32)*Math.sin(2*s)+(21*r*r/16-55*r*r*r*r/32)*Math.sin(4*s)+151*r*r*r/96*Math.sin(6*s),p=y/Math.sqrt(1-i*Math.sin(u)*Math.sin(u)),e=Math.tan(u)*Math.tan(u),f=o*Math.cos(u)*Math.cos(u),d=y*(1-i)/Math.pow(1-i*Math.sin(u)*Math.sin(u),1.5),t=ft/(p*k),l=u-p*Math.tan(u)/d*(t*t/2-(5+3*e+10*f-4*f*f-9*o)*t*t*t*t/24+(61+90*e+298*f+45*e*e-252*o-3*f*f)*t*t*t*t*t*t/720),l=h(l),a=(t-(1+2*e+f)*t*t*t/6+(5-2*f+28*e-3*f*f+8*o+24*e*e)*t*t*t*t*t/120)/Math.cos(u),a=nt+h(a),n.accuracy?(b=c({northing:n.northing+n.accuracy,easting:n.easting+n.accuracy,zoneLetter:n.zoneLetter,zoneNumber:n.zoneNumber}),w={top:b.lat,right:b.lon,bottom:l,left:a}):w={lat:l,lon:a},w}function p(n){var t="Z";return 84>=n&&n>=72?t="X":72>n&&n>=64?t="W":64>n&&n>=56?t="V":56>n&&n>=48?t="U":48>n&&n>=40?t="T":40>n&&n>=32?t="S":32>n&&n>=24?t="R":24>n&&n>=16?t="Q":16>n&&n>=8?t="P":8>n&&n>=0?t="N":0>n&&n>=-8?t="M":-8>n&&n>=-16?t="L":-16>n&&n>=-24?t="K":-24>n&&n>=-32?t="J":-32>n&&n>=-40?t="H":-40>n&&n>=-48?t="G":-48>n&&n>=-56?t="F":-56>n&&n>=-64?t="E":-64>n&&n>=-72?t="D":-72>n&&n>=-80&&(t="C"),t}function w(n,t){var i=""+n.easting,r=""+n.northing;return n.zoneNumber+n.zoneLetter+b(n.easting,n.northing,n.zoneNumber)+i.substr(i.length-5,t)+r.substr(r.length-5,t)}function b(n,t,i){var r=l(i),u=Math.floor(n/1e5),f=Math.floor(t/1e5)%20;return k(u,f,r)}function l(n){var t=n%e;return t==0&&(t=e),t}function k(f,e,h){var p=h-1,v=o.charCodeAt(p),y=s.charCodeAt(p),c=v+f-1,l=y+e,a=!1,w;return c>u&&(c=c-u+i-1,a=!0),(c==n||v<n&&c>n||(c>n||v<n)&&a)&&c++,(c==t||v<t&&c>t||(c>t||v<t)&&a)&&(c++,c==n&&c++),c>u&&(c=c-u+i-1),l>r?(l=l-r+i-1,a=!0):a=!1,(l==n||y<n&&l>n||(l>n||y<n)&&a)&&l++,(l==t||y<t&&l>t||(l>t||y<t)&&a)&&(l++,l==n&&l++),l>r&&(l=l-r+i-1),w=String.fromCharCode(c)+String.fromCharCode(l)}function d(n){var e,i,s,u,w,b;if(n==null||n.length==0)throw"MGRSPoint coverting from nothing";for(var h=n.length,f=null,c="",a,t=0;!/[A-Z]/.test(a=n.charAt(t));){if(t>=2)throw"MGRSPoint bad conversion from: "+n;c+=a,t++}if(e=parseInt(c,10),t==0||t+3>h)throw"MGRSPoint bad conversion from: "+n;if(i=n.charAt(t++),i<="A"||i=="B"||i=="Y"||i>="Z"||i=="I"||i=="O")throw"MGRSPoint zone letter "+i+" not handled: "+n;f=n.substring(t,t+=2);for(var v=l(e),k=g(f.charAt(0),v),o=nt(f.charAt(1),v);o<tt(i);)o+=2e6;if(s=h-t,s%2!=0)throw"MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters"+n;var r=s/2,y=0,p=0;return r>0&&(u=1e5/Math.pow(10,r),w=n.substring(t,t+r),y=parseFloat(w)*u,b=n.substring(t+r),p=parseFloat(b)*u),easting=y+k,northing=p+o,{easting:easting,northing:northing,zoneLetter:i,zoneNumber:e,accuracy:u}}function g(r,f){for(var e=o.charCodeAt(f-1),s=1e5,h=!1;e!=r.charCodeAt(0);){if(e++,e==n&&e++,e==t&&e++,e>u){if(h)throw"Bad character: "+r;e=i,h=!0}s+=1e5}return s}function nt(u,f){if(u>"V")throw"MGRSPoint given invalid Northing "+u;for(var e=s.charCodeAt(f-1),o=0,h=!1;e!=u.charCodeAt(0);){if(e++,e==n&&e++,e==t&&e++,e>r){if(h)throw"Bad character: "+u;e=i,h=!0}o+=1e5}return o}function tt(n){var t;switch(n){case"C":t=11e5;break;case"D":t=2e6;break;case"E":t=28e5;break;case"F":t=37e5;break;case"G":t=46e5;break;case"H":t=55e5;break;case"J":t=64e5;break;case"K":t=73e5;break;case"L":t=82e5;break;case"M":t=91e5;break;case"N":t=0;break;case"P":t=8e5;break;case"Q":t=17e5;break;case"R":t=26e5;break;case"S":t=35e5;break;case"T":t=44e5;break;case"U":t=53e5;break;case"V":t=62e5;break;case"W":t=7e6;break;case"X":t=79e5;break;default:t=-1}if(t>=0)return t;throw"Invalid zone letter: "+n;}var e=6,o="AJSAJS",s="AFAFAF",i=65,n=73,t=79,r=86,u=90;return{forward:a,inverse:v}}(),window.Proj4js&&Proj4js.Point&&(Proj4js.Point.fromMGRS=function(n){var t=Proj4js.util.MGRS.inverse(n);return new Proj4js.Point((t[2]+t[0])/2,(t[3]+t[1])/2)},Proj4js.Point.prototype.toMGRS=function(n){return Proj4js.util.MGRS.forward({lon:this.x,lat:this.y},n)})