define(["./when-cbf8cd21","./Check-35e1a91d","./Math-e66fad2a","./Rectangle-53325d53","./WebGLConstants-95ceb4e9","./PixelFormat-d198afce","./Transforms-00c25a19","./RuntimeError-f4c64df1","./ComponentDatatype-7ee14e67","./GeometryAttribute-0b3418e6","./EncodedCartesian3-35776b5f","./IntersectionTests-fdc68d04","./Plane-353c5ea0","./WebMercatorProjection-9acf7e8b","./arrayRemoveDuplicates-b817241d","./ArcType-2b58731c","./EllipsoidRhumbLine-59f604d0","./EllipsoidGeodesic-f0048131"],function(j,e,He,Be,a,t,je,n,Ge,Ve,Ye,G,r,i,V,Y,F,E){"use strict";function s(e){e=j.defaultValue(e,j.defaultValue.EMPTY_OBJECT),this._ellipsoid=j.defaultValue(e.ellipsoid,Be.Ellipsoid.WGS84),this._rectangle=j.defaultValue(e.rectangle,Be.Rectangle.MAX_VALUE),this._projection=new je.GeographicProjection(this._ellipsoid),this._numberOfLevelZeroTilesX=j.defaultValue(e.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=j.defaultValue(e.numberOfLevelZeroTilesY,1),this._tileInfo=e.tileInfo}Object.defineProperties(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}}),s.prototype.getNumberOfXTilesAtLevel=function(a){if(!j.defined(this._tileInfo))return this._numberOfLevelZeroTilesX<qe?(q=Ue(a,P,ne,Y,ha),X=Ue(a,k,G,F,pa)):1===$?(X=Ue(a,k,G,F,pa),q.x=0,q.y=He.CesiumMath.sign(P.longitude-Math.abs(k.longitude)),q.z=0):(q=Ue(a,P,ne,Y,ha),X.x=0,X.y=He.CesiumMath.sign(P.longitude-k.longitude),X.z=0));var ie=Be.Cartesian3.distance(te,j),re=Ye.EncodedCartesian3.fromCartesian(ae,Ma),se=Be.Cartesian3.subtract(B,ae,ga),oe=Be.Cartesian3.normalize(se,wa),le=Be.Cartesian3.subtract(te,ae,fa);le=Be.Cartesian3.normalize(le,le);var ue=Be.Cartesian3.cross(oe,le,wa);ue=Be.Cartesian3.normalize(ue,ue);var ce=Be.Cartesian3.cross(le,ne,va);ce=Be.Cartesian3.normalize(ce,ce);var Ce=Be.Cartesian3.subtract(j,B,ma);Ce=Be.Cartesian3.normalize(Ce,Ce);var de=Be.Cartesian3.cross(G,Ce,ya);de=Be.Cartesian3.normalize(de,de);var he,pe=ie/x,ge=J/x,fe=0,me=0,we=0;for(s&&(fe=Be.Cartesian3.distance(Y,F),W=Ye.EncodedCartesian3.fromCartesian(Y,Ta),U=Be.Cartesian3.subtract(F,Y,Ea),he=(Z=Be.Cartesian3.normalize(U,_a)).x,Z.x=Z.y,Z.y=-he,me=fe/b,we=Q/b),S=0;S<8;S++){var ve=z+4*S,ye=R+2*S,Me=ve+3,Te=S<4?1:-1,Ee=2===S||3===S||6===S||7===S?1:-1;Be.Cartesian3.pack(re.high,y,ve),y[Me]=se.x,Be.Cartesian3.pack(re.low,M,ve),M[Me]=se.y,Be.Cartesian3.pack(ce,T,ve),T[Me]=se.z,Be.Cartesian3.pack(de,E,ve),E[Me]=pe*Te,Be.Cartesian3.pack(ue,_,ve);var _e=ge*Ee;0===_e&&Ee<0&&(_e=9),_[Me]=_e,s&&(u[ve]=W.high.x,u[ve+1]=W.high.y,u[ve+2]=W.low.x,u[ve+3]=W.low.y,C[ve]=-q.y,C[ve+1]=q.x,C[ve+2]=X.y,C[ve+3]=-X.x,c[ve]=U.x,c[ve+1]=U.y,c[ve+2]=Z.x,c[ve+3]=Z.y,d[ye]=me*Te,0===(_e=we*Ee)&&Ee<0&&(_e=9),d[ye+1]=_e)}var Oe=ua,be=ca,Pe=oa,ke=la,Ae=Be.Rectangle.fromCartographicArray(ra,sa),Ie=Fe.getMinimumMaximumHeights(Ae,h),Le=Ie.minimumTerrainHeight,Se=Ie.maximumTerrainHeight;K+=Le,K+=Se,Ze(ae,te,Le,Se,Oe,Pe),Ze(B,j,Le,Se,be,ke);var xe=Be.Cartesian3.multiplyByScalar(ue,He.CesiumMath.EPSILON5,Oa);Be.Cartesian3.add(Oe,xe,Oe),Be.Cartesian3.add(be,xe,be),Be.Cartesian3.add(Pe,xe,Pe),Be.Cartesian3.add(ke,xe,ke),Je(Oe,be),Je(Pe,ke),Be.Cartesian3.pack(Oe,v,D),Be.Cartesian3.pack(be,v,D+3),Be.Cartesian3.pack(ke,v,D+6),Be.Cartesian3.pack(Pe,v,D+9),xe=Be.Cartesian3.multiplyByScalar(ue,-2*He.CesiumMath.EPSILON5,Oa),Be.Cartesian3.add(Oe,xe,Oe),Be.Cartesian3.add(be,xe,be),Be.Cartesian3.add(Pe,xe,Pe),Be.Cartesian3.add(ke,xe,ke),Je(Oe,be),Je(Pe,ke),Be.Cartesian3.pack(Oe,v,D+12),Be.Cartesian3.pack(be,v,D+15),Be.Cartesian3.pack(ke,v,D+18),Be.Cartesian3.pack(Pe,v,D+21),N+=2,l+=3,R+=16,D+=24,z+=32,J+=ie,Q+=fe}var Ne=l=0;for(o=0;oHe.CesiumMath.PI_OVER_TWO&&(o=!0,s=Be.Cartesian3.subtract(r,t,B),u=l.cartesianToCartographic(s,z)),u.height=0;var c=e.project(u,i);return(i=Be.Cartesian3.subtract(c,n,i)).z=0,i=Be.Cartesian3.normalize(i,i),o&&Be.Cartesian3.negate(i,i),i}var le=new Be.Cartesian3,ue=new Be.Cartesian3;function Ze(e,a,t,n,i,r){var s=Be.Cartesian3.subtract(a,e,le);Be.Cartesian3.normalize(s,s);var o=t-X,l=Be.Cartesian3.multiplyByScalar(s,o,ue);Be.Cartesian3.add(e,l,i);var u=n-W,l=Be.Cartesian3.multiplyByScalar(s,u,ue);Be.Cartesian3.add(a,l,r)}var ce=new Be.Cartesian3;function Je(e,a){var t=r.Plane.getPointDistance(K,e),n=r.Plane.getPointDistance(K,a),i=ce;He.CesiumMath.equalsEpsilon(t,0,He.CesiumMath.EPSILON2)?(i=Xe(a,e,i),Be.Cartesian3.multiplyByScalar(i,He.CesiumMath.EPSILON2,i),Be.Cartesian3.add(e,i,e)):He.CesiumMath.equalsEpsilon(n,0,He.CesiumMath.EPSILON2)&&(i=Xe(e,a,i),Be.Cartesian3.multiplyByScalar(i,He.CesiumMath.EPSILON2,i),Be.Cartesian3.add(a,i,a))}var Qe=new Be.Cartographic,Ke=new Be.Cartographic,$e=new Be.Cartesian3,ea=new Be.Cartesian3,aa=new Be.Cartesian3,ta=new Be.Cartesian3,na=new Be.Cartesian3,ia=new Be.Cartesian3,ra=[Qe,Ke],sa=new Be.Rectangle,oa=new Be.Cartesian3,la=new Be.Cartesian3,ua=new Be.Cartesian3,ca=new Be.Cartesian3,Ca=new Be.Cartesian3,da=new Be.Cartesian3,ha=new Be.Cartesian3,pa=new Be.Cartesian3,ga=new Be.Cartesian3,fa=new Be.Cartesian3,ma=new Be.Cartesian3,wa=new Be.Cartesian3,va=new Be.Cartesian3,ya=new Be.Cartesian3,Ma=new Ye.EncodedCartesian3,Ta=new Ye.EncodedCartesian3,Ea=new Be.Cartesian3,_a=new Be.Cartesian3,Oa=new Be.Cartesian3,ba=[new je.BoundingSphere,new je.BoundingSphere],Pa=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],ka=Pa.length;function Aa(e){return new Ve.GeometryAttribute({componentDatatype:Ge.ComponentDatatype.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}return v._projectNormal=Ue,function(e,a){return Fe.initialize().then(function(){return j.defined(a)&&(e=v.unpack(e,a)),v.createGeometry(e)})}});